diff options
-rw-r--r-- | mate-panel/Makefile.am | 5 | ||||
-rw-r--r-- | mate-panel/panel-ditem-editor-dialog.ui | 322 | ||||
-rw-r--r-- | mate-panel/panel-ditem-editor.c | 360 | ||||
-rw-r--r-- | mate-panel/panel.gresource.xml | 1 | ||||
-rw-r--r-- | po/POTFILES.in | 1 |
5 files changed, 433 insertions, 256 deletions
diff --git a/mate-panel/Makefile.am b/mate-panel/Makefile.am index 9dd98897..1ec92a0e 100644 --- a/mate-panel/Makefile.am +++ b/mate-panel/Makefile.am @@ -266,8 +266,9 @@ BUILT_SOURCES = \ $(mate_panel_BUILT_SOURCES) \ $(panel_test_applets_BUILT_SOURCES) -ui_FILES = \ - panel-properties-dialog.ui \ +ui_FILES = \ + panel-ditem-editor-dialog.ui \ + panel-properties-dialog.ui \ panel-run-dialog.ui panel-resources.c: panel.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/panel.gresource.xml) diff --git a/mate-panel/panel-ditem-editor-dialog.ui b/mate-panel/panel-ditem-editor-dialog.ui new file mode 100644 index 00000000..0bf7cdb5 --- /dev/null +++ b/mate-panel/panel-ditem-editor-dialog.ui @@ -0,0 +1,322 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.38.2 --> +<interface> + <requires lib="gtk+" version="3.24"/> + <object class="GtkImage" id="cancel_button_image"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">process-stop</property> + </object> + <object class="GtkImage" id="close_button_image"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">window-close</property> + </object> + <object class="GtkImage" id="help_button_image"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">help-browser</property> + </object> + <object class="GtkImage" id="ok_button_image"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">gtk-apply</property> + </object> + <object class="GtkImage" id="revert_button_image"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="icon-name">document-revert</property> + </object> + <template class="PanelDItemEditor" parent="GtkDialog"> + <property name="can-focus">False</property> + <property name="border-width">5</property> + <property name="type-hint">dialog</property> + <child internal-child="vbox"> + <object class="GtkBox"> + <property name="can-focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">2</property> + <child internal-child="action_area"> + <object class="GtkButtonBox"> + <property name="can-focus">False</property> + <property name="layout-style">end</property> + <child> + <object class="GtkButton" id="help_button"> + <property name="label" translatable="yes">_Help</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="image">help_button_image</property> + <property name="use-underline">True</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="revert_button"> + <property name="label" translatable="yes">_Revert</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="image">revert_button_image</property> + <property name="use-underline">True</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="close_button"> + <property name="label" translatable="yes">_Close</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="can-default">True</property> + <property name="receives-default">True</property> + <property name="image">close_button_image</property> + <property name="use-underline">True</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="cancel_button"> + <property name="label" translatable="yes">_Cancel</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="can-default">True</property> + <property name="receives-default">True</property> + <property name="image">cancel_button_image</property> + <property name="use-underline">True</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="ok_button"> + <property name="label" translatable="yes">_Ok</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="can-default">True</property> + <property name="receives-default">True</property> + <property name="image">ok_button_image</property> + <property name="use-underline">True</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">4</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="spacing">12</property> + <child> + <object class="GtkBox" id="icon_chooser_box"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="halign">start</property> + <property name="valign">start</property> + <property name="orientation">vertical</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <!-- n-columns=2 n-rows=4 --> + <object class="GtkGrid"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="row-spacing">6</property> + <property name="column-spacing">12</property> + <child> + <object class="GtkLabel" id="type_label"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="halign">end</property> + <property name="label" translatable="yes">_Type:</property> + <property name="use-underline">True</property> + <property name="mnemonic-widget">type_combo</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="name_label"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="halign">end</property> + <property name="label" translatable="yes">_Name:</property> + <property name="use-underline">True</property> + <property name="mnemonic-widget">name_entry</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="command_label"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="halign">end</property> + <property name="label" translatable="yes">Comm_and:</property> + <property name="use-underline">True</property> + <property name="mnemonic-widget">command_entry</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="comment_label"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="halign">end</property> + <property name="label" translatable="yes">Co_mment:</property> + <property name="use-underline">True</property> + <property name="mnemonic-widget">comment_entry</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">3</property> + </packing> + </child> + <child> + <object class="GtkComboBox" id="type_combo"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">0</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="name_entry"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="has-focus">True</property> + <property name="hexpand">True</property> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">1</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkEntry" id="command_entry"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="hexpand">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="command_browse_button"> + <property name="label" translatable="yes">_Browse...</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="use-underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">2</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="comment_entry"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="hexpand">True</property> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">3</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + <action-widgets> + <action-widget response="-11">help_button</action-widget> + <action-widget response="1">revert_button</action-widget> + <action-widget response="-7">close_button</action-widget> + <action-widget response="-6">cancel_button</action-widget> + <action-widget response="-5">ok_button</action-widget> + </action-widgets> + </template> +</interface> diff --git a/mate-panel/panel-ditem-editor.c b/mate-panel/panel-ditem-editor.c index 3d9f58a1..827f6e67 100644 --- a/mate-panel/panel-ditem-editor.c +++ b/mate-panel/panel-ditem-editor.c @@ -39,6 +39,7 @@ #include "panel-ditem-editor.h" #include "panel-icon-names.h" #include "panel-util.h" +#include "panel-schemas.h" #include "panel-marshal.h" struct _PanelDItemEditorPrivate @@ -63,7 +64,7 @@ struct _PanelDItemEditorPrivate PanelDitemSaveUri save_uri; gpointer save_uri_data; - GtkWidget *grid; + GtkWidget *icon_chooser_box; GtkWidget *type_label; GtkWidget *type_combo; GtkWidget *name_label; @@ -88,7 +89,7 @@ struct _PanelDItemEditorPrivate #define SAVE_FREQUENCY 2 enum { - REVERT_BUTTON + REVERT_BUTTON = 1 }; typedef enum { @@ -170,7 +171,8 @@ static guint ditem_edit_signals[LAST_SIGNAL] = { 0 }; G_DEFINE_TYPE_WITH_PRIVATE (PanelDItemEditor, panel_ditem_editor, GTK_TYPE_DIALOG) -static void panel_ditem_editor_setup_ui (PanelDItemEditor *dialog); +static void panel_ditem_editor_setup_ui (PanelDItemEditor *dialog); +static void panel_ditem_editor_connect_signals (PanelDItemEditor *dialog); static void type_combo_changed (PanelDItemEditor *dialog); @@ -196,7 +198,6 @@ static gboolean panel_ditem_editor_get_type_directory (PanelDItemEditor *dialog) static void panel_ditem_editor_set_type_directory (PanelDItemEditor *dialog, gboolean type_directory); - static PanelDItemEditorType map_type_from_desktop_item (const char *type, gboolean terminal) @@ -232,6 +233,14 @@ panel_ditem_editor_constructor (GType type, dialog = PANEL_DITEM_EDITOR (obj); + /* Icon */ + dialog->priv->icon_chooser = panel_icon_chooser_new (NULL); + panel_icon_chooser_set_fallback_icon_name (PANEL_ICON_CHOOSER (dialog->priv->icon_chooser), + PANEL_ICON_LAUNCHER); + gtk_box_pack_start (GTK_BOX (dialog->priv->icon_chooser_box), dialog->priv->icon_chooser, FALSE, FALSE, 0); + gtk_widget_set_valign (dialog->priv->icon_chooser, GTK_ALIGN_START); + gtk_widget_show (dialog->priv->icon_chooser); + if (dialog->priv->key_file) { panel_ditem_editor_key_file_loaded (dialog); dialog->priv->new_file = FALSE; @@ -273,6 +282,8 @@ panel_ditem_editor_constructor (GType type, if (dialog->priv->new_file) setup_icon_chooser (dialog, NULL); + panel_ditem_editor_connect_signals (dialog); + return obj; } @@ -360,24 +371,27 @@ panel_ditem_editor_dispose (GObject *object) g_key_file_free (dialog->priv->revert_key_file); dialog->priv->revert_key_file = NULL; - if (dialog->priv->uri != NULL) - g_free (dialog->priv->uri); + g_free (dialog->priv->uri); dialog->priv->uri = NULL; G_OBJECT_CLASS (panel_ditem_editor_parent_class)->dispose (object); } static void -panel_ditem_editor_class_init (PanelDItemEditorClass *class) +panel_ditem_editor_class_init (PanelDItemEditorClass *klass) { - GObjectClass *gobject_class = G_OBJECT_CLASS (class); + const gchar *resource = PANEL_RESOURCE_PATH "panel-ditem-editor-dialog.ui"; + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + GtkDialogClass *dialog_class = GTK_DIALOG_CLASS (klass); gobject_class->constructor = panel_ditem_editor_constructor; gobject_class->get_property = panel_ditem_editor_get_property; - gobject_class->set_property = panel_ditem_editor_set_property; - + gobject_class->set_property = panel_ditem_editor_set_property; gobject_class->dispose = panel_ditem_editor_dispose; + dialog_class->response = response_cb; + ditem_edit_signals[SAVED] = g_signal_new ("saved", G_TYPE_FROM_CLASS (gobject_class), @@ -485,38 +499,23 @@ panel_ditem_editor_class_init (PanelDItemEditorClass *class) "Whether the edited file is a .directory file or not", FALSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); -} - -static GtkWidget * -label_new_with_mnemonic (const char *text) -{ - GtkWidget *label; - char *bold; - bold = g_strdup_printf ("<b>%s</b>", text); - label = gtk_label_new_with_mnemonic (bold); - g_free (bold); - - gtk_label_set_use_markup (GTK_LABEL (label), TRUE); - gtk_label_set_xalign (GTK_LABEL (label), 1.0); - gtk_label_set_yalign (GTK_LABEL (label), 0.5); - - gtk_widget_show (label); - - return label; -} - -static inline void -grid_attach_label (GtkGrid *grid, GtkWidget *label, int left, int top, int width, int height) -{ - gtk_grid_attach (grid, label, left, top, width, height); -} - -static inline void -grid_attach_entry (GtkGrid *grid, GtkWidget *entry, int left, int top, int width, int height) -{ - gtk_widget_set_hexpand (entry, TRUE); - gtk_grid_attach (grid, entry, left, top, width, height); + gtk_widget_class_set_template_from_resource (widget_class, resource); + gtk_widget_class_bind_template_child_private (widget_class, PanelDItemEditor, icon_chooser_box); + gtk_widget_class_bind_template_child_private (widget_class, PanelDItemEditor, type_label); + gtk_widget_class_bind_template_child_private (widget_class, PanelDItemEditor, type_combo); + gtk_widget_class_bind_template_child_private (widget_class, PanelDItemEditor, name_label); + gtk_widget_class_bind_template_child_private (widget_class, PanelDItemEditor, name_entry); + gtk_widget_class_bind_template_child_private (widget_class, PanelDItemEditor, comment_label); + gtk_widget_class_bind_template_child_private (widget_class, PanelDItemEditor, comment_entry); + gtk_widget_class_bind_template_child_private (widget_class, PanelDItemEditor, command_label); + gtk_widget_class_bind_template_child_private (widget_class, PanelDItemEditor, command_entry); + gtk_widget_class_bind_template_child_private (widget_class, PanelDItemEditor, command_browse_button); + gtk_widget_class_bind_template_child_private (widget_class, PanelDItemEditor, help_button); + gtk_widget_class_bind_template_child_private (widget_class, PanelDItemEditor, revert_button); + gtk_widget_class_bind_template_child_private (widget_class, PanelDItemEditor, close_button); + gtk_widget_class_bind_template_child_private (widget_class, PanelDItemEditor, cancel_button); + gtk_widget_class_bind_template_child_private (widget_class, PanelDItemEditor, ok_button); } static void @@ -567,8 +566,7 @@ panel_ditem_editor_get_item_type (PanelDItemEditor *dialog) if (dialog->priv->type_directory) return PANEL_DITEM_EDITOR_TYPE_DIRECTORY; - if (!gtk_combo_box_get_active_iter (GTK_COMBO_BOX (dialog->priv->type_combo), - &iter)) + if (!gtk_combo_box_get_active_iter (GTK_COMBO_BOX (dialog->priv->type_combo), &iter)) return PANEL_DITEM_EDITOR_TYPE_NULL; model = gtk_combo_box_get_model (GTK_COMBO_BOX (dialog->priv->type_combo)); @@ -578,105 +576,11 @@ panel_ditem_editor_get_item_type (PanelDItemEditor *dialog) } static void -panel_ditem_editor_make_ui (PanelDItemEditor *dialog) -{ - PanelDItemEditorPrivate *priv; - GtkWidget *dialog_vbox; - - priv = dialog->priv; - - gtk_container_set_border_width (GTK_CONTAINER (dialog), 5); - - dialog_vbox = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); - gtk_box_set_spacing (GTK_BOX (dialog_vbox), 2); - - priv->grid = gtk_grid_new (); - gtk_container_set_border_width (GTK_CONTAINER (priv->grid), 5); - gtk_grid_set_row_spacing (GTK_GRID (priv->grid), 6); - gtk_grid_set_column_spacing (GTK_GRID (priv->grid), 12); - gtk_box_pack_start (GTK_BOX (dialog_vbox), priv->grid, TRUE, TRUE, 0); - gtk_widget_show (priv->grid); - - /* Type */ - priv->type_label = label_new_with_mnemonic (_("_Type:")); - priv->type_combo = gtk_combo_box_new (); - gtk_widget_show (priv->type_combo); - gtk_label_set_mnemonic_widget (GTK_LABEL (priv->type_label), - priv->type_combo); - - /* Name */ - priv->name_label = label_new_with_mnemonic (_("_Name:")); - priv->name_entry = gtk_entry_new (); - gtk_widget_show (priv->name_entry); - gtk_label_set_mnemonic_widget (GTK_LABEL (priv->name_label), - priv->name_entry); - - /* Icon */ - priv->icon_chooser = panel_icon_chooser_new (NULL); - panel_icon_chooser_set_fallback_icon_name (PANEL_ICON_CHOOSER (priv->icon_chooser), - PANEL_ICON_LAUNCHER); - gtk_grid_attach (GTK_GRID (priv->grid), priv->icon_chooser, 0, 0, 1, 2); - gtk_widget_show (priv->icon_chooser); - - /* Command */ - priv->command_label = label_new_with_mnemonic (""); - - priv->command_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); - gtk_widget_show (priv->command_hbox); - - priv->command_entry = gtk_entry_new (); - gtk_box_pack_start (GTK_BOX (priv->command_hbox), - priv->command_entry, - TRUE, TRUE, 0); - gtk_widget_show (priv->command_entry); - - priv->command_browse_button = gtk_button_new_with_mnemonic (_("_Browse...")); - gtk_box_pack_start (GTK_BOX (priv->command_hbox), - priv->command_browse_button, - FALSE, FALSE, 0); - gtk_widget_show (priv->command_browse_button); - - /* Comment */ - priv->comment_label = label_new_with_mnemonic (_("Co_mment:")); - priv->comment_entry = gtk_entry_new (); - gtk_widget_show (priv->comment_entry); - gtk_label_set_mnemonic_widget (GTK_LABEL (priv->comment_label), - priv->comment_entry); - - priv->help_button = panel_dialog_add_button (GTK_DIALOG (dialog), - _("_Help"), "help-browser", - GTK_RESPONSE_HELP); - - priv->revert_button = panel_dialog_add_button (GTK_DIALOG (dialog), - _("_Revert"), "document-revert", - REVERT_BUTTON); - - gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), - REVERT_BUTTON, - FALSE); - - priv->close_button = panel_dialog_add_button (GTK_DIALOG (dialog), - _("_Close"), "window-close", - GTK_RESPONSE_CLOSE); - - priv->cancel_button = panel_dialog_add_button (GTK_DIALOG (dialog), - _("_Cancel"), "process-stop", - GTK_RESPONSE_CANCEL); - - priv->ok_button = panel_dialog_add_button (GTK_DIALOG (dialog), - _("_OK"), "gtk-ok", - GTK_RESPONSE_OK); - - /* FIXME: There needs to be a way to edit ALL keys/sections */ -} - -static void panel_ditem_editor_setup_ui (PanelDItemEditor *dialog) { PanelDItemEditorPrivate *priv; PanelDItemEditorType type; gboolean show_combo; - GList *focus_chain; priv = dialog->priv; type = panel_ditem_editor_get_item_type (dialog); @@ -691,8 +595,8 @@ panel_ditem_editor_setup_ui (PanelDItemEditor *dialog) if (!priv->combo_setuped) { setup_combo (priv->type_combo, - type_items, G_N_ELEMENTS (type_items), - NULL); + type_items, G_N_ELEMENTS (type_items), + NULL); priv->combo_setuped = TRUE; } @@ -717,18 +621,6 @@ panel_ditem_editor_setup_ui (PanelDItemEditor *dialog) GtkTreeModel *model; PanelDItemEditorType buf_type; - grid_attach_label (GTK_GRID (priv->grid), priv->type_label, 1, 0, 1, 1); - grid_attach_entry (GTK_GRID (priv->grid), priv->type_combo, 2, 0, 1, 1); - - grid_attach_label (GTK_GRID (priv->grid), priv->name_label, 1, 1, 1, 1); - grid_attach_entry (GTK_GRID (priv->grid), priv->name_entry, 2, 1, 1, 1); - - grid_attach_label (GTK_GRID (priv->grid), priv->command_label, 1, 2, 1, 1); - grid_attach_entry (GTK_GRID (priv->grid), priv->command_hbox, 2, 2, 1, 1); - - grid_attach_label (GTK_GRID (priv->grid), priv->comment_label, 1, 3, 1, 1); - grid_attach_entry (GTK_GRID (priv->grid), priv->comment_entry, 2, 3, 1, 1); - /* FIXME: hack hack hack */ model = gtk_combo_box_get_model (GTK_COMBO_BOX (priv->type_combo)); if (!gtk_tree_model_get_iter_first (model, &iter)) @@ -742,37 +634,17 @@ panel_ditem_editor_setup_ui (PanelDItemEditor *dialog) break; } } while (gtk_tree_model_iter_next (model, &iter)); - } else if (type == PANEL_DITEM_EDITOR_TYPE_DIRECTORY) { - grid_attach_label (GTK_GRID (priv->grid), priv->name_label, 1, 0, 1, 1); - grid_attach_entry (GTK_GRID (priv->grid), priv->name_entry, 2, 0, 1, 1); - - grid_attach_label (GTK_GRID (priv->grid), priv->comment_label, 1, 1, 1, 1); - grid_attach_entry (GTK_GRID (priv->grid), priv->comment_entry, 2, 1, 1, 1); } else { - grid_attach_label (GTK_GRID (priv->grid), priv->name_label, 1, 0, 1, 1); - grid_attach_entry (GTK_GRID (priv->grid), priv->name_entry, 2, 0, 1, 1); - - grid_attach_label (GTK_GRID (priv->grid), priv->command_label, 1, 1, 1, 1); - grid_attach_entry (GTK_GRID (priv->grid), priv->command_hbox, 2, 1, 1, 1); - - grid_attach_label (GTK_GRID (priv->grid), priv->comment_label, 1, 2, 1, 1); - grid_attach_entry (GTK_GRID (priv->grid), priv->comment_entry, 2, 2, 1, 1); + gtk_widget_hide (priv->type_combo); + gtk_widget_hide (priv->type_label); + if (type == PANEL_DITEM_EDITOR_TYPE_DIRECTORY) { + gtk_widget_hide (priv->command_label); + gtk_widget_hide (priv->command_entry); + gtk_widget_hide (priv->command_browse_button); + } } type_combo_changed (dialog); - - /* set a focus chain since GTK+ doesn't want to put the icon entry - * as the first widget in the chain */ - focus_chain = NULL; - focus_chain = g_list_prepend (focus_chain, priv->icon_chooser); - focus_chain = g_list_prepend (focus_chain, priv->type_combo); - focus_chain = g_list_prepend (focus_chain, priv->name_entry); - focus_chain = g_list_prepend (focus_chain, priv->command_hbox); - focus_chain = g_list_prepend (focus_chain, priv->comment_entry); - focus_chain = g_list_reverse (focus_chain); - gtk_container_set_focus_chain (GTK_CONTAINER (priv->grid), focus_chain); - g_list_free (focus_chain); - gtk_widget_grab_focus (priv->name_entry); } @@ -788,10 +660,10 @@ panel_ditem_editor_changed (PanelDItemEditor *dialog) if (dialog->priv->save_timeout != 0) g_source_remove (dialog->priv->save_timeout); - dialog->priv->save_timeout = g_timeout_add_seconds ( - SAVE_FREQUENCY, - panel_ditem_editor_save_timeout, - dialog); + dialog->priv->save_timeout + = g_timeout_add_seconds (SAVE_FREQUENCY, + panel_ditem_editor_save_timeout, + dialog); /* We can revert to the original state */ if (dialog->priv->revert_key_file != NULL) @@ -917,13 +789,13 @@ panel_ditem_editor_icon_changed (PanelDItemEditor *dialog, { if (icon) { panel_key_file_set_string (dialog->priv->key_file, - "Icon", icon); + "Icon", icon); panel_key_file_set_locale_string (dialog->priv->key_file, - "Icon", icon); + "Icon", icon); } else panel_key_file_remove_all_locale_key (dialog->priv->key_file, - "Icon"); + "Icon"); g_signal_emit (G_OBJECT (dialog), ditem_edit_signals[ICON_CHANGED], 0, icon); @@ -951,8 +823,7 @@ command_browse_chooser_response (GtkFileChooser *chooser, g_assert_not_reached (); } - gtk_entry_set_text (GTK_ENTRY (dialog->priv->command_entry), - uri); + gtk_entry_set_text (GTK_ENTRY (dialog->priv->command_entry), uri); g_free (uri); } @@ -1041,6 +912,7 @@ panel_ditem_editor_connect_signals (PanelDItemEditor *dialog) CONNECT_CHANGED (priv->command_entry, panel_ditem_editor_command_changed); CONNECT_CHANGED (priv->comment_entry, panel_ditem_editor_comment_changed); CONNECT_CHANGED (priv->icon_chooser, panel_ditem_editor_icon_changed); +#undef CONNECT_CHANGED g_signal_connect_swapped (priv->name_entry, "activate", G_CALLBACK (panel_ditem_editor_activated), @@ -1055,13 +927,6 @@ panel_ditem_editor_connect_signals (PanelDItemEditor *dialog) g_signal_connect_swapped (priv->command_browse_button, "clicked", G_CALLBACK (command_browse_button_clicked), dialog); - - /* We do a signal connection here rather than overriding the method in - * class_init because GtkDialog::response is a RUN_LAST signal. We - * want *our* handler to be run *first*, regardless of whether the user - * installs response handlers of his own. - */ - g_signal_connect (dialog, "response", G_CALLBACK (response_cb), NULL); } static void @@ -1083,6 +948,7 @@ panel_ditem_editor_block_signals (PanelDItemEditor *dialog) BLOCK_CHANGED (priv->command_entry, panel_ditem_editor_command_changed); BLOCK_CHANGED (priv->comment_entry, panel_ditem_editor_comment_changed); BLOCK_CHANGED (priv->icon_chooser, panel_ditem_editor_icon_changed); +#undef BLOCK_CHANGED } static void @@ -1104,86 +970,76 @@ panel_ditem_editor_unblock_signals (PanelDItemEditor *dialog) UNBLOCK_CHANGED (priv->command_entry, panel_ditem_editor_command_changed); UNBLOCK_CHANGED (priv->comment_entry, panel_ditem_editor_comment_changed); UNBLOCK_CHANGED (priv->icon_chooser, panel_ditem_editor_icon_changed); +#undef UNBLOCK_CHANGED } static void panel_ditem_editor_init (PanelDItemEditor *dialog) { - PanelDItemEditorPrivate *priv; - - priv = panel_ditem_editor_get_instance_private (dialog); - - dialog->priv = priv; - - priv->key_file = NULL; - priv->free_key_file = FALSE; - priv->revert_key_file = NULL; - priv->reverting = FALSE; - priv->dirty = FALSE; - priv->save_timeout = 0; - priv->uri = NULL; - priv->type_directory = FALSE; - priv->new_file = TRUE; - priv->save_uri = NULL; - priv->save_uri_data = NULL; - priv->combo_setuped = FALSE; - priv->command_browse_filechooser = NULL; - - panel_ditem_editor_make_ui (dialog); - panel_ditem_editor_connect_signals (dialog); + dialog->priv = panel_ditem_editor_get_instance_private (dialog); + dialog->priv->key_file = NULL; + dialog->priv->free_key_file = FALSE; + dialog->priv->revert_key_file = NULL; + dialog->priv->reverting = FALSE; + dialog->priv->dirty = FALSE; + dialog->priv->save_timeout = 0; + dialog->priv->uri = NULL; + dialog->priv->type_directory = FALSE; + dialog->priv->new_file = TRUE; + dialog->priv->save_uri = NULL; + dialog->priv->save_uri_data = NULL; + dialog->priv->combo_setuped = FALSE; + dialog->priv->command_browse_filechooser = NULL; + gtk_widget_init_template (GTK_WIDGET (dialog)); } static void type_combo_changed (PanelDItemEditor *dialog) { const char *text; - char *bold; switch (panel_ditem_editor_get_item_type (dialog)) { case PANEL_DITEM_EDITOR_TYPE_APPLICATION: text = _("Comm_and:"); if (dialog->priv->combo_setuped) { panel_key_file_set_string (dialog->priv->key_file, - "Type", "Application"); + "Type", "Application"); panel_key_file_set_boolean (dialog->priv->key_file, - "Terminal", FALSE); + "Terminal", FALSE); } break; case PANEL_DITEM_EDITOR_TYPE_TERMINAL_APPLICATION: text = _("Comm_and:"); if (dialog->priv->combo_setuped) { panel_key_file_set_string (dialog->priv->key_file, - "Type", "Application"); + "Type", "Application"); panel_key_file_set_boolean (dialog->priv->key_file, - "Terminal", TRUE); + "Terminal", TRUE); } break; case PANEL_DITEM_EDITOR_TYPE_LINK: text = _("_Location:"); if (dialog->priv->combo_setuped) { panel_key_file_set_string (dialog->priv->key_file, - "Type", "Link"); + "Type", "Link"); panel_key_file_remove_key (dialog->priv->key_file, - "Terminal"); + "Terminal"); } break; case PANEL_DITEM_EDITOR_TYPE_DIRECTORY: if (dialog->priv->combo_setuped) { panel_key_file_set_string (dialog->priv->key_file, - "Type", "Directory"); + "Type", "Directory"); } return; default: g_assert_not_reached (); } - bold = g_strdup_printf ("<b>%s</b>", text); - gtk_label_set_markup_with_mnemonic (GTK_LABEL (dialog->priv->command_label), - bold); - g_free (bold); + gtk_label_set_text_with_mnemonic (GTK_LABEL (dialog->priv->command_label), text); gtk_label_set_mnemonic_widget (GTK_LABEL (dialog->priv->command_label), - dialog->priv->command_entry); + dialog->priv->command_entry); update_chooser_for_type (dialog); } @@ -1192,22 +1048,20 @@ static void setup_icon_chooser (PanelDItemEditor *dialog, const char *icon_name) { - char *buffer; + const char *buffer; if (!icon_name || icon_name[0] == '\0') { if (dialog->priv->type_directory) { - buffer = g_strdup (PANEL_ICON_FOLDER); + buffer = PANEL_ICON_FOLDER; } else { - buffer = g_strdup (PANEL_ICON_LAUNCHER); + buffer = PANEL_ICON_LAUNCHER; } } else { - buffer = g_strdup (icon_name); + buffer = icon_name; } panel_icon_chooser_set_icon (PANEL_ICON_CHOOSER (dialog->priv->icon_chooser), buffer); - - g_free (buffer); } /* Conform display to ditem */ @@ -1239,8 +1093,8 @@ panel_ditem_editor_sync_display (PanelDItemEditor *dialog) type = panel_key_file_get_string (key_file, "Type"); if (!dialog->priv->combo_setuped) { setup_combo (dialog->priv->type_combo, - type_items, G_N_ELEMENTS (type_items), - type); + type_items, G_N_ELEMENTS (type_items), + type); dialog->priv->combo_setuped = TRUE; } @@ -1256,7 +1110,7 @@ panel_ditem_editor_sync_display (PanelDItemEditor *dialog) gtk_tree_model_get (model, &iter, COLUMN_TYPE, &buf_type, -1); if (editor_type == buf_type) { gtk_combo_box_set_active_iter (GTK_COMBO_BOX (dialog->priv->type_combo), - &iter); + &iter); break; } } while (gtk_tree_model_iter_next (model, &iter)); @@ -1274,13 +1128,13 @@ panel_ditem_editor_sync_display (PanelDItemEditor *dialog) buffer = NULL; gtk_entry_set_text (GTK_ENTRY (dialog->priv->command_entry), - buffer ? buffer : ""); + buffer ? buffer : ""); g_free (buffer); /* Comment */ buffer = panel_key_file_get_locale_string (key_file, "Comment"); gtk_entry_set_text (GTK_ENTRY (dialog->priv->comment_entry), - buffer ? buffer : ""); + buffer ? buffer : ""); g_free (buffer); @@ -1305,7 +1159,7 @@ panel_ditem_editor_save (PanelDItemEditor *dialog, g_return_val_if_fail (dialog != NULL, FALSE); g_return_val_if_fail (dialog->priv->save_uri != NULL || - dialog->priv->uri != NULL, FALSE); + dialog->priv->uri != NULL, FALSE); if (dialog->priv->save_timeout != 0) g_source_remove (dialog->priv->save_timeout); @@ -1368,8 +1222,7 @@ panel_ditem_editor_save (PanelDItemEditor *dialog, if (dialog->priv->save_uri) { char *uri; - uri = dialog->priv->save_uri (dialog, - dialog->priv->save_uri_data); + uri = dialog->priv->save_uri (dialog, dialog->priv->save_uri_data); if (uri) { panel_ditem_editor_set_uri (dialog, uri); @@ -1520,10 +1373,10 @@ panel_ditem_editor_revert (PanelDItemEditor *dialog) if (dialog->priv->save_timeout != 0) g_source_remove (dialog->priv->save_timeout); - dialog->priv->save_timeout = g_timeout_add_seconds ( - SAVE_FREQUENCY, - panel_ditem_editor_save_timeout, - dialog); + dialog->priv->save_timeout = + g_timeout_add_seconds (SAVE_FREQUENCY, + panel_ditem_editor_save_timeout, + dialog); } dialog->priv->reverting = FALSE; @@ -1608,7 +1461,7 @@ panel_ditem_editor_load_uri (PanelDItemEditor *dialog, GKeyFile *key_file; g_return_val_if_fail (PANEL_IS_DITEM_EDITOR (dialog), FALSE); - g_return_val_if_fail (dialog->priv->uri != NULL, FALSE); + g_return_val_if_fail (dialog->priv->uri != NULL, FALSE); key_file = g_key_file_new (); @@ -1636,7 +1489,7 @@ panel_ditem_editor_new_full (GtkWindow *parent, const char *title, gboolean type_directory) { - GtkWidget *dialog; + PanelDItemEditor *dialog; dialog = g_object_new (PANEL_TYPE_DITEM_EDITOR, "title", title, @@ -1648,7 +1501,7 @@ panel_ditem_editor_new_full (GtkWindow *parent, if (parent) gtk_window_set_transient_for (GTK_WINDOW (dialog), parent); - return dialog; + return GTK_WIDGET (dialog); } GtkWidget * @@ -1700,12 +1553,11 @@ panel_ditem_editor_set_uri (PanelDItemEditor *dialog, !strcmp (dialog->priv->uri, uri)) return; - if (dialog->priv->uri) - g_free (dialog->priv->uri); - dialog->priv->uri = NULL; - + g_free (dialog->priv->uri); if (uri && uri [0]) dialog->priv->uri = g_strdup (uri); + else + dialog->priv->uri = NULL; g_object_notify (G_OBJECT (dialog), "uri"); } diff --git a/mate-panel/panel.gresource.xml b/mate-panel/panel.gresource.xml index bcd2c43c..3f7e46aa 100644 --- a/mate-panel/panel.gresource.xml +++ b/mate-panel/panel.gresource.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <gresources> <gresource prefix="/org/mate/panel"> + <file compressed="true">panel-ditem-editor-dialog.ui</file> <file compressed="true">panel-properties-dialog.ui</file> <file compressed="true">panel-run-dialog.ui</file> </gresource> diff --git a/po/POTFILES.in b/po/POTFILES.in index 7a739c2a..6a9f28ee 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -51,6 +51,7 @@ mate-panel/panel-applet-frame.c mate-panel/panel-bindings.c mate-panel/panel-context-menu.c mate-panel/panel-ditem-editor.c +mate-panel/panel-ditem-editor-dialog.ui mate-panel/panel-force-quit.c mate-panel/panel-frame.c mate-panel/panel-menu-bar.c |