static void value_added_current_editor (AnjutaPlugin * plugin, const char *name, const GValue * value, gpointer data) { GObject *editor; GtkAction* macro_insert_action; AnjutaUI* ui = anjuta_shell_get_ui (plugin->shell, NULL); editor = g_value_get_object (value); if (!IANJUTA_IS_EDITOR(editor)) return; MacroPlugin *macro_plugin = ANJUTA_PLUGIN_MACRO (plugin); macro_insert_action = anjuta_ui_get_action (ui, "ActionGroupMacro", "ActionEditMacroInsert"); if (editor != NULL) { g_object_set (G_OBJECT (macro_insert_action), "sensitive", TRUE, NULL); macro_plugin->current_editor = editor; } else { g_object_set (G_OBJECT (macro_insert_action), "sensitive", FALSE, NULL); macro_plugin->current_editor = NULL; } }
static void ui_states_init (EditorPlugin* plugin, AnjutaUI *ui) { static const gchar *prefs[] = { VIEW_LINENUMBERS_MARGIN, VIEW_MARKER_MARGIN, VIEW_FOLD_MARGIN, VIEW_INDENTATION_GUIDES, VIEW_WHITE_SPACES, VIEW_EOL, VIEW_LINE_WRAP }; gint i; for (i = 0; i < sizeof (prefs)/sizeof(const gchar *); i++) { GtkAction *action; gboolean state; state = g_settings_get_boolean (plugin->settings, prefs[i]); action = anjuta_ui_get_action (ui, "ActionGroupEditorView", actions_view[i].name); g_object_set (G_OBJECT (action), "sensitive", TRUE, "visible", TRUE, NULL); gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), state); } }
static void on_layout_locked_notify (GdlDockMaster *master, GParamSpec *pspec, AnjutaWindow *win) { AnjutaUI *ui; GtkAction *action; gint locked; ui = win->ui; action = anjuta_ui_get_action (ui, "ActionGroupToggleView", "ActionViewLockLayout"); g_object_get (master, "locked", &locked, NULL); gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), (locked == 1)); }
static void on_session_load (AnjutaShell *shell, AnjutaSessionPhase phase, AnjutaSession *session, AnjutaApp *app) { /* We load layout at last so that all plugins would have loaded by now */ if (phase == ANJUTA_SESSION_PHASE_LAST) { gchar *geometry; gchar *layout_file; /* Restore geometry */ geometry = anjuta_session_get_string (session, "Anjuta", "Geometry"); anjuta_app_set_geometry (app, geometry); /* Restore window state */ if (anjuta_session_get_int (session, "Anjuta", "Fullscreen")) { /* bug #304495 */ AnjutaUI* ui = anjuta_shell_get_ui(shell, NULL); GtkAction* action = anjuta_ui_get_action (ui, "ActionGroupToggleView", "ActionViewFullscreen"); gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE); gtk_window_fullscreen (GTK_WINDOW (shell)); } else if (anjuta_session_get_int (session, "Anjuta", "Maximized")) { gtk_window_maximize (GTK_WINDOW (shell)); } /* Restore layout */ layout_file = g_build_filename (anjuta_session_get_session_directory (session), "dock-layout.xml", NULL); anjuta_app_layout_load (app, layout_file, NULL); g_free (layout_file); } }
static void on_session_load (AnjutaShell *shell, AnjutaSessionPhase phase, AnjutaSession *session, AnjutaWindow *win) { if (phase == ANJUTA_SESSION_PHASE_START) { AnjutaApplication *app; app = ANJUTA_APPLICATION (gtk_window_get_application (GTK_WINDOW (win))); if (app != NULL) { if (anjuta_application_get_no_session (app)) { /* Clear session */ anjuta_session_clear (session); } else if (anjuta_application_get_no_files (app)) { /* Clear files from session */ anjuta_session_set_string_list (session, "File Loader", "Files", NULL); } if (anjuta_application_get_geometry (app)) { /* Set new geometry */ anjuta_session_set_string (session, "Anjuta", "Geometry", anjuta_application_get_geometry (app)); } } } /* We load layout at last so that all plugins would have loaded by now */ if (phase == ANJUTA_SESSION_PHASE_LAST) { gchar *geometry; gchar *layout_file; /* Restore geometry */ geometry = anjuta_session_get_string (session, "Anjuta", "Geometry"); anjuta_window_set_geometry (win, geometry); g_free (geometry); /* Restore window state */ if (anjuta_session_get_int (session, "Anjuta", "Fullscreen")) { /* bug #304495 */ AnjutaUI* ui = anjuta_shell_get_ui(shell, NULL); GtkAction* action = anjuta_ui_get_action (ui, "ActionGroupToggleView", "ActionViewFullscreen"); gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE); gtk_window_fullscreen (GTK_WINDOW (shell)); } else if (anjuta_session_get_int (session, "Anjuta", "Maximized")) { gtk_window_maximize (GTK_WINDOW (shell)); } else { gtk_window_unmaximize (GTK_WINDOW (shell)); } gtk_widget_show (GTK_WIDGET (win)); /* Restore layout */ layout_file = g_build_filename (anjuta_session_get_session_directory (session), "dock-layout.xml", NULL); anjuta_window_layout_load (win, layout_file, NULL); g_free (layout_file); } }
static void anjuta_app_instance_init (AnjutaApp *app) { gint merge_id; GtkWidget *menubar, *about_menu; GtkWidget *view_menu, *hbox; GtkWidget *main_box; GtkWidget *dockbar; GtkAction* action; GList *plugins_dirs = NULL; gchar* style; GdkGeometry size_hints = { 100, 100, 0, 0, 100, 100, 1, 1, 0.0, 0.0, GDK_GRAVITY_NORTH_WEST }; DEBUG_PRINT ("%s", "Initializing Anjuta..."); gtk_window_set_geometry_hints (GTK_WINDOW (app), GTK_WIDGET (app), &size_hints, GDK_HINT_RESIZE_INC); gtk_window_set_resizable (GTK_WINDOW (app), TRUE); /* * Main box */ main_box = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (app), main_box); gtk_widget_show (main_box); app->values = NULL; app->widgets = NULL; /* Status bar */ app->status = ANJUTA_STATUS (anjuta_status_new ()); anjuta_status_set_title_window (app->status, GTK_WIDGET (app)); gtk_widget_show (GTK_WIDGET (app->status)); gtk_box_pack_end (GTK_BOX (main_box), GTK_WIDGET (app->status), FALSE, TRUE, 0); g_object_ref (G_OBJECT (app->status)); g_object_add_weak_pointer (G_OBJECT (app->status), (gpointer)&app->status); /* configure dock */ hbox = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox); app->dock = gdl_dock_new (); gtk_widget_show (app->dock); gtk_box_pack_end(GTK_BOX (hbox), app->dock, TRUE, TRUE, 0); dockbar = gdl_dock_bar_new (GDL_DOCK(app->dock)); gtk_widget_show (dockbar); gtk_box_pack_start(GTK_BOX (hbox), dockbar, FALSE, FALSE, 0); app->layout_manager = gdl_dock_layout_new (GDL_DOCK (app->dock)); g_signal_connect (app->layout_manager, "notify::dirty", G_CALLBACK (on_layout_dirty_notify), app); g_signal_connect (app->layout_manager->master, "notify::locked", G_CALLBACK (on_layout_locked_notify), app); /* UI engine */ app->ui = anjuta_ui_new (); g_object_add_weak_pointer (G_OBJECT (app->ui), (gpointer)&app->ui); /* show tooltips in the statusbar */ g_signal_connect (app->ui, "connect_proxy", G_CALLBACK (connect_proxy_cb), app); g_signal_connect (app->ui, "disconnect_proxy", G_CALLBACK (disconnect_proxy_cb), app); /* Plugin Manager */ plugins_dirs = g_list_prepend (plugins_dirs, PACKAGE_PLUGIN_DIR); app->plugin_manager = anjuta_plugin_manager_new (G_OBJECT (app), app->status, plugins_dirs); app->profile_manager = anjuta_profile_manager_new (app->plugin_manager); g_list_free (plugins_dirs); /* Preferences */ app->preferences = anjuta_preferences_new (app->plugin_manager); g_object_add_weak_pointer (G_OBJECT (app->preferences), (gpointer)&app->preferences); anjuta_preferences_notify_add_string (app->preferences, "anjuta.gdl.style", on_gdl_style_changed, app, NULL); style = anjuta_preferences_get (app->preferences, "anjuta.gdl.style"); on_gdl_style_changed (app->preferences, NULL, style, app); g_free (style); /* Register actions */ anjuta_ui_add_action_group_entries (app->ui, "ActionGroupFile", _("File"), menu_entries_file, G_N_ELEMENTS (menu_entries_file), GETTEXT_PACKAGE, TRUE, app); anjuta_ui_add_action_group_entries (app->ui, "ActionGroupEdit", _("Edit"), menu_entries_edit, G_N_ELEMENTS (menu_entries_edit), GETTEXT_PACKAGE, TRUE, app); anjuta_ui_add_action_group_entries (app->ui, "ActionGroupView", _("View"), menu_entries_view, G_N_ELEMENTS (menu_entries_view), GETTEXT_PACKAGE, TRUE, app); anjuta_ui_add_toggle_action_group_entries (app->ui, "ActionGroupToggleView", _("View"), menu_entries_toggle_view, G_N_ELEMENTS (menu_entries_toggle_view), GETTEXT_PACKAGE, TRUE, app); anjuta_ui_add_action_group_entries (app->ui, "ActionGroupHelp", _("Help"), menu_entries_help, G_N_ELEMENTS (menu_entries_help), GETTEXT_PACKAGE, TRUE, app); /* Merge UI */ merge_id = anjuta_ui_merge (app->ui, UI_FILE); /* Adding accels group */ gtk_window_add_accel_group (GTK_WINDOW (app), gtk_ui_manager_get_accel_group (GTK_UI_MANAGER (app->ui))); /* create main menu */ menubar = gtk_ui_manager_get_widget (GTK_UI_MANAGER (app->ui), "/MenuMain"); gtk_box_pack_start (GTK_BOX (main_box), menubar, FALSE, FALSE, 0); gtk_widget_show (menubar); /* create toolbar */ app->toolbar = gtk_ui_manager_get_widget (GTK_UI_MANAGER (app->ui), "/ToolbarMain"); if (!anjuta_preferences_get_bool (app->preferences, "anjuta.toolbar.visible")) gtk_widget_hide (app->toolbar); gtk_box_pack_start (GTK_BOX (main_box), app->toolbar, FALSE, FALSE, 0); action = gtk_ui_manager_get_action (GTK_UI_MANAGER (app->ui), "/MenuMain/MenuView/Toolbar"); gtk_toggle_action_set_active (GTK_TOGGLE_ACTION(action), anjuta_preferences_get_bool_with_default (app->preferences, "anjuta.toolbar.visible", TRUE)); anjuta_preferences_notify_add_string (app->preferences, "anjuta.toolbar.style", on_toolbar_style_changed, app, NULL); style = anjuta_preferences_get (app->preferences, "anjuta.toolbar.style"); on_toolbar_style_changed (app->preferences, NULL, style, app); g_free (style); /* Create widgets menu */ view_menu = gtk_ui_manager_get_widget (GTK_UI_MANAGER(app->ui), "/MenuMain/MenuView"); app->view_menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (view_menu)); /* Disable unavailible tutorials */ action = anjuta_ui_get_action(app->ui, "ActionGroupHelp", "ActionHelpTutorial"); g_object_set(G_OBJECT(action), "visible", FALSE, NULL); action = anjuta_ui_get_action(app->ui, "ActionGroupHelp", "ActionHelpAdvancedTutorial"); g_object_set(G_OBJECT(action), "visible", FALSE, NULL); /* Create about plugins menu */ about_menu = gtk_ui_manager_get_widget (GTK_UI_MANAGER(app->ui), "/MenuMain/PlaceHolderHelpMenus/MenuHelp/" "PlaceHolderHelpAbout/AboutPlugins"); about_create_plugins_submenu (ANJUTA_SHELL (app), about_menu); /* Add main view */ gtk_box_pack_start (GTK_BOX (main_box), hbox, TRUE, TRUE, 0); /* Connect to session */ g_signal_connect (G_OBJECT (app), "save_session", G_CALLBACK (on_session_save), app); g_signal_connect (G_OBJECT (app), "load_session", G_CALLBACK (on_session_load), app); /* Loading accels */ anjuta_ui_load_accels (NULL); app->save_count = 0; }