[Xfce4-commits] [apps/xfburn] 17/42: Recreated Toolbar in the MainWindow
noreply at xfce.org
noreply at xfce.org
Tue Oct 15 02:22:00 CEST 2019
This is an automated email from the git hooks/post-receive script.
k a t a n a s t e e l p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository apps/xfburn.
commit ee3cad88028927bbd1d282d93509476b1e1f16b2
Author: Rene Kjellerup <rk.katana.steel at gmail.com>
Date: Thu Dec 6 16:10:02 2018 -0800
Recreated Toolbar in the MainWindow
replaced ExoToolbar with a GTK3 Toolbar
added bit of adjustments to the welcome tab
fixed a conversion error from GstDiscoverer to GstObject
when it inherits from GObject
---
.gitignore | 1 +
xfburn/xfburn-audio-composition.c | 115 +++++++++++++++++----------------
xfburn/xfburn-compositions-notebook.c | 2 +-
xfburn/xfburn-compositions-notebook.h | 2 +-
xfburn/xfburn-data-composition.c | 118 +++++++++++++++++++---------------
xfburn/xfburn-main-window.c | 116 +++++++++++++++++++++++----------
xfburn/xfburn-main-window.h | 2 +
xfburn/xfburn-transcoder-gst.c | 2 +-
xfburn/xfburn-utils.c | 4 +-
xfburn/xfburn-welcome-tab.c | 15 ++++-
xfburn/xfburn-welcome-tab.h | 2 +-
11 files changed, 230 insertions(+), 149 deletions(-)
diff --git a/.gitignore b/.gitignore
index 05f5aeb..5400799 100644
--- a/.gitignore
+++ b/.gitignore
@@ -50,3 +50,4 @@ xfburn/.deps
docs/xfburn.1
core
core.*
+.vscode
diff --git a/xfburn/xfburn-audio-composition.c b/xfburn/xfburn-audio-composition.c
index f43a4ec..9ad988e 100644
--- a/xfburn/xfburn-audio-composition.c
+++ b/xfburn/xfburn-audio-composition.c
@@ -126,14 +126,14 @@ static void save_to_file (XfburnComposition *composition);
//static gint song_tree_sortfunc (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer user_data);
-static void action_clear (GtkAction *, XfburnAudioComposition *);
-static void action_info (GtkAction *, XfburnAudioComposition *);
-static void action_remove_selection (GtkAction *, XfburnAudioComposition *);
+static void action_clear (GSimpleAction *, GVariant*, XfburnAudioComposition *);
+static void action_info (GSimpleAction *, GVariant*, XfburnAudioComposition *);
+static void action_remove_selection (GSimpleAction *, GVariant*, XfburnAudioComposition *);
#if 0 /* CDTEXT */
-static void action_rename_selection_artist (GtkAction *, XfburnAudioComposition *);
-static void action_rename_selection_title (GtkAction *, XfburnAudioComposition *);
+static void action_rename_selection_artist (GSimpleAction *, GVariant*, XfburnAudioComposition *);
+static void action_rename_selection_title (GSimpleAction *, GVariant*, XfburnAudioComposition *);
#endif /* CDTEXT */
-static void action_add_selected_files (GtkAction *, XfburnAudioComposition *);
+static void action_add_selected_files (GSimpleAction *, GVariant*, XfburnAudioComposition *);
static void tracks_changed (XfburnAudioComposition *ac);
static gboolean cb_treeview_button_pressed (GtkTreeView * treeview, GdkEventButton * event, XfburnAudioComposition * dc);
@@ -183,8 +183,8 @@ typedef struct
void *thread_params;
GHashTable *warned_about;
- GtkActionGroup *action_group;
- GtkUIManager *ui_manager;
+ GSimpleActionGroup *action_group;
+ GtkBuilder *ui_manager;
GtkWidget *toolbar;
GtkWidget *entry_volume_name;
@@ -203,6 +203,17 @@ static guint instances = 0;
static gchar *did_warn = "Did warn about this already";
static gchar trans_name[MAX_NAME_LENGTH] = {""};
+static const GActionEntry actions[] = {
+ {.name = "add-file", .activate = (gActionCallback)action_add_selected_files},
+ {.name = "remove-file", .activate = (gActionCallback)action_remove_selection},
+ {.name = "clear", .activate = (gActionCallback)action_clear},
+ {.name = "transcoder-info", .activate = (gActionCallback)action_info},
+#if 0 /* CDTEXT */
+ {.name = "rename-artist", .activate = (gActionCallback)action_rename_selection_artist},
+ {.name = "rename-title", .activate = (gActionCallback)action_rename_selection_title},
+#endif /* CDTEXT */
+};
+
static const GtkActionEntry action_entries[] = {
{"add-file", "list-add", N_("Add"), NULL, N_("Add the selected file(s) to the composition"),
G_CALLBACK (action_add_selected_files),},
@@ -307,7 +318,7 @@ xfburn_audio_composition_init (XfburnAudioComposition * composition)
GtkCellRenderer *cell_artist, *cell_title;
#endif
GtkTreeSelection *selection;
- GtkAction *action = NULL;
+ GSimpleAction *action = NULL;
GdkScreen *screen;
GtkIconTheme *icon_theme;
@@ -315,7 +326,12 @@ xfburn_audio_composition_init (XfburnAudioComposition * composition)
const gchar ui_string[] = "<ui> <popup name=\"popup-menu\">"
"<menuitem action=\"rename-artist\"/>" "<menuitem action=\"rename-title\"/>" "<menuitem action=\"remove-file\"/>" "</popup></ui>";
#else
- const gchar ui_string[] = "<ui> <popup name=\"popup-menu\"> <menuitem action=\"remove-file\"/>" "</popup></ui>";
+ // const gchar ui_string[] = "<ui> <popup name=\"popup-menu\"> <menuitem action=\"remove-file\"/>" "</popup></ui>";
+ const gchar ui_string[] = "<interface><menu id=\"popup-menu\">"
+ "<section>"
+ "<item><attribute name=\"label\">Remove</attribute><attribute name=\"action\">win.remove-file</attribute></item>"
+ "</section>"
+ "</menu></interface>";
#endif /* CDTEXT */
GtkTargetEntry gte_src[] = { { "XFBURN_TREE_PATHS", GTK_TARGET_SAME_WIDGET, AUDIO_COMPOSITION_DND_TARGET_INSIDE } };
@@ -343,15 +359,13 @@ xfburn_audio_composition_init (XfburnAudioComposition * composition)
icon_file = gtk_icon_theme_load_icon (icon_theme, "gnome-fs-regular", x, 0, NULL);
/* create ui manager */
- priv->action_group = gtk_action_group_new ("xfburn-audio-composition");
- gtk_action_group_set_translation_domain (priv->action_group, GETTEXT_PACKAGE);
- gtk_action_group_add_actions (priv->action_group, action_entries, G_N_ELEMENTS (action_entries),
+ priv->action_group = g_simple_action_group_new();
+ g_action_map_add_action_entries (G_ACTION_MAP (priv->action_group), actions, G_N_ELEMENTS (actions),
GTK_WIDGET (composition));
-
- priv->ui_manager = gtk_ui_manager_new ();
- gtk_ui_manager_insert_action_group (priv->ui_manager, priv->action_group, 0);
-
- gtk_ui_manager_add_ui_from_string (priv->ui_manager, ui_string, -1, NULL);
+ priv->ui_manager = gtk_builder_new ();
+ gtk_builder_set_translation_domain (priv->ui_manager, GETTEXT_PACKAGE);
+ gtk_builder_add_from_string (priv->ui_manager, ui_string, -1, NULL);
+ gtk_widget_insert_action_group(GTK_WIDGET (composition), "win", G_ACTION_GROUP (priv->action_group));
hbox_toolbar = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
gtk_box_pack_start (GTK_BOX (composition), hbox_toolbar, FALSE, TRUE, 0);
@@ -483,8 +497,8 @@ xfburn_audio_composition_init (XfburnAudioComposition * composition)
g_signal_connect (G_OBJECT (priv->content), "drag-data-received", G_CALLBACK (cb_content_drag_data_rcv),
composition);
- action = gtk_action_group_get_action (priv->action_group, "remove-file");
- gtk_action_set_sensitive (GTK_ACTION (action), FALSE);
+ action = G_SIMPLE_ACTION (g_action_map_lookup_action (G_ACTION_MAP (priv->action_group), "remove-file"));
+ g_simple_action_set_enabled (action, FALSE);
priv->warned_about = g_hash_table_new (g_direct_hash, g_direct_equal);
}
@@ -598,25 +612,25 @@ cb_selection_changed (GtkTreeSelection *selection, XfburnAudioComposition * dc)
{
XfburnAudioCompositionPrivate *priv = XFBURN_AUDIO_COMPOSITION_GET_PRIVATE (dc);
gint n_selected_rows;
- GtkAction *action = NULL;
-
+ GSimpleAction *action = NULL;
+ GActionMap *map = G_ACTION_MAP (priv->action_group);
n_selected_rows = gtk_tree_selection_count_selected_rows (selection);
if (n_selected_rows == 0) {
- action = gtk_action_group_get_action (priv->action_group, "add-file");
- gtk_action_set_sensitive (GTK_ACTION (action), TRUE);
- action = gtk_action_group_get_action (priv->action_group, "remove-file");
- gtk_action_set_sensitive (GTK_ACTION (action), FALSE);
+ action = G_SIMPLE_ACTION (g_action_map_lookup_action (map, "add-file"));
+ g_simple_action_set_enabled (action, TRUE);
+ action = G_SIMPLE_ACTION (g_action_map_lookup_action (map, "remove-file"));
+ g_simple_action_set_enabled (action, FALSE);
} else if (n_selected_rows == 1) {
- action = gtk_action_group_get_action (priv->action_group, "add-file");
- gtk_action_set_sensitive (GTK_ACTION (action), TRUE);
- action = gtk_action_group_get_action (priv->action_group, "remove-file");
- gtk_action_set_sensitive (GTK_ACTION (action), TRUE);
+ action = G_SIMPLE_ACTION (g_action_map_lookup_action (map, "add-file"));
+ g_simple_action_set_enabled (action, TRUE);
+ action = G_SIMPLE_ACTION (g_action_map_lookup_action (map, "remove-file"));
+ g_simple_action_set_enabled (action, TRUE);
} else {
- action = gtk_action_group_get_action (priv->action_group, "add-file");
- gtk_action_set_sensitive (GTK_ACTION (action), FALSE);
- action = gtk_action_group_get_action (priv->action_group, "remove-file");
- gtk_action_set_sensitive (GTK_ACTION (action), TRUE);
+ action = G_SIMPLE_ACTION (g_action_map_lookup_action (map, "add-file"));
+ g_simple_action_set_enabled (action, FALSE);
+ action = G_SIMPLE_ACTION (g_action_map_lookup_action (map, "remove-file"));
+ g_simple_action_set_enabled (action, TRUE);
}
}
@@ -644,6 +658,7 @@ cb_treeview_button_pressed (GtkTreeView * treeview, GdkEventButton * event, Xfbu
GtkTreeSelection *selection;
GtkTreePath *path;
GtkWidget *menu_popup;
+ GMenuModel *model;
GtkWidget *menuitem_remove;
#if 0 /* CDTEXT */
GtkWidget *menuitem_rename_artist;
@@ -658,28 +673,20 @@ cb_treeview_button_pressed (GtkTreeView * treeview, GdkEventButton * event, Xfbu
gtk_tree_path_free (path);
}
- menu_popup = gtk_ui_manager_get_widget (priv->ui_manager, "/popup-menu");
- menuitem_remove = gtk_ui_manager_get_widget (priv->ui_manager, "/popup-menu/remove-file");
-#if 0 /* CDTEXT */
- menuitem_rename_artist = gtk_ui_manager_get_widget (priv->ui_manager, "/popup-menu/rename-artist");
- menuitem_rename_title = gtk_ui_manager_get_widget (priv->ui_manager, "/popup-menu/rename-title");
-#endif /* CDTEXT */
+ model = G_MENU_MODEL (gtk_builder_get_object (priv->ui_manager, "popup-menu"));
+ menu_popup = gtk_menu_new_from_model (model);
+ gtk_widget_insert_action_group(GTK_WIDGET(menu_popup), "win", priv->action_group);
+ menuitem_remove = GTK_WIDGET (gtk_container_get_children (GTK_CONTAINER (menu_popup))->data);
if (gtk_tree_selection_count_selected_rows (selection) >= 1)
gtk_widget_set_sensitive (menuitem_remove, TRUE);
else
gtk_widget_set_sensitive (menuitem_remove, FALSE);
-#if 0 /* CDTEXT */
- if (gtk_tree_selection_count_selected_rows (selection) == 1) {
- gtk_widget_set_sensitive (menuitem_rename_artist, TRUE);
- gtk_widget_set_sensitive (menuitem_rename_title, TRUE);
- } else {
- gtk_widget_set_sensitive (menuitem_rename_artist, FALSE);
- gtk_widget_set_sensitive (menuitem_rename_title, FALSE);
- }
-#endif /* CDTEXT */
- gtk_menu_popup (GTK_MENU (menu_popup), NULL, NULL, NULL, NULL, event->button, gtk_get_current_event_time ());
+ GdkRectangle r = {event->x, event->y, 1, 1};
+ gtk_menu_popup_at_rect (GTK_MENU (menu_popup),
+ gtk_widget_get_parent_window (GTK_WIDGET (treeview)),
+ &r, GDK_GRAVITY_SOUTH_WEST, GDK_GRAVITY_NORTH_WEST, NULL);
return TRUE;
}
@@ -931,7 +938,7 @@ remove_row_reference (GtkTreeRowReference *reference, XfburnAudioCompositionPriv
}
static void
-action_remove_selection (GtkAction * action, XfburnAudioComposition * dc)
+action_remove_selection (GSimpleAction * action, GVariant * param, XfburnAudioComposition * dc)
{
XfburnAudioCompositionPrivate *priv = XFBURN_AUDIO_COMPOSITION_GET_PRIVATE (dc);
@@ -965,7 +972,7 @@ action_remove_selection (GtkAction * action, XfburnAudioComposition * dc)
static void
-action_add_selected_files (GtkAction *action, XfburnAudioComposition *dc)
+action_add_selected_files (GSimpleAction * action, GVariant * param, XfburnAudioComposition * dc)
{
XfburnAudioCompositionPrivate *priv = XFBURN_AUDIO_COMPOSITION_GET_PRIVATE (dc);
XfburnFileBrowser *browser = xfburn_main_window_get_file_browser (xfburn_main_window_get_instance ());
@@ -1044,7 +1051,7 @@ action_add_selected_files (GtkAction *action, XfburnAudioComposition *dc)
}
static void
-action_clear (GtkAction * action, XfburnAudioComposition * dc)
+action_clear (GSimpleAction * action, GVariant * param, XfburnAudioComposition * dc)
{
XfburnAudioCompositionPrivate *priv = XFBURN_AUDIO_COMPOSITION_GET_PRIVATE (dc);
@@ -1058,7 +1065,7 @@ action_clear (GtkAction * action, XfburnAudioComposition * dc)
}
static void
-action_info (GtkAction * action, XfburnAudioComposition * dc)
+action_info (GSimpleAction * action, GVariant * param, XfburnAudioComposition * dc)
{
XfburnAudioCompositionPrivate *priv = XFBURN_AUDIO_COMPOSITION_GET_PRIVATE (dc);
diff --git a/xfburn/xfburn-compositions-notebook.c b/xfburn/xfburn-compositions-notebook.c
index ab9116a..2da487a 100644
--- a/xfburn/xfburn-compositions-notebook.c
+++ b/xfburn/xfburn-compositions-notebook.c
@@ -226,7 +226,7 @@ xfburn_compositions_notebook_add_composition (XfburnCompositionsNotebook *notebo
}
void
-xfburn_compositions_notebook_add_welcome_tab (XfburnCompositionsNotebook *notebook, GActionGroup *action_group)
+xfburn_compositions_notebook_add_welcome_tab (XfburnCompositionsNotebook *notebook, GActionMap *action_group)
{
GtkWidget *welcome_tab = NULL;
GtkWidget *label;
diff --git a/xfburn/xfburn-compositions-notebook.h b/xfburn/xfburn-compositions-notebook.h
index 8910236..b3e7e4c 100644
--- a/xfburn/xfburn-compositions-notebook.h
+++ b/xfburn/xfburn-compositions-notebook.h
@@ -53,7 +53,7 @@ GType xfburn_compositions_notebook_get_type (void);
GtkWidget *xfburn_compositions_notebook_new (void);
XfburnComposition *xfburn_compositions_notebook_add_composition (XfburnCompositionsNotebook *notebook, XfburnCompositionType type);
-void xfburn_compositions_notebook_add_welcome_tab (XfburnCompositionsNotebook *notebook, GActionGroup *action_group);
+void xfburn_compositions_notebook_add_welcome_tab (XfburnCompositionsNotebook *notebook, GActionMap *action_group);
void xfburn_compositions_notebook_close_composition (XfburnCompositionsNotebook *notebook);
diff --git a/xfburn/xfburn-data-composition.c b/xfburn/xfburn-data-composition.c
index 55ebf15..5958e03 100644
--- a/xfburn/xfburn-data-composition.c
+++ b/xfburn/xfburn-data-composition.c
@@ -114,11 +114,11 @@ static gint directory_tree_sortfunc (GtkTreeModel * model, GtkTreeIter * a, GtkT
static void set_default_name (XfburnDataComposition * dc);
static gboolean has_default_name (XfburnDataComposition * dc);
-static void action_create_directory (GtkAction *, XfburnDataComposition *);
-static void action_clear (GtkAction *, XfburnDataComposition *);
-static void action_remove_selection (GtkAction *, XfburnDataComposition *);
-static void action_rename_selection (GtkAction *, XfburnDataComposition *);
-static void action_add_or_select (GtkAction *, XfburnDataComposition *);
+static void action_create_directory (GSimpleAction *, GVariant *, XfburnDataComposition *);
+static void action_clear (GSimpleAction *, GVariant *, XfburnDataComposition *);
+static void action_remove_selection (GSimpleAction *, GVariant *, XfburnDataComposition *);
+static void action_rename_selection (GSimpleAction *, GVariant *, XfburnDataComposition *);
+static void action_add_or_select (GSimpleAction *, GVariant *, XfburnDataComposition *);
static void add_files (gchar * files, XfburnDataComposition *);
static void add_cb (GtkWidget * widget, gpointer data);
@@ -167,8 +167,8 @@ typedef struct
void *thread_params;
- GtkActionGroup *action_group;
- GtkUIManager *ui_manager;
+ GSimpleActionGroup *action_group;
+ GtkBuilder *ui_manager;
GtkWidget *toolbar;
GtkWidget *entry_volume_name;
@@ -189,6 +189,15 @@ typedef struct
static GtkHPanedClass *parent_class = NULL;
static guint instances = 0;
+static const GActionEntry action_entries[] = {
+ {.name = "add-file", .activate = (gActionCallback)action_add_or_select},
+ {.name = "create-dir", .activate = (gActionCallback)action_create_directory},
+ {.name = "remove-file", .activate = (gActionCallback)action_remove_selection},
+ {.name = "clear", .activate = (gActionCallback)action_clear},
+ /*{.name = "import-session", .activate = (gActionCallback)action_remove_selection},*/
+ {.name = "rename-file", .activate = (gActionCallback)action_rename_selection},
+};
+/*
static const GtkActionEntry action_entries[] = {
{"add-file", "list-add", N_("Add"), NULL, N_("Add the selected file(s) to the composition"),
G_CALLBACK (action_add_or_select),},
@@ -199,9 +208,9 @@ static const GtkActionEntry action_entries[] = {
{"clear", "edit-clear", N_("Clear"), NULL, N_("Clear the content of the composition"),
G_CALLBACK (action_clear),},
/*{"import-session", "xfburn-import-session", N_("Import"), NULL, N_("Import existing session"),}, */
- {"rename-file", "gtk-edit", N_("Rename"), NULL, N_("Rename the selected file"),
+/* {"rename-file", "gtk-edit", N_("Rename"), NULL, N_("Rename the selected file"),
G_CALLBACK (action_rename_selection),},
-};
+};*/
static const gchar *toolbar_actions[] = {
"add-file",
@@ -287,13 +296,17 @@ xfburn_data_composition_init (XfburnDataComposition * composition)
GtkTreeViewColumn *column_file;
GtkCellRenderer *cell_icon, *cell_file;
GtkTreeSelection *selection;
- GtkAction *action = NULL;
+ GAction *action = NULL;
GdkScreen *screen;
GtkIconTheme *icon_theme;
- const gchar ui_string[] = "<ui> <popup name=\"popup-menu\">"
- "<menuitem action=\"create-dir\"/>" "<separator/>"
- "<menuitem action=\"rename-file\"/>" "<menuitem action=\"remove-file\"/>" "</popup></ui>";
+ const gchar ui_string[] = "<interface><menu id=\"popup-menu\">"
+ "<section>"
+ "<item><attribute name=\"action\">win.create-dir</attribute><attribute name=\"label\">Create directory</attribute></item>"
+ "</section><section>"
+ "<item><attribute name=\"action\">win.rename-file</attribute><attribute name=\"label\">Rename</attribute></item>"
+ "<item><attribute name=\"action\">win.remove-file</attribute><attribute name=\"label\">Remove</attribute></item>"
+ "</section></menu></interface>";
GtkTargetEntry gte_src[] = { { "XFBURN_TREE_PATHS", GTK_TARGET_SAME_WIDGET, DATA_COMPOSITION_DND_TARGET_INSIDE } };
GtkTargetEntry gte_dest[] = { { "XFBURN_TREE_PATHS", GTK_TARGET_SAME_WIDGET, DATA_COMPOSITION_DND_TARGET_INSIDE },
@@ -316,15 +329,14 @@ xfburn_data_composition_init (XfburnDataComposition * composition)
icon_file = gtk_icon_theme_load_icon (icon_theme, "gnome-fs-regular", x, 0, NULL);
/* create ui manager */
- priv->action_group = gtk_action_group_new ("xfburn-data-composition");
- gtk_action_group_set_translation_domain (priv->action_group, GETTEXT_PACKAGE);
- gtk_action_group_add_actions (priv->action_group, action_entries, G_N_ELEMENTS (action_entries),
+ priv->action_group = g_simple_action_group_new ();
+ g_action_map_add_action_entries (G_ACTION_MAP (priv->action_group), action_entries, G_N_ELEMENTS (action_entries),
GTK_WIDGET (composition));
- priv->ui_manager = gtk_ui_manager_new ();
- gtk_ui_manager_insert_action_group (priv->ui_manager, priv->action_group, 0);
-
- gtk_ui_manager_add_ui_from_string (priv->ui_manager, ui_string, -1, NULL);
+ priv->ui_manager = gtk_builder_new ();
+ gtk_builder_set_translation_domain(priv->ui_manager, GETTEXT_PACKAGE);
+
+ gtk_builder_add_from_string (priv->ui_manager, ui_string, -1, NULL);
hbox_toolbar = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
gtk_box_pack_start (GTK_BOX (composition), hbox_toolbar, FALSE, TRUE, 0);
@@ -448,8 +460,8 @@ xfburn_data_composition_init (XfburnDataComposition * composition)
g_signal_connect (G_OBJECT (priv->content), "drag-data-received", G_CALLBACK (cb_content_drag_data_rcv),
composition);
- action = gtk_action_group_get_action (priv->action_group, "remove-file");
- gtk_action_set_sensitive (GTK_ACTION (action), FALSE);
+ action = g_action_map_lookup_action (G_ACTION_MAP (priv->action_group), "remove-file");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
}
static void
@@ -532,31 +544,25 @@ cb_selection_changed (GtkTreeSelection *selection, XfburnDataComposition * dc)
{
XfburnDataCompositionPrivate *priv = XFBURN_DATA_COMPOSITION_GET_PRIVATE (dc);
gint n_selected_rows;
- GtkAction *action = NULL;
-
-
+ GAction* action[] = {
+ g_action_map_lookup_action (G_ACTION_MAP (priv->action_group), "add-file"),
+ g_action_map_lookup_action (G_ACTION_MAP (priv->action_group), "create-dir"),
+ g_action_map_lookup_action (G_ACTION_MAP (priv->action_group), "remove-file"),
+ };
+
n_selected_rows = gtk_tree_selection_count_selected_rows (selection);
if (n_selected_rows == 0) {
- action = gtk_action_group_get_action (priv->action_group, "add-file");
- gtk_action_set_sensitive (GTK_ACTION (action), TRUE);
- action = gtk_action_group_get_action (priv->action_group, "create-dir");
- gtk_action_set_sensitive (GTK_ACTION (action), TRUE);
- action = gtk_action_group_get_action (priv->action_group, "remove-file");
- gtk_action_set_sensitive (GTK_ACTION (action), FALSE);
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action[0]), TRUE);
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action[1]), TRUE);
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action[2]), FALSE);
} else if (n_selected_rows == 1) {
- action = gtk_action_group_get_action (priv->action_group, "add-file");
- gtk_action_set_sensitive (GTK_ACTION (action), TRUE);
- action = gtk_action_group_get_action (priv->action_group, "create-dir");
- gtk_action_set_sensitive (GTK_ACTION (action), TRUE);
- action = gtk_action_group_get_action (priv->action_group, "remove-file");
- gtk_action_set_sensitive (GTK_ACTION (action), TRUE);
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action[0]), TRUE);
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action[1]), TRUE);
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action[2]), TRUE);
} else {
- action = gtk_action_group_get_action (priv->action_group, "add-file");
- gtk_action_set_sensitive (GTK_ACTION (action), FALSE);
- action = gtk_action_group_get_action (priv->action_group, "create-dir");
- gtk_action_set_sensitive (GTK_ACTION (action), FALSE);
- action = gtk_action_group_get_action (priv->action_group, "remove-file");
- gtk_action_set_sensitive (GTK_ACTION (action), TRUE);
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action[0]), FALSE);
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action[1]), FALSE);
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action[2]), TRUE);
}
}
@@ -583,6 +589,7 @@ cb_treeview_button_pressed (GtkTreeView * treeview, GdkEventButton * event, Xfbu
if ((event->button == 3) && (event->type == GDK_BUTTON_PRESS)) {
GtkTreeSelection *selection;
GtkTreePath *path;
+ GMenuModel *model;
GtkWidget *menu_popup;
GtkWidget *menuitem_remove;
GtkWidget *menuitem_rename;
@@ -595,9 +602,13 @@ cb_treeview_button_pressed (GtkTreeView * treeview, GdkEventButton * event, Xfbu
gtk_tree_path_free (path);
}
- menu_popup = gtk_ui_manager_get_widget (priv->ui_manager, "/popup-menu");
- menuitem_remove = gtk_ui_manager_get_widget (priv->ui_manager, "/popup-menu/remove-file");
- menuitem_rename = gtk_ui_manager_get_widget (priv->ui_manager, "/popup-menu/rename-file");
+ model = G_MENU_MODEL (gtk_builder_get_object (priv->ui_manager, "popup-menu"));
+ menu_popup = gtk_menu_new_from_model (model);
+ gtk_widget_insert_action_group(GTK_WIDGET(menu_popup), "win", priv->action_group);
+
+ GList *childs = gtk_container_get_children (GTK_CONTAINER (menu_popup));
+ menuitem_remove = GTK_WIDGET (childs->next->next->data);
+ menuitem_rename = GTK_WIDGET (childs->next->data);
if (gtk_tree_selection_count_selected_rows (selection) >= 1)
gtk_widget_set_sensitive (menuitem_remove, TRUE);
@@ -608,7 +619,10 @@ cb_treeview_button_pressed (GtkTreeView * treeview, GdkEventButton * event, Xfbu
else
gtk_widget_set_sensitive (menuitem_rename, FALSE);
- gtk_menu_popup (GTK_MENU (menu_popup), NULL, NULL, NULL, NULL, event->button, gtk_get_current_event_time ());
+ GdkRectangle r = {event->x, event->y, 1, 1};
+ gtk_menu_popup_at_rect (GTK_MENU (menu_popup),
+ gtk_widget_get_parent_window (GTK_WIDGET (treeview)),
+ &r, GDK_GRAVITY_SOUTH_WEST, GDK_GRAVITY_NORTH_WEST, NULL);
return TRUE;
}
@@ -730,7 +744,7 @@ cb_adding_done (XfburnAddingProgress *progress, XfburnDataComposition *dc)
}
static void
-action_rename_selection (GtkAction * action, XfburnDataComposition * dc)
+action_rename_selection (GSimpleAction *action, GVariant *param, XfburnDataComposition *dc)
{
XfburnDataCompositionPrivate *priv = XFBURN_DATA_COMPOSITION_GET_PRIVATE (dc);
@@ -754,7 +768,7 @@ action_rename_selection (GtkAction * action, XfburnDataComposition * dc)
}
static void
-action_create_directory (GtkAction * action, XfburnDataComposition * dc)
+action_create_directory (GSimpleAction *action, GVariant *param, XfburnDataComposition *dc)
{
XfburnDataCompositionPrivate *priv = XFBURN_DATA_COMPOSITION_GET_PRIVATE (dc);
@@ -875,7 +889,7 @@ remove_row_reference (GtkTreeRowReference *reference, XfburnDataCompositionPriva
}
static void
-action_remove_selection (GtkAction * action, XfburnDataComposition * dc)
+action_remove_selection (GSimpleAction *action, GVariant *param, XfburnDataComposition *dc)
{
XfburnDataCompositionPrivate *priv = XFBURN_DATA_COMPOSITION_GET_PRIVATE (dc);
@@ -985,7 +999,7 @@ select_files (XfburnDataComposition * dc)
}
static void
-action_add_or_select (GtkAction *action, XfburnDataComposition *dc)
+action_add_or_select (GSimpleAction *action, GVariant *param, XfburnDataComposition *dc)
{
if (xfburn_settings_get_boolean("show-filebrowser", FALSE)) {
XfburnFileBrowser *browser = xfburn_main_window_get_file_browser (xfburn_main_window_get_instance ());
@@ -1074,7 +1088,7 @@ has_default_name (XfburnDataComposition * dc)
}
static void
-action_clear (GtkAction * action, XfburnDataComposition * dc)
+action_clear (GSimpleAction *action, GVariant *param, XfburnDataComposition *dc)
{
XfburnDataCompositionPrivate *priv = XFBURN_DATA_COMPOSITION_GET_PRIVATE (dc);
diff --git a/xfburn/xfburn-main-window.c b/xfburn/xfburn-main-window.c
index 7233e39..d0d861a 100644
--- a/xfburn/xfburn-main-window.c
+++ b/xfburn/xfburn-main-window.c
@@ -98,21 +98,21 @@ static void action_show_toolbar (GAction * action, GVariant*, XfburnMainWindow *
static GtkWindowClass *parent_class = NULL;
// upgrade to
static const GActionEntry action_entries[] = {
- // { "file-menu", NULL, NULL, NULL, NULL },
- { "new-data-composition", action_new_data_composition, NULL, NULL, NULL },
- { "new-audio-composition", action_new_audio_composition, NULL, NULL, NULL },
- { "close-composition", action_close, NULL, NULL, NULL },
- { "quit", action_quit, NULL, NULL, NULL },
- // { "edit-menu", NULL, NULL, NULL, NULL },
- { "preferences", action_preferences, NULL, NULL, NULL },
- // { "action-menu", NULL, NULL, NULL, NULL },
- { "refresh", action_refresh_directorybrowser, NULL, NULL, NULL },
- // { "help-menu", NULL, NULL, NULL, NULL },
- { "about", action_about, NULL, NULL, NULL },
- { "blank-disc", action_blank, NULL, NULL, NULL },
- { "copy-data", action_copy_cd, NULL, NULL, NULL },
- { "burn-image", action_burn_image, NULL, NULL, NULL },
- { "burn-dvd", action_burn_dvd_image, NULL, NULL, NULL },
+ // { "file-menu", NULL},
+ { .name = "new-data-composition", .activate = (gActionCallback)action_new_data_composition },
+ { .name = "new-audio-composition", .activate = (gActionCallback)action_new_audio_composition},
+ { .name = "close-composition", .activate = (gActionCallback)action_close},
+ { .name = "quit", .activate = (gActionCallback)action_quit},
+ // { .name = "edit-menu", .activate = NULL},
+ { .name = "preferences", .activate = (gActionCallback)action_preferences},
+ // { "action-menu", NULL},
+ { .name = "refresh", .activate = (gActionCallback)action_refresh_directorybrowser},
+ // { "help-menu", .activate = NULL},
+ { .name = "about", .activate = (gActionCallback)action_about},
+ { .name = "blank-disc", .activate = (gActionCallback)action_blank},
+ { .name = "copy-data", .activate = (gActionCallback)action_copy_cd},
+ { .name = "burn-image", .activate = (gActionCallback)action_burn_image},
+ { .name = "burn-dvd", .activate = (gActionCallback)action_burn_dvd_image},
};
static const struct {
@@ -165,8 +165,8 @@ static const struct {
};
*/
static const GActionEntry toggle_action_entries[] = {
- { "show-filebrowser", NULL, NULL, "true", action_show_filebrowser },
- { "show-toolbar", NULL, NULL, "true", action_show_toolbar },
+ { .name = "show-filebrowser", .state = "false", .change_state = (gActionCallback)action_show_filebrowser },
+ { .name = "show-toolbar", .state = "true", .change_state = (gActionCallback)action_show_toolbar },
};
/* static const GtkToggleActionEntry toggle_action_entries[] = {
{"show-filebrowser", NULL, N_("Show file browser"), NULL, N_("Show/hide the file browser"),
@@ -242,6 +242,26 @@ xfburn_main_window_finalize (GObject *obj)
}
static void
+add_button_to_toolbar(GtkToolbar *toolbar, const gchar *stock, const gchar *text, const gchar *action, const gchar *tooltip)
+{
+ GtkToolItem *item;
+ GtkWidget *icon;
+ GtkWidget *label;
+
+ gchar *markup = g_markup_printf_escaped("<span size=\"small\" weight=\"bold\">%s</span>", text);
+ label = gtk_label_new(NULL);
+ gtk_label_set_markup(GTK_LABEL (label), markup);
+ g_free(markup);
+
+ icon = gtk_image_new_from_icon_name (stock, 0);
+ item = gtk_tool_button_new(icon, text);
+ gtk_tool_item_set_tooltip_text(item, (tooltip == NULL) ? text : tooltip);
+ gtk_tool_button_set_label_widget(GTK_TOOL_BUTTON (item), label);
+ gtk_toolbar_insert(toolbar, item, -1);
+ gtk_actionable_set_action_name (GTK_ACTIONABLE (item), action);
+}
+
+static void
xfburn_main_window_init (XfburnMainWindow * mainwin)
{
XfburnMainWindowPrivate *priv = XFBURN_MAIN_WINDOW_GET_PRIVATE (mainwin);
@@ -266,8 +286,8 @@ xfburn_main_window_init (XfburnMainWindow * mainwin)
priv->action_map = g_simple_action_group_new();
- g_action_map_add_action_entries (priv->action_map, action_entries, G_N_ELEMENTS(action_entries), mainwin);
- g_action_map_add_action_entries (priv->action_map, toggle_action_entries, G_N_ELEMENTS(toggle_action_entries), mainwin);
+ g_action_map_add_action_entries (G_ACTION_MAP (priv->action_map), action_entries, G_N_ELEMENTS(action_entries), mainwin);
+ g_action_map_add_action_entries (G_ACTION_MAP (priv->action_map), toggle_action_entries, G_N_ELEMENTS(toggle_action_entries), mainwin);
xfce_resource_push_path (XFCE_RESOURCE_DATA, DATADIR);
file = xfce_resource_lookup (XFCE_RESOURCE_DATA, "xfburn/xfburn.3.ui");
@@ -298,7 +318,7 @@ xfburn_main_window_init (XfburnMainWindow * mainwin)
priv->menubar = gtk_menu_bar_new_from_model (menu_model);
if (G_LIKELY (priv->menubar != NULL)) {
- gtk_widget_insert_action_group (priv->menubar, "app", priv->action_map);
+ gtk_widget_insert_action_group (priv->menubar, "app", G_ACTION_GROUP (priv->action_map));
gtk_box_pack_start (GTK_BOX (vbox), priv->menubar, FALSE, FALSE, 0);
gtk_widget_show (priv->menubar);
}
@@ -330,9 +350,34 @@ xfburn_main_window_init (XfburnMainWindow * mainwin)
g_warning ("Unable to locate xfburn/xfburn-toolbars.ui !");
}
*/
- priv->toolbars = gtk_label_new ("placeholder for Gtk3Toolbar");
- gtk_box_pack_start (GTK_BOX (vbox), priv->toolbars, FALSE, FALSE, 0);
- gtk_widget_show (priv->toolbars);
+ priv->toolbars = gtk_toolbar_new ();
+// gtk_orientable_set_orientation (priv->toolbars, GTK_ORIENTATION_HORIZONTAL);
+ gtk_toolbar_set_style(GTK_TOOLBAR (priv->toolbars), GTK_TOOLBAR_BOTH);
+ gtk_widget_insert_action_group (priv->toolbars, "app", G_ACTION_GROUP (priv->action_map));
+
+ add_button_to_toolbar (GTK_TOOLBAR (priv->toolbars),
+ "stock_xfburn-new-data-composition", "New data composition", "app.new-data-composition", NULL);
+
+ add_button_to_toolbar (GTK_TOOLBAR (priv->toolbars),
+ "stock_xfburn-audio-cd", "New audio composition", "app.new-audio-composition", NULL);
+
+ gtk_toolbar_insert (GTK_TOOLBAR (priv->toolbars), gtk_separator_tool_item_new(), -1);
+
+ add_button_to_toolbar (GTK_TOOLBAR (priv->toolbars),
+ "stock_xfburn-blank-cdrw", "Blank CD-RW", "app.blank-disc", NULL);
+
+ add_button_to_toolbar (GTK_TOOLBAR (priv->toolbars),
+ "stock_xfburn", "Burn Image", "app.burn-image", NULL);
+
+ gtk_toolbar_insert (GTK_TOOLBAR (priv->toolbars), gtk_separator_tool_item_new(), -1);
+
+ add_button_to_toolbar (GTK_TOOLBAR (priv->toolbars),
+ "view-refresh", "Refresh", "app.refresh", "Refresh file list");
+
+ gtk_box_pack_start (GTK_BOX (vbox), priv->toolbars, FALSE, FALSE, 5);
+ gtk_toolbar_set_icon_size(GTK_TOOLBAR (priv->toolbars), GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_tool_shell_rebuild_menu(GTK_TOOL_SHELL (priv->toolbars));
+ gtk_widget_show_all (priv->toolbars);
/* vpaned */
priv->vpaned = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
@@ -654,16 +699,17 @@ xfburn_main_window_new (void)
XfburnMainWindow *win;
XfburnMainWindowPrivate *priv;
GAction *action;
+ GActionMap *action_map;
GList *device = NULL;
XfburnDeviceList *devlist;
instance = win = XFBURN_MAIN_WINDOW (obj);
priv = XFBURN_MAIN_WINDOW_GET_PRIVATE (win);
-
+ action_map = G_ACTION_MAP (priv->action_map);
/* load settings */
- action = g_action_map_lookup_action (priv->action_map, "show-filebrowser");
+ action = g_action_map_lookup_action (action_map, "show-filebrowser");
g_action_change_state(action, g_variant_new_boolean (xfburn_settings_get_boolean ("show-filebrowser", FALSE)));
- action = g_action_map_lookup_action (priv->action_map, "show-toolbar");
+ action = g_action_map_lookup_action (action_map, "show-toolbar");
g_action_change_state(action, g_variant_new_boolean (xfburn_settings_get_boolean ("show-toolbar", FALSE)));
/* action = gtk_action_group_get_action (priv->action_group, "save-composition");
gtk_action_set_sensitive (GTK_ACTION (action), FALSE);*/
@@ -690,20 +736,20 @@ xfburn_main_window_new (void)
}
if (!priv->support_cdr) {
- action = g_action_map_lookup_action (priv->action_map, "copy-data");
- g_simple_action_set_enabled (action, FALSE);
- action = g_action_map_lookup_action (priv->action_map, "copy-audio");
- g_simple_action_set_enabled (action, FALSE);
- action = g_action_map_lookup_action (priv->action_map, "burn-image");
- g_simple_action_set_enabled (action, FALSE);
+ action = g_action_map_lookup_action (action_map, "copy-data");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
+ action = g_action_map_lookup_action (action_map, "copy-audio");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
+ action = g_action_map_lookup_action (action_map, "burn-image");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
}
if (!priv->support_cdrw) {
- action = g_action_map_lookup_action (priv->action_map, "blank-disc");
- g_simple_action_set_enabled (action, FALSE);
+ action = g_action_map_lookup_action (action_map, "blank-disc");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
}
/* show welcome tab */
- xfburn_compositions_notebook_add_welcome_tab (XFBURN_COMPOSITIONS_NOTEBOOK (priv->compositions_notebook), priv->action_map);
+ xfburn_compositions_notebook_add_welcome_tab (XFBURN_COMPOSITIONS_NOTEBOOK (priv->compositions_notebook), action_map);
}
return obj;
diff --git a/xfburn/xfburn-main-window.h b/xfburn/xfburn-main-window.h
index 22c0289..160276e 100644
--- a/xfburn/xfburn-main-window.h
+++ b/xfburn/xfburn-main-window.h
@@ -37,6 +37,8 @@ G_BEGIN_DECLS
#define XFBURN_IS_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), XFBURN_TYPE_MAIN_WINDOW))
#define XFBURN_MAIN_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), XFBURN_TYPE_MAIN_WINDOW, XfburnMainWindowClass))
+typedef void (* gActionCallback) (GSimpleAction *,GVariant *,gpointer);
+
typedef struct
{
GtkWindow window;
diff --git a/xfburn/xfburn-transcoder-gst.c b/xfburn/xfburn-transcoder-gst.c
index d35ed33..e540428 100644
--- a/xfburn/xfburn-transcoder-gst.c
+++ b/xfburn/xfburn-transcoder-gst.c
@@ -235,7 +235,7 @@ xfburn_transcoder_gst_finalize (GObject * object)
gst_element_set_state (priv->pipeline, GST_STATE_NULL);
gst_object_unref (GST_OBJECT (priv->pipeline));
- gst_object_unref (GST_OBJECT (priv->discoverer));
+ g_object_unref (G_OBJECT (priv->discoverer));
priv->pipeline = NULL;
G_OBJECT_CLASS (parent_class)->finalize (object);
diff --git a/xfburn/xfburn-utils.c b/xfburn/xfburn-utils.c
index e3e70e7..71522a6 100644
--- a/xfburn/xfburn-utils.c
+++ b/xfburn/xfburn-utils.c
@@ -49,7 +49,7 @@ xfburn_busy_cursor (GtkWidget * widget)
cursor = gdk_cursor_new_for_display( gtk_widget_get_display(widget), GDK_WATCH);
gdk_window_set_cursor (gtk_widget_get_parent_window (widget), cursor);
g_object_unref (cursor);
- gdk_flush ();
+ gdk_display_flush (gtk_widget_get_display(widget));
}
void
@@ -57,7 +57,7 @@ xfburn_default_cursor (GtkWidget * widget)
{
g_return_if_fail (widget != NULL);
gdk_window_set_cursor (gtk_widget_get_parent_window (widget), NULL);
- gdk_flush ();
+ gdk_display_flush (gtk_widget_get_display(widget));
}
/*******************/
diff --git a/xfburn/xfburn-welcome-tab.c b/xfburn/xfburn-welcome-tab.c
index 28c032b..882bbdd 100644
--- a/xfburn/xfburn-welcome-tab.c
+++ b/xfburn/xfburn-welcome-tab.c
@@ -121,9 +121,13 @@ xfburn_welcome_tab_init (XfburnWelcomeTab * obj)
gtk_box_pack_start (GTK_BOX (obj), vbox, FALSE, FALSE, BORDER);
gtk_widget_show (vbox);
+ align = gtk_label_new (NULL);
+ gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
+ gtk_widget_show (align);
+
label_welcome = gtk_label_new (_("Welcome to Xfburn!"));
- gtk_box_pack_start (GTK_BOX (vbox), label_welcome, TRUE, FALSE, BORDER);
gtk_widget_set_valign (GTK_WIDGET (label_welcome), GTK_ALIGN_END);
+ gtk_box_pack_start (GTK_BOX (vbox), label_welcome, FALSE, FALSE, BORDER);
gtk_widget_show (label_welcome);
table = gtk_grid_new ();
@@ -132,6 +136,13 @@ xfburn_welcome_tab_init (XfburnWelcomeTab * obj)
gtk_grid_set_column_spacing (GTK_GRID (table), BORDER);
gtk_widget_show (table);
+ align = gtk_label_new (NULL);
+ gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
+ gtk_widget_show (align);
+ align = gtk_label_new (NULL);
+ gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
+ gtk_widget_show (align);
+
/* buttons */
priv->button_image = create_welcome_button ("stock_xfburn", _("<big>Burn _Image</big>"), _("Burn a prepared compilation, i.e. an .ISO file"));
gtk_grid_attach (GTK_GRID (table), priv->button_image, 0, 0, 1, 1);
@@ -240,7 +251,7 @@ new_audio_cd (GtkButton *button, XfburnWelcomeTab *tab)
/* */
GtkWidget *
-xfburn_welcome_tab_new (XfburnCompositionsNotebook *notebook, GActionGroup *action_group)
+xfburn_welcome_tab_new (XfburnCompositionsNotebook *notebook, GActionMap *action_group)
{
GtkWidget *obj;
diff --git a/xfburn/xfburn-welcome-tab.h b/xfburn/xfburn-welcome-tab.h
index 6c2446e..d2d5e88 100644
--- a/xfburn/xfburn-welcome-tab.h
+++ b/xfburn/xfburn-welcome-tab.h
@@ -48,7 +48,7 @@ typedef struct
} XfburnWelcomeTabClass;
GType xfburn_welcome_tab_get_type (void);
-GtkWidget *xfburn_welcome_tab_new (XfburnCompositionsNotebook *notebook, GActionGroup *action_group);
+GtkWidget *xfburn_welcome_tab_new (XfburnCompositionsNotebook *notebook, GActionMap *action_group);
G_END_DECLS
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list