📄 menus.c
字号:
gtk_icon_source_set_pixbuf (icon_source, pixbuf); gtk_icon_set_add_source (icon_set, icon_source); gtk_icon_factory_add (icon_factory, stock_id, icon_set);}static guintmerge_ui (const gchar *description){ guint merge_id; GError *error; merge_id = gtk_ui_manager_add_ui_from_string (ui_manager, description, -1, &error); if (!merge_id) { g_message ("Building menus failed: %s", error->message); g_error_free (error); exit (EXIT_FAILURE); } gtk_ui_manager_ensure_update (ui_manager); return merge_id;}/* [ menus_set_toolbar ] * Switch the application toolbar to a view specific one */voidmenus_set_toolbar (FirestarterView new_view){ static guint merge_id = -1; const char *description; if (new_view == STATUS_VIEW) description = statusbar_description; else if (new_view == EVENTS_VIEW) description = eventsbar_description; else description = policybar_description; if (merge_id != -1) { /* Remove the previous toolbar contents */ gtk_ui_manager_remove_ui (ui_manager, merge_id); } merge_id = merge_ui (description);}voidmenus_update_firewall_controls_state (FirewallStatus state){ static guint start_stop_merge_id = -1; static guint lock_merge_id = -1; const gchar *description = NULL; switch (state) { case STATUS_HIT: case STATUS_RUNNING: description = firewall_state_active_description; break; case STATUS_STOPPED: description = firewall_state_disabled_description; break; case STATUS_LOCKED: description = firewall_state_locked_description; break; case STATUS_NONE: break; default: g_assert_not_reached (); } if (start_stop_merge_id != -1) gtk_ui_manager_remove_ui (ui_manager, start_stop_merge_id); if (lock_merge_id != -1) gtk_ui_manager_remove_ui (ui_manager, lock_merge_id); if (state == STATUS_NONE) { /* Do not add a toolbar item */ start_stop_merge_id = -1; lock_merge_id = -1; } else { if (state == STATUS_HIT || state == STATUS_RUNNING || state == STATUS_STOPPED) { lock_merge_id = merge_ui (firewall_state_unlocked_description); start_stop_merge_id = merge_ui (description); } else if (state == STATUS_LOCKED) lock_merge_id = merge_ui (description); }}voidmenus_update_events_reloading (gboolean in_progress, gboolean visible){ static guint merge_id = -1; const gchar *description = NULL; if (in_progress) description = events_reloading_description; else description = events_not_reloading_description; if (merge_id != -1) gtk_ui_manager_remove_ui (ui_manager, merge_id); if (visible) merge_id = merge_ui (description); else merge_id = -1;}/* [ menus_initialize ] * Install the menus and the toolbar in *window */voidmenus_initialize (GtkWidget *window){ GtkIconFactory *icon_factory; GtkWidget *menubar; GtkActionGroup *action_group; GError *error; guint merge_id; GtkWidget *toolbar; int i; icon_factory = gtk_icon_factory_new (); gtk_icon_factory_add_default (icon_factory); register_icon_set (icon_factory, FIRESTARTER_STOCK_WIZARD, icon_wizard); register_icon_set (icon_factory, FIRESTARTER_STOCK_START_FIREWALL, icon_start_toolbar); register_icon_set (icon_factory, FIRESTARTER_STOCK_STOP_FIREWALL, icon_stop_toolbar); register_icon_set (icon_factory, FIRESTARTER_STOCK_EDIT, icon_edit); register_icon_set (icon_factory, FIRESTARTER_STOCK_LOCK_FIREWALL, icon_locked); register_icon_set (icon_factory, FIRESTARTER_STOCK_UNLOCK_FIREWALL, icon_unlocked); action_group = gtk_action_group_new ("MenuActions"); gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE); gtk_action_group_add_actions (action_group, entries, G_N_ELEMENTS (entries), window); toggle_entries[0].is_active = preferences_get_bool (PREFS_HITVIEW_TIME_COL); toggle_entries[1].is_active = preferences_get_bool (PREFS_HITVIEW_DIRECTION_COL); toggle_entries[2].is_active = preferences_get_bool (PREFS_HITVIEW_IN_COL); toggle_entries[3].is_active = preferences_get_bool (PREFS_HITVIEW_OUT_COL); toggle_entries[4].is_active = preferences_get_bool (PREFS_HITVIEW_PORT_COL); toggle_entries[5].is_active = preferences_get_bool (PREFS_HITVIEW_SOURCE_COL); toggle_entries[6].is_active = preferences_get_bool (PREFS_HITVIEW_DESTINATION_COL); toggle_entries[7].is_active = preferences_get_bool (PREFS_HITVIEW_LENGTH_COL); toggle_entries[8].is_active = preferences_get_bool (PREFS_HITVIEW_TOS_COL); toggle_entries[9].is_active = preferences_get_bool (PREFS_HITVIEW_PROTOCOL_COL); toggle_entries[10].is_active = preferences_get_bool (PREFS_HITVIEW_SERVICE_COL); gtk_action_group_add_toggle_actions (action_group, toggle_entries, G_N_ELEMENTS (toggle_entries), NULL); ui_manager = gtk_ui_manager_new (); gtk_ui_manager_insert_action_group (ui_manager, action_group, 0); main_accel_group = gtk_ui_manager_get_accel_group (ui_manager); gtk_window_add_accel_group (GTK_WINDOW (window), main_accel_group); g_object_unref (main_accel_group); error = NULL; merge_id = gtk_ui_manager_add_ui_from_string (ui_manager, ui_description, -1, &error); if (!merge_id) { g_message ("Building menus failed: %s", error->message); g_error_free (error); exit (EXIT_FAILURE); } for (i = 0; i < NUM_SHOW_TOGGLES; i++) { /* Register new callbacks for all toggle items */ GtkWidget *toggle; gchar *path; path = g_strdup_printf ("/MainMenu/EventsMenu/EventsShowSubmenu/ShowCol%d", i); toggle = gtk_ui_manager_get_widget (ui_manager, path); g_signal_connect (G_OBJECT (toggle), "toggled", G_CALLBACK (hitview_toggle_column_visibility), (gint*)i); g_free (path); } menubar = gtk_ui_manager_get_widget (ui_manager, "/MainMenu"); gnome_app_set_menus (GNOME_APP (window), GTK_MENU_BAR (menubar)); toolbar = gtk_ui_manager_get_widget (ui_manager, "/Toolbar"); gnome_app_set_toolbar (GNOME_APP (Firestarter.window), GTK_TOOLBAR (toolbar)); /* gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_ICONS); */ menus_set_toolbar (STATUS_VIEW); menus_update_firewall_controls_state (STATUS_RUNNING); menus_update_events_reloading (FALSE, FALSE);}GtkWidget *menus_get_events_inbound_context_menu (void){ return gtk_ui_manager_get_widget (ui_manager, "/EventsInboundContext");}GtkWidget *menus_get_events_outbound_context_menu (void){ return gtk_ui_manager_get_widget (ui_manager, "/EventsOutboundContext");}GtkWidget *menus_get_policy_context_menu (void){ return gtk_ui_manager_get_widget (ui_manager, "/PolicyContext");}GtkWidget *menus_get_connections_context_menu (void){ return gtk_ui_manager_get_widget (ui_manager, "/ConnectionsContext");}voidmenus_events_save_enabled (gboolean enabled){ GtkAction *action; action = gtk_ui_manager_get_action (ui_manager, "/MainMenu/EventsMenu/SaveEventList"); g_object_set (G_OBJECT (action), "sensitive", enabled, NULL);}voidmenus_events_clear_enabled (gboolean enabled){ GtkAction *action; action = gtk_ui_manager_get_action (ui_manager, "/MainMenu/EventsMenu/ClearEventList"); g_object_set (G_OBJECT (action), "sensitive", enabled, NULL);}voidmenus_policy_edit_enabled (gboolean enabled){ GtkAction *action; action = gtk_ui_manager_get_action (ui_manager, "/PolicyContext/EditRule"); g_object_set (G_OBJECT (action), "sensitive", enabled, NULL);}voidmenus_policy_remove_enabled (gboolean enabled){ GtkAction *action; action = gtk_ui_manager_get_action (ui_manager, "/PolicyContext/RemoveRule"); g_object_set (G_OBJECT (action), "sensitive", enabled, NULL);}voidmenus_policy_add_enabled (gboolean enabled){ GtkAction *action; action = gtk_ui_manager_get_action (ui_manager, "/PolicyContext/AddRule"); g_object_set (G_OBJECT (action), "sensitive", enabled, NULL);}voidmenus_policy_apply_enabled (gboolean enabled){ GtkAction *action; action = gtk_ui_manager_get_action (ui_manager, "/MainMenu/PolicyMenu/ApplyPolicy"); g_object_set (G_OBJECT (action), "sensitive", enabled, NULL);}static voidopen_homepage (void){ gnome_url_show ("http://www.fs-security.com", NULL);}static voidopen_manual (void){ gnome_url_show ("http://www.fs-security.com/docs/", NULL);}/* [ copy_selected ] * Copy the selection in the active view to the clipboard */static voidcopy_selected (void){ FirestarterView v; v = gui_get_active_view (); if (v == EVENTS_VIEW) copy_selected_hit ();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -