/** * Set sensitiveness of all menu items that work on the selected scheduled. * \param sensitive Sensitiveness (FALSE for unsensitive, TRUE for * sensitive). * * \return FALSE */ gboolean gsb_menu_set_menus_select_scheduled_sensitive ( gboolean sensitive ) { devel_debug ( sensitive ? "item sensitive" : "item unsensitive" ); gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/EditTransaction", sensitive ); gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/RemoveTransaction", sensitive ); gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/CloneTransaction", sensitive ); return FALSE; }
/** * Initialise la barre de menus en fonction de la présence ou non d'un fichier de comptes * * \param sensitif * * \return * */ void gsb_menu_set_menus_with_file_sensitive ( gboolean sensitive ) { gchar * items[] = { "/menubar/FileMenu/Save", "/menubar/FileMenu/SaveAs", "/menubar/FileMenu/DebugFile", "/menubar/FileMenu/Obfuscate", "/menubar/FileMenu/DebugMode", "/menubar/FileMenu/ExportFile", "/menubar/FileMenu/CreateArchive", "/menubar/FileMenu/ExportArchive", "/menubar/FileMenu/Close", "/menubar/EditMenu/NewTransaction", "/menubar/EditMenu/RemoveTransaction", "/menubar/EditMenu/TemplateTransaction", "/menubar/EditMenu/CloneTransaction", "/menubar/EditMenu/EditTransaction", "/menubar/EditMenu/ConvertToScheduled", "/menubar/EditMenu/MoveToAnotherAccount", "/menubar/EditMenu/Preferences", "/menubar/EditMenu/RemoveAccount", "/menubar/EditMenu/NewAccount", "/menubar/ViewMenu/ShowTransactionForm", "/menubar/ViewMenu/ShowReconciled", "/menubar/ViewMenu/ShowArchived", "/menubar/ViewMenu/ShowClosed", "/menubar/ViewMenu/ShowOneLine", "/menubar/ViewMenu/ShowTwoLines", "/menubar/ViewMenu/ShowThreeLines", "/menubar/ViewMenu/ShowFourLines", "/menubar/ViewMenu/InitwidthCol", NULL }; gchar ** tmp = items; devel_debug_int (sensitive); while ( *tmp ) { gsb_gui_sensitive_menu_item ( *tmp, sensitive ); tmp++; } /* As this function may only be called when a new account is * created and the like, it is unlikely that we want to sensitive * transaction-related menus. */ gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/NewTransaction", FALSE ); gsb_menu_set_menus_select_transaction_sensitive ( FALSE ); }
/** * set or unset the modified flag (run structure) * and sensitive or not the menu to save the file * * \param modif TRUE to set the modified flag, FALSE to unset * * \return */ void gsb_file_set_modified ( gboolean modified ) { /* devel_debug_int (modified); */ /* If no file is loaded, do not change menu items. */ if ( ! gsb_data_account_get_accounts_amount () ) return; if ( modified ) { if ( ! run.file_modification ) { run.file_modification = time ( NULL ); gsb_gui_sensitive_menu_item ( "/menubar/FileMenu/Save", TRUE ); } } else { run.file_modification = 0; gsb_gui_sensitive_menu_item ( "/menubar/FileMenu/Save", FALSE ); } }
/** * Set sensitiveness of all menu items that work on the selected transaction. * \param sensitive Sensitiveness (FALSE for unsensitive, TRUE for * sensitive). * * \return FALSE */ gboolean gsb_menu_set_menus_select_transaction_sensitive ( gboolean sensitive ) { devel_debug ( sensitive ? "item sensitive" : "item unsensitive" ); gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/EditTransaction", sensitive ); gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/RemoveTransaction", sensitive ); gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/TemplateTransaction", sensitive ); gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/CloneTransaction", sensitive ); gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/ConvertToScheduled", sensitive ); gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/MoveToAnotherAccount", sensitive ); return FALSE; }
/** * Initialise la barre de menus si un compte est sélectionné * * \param sensitif * * \return * */ void gsb_menu_set_menus_view_account_sensitive ( gboolean sensitive ) { gchar * items[] = { "/menubar/ViewMenu/ShowTransactionForm", "/menubar/ViewMenu/ShowReconciled", "/menubar/ViewMenu/ShowArchived", "/menubar/ViewMenu/ShowOneLine", "/menubar/ViewMenu/ShowTwoLines", "/menubar/ViewMenu/ShowThreeLines", "/menubar/ViewMenu/ShowFourLines", "/menubar/ViewMenu/InitwidthCol", NULL }; gchar **tmp = items; devel_debug_int (sensitive); while ( *tmp ) { gsb_gui_sensitive_menu_item ( *tmp, sensitive ); tmp++; } }
GtkWidget *init_menus ( GtkWidget *vbox ) { GtkWidget *menubar; GtkActionGroup *actions; /* remind of GtkActionEntry : name, stock_id, label, accelerator, tooltip, callback */ GtkActionEntry entries[] = { /* File menu */ {"FileMenuAction", NULL, _("_File"), NULL, NULL, NULL}, #ifdef GTKOSXAPPLICATION { "NewAction", GTK_STOCK_NEW, _("_New account file..."), "<Meta>N", NULL, G_CALLBACK ( gsb_file_new ) }, {"OpenAction", GTK_STOCK_OPEN, _("_Open..."), "<Meta>O", NULL, G_CALLBACK ( gsb_file_open_menu ) }, {"RecentFilesAction", NULL, _("_Recently opened files"), NULL, NULL, NULL }, {"SaveAction", GTK_STOCK_SAVE, _("_Save"), "<Meta>S", NULL, G_CALLBACK ( gsb_file_save ) }, #else { "NewAction", GTK_STOCK_NEW, _("_New account file..."), NULL, NULL, G_CALLBACK ( gsb_file_new ) }, {"OpenAction", GTK_STOCK_OPEN, _("_Open..."), NULL, NULL, G_CALLBACK ( gsb_file_open_menu ) }, {"RecentFilesAction", NULL, _("_Recently opened files"), NULL, NULL, NULL }, {"SaveAction", GTK_STOCK_SAVE, _("_Save"), NULL, NULL, G_CALLBACK ( gsb_file_save ) }, #endif {"SaveAsAction", GTK_STOCK_SAVE_AS, _("_Save as..."), NULL, NULL, G_CALLBACK ( gsb_file_save_as ) }, {"ImportFileAction", GTK_STOCK_CONVERT, _("_Import file..."), NULL, NULL, G_CALLBACK ( importer_fichier ) }, { "ExportFileAction", GTK_STOCK_CONVERT, _("_Export accounts as QIF/CSV file..."), NULL, NULL, G_CALLBACK ( export_accounts ) }, {"CreateArchiveAction", GTK_STOCK_CLEAR, _("Archive transactions..."), NULL, NULL, G_CALLBACK ( gsb_assistant_archive_run_by_menu ) }, {"ExportArchiveAction", GTK_STOCK_HARDDISK, _("_Export an archive as GSB/QIF/CSV file..."), NULL, NULL, G_CALLBACK ( gsb_assistant_archive_export_run ) }, {"DebugFileAction", GTK_STOCK_FIND, _("_Debug account file..."), "", NULL, G_CALLBACK ( gsb_debug ) }, {"ObfuscateAction", GTK_STOCK_FIND, _("_Obfuscate account file..."), "", NULL, G_CALLBACK ( file_obfuscate_run ) }, {"ObfuscateQifAction", GTK_STOCK_FIND, _("_Obfuscate QIF file..."), "", NULL, G_CALLBACK ( file_obfuscate_qif_run ) }, #ifdef GTKOSXAPPLICATION {"CloseAction", GTK_STOCK_CLOSE, _("_Close"), "<Meta>W", NULL, G_CALLBACK ( gsb_file_close ) }, #else {"CloseAction", GTK_STOCK_CLOSE, _("_Close"), NULL, NULL, G_CALLBACK ( gsb_file_close ) }, #endif {"QuitAction", GTK_STOCK_QUIT, _("_Quit"), NULL, NULL, G_CALLBACK ( gsb_main_grisbi_close ) }, /* Editmenu */ {"EditMenuAction", NULL, _("_Edit"), NULL, NULL, NULL }, {"EditTransactionAction", GTK_STOCK_EDIT, _("_Edit transaction"), "", NULL, G_CALLBACK ( gsb_transactions_list_edit_current_transaction ) }, {"NewTransactionAction", GTK_STOCK_NEW, _("_New transaction"), "", NULL, G_CALLBACK ( new_transaction ) }, {"RemoveTransactionAction", GTK_STOCK_DELETE, _("_Remove transaction"), "", NULL, G_CALLBACK ( remove_transaction ) }, {"TemplateTransactionAction", GTK_STOCK_COPY, _("Use selected transaction as a template"), "", NULL, G_CALLBACK ( gsb_transactions_list_clone_template ) }, {"CloneTransactionAction", GTK_STOCK_COPY, _("_Clone transaction"), "", NULL, G_CALLBACK ( clone_selected_transaction ) }, {"ConvertToScheduledAction", GTK_STOCK_CONVERT, _("Convert to _scheduled transaction"), NULL, NULL, G_CALLBACK ( schedule_selected_transaction ) }, {"MoveToAnotherAccountAction", NULL, _("_Move transaction to another account"), NULL, NULL, NULL }, {"NewAccountAction", GTK_STOCK_NEW, _("_New account"), "", NULL, G_CALLBACK ( gsb_assistant_account_run ) }, {"RemoveAccountAction", GTK_STOCK_DELETE, _("_Remove current account"), "", NULL, G_CALLBACK ( gsb_account_delete ) }, {"PrefsAction", GTK_STOCK_PREFERENCES, _("_Preferences"), NULL, NULL, G_CALLBACK ( preferences ) }, /* View menu */ {"ViewMenuAction", NULL, _("_View"), NULL, NULL, NULL }, {"InitwidthColAction", NULL, _("Reset the column width"), NULL, NULL, G_CALLBACK ( gsb_menu_reinit_largeur_col_menu ) }, /* Help menu */ {"HelpMenuAction", NULL, _("_Help"), NULL, NULL, NULL }, #ifdef GTKOSXAPPLICATION {"ManualAction", GTK_STOCK_HELP, _("_Manual"), "<Meta>H", NULL, G_CALLBACK ( help_manual ) }, #else {"ManualAction", GTK_STOCK_HELP, _("_Manual"), NULL, NULL, G_CALLBACK ( help_manual ) }, #endif {"QuickStartAction", NULL, _("_Quick start"), NULL, NULL, G_CALLBACK ( help_quick_start ) }, {"TranslationAction", NULL, _("_Translation"), NULL, NULL, G_CALLBACK ( help_translation ) }, {"AboutAction", GTK_STOCK_ABOUT, _("_About Grisbi..."), NULL, NULL, G_CALLBACK ( a_propos ) }, {"GrisbiWebsiteAction", NULL, _("_Grisbi website"), NULL, NULL, G_CALLBACK ( help_website ) }, {"ReportBugAction", NULL, _("_Report a bug"), NULL, NULL, G_CALLBACK ( help_bugreport ) }, {"TipAction", GTK_STOCK_DIALOG_INFO, _("_Tip of the day"), NULL, NULL, G_CALLBACK ( force_display_tip ) }, }; GtkRadioActionEntry radio_entries[] = { /* Name, StockID, Label, Accelerator, Tooltip, Value */ {"ShowOneLineAction", NULL, _("Show _one line per transaction"), NULL, NULL, ONE_LINE_PER_TRANSACTION }, {"ShowTwoLinesAction", NULL, _("Show _two lines per transaction"), NULL, NULL, TWO_LINES_PER_TRANSACTION }, {"ShowThreeLinesAction", NULL, _("Show _three lines per transaction"), NULL, NULL, THREE_LINES_PER_TRANSACTION }, {"ShowFourLinesAction", NULL, _("Show _four lines per transaction"), NULL, NULL, FOUR_LINES_PER_TRANSACTION }, }; GtkToggleActionEntry toggle_entries[] = { {"DebugModeAction", NULL, _("Debug mode"), NULL, NULL, G_CALLBACK ( gsb_debug_start_log ), etat.debug_mode }, {"ShowTransactionFormAction", NULL, _("Show transaction _form"), NULL, NULL, G_CALLBACK ( gsb_gui_toggle_show_form ), etat.formulaire_toujours_affiche }, #ifdef GTKOSXAPPLICATION {"ShowReconciledAction", NULL, _("Show _reconciled"), "<Meta>R", NULL, G_CALLBACK ( gsb_gui_toggle_show_reconciled ), 0 }, {"ShowArchivedAction", NULL, _("Show _lines archives"), "<Meta>L", NULL, G_CALLBACK ( gsb_gui_toggle_show_archived ), 0 }, #else {"ShowReconciledAction", NULL, _("Show _reconciled"), "<Alt>R", NULL, G_CALLBACK ( gsb_gui_toggle_show_reconciled ), 0 }, {"ShowArchivedAction", NULL, _("Show _lines archives"), "<Alt>L", NULL, G_CALLBACK ( gsb_gui_toggle_show_archived ), 0 }, #endif {"ShowClosedAction", NULL, _("Show _closed accounts"), NULL, NULL, G_CALLBACK ( gsb_gui_toggle_show_closed_accounts ), etat.show_closed_accounts } }; ui_manager = gtk_ui_manager_new (); actions = gtk_action_group_new ( "Actions" ); gtk_action_group_add_actions (actions, entries, G_N_ELEMENTS ( entries ), (gpointer) run.window ); gtk_action_group_add_radio_actions ( actions, radio_entries, G_N_ELEMENTS ( radio_entries ), -1, G_CALLBACK ( gsb_gui_toggle_line_view_mode ), NULL ); gtk_action_group_add_toggle_actions ( actions, toggle_entries, G_N_ELEMENTS ( toggle_entries ), NULL ); gtk_ui_manager_insert_action_group ( ui_manager, actions, 0 ); merge_id = gtk_ui_manager_add_ui_from_string ( ui_manager, ui_manager_buffer, -1, NULL ); #ifndef GTKOSXAPPLICATION gtk_window_add_accel_group ( GTK_WINDOW ( run.window ), gtk_ui_manager_get_accel_group ( ui_manager ) ); #endif /* GTKOSXAPPLICATION */ menubar = gtk_ui_manager_get_widget ( ui_manager, "/menubar" ); gtk_box_pack_start ( GTK_BOX ( vbox ), menubar, FALSE, TRUE, 0 ); gsb_gui_sensitive_menu_item ( "/menubar/EditMenu/NewTransaction", FALSE ); gsb_menu_transaction_operations_set_sensitive ( FALSE ); return menubar; }