[easytag] Improve access to the scanner dialogue, bug 699122
- From: David King <davidk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [easytag] Improve access to the scanner dialogue, bug 699122
- Date: Sun, 28 Apr 2013 18:23:20 +0000 (UTC)
commit c8216e3c2a7366ca3819ecec342879498de0ebf2
Author: David King <amigadave amigadave com>
Date: Sun Apr 28 18:44:25 2013 +0100
Improve access to the scanner dialogue, bug 699122
Convert the scanner mode actions to radio actions. Add a toggle action
for showing the scanner dialogue.
src/bar.c | 29 +++++++++++++++++----
src/bar.h | 3 +-
src/easytag.c | 27 +++++++++++++++++--
src/easytag.h | 3 ++
src/scan.c | 73 +++++++++++++++++++++++++++++++++++++----------------
src/scan.h | 4 +--
src/ui_manager.h | 9 +++---
7 files changed, 108 insertions(+), 40 deletions(-)
---
diff --git a/src/bar.c b/src/bar.c
index e6d18a6..da1f9e7 100644
--- a/src/bar.c
+++ b/src/bar.c
@@ -194,9 +194,8 @@ void Create_UI (GtkWidget **ppmenubar, GtkWidget **pptoolbar)
{ AM_PREV, GTK_STOCK_GO_BACK, _("_Previous File"), "Page_Up",
_("Previous file"), G_CALLBACK(Action_Select_Prev_File) },
{ AM_NEXT, GTK_STOCK_GO_FORWARD, _("_Next File"), "Page_Down",
_("Next file"), G_CALLBACK(Action_Select_Next_File) },
{ AM_LAST, GTK_STOCK_GOTO_LAST, _("_Last File"),
"<Control>End", _("Last file"), G_CALLBACK(Action_Select_Last_File) },
- // XXX GTK1 version uses Ctrl+C for scanner, this doesnt work in GTK1 as its copy! in gtk2,
behaviour is different
- // and binding Ctrl+C effectively stops the user copying text..
- { AM_SCAN, "document-properties", _("S_can Files…"), NULL,
_("Scan files"), G_CALLBACK(Action_Scan_Selected_Files) },
+ { AM_SCAN_FILES, GTK_STOCK_APPLY, _("S_can Files"), NULL,
+ _("Scan selected files"), G_CALLBACK (Action_Scan_Selected_Files) },
{ AM_REMOVE, GTK_STOCK_CLEAR, _("_Remove Tags"), "<Control>R",
_("Remove tags"), G_CALLBACK(Action_Remove_Selected_Tags) },
{ AM_UNDO, GTK_STOCK_UNDO, _("_Undo Last Files Changes"), "<Control>Z",
_("Undo last Files changes"), G_CALLBACK(Action_Undo_Selected_Files) },
{ AM_REDO, GTK_STOCK_REDO, _("R_edo Last Files Changes"),
"<Shift><Control>Z", _("Redo last files changes"), G_CALLBACK(Action_Redo_Selected_File) },
@@ -221,9 +220,6 @@ void Create_UI (GtkWidget **ppmenubar, GtkWidget **pptoolbar)
{ AM_INITIALIZE_TREE, GTK_STOCK_REFRESH, _("_Refresh Tree"),
"<Control><Shift>R", _("_Refresh tree"), G_CALLBACK(Browser_Tree_Rebuild) },
{ MENU_SCANNER, NULL, _("S_canner"), NULL,
NULL, NULL },
- { AM_SCANNER_FILL_TAG, "document-properties", _("_Fill Tags…"), NULL,
_("Fill tags"), G_CALLBACK(Scan_Use_Fill_Tag_Scanner) },
- { AM_SCANNER_RENAME_FILE, "document-properties", _("_Rename Files and Directories…"),
NULL, _("Rename files and directories"),G_CALLBACK(Scan_Use_Rename_File_Scanner) },
- { AM_SCANNER_PROCESS_FIELDS, "document-properties", _("_Process Fields…"), NULL,
_("Process Fields"), G_CALLBACK(Scan_Use_Process_Fields_Scanner) },
{ MENU_MISC, NULL, _("_Miscellaneous"),
NULL, NULL, NULL },
{ AM_SEARCH_FILE, GTK_STOCK_FIND, _("Find _Files…"), "<Control>F",
_("Find files"), G_CALLBACK(Open_Search_File_Window) },
@@ -270,6 +266,9 @@ void Create_UI (GtkWidget **ppmenubar, GtkWidget **pptoolbar)
*/
{ AM_BROWSER_HIDDEN_DIR, NULL, _("Show Hidden Directories"),
NULL, _("Show hidden directories"), G_CALLBACK(Browser_Tree_Rebuild),
BROWSE_HIDDEN_DIR },
#endif /* !G_OS_WIN32 */
+ { AM_SCANNER_SHOW, "document-properties", _("_Show Scanner"), NULL,
+ _("Show scanner"), G_CALLBACK (et_scan_show),
+ OPEN_SCANNER_WINDOW_ON_STARTUP },
};
GtkRadioActionEntry view_mode_entries[] =
@@ -281,16 +280,30 @@ void Create_UI (GtkWidget **ppmenubar, GtkWidget **pptoolbar)
_("View by artist and album"), 1 }
};
+ GtkRadioActionEntry scanner_mode_entries[] =
+ {
+ { AM_SCANNER_FILL_TAG, "document-properties", _("_Fill Tags…"), NULL,
+ _("Fill tags"), SCANNER_FILL_TAG },
+ { AM_SCANNER_RENAME_FILE, "document-properties",
+ _("_Rename Files and Directories…"), NULL,
+ _("Rename files and directories"), SCANNER_RENAME_FILE },
+ { AM_SCANNER_PROCESS_FIELDS, "document-properties",
+ _("_Process Fields…"), NULL, _("Process Fields"),
+ SCANNER_PROCESS_FIELDS }
+ };
+
GError *error = NULL;
guint num_menu_entries;
guint num_toggle_entries;
guint n_view_mode_entries;
+ guint n_scanner_mode_entries;
guint i;
/* Calculate number of items into the menu */
num_menu_entries = G_N_ELEMENTS(ActionEntries);
num_toggle_entries = G_N_ELEMENTS(ToggleActionEntries);
n_view_mode_entries = G_N_ELEMENTS (view_mode_entries);
+ n_scanner_mode_entries = G_N_ELEMENTS (scanner_mode_entries);
/* Populate quarks list with the entries */
for(i = 0; i < num_menu_entries; i++)
@@ -316,6 +329,10 @@ void Create_UI (GtkWidget **ppmenubar, GtkWidget **pptoolbar)
gtk_action_group_add_radio_actions (ActionGroup, view_mode_entries,
n_view_mode_entries, 0,
Action_Select_Browser_Style, NULL);
+ gtk_action_group_add_radio_actions (ActionGroup, scanner_mode_entries,
+ n_scanner_mode_entries, 0,
+ G_CALLBACK (et_on_action_select_scan_mode),
+ NULL);
UIManager = gtk_ui_manager_new();
if (!gtk_ui_manager_add_ui_from_string(UIManager, ui_xml, -1, &error))
diff --git a/src/bar.h b/src/bar.h
index db5def3..115fe21 100644
--- a/src/bar.h
+++ b/src/bar.h
@@ -56,7 +56,7 @@ GtkWidget *CheckMenuItemBrowseHiddenDirMainMenu;
#define AM_NEXT "NextFile"
#define AM_FIRST "FirstFile"
#define AM_LAST "LastFile"
-#define AM_SCAN "ScanFile"
+#define AM_SCAN_FILES "ScanFiles"
#define AM_REMOVE "RemoveTag"
#define AM_UNDO "UndoFile"
#define AM_REDO "RedoFile"
@@ -89,6 +89,7 @@ GtkWidget *CheckMenuItemBrowseHiddenDirMainMenu;
#define AM_SCANNER_FILL_TAG "FillTag"
#define AM_SCANNER_RENAME_FILE "RenameFile"
#define AM_SCANNER_PROCESS_FIELDS "ProcessFields"
+#define AM_SCANNER_SHOW "ShowScanner"
#define AM_SEARCH_FILE "SearchFile"
#define AM_CDDB_SEARCH_FILE "CDDBSearchFile"
#define AM_CDDB_SEARCH "CDDBSearch"
diff --git a/src/easytag.c b/src/easytag.c
index 7924131..8426acd 100644
--- a/src/easytag.c
+++ b/src/easytag.c
@@ -3532,8 +3532,29 @@ Action_Select_Browser_Style (void)
Update_Command_Buttons_Sensivity();
}
+/*
+ * et_on_action_select_scan_mode:
+ * @action: the action on which the signal was emitted
+ * @current: the member of the action group which has just been activated
+ * @user_data: user data set when the signal handler was connected
+ *
+ * Select the current scanner mode and open the scanner window.
+ */
+void
+et_on_action_select_scan_mode (GtkRadioAction *action, GtkRadioAction *current,
+ gpointer user_data)
+{
+ gint active_value;
+ active_value = gtk_radio_action_get_current_value (action);
+ if (SCANNER_TYPE != active_value)
+ {
+ SCANNER_TYPE = active_value;
+ }
+
+ Open_ScannerWindow (SCANNER_TYPE);
+}
/*
@@ -3949,7 +3970,7 @@ void Update_Command_Buttons_Sensivity (void)
ui_widget_set_sensitive(MENU_FILE, AM_NEXT, FALSE);
ui_widget_set_sensitive(MENU_FILE, AM_FIRST, FALSE);
ui_widget_set_sensitive(MENU_FILE, AM_LAST, FALSE);
- ui_widget_set_sensitive(MENU_FILE, AM_SCAN, FALSE);
+ ui_widget_set_sensitive (MENU_FILE, AM_SCAN_FILES, FALSE);
ui_widget_set_sensitive(MENU_FILE, AM_REMOVE, FALSE);
ui_widget_set_sensitive(MENU_FILE, AM_UNDO, FALSE);
ui_widget_set_sensitive(MENU_FILE, AM_REDO, FALSE);
@@ -4020,7 +4041,7 @@ void Update_Command_Buttons_Sensivity (void)
ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_DESCENDING_FILE_BITRATE,TRUE);
ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_ASCENDING_FILE_SAMPLERATE,TRUE);
ui_widget_set_sensitive(MENU_SORT_PROP_PATH,AM_SORT_DESCENDING_FILE_SAMPLERATE,TRUE);
- ui_widget_set_sensitive(MENU_FILE,AM_SCAN,TRUE);
+ ui_widget_set_sensitive (MENU_FILE, AM_SCAN_FILES, TRUE);
ui_widget_set_sensitive(MENU_FILE,AM_REMOVE,TRUE);
ui_widget_set_sensitive(MENU_MISC,AM_SEARCH_FILE,TRUE);
ui_widget_set_sensitive(MENU_MISC,AM_FILENAME_FROM_TXT,TRUE);
@@ -4123,7 +4144,7 @@ Disable_Command_Buttons (void)
ui_widget_set_sensitive(MENU_FILE,AM_PREV,FALSE);
ui_widget_set_sensitive(MENU_FILE,AM_NEXT,FALSE);
ui_widget_set_sensitive(MENU_FILE,AM_LAST,FALSE);
- ui_widget_set_sensitive(MENU_FILE,AM_SCAN,FALSE);
+ ui_widget_set_sensitive (MENU_FILE, AM_SCAN_FILES, FALSE);
ui_widget_set_sensitive(MENU_FILE,AM_REMOVE,FALSE);
ui_widget_set_sensitive(MENU_FILE,AM_UNDO,FALSE);
ui_widget_set_sensitive(MENU_FILE,AM_REDO,FALSE);
diff --git a/src/easytag.h b/src/easytag.h
index bec9164..840dae7 100644
--- a/src/easytag.h
+++ b/src/easytag.h
@@ -159,6 +159,9 @@ gint Save_All_Files_With_Answer (gboolean force_saving_files);
void Action_Main_Stop_Button_Pressed (void);
void Action_Select_Browser_Style (void);
+void et_on_action_select_scan_mode (GtkRadioAction *action,
+ GtkRadioAction *current,
+ gpointer user_data);
void Tag_Area_Display_Controls (ET_File *ETFile);
diff --git a/src/scan.c b/src/scan.c
index 1bf35c0..f3ab1af 100644
--- a/src/scan.c
+++ b/src/scan.c
@@ -2313,6 +2313,7 @@ void Open_ScannerWindow (gint scanner_type)
GList *pf_cb_group3 = NULL;
GtkTreeViewColumn * column;
GtkCellRenderer *renderer;
+ GtkToggleAction *toggle_action;
/* Check if already opened */
if (ScannerWindow)
@@ -2392,7 +2393,7 @@ void Open_ScannerWindow (gint scanner_type)
gtk_container_add(GTK_CONTAINER(SWScanButton),Icon);
gtk_box_pack_start(GTK_BOX(HBox1),SWScanButton,FALSE,FALSE,0);
gtk_button_set_relief(GTK_BUTTON(SWScanButton),GTK_RELIEF_NONE);
- gtk_widget_set_tooltip_text(SWScanButton,_("Open scanner window / Scan selected files"));
+ gtk_widget_set_tooltip_text(SWScanButton,_("Scan selected files"));
g_signal_connect(G_OBJECT(SWScanButton),"clicked",G_CALLBACK(Action_Scan_Selected_Files),NULL);
/* Separator line */
@@ -3012,6 +3013,13 @@ void Open_ScannerWindow (gint scanner_type)
// Activate the current menu in the option menu
gtk_combo_box_set_active(GTK_COMBO_BOX(ScannerOptionCombo), scanner_type);
+
+ toggle_action = GTK_TOGGLE_ACTION (gtk_ui_manager_get_action (UIManager,
+ "/ToolBar/ShowScanner"));
+ if (!gtk_toggle_action_get_active (toggle_action))
+ {
+ gtk_toggle_action_set_active (toggle_action, TRUE);
+ }
}
static gboolean
@@ -3054,29 +3062,33 @@ void Scan_Select_Mode_And_Run_Scanner (ET_File *ETFile)
}
}
-void Scan_Use_Fill_Tag_Scanner (void)
-{
- if (!ScannerWindow || gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) != SCANNER_FILL_TAG)
- Open_ScannerWindow(SCANNER_FILL_TAG);
- else
- Action_Scan_Selected_Files();
-}
-
-
-void Scan_Use_Rename_File_Scanner (void)
+/*
+ * et_scan_show:
+ * @action: the #GtkToggleAction that was activated
+ * @user_data: user data set when the signal handler was connected
+ *
+ * Show the scanner window.
+ */
+void
+et_scan_show (GtkAction *action, gpointer user_data)
{
- if (!ScannerWindow || gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) != SCANNER_RENAME_FILE)
- Open_ScannerWindow(SCANNER_RENAME_FILE);
- else
- Action_Scan_Selected_Files();
-}
+ gboolean active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
-void Scan_Use_Process_Fields_Scanner (void)
-{
- if (!ScannerWindow || gtk_combo_box_get_active(GTK_COMBO_BOX(ScannerOptionCombo)) !=
SCANNER_PROCESS_FIELDS)
- Open_ScannerWindow(SCANNER_PROCESS_FIELDS);
+ if (active)
+ {
+ if (!ScannerWindow)
+ {
+ Open_ScannerWindow (SCANNER_TYPE);
+ }
+ else
+ {
+ gtk_window_present (GTK_WINDOW (ScannerWindow));
+ }
+ }
else
- Action_Scan_Selected_Files();
+ {
+ ScannerWindow_Quit ();
+ }
}
@@ -3084,6 +3096,16 @@ void Scan_Use_Process_Fields_Scanner (void)
static void
ScannerWindow_Quit (void)
{
+ GtkToggleAction *toggle_action;
+
+ toggle_action = GTK_TOGGLE_ACTION (gtk_ui_manager_get_action (UIManager,
+ "/ToolBar/ShowScanner"));
+
+ if (gtk_toggle_action_get_active (toggle_action))
+ {
+ gtk_toggle_action_set_active (toggle_action, FALSE);
+ }
+
if (ScannerWindow)
{
ScannerWindow_Apply_Changes();
@@ -4048,7 +4070,14 @@ Mask_Editor_List_Key_Press (GtkWidget *widget, GdkEvent *event)
static void
Scanner_Option_Menu_Activate_Item (GtkWidget *combo, gpointer data)
{
- switch (gtk_combo_box_get_active(GTK_COMBO_BOX(combo)))
+ GtkRadioAction *radio_action;
+
+ radio_action = GTK_RADIO_ACTION (gtk_ui_manager_get_action (UIManager,
+ "/MenuBar/ScannerMenu/FillTag"));
+ SCANNER_TYPE = gtk_combo_box_get_active (GTK_COMBO_BOX (combo));
+ gtk_radio_action_set_current_value (radio_action, SCANNER_TYPE);
+
+ switch (SCANNER_TYPE)
{
case SCANNER_FILL_TAG:
gtk_widget_show(MaskEditorButton);
diff --git a/src/scan.h b/src/scan.h
index 9f6aa2b..d1cd119 100644
--- a/src/scan.h
+++ b/src/scan.h
@@ -57,9 +57,7 @@ void Scan_Rename_File_Generate_Preview (void);
void Scan_Fill_Tag_Generate_Preview (void);
void Scan_Rename_Directory_Generate_Preview (void);
-void Scan_Use_Fill_Tag_Scanner (void);
-void Scan_Use_Rename_File_Scanner (void);
-void Scan_Use_Process_Fields_Scanner (void);
+void et_scan_show (GtkAction *action, gpointer user_data);
gboolean Scan_Check_Rename_File_Mask (GtkWidget *widget_to_show_hide, GtkEntry *widget_source);
diff --git a/src/ui_manager.h b/src/ui_manager.h
index 65cd493..6601994 100644
--- a/src/ui_manager.h
+++ b/src/ui_manager.h
@@ -97,7 +97,6 @@ static const gchar *ui_xml =
" <menuitem action='LastFile' />"
" <separator />"
-" <menuitem action='ScanFile' />"
" <menuitem action='RemoveTag' />"
" <menuitem action='UndoFile' />"
" <menuitem action='RedoFile' />"
@@ -147,6 +146,8 @@ static const gchar *ui_xml =
" <menuitem action='FillTag' />"
" <menuitem action='RenameFile' />"
" <menuitem action='ProcessFields' />"
+" <separator />"
+" <menuitem action='ShowScanner' />"
" </menu>"
" <menu action='MiscMenu'>"
@@ -180,7 +181,7 @@ static const gchar *ui_xml =
" <toolitem action='LastFile'/>"
" <separator />"
-" <toolitem action='ScanFile'/>"
+" <toolitem action='ShowScanner'/>"
" <toolitem action='RemoveTag'/>"
" <toolitem action='UndoFile'/>"
" <toolitem action='RedoFile'/>"
@@ -218,9 +219,7 @@ static const gchar *ui_xml =
" <menuitem action='RunAudio' />"
" <separator />"
" <menu action='ScannerSubpopup'>"
-" <menuitem action='FillTag' />"
-" <menuitem action='RenameFile' />"
-" <menuitem action='ProcessFields' />"
+" <menuitem action='ShowScanner' />"
" </menu>"
" <menuitem action='CDDBSearchFile' />"
" <menuitem action='SearchFile' />"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]