X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkcustompaperunixdialog.c;h=57494c94a3a22cd687a9f06ab154184b0ab8b56c;hb=3a86af43fa208786b5c848c09f9c8e1d3f060931;hp=ffa1adde8edf7d4199f32649214cf24f060e1108;hpb=53b586abcf96dd1b3139ff880d24b4d5e1eee16a;p=~andy%2Fgtk diff --git a/gtk/gtkcustompaperunixdialog.c b/gtk/gtkcustompaperunixdialog.c index ffa1adde8..57494c94a 100644 --- a/gtk/gtkcustompaperunixdialog.c +++ b/gtk/gtkcustompaperunixdialog.c @@ -13,9 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ @@ -40,7 +38,8 @@ #include "gtkprintbackend.h" #include "gtkprintutils.h" -#define CUSTOM_PAPER_FILENAME ".gtk-custom-papers" +#define LEGACY_CUSTOM_PAPER_FILENAME ".gtk-custom-papers" +#define CUSTOM_PAPER_FILENAME "custom-papers" typedef struct @@ -133,11 +132,23 @@ _gtk_print_get_default_user_units (void) } static char * -custom_paper_get_filename (void) +custom_paper_get_legacy_filename (void) { gchar *filename; filename = g_build_filename (g_get_home_dir (), + LEGACY_CUSTOM_PAPER_FILENAME, NULL); + g_assert (filename != NULL); + return filename; +} + +static char * +custom_paper_get_filename (void) +{ + gchar *filename; + + filename = g_build_filename (g_get_user_config_dir (), + "gtk-3.0", CUSTOM_PAPER_FILENAME, NULL); g_assert (filename != NULL); return filename; @@ -158,6 +169,13 @@ _gtk_load_custom_papers (void) keyfile = g_key_file_new (); load_ok = g_key_file_load_from_file (keyfile, filename, 0, NULL); g_free (filename); + if (!load_ok) + { + /* try legacy file */ + filename = custom_paper_get_legacy_filename (); + load_ok = g_key_file_load_from_file (keyfile, filename, 0, NULL); + g_free (filename); + } if (!load_ok) { g_key_file_free (keyfile); @@ -211,7 +229,7 @@ _gtk_print_save_custom_papers (GtkListStore *store) GtkTreeModel *model = GTK_TREE_MODEL (store); GtkTreeIter iter; GKeyFile *keyfile; - gchar *filename, *data; + gchar *filename, *data, *parentdir; gsize len; gint i = 0; @@ -235,9 +253,16 @@ _gtk_print_save_custom_papers (GtkListStore *store) } filename = custom_paper_get_filename (); - data = g_key_file_to_data (keyfile, &len, NULL); - g_file_set_contents (filename, data, len, NULL); - g_free (data); + parentdir = g_build_filename (g_get_user_config_dir (), + "gtk-3.0", + NULL); + if (g_mkdir_with_parents (parentdir, 0700) == 0) + { + data = g_key_file_to_data (keyfile, &len, NULL); + g_file_set_contents (filename, data, len, NULL); + g_free (data); + } + g_free (parentdir); g_free (filename); } @@ -577,7 +602,7 @@ custom_paper_printer_data_func (GtkCellLayout *cell_layout, if (printer) g_object_set (cell, "text", gtk_printer_get_name (printer), NULL); else - g_object_set (cell, "text", _("Margins from Printer..."), NULL); + g_object_set (cell, "text", _("Margins from Printer…"), NULL); if (printer) g_object_unref (printer); @@ -987,7 +1012,7 @@ populate_dialog (GtkCustomPaperUnixDialog *dialog) GtkCustomPaperUnixDialogPrivate *priv = dialog->priv; GtkDialog *cpu_dialog = GTK_DIALOG (dialog); GtkWidget *action_area, *content_area; - GtkWidget *table, *label, *widget, *frame, *combo; + GtkWidget *grid, *label, *widget, *frame, *combo; GtkWidget *hbox, *vbox, *treeview, *scrolled, *toolbar, *button; GtkCellRenderer *cell; GtkTreeViewColumn *column; @@ -1076,101 +1101,88 @@ populate_dialog (GtkCustomPaperUnixDialog *dialog) gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); gtk_widget_show (vbox); - table = gtk_table_new (2, 2, FALSE); + grid = gtk_grid_new (); - gtk_table_set_row_spacings (GTK_TABLE (table), 6); - gtk_table_set_col_spacings (GTK_TABLE (table), 12); + gtk_grid_set_row_spacing (GTK_GRID (grid), 6); + gtk_grid_set_column_spacing (GTK_GRID (grid), 12); label = gtk_label_new_with_mnemonic (_("_Width:")); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_widget_set_valign (label, GTK_ALIGN_CENTER); gtk_widget_show (label); - gtk_table_attach (GTK_TABLE (table), label, - 0, 1, 0, 1, GTK_FILL, 0, 0, 0); + gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1); widget = new_unit_widget (dialog, user_units, label); priv->width_widget = widget; - gtk_table_attach (GTK_TABLE (table), widget, - 1, 2, 0, 1, GTK_FILL, 0, 0, 0); + gtk_grid_attach (GTK_GRID (grid), widget, 1, 0, 1, 1); gtk_widget_show (widget); label = gtk_label_new_with_mnemonic (_("_Height:")); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_widget_set_valign (label, GTK_ALIGN_CENTER); gtk_widget_show (label); - gtk_table_attach (GTK_TABLE (table), label, - 0, 1, 1, 2, GTK_FILL, 0, 0, 0); + gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1); widget = new_unit_widget (dialog, user_units, label); priv->height_widget = widget; - gtk_table_attach (GTK_TABLE (table), widget, - 1, 2, 1, 2, GTK_FILL, 0, 0, 0); + gtk_grid_attach (GTK_GRID (grid), widget, 1, 1, 1, 1); gtk_widget_show (widget); - frame = wrap_in_frame (_("Paper Size"), table); - gtk_widget_show (table); + frame = wrap_in_frame (_("Paper Size"), grid); + gtk_widget_show (grid); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0); gtk_widget_show (frame); - table = gtk_table_new (5, 2, FALSE); - gtk_table_set_row_spacings (GTK_TABLE (table), 6); - gtk_table_set_col_spacings (GTK_TABLE (table), 12); + grid = gtk_grid_new (); + gtk_grid_set_row_spacing (GTK_GRID (grid), 6); + gtk_grid_set_column_spacing (GTK_GRID (grid), 12); label = gtk_label_new_with_mnemonic (_("_Top:")); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_table_attach (GTK_TABLE (table), label, - 0, 1, 0, 1, GTK_FILL, 0, 0, 0); + gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1); gtk_widget_show (label); widget = new_unit_widget (dialog, user_units, label); priv->top_widget = widget; - gtk_table_attach (GTK_TABLE (table), widget, - 1, 2, 0, 1, GTK_FILL, 0, 0, 0); + gtk_grid_attach (GTK_GRID (grid), widget, 1, 0, 1, 1); gtk_widget_show (widget); label = gtk_label_new_with_mnemonic (_("_Bottom:")); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_table_attach (GTK_TABLE (table), label, - 0, 1 , 1, 2, GTK_FILL, 0, 0, 0); + gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1); gtk_widget_show (label); widget = new_unit_widget (dialog, user_units, label); priv->bottom_widget = widget; - gtk_table_attach (GTK_TABLE (table), widget, - 1, 2, 1, 2, GTK_FILL, 0, 0, 0); + gtk_grid_attach (GTK_GRID (grid), widget, 1, 1, 1, 1); gtk_widget_show (widget); label = gtk_label_new_with_mnemonic (_("_Left:")); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_table_attach (GTK_TABLE (table), label, - 0, 1, 2, 3, GTK_FILL, 0, 0, 0); + gtk_grid_attach (GTK_GRID (grid), label, 0, 2, 1, 1); gtk_widget_show (label); widget = new_unit_widget (dialog, user_units, label); priv->left_widget = widget; - gtk_table_attach (GTK_TABLE (table), widget, - 1, 2, 2, 3, GTK_FILL, 0, 0, 0); + gtk_grid_attach (GTK_GRID (grid), widget, 1, 2, 1, 1); gtk_widget_show (widget); label = gtk_label_new_with_mnemonic (_("_Right:")); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_widget_set_valign (label, GTK_ALIGN_CENTER); - gtk_table_attach (GTK_TABLE (table), label, - 0, 1, 3, 4, GTK_FILL, 0, 0, 0); + gtk_grid_attach (GTK_GRID (grid), label, 0, 3, 1, 1); gtk_widget_show (label); widget = new_unit_widget (dialog, user_units, label); priv->right_widget = widget; - gtk_table_attach (GTK_TABLE (table), widget, - 1, 2, 3, 4, GTK_FILL, 0, 0, 0); + gtk_grid_attach (GTK_GRID (grid), widget, 1, 3, 1, 1); gtk_widget_show (widget); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); - gtk_table_attach (GTK_TABLE (table), hbox, - 0, 2, 4, 5, GTK_FILL | GTK_EXPAND, 0, 0, 0); + gtk_grid_attach (GTK_GRID (grid), hbox, 0, 4, 2, 1); gtk_widget_show (hbox); combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (priv->printer_list)); @@ -1197,8 +1209,8 @@ populate_dialog (GtkCustomPaperUnixDialog *dialog) g_signal_connect_swapped (combo, "changed", G_CALLBACK (margins_from_printer_changed), dialog); - frame = wrap_in_frame (_("Paper Margins"), table); - gtk_widget_show (table); + frame = wrap_in_frame (_("Paper Margins"), grid); + gtk_widget_show (grid); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0); gtk_widget_show (frame);