static void set_window (GeditCollaborationWindowHelper *helper, GeditWindow *window) { if (helper->priv->window) { if (helper->priv->ui_id > 0) { GtkUIManager *manager; manager = gedit_window_get_ui_manager (helper->priv->window); gtk_ui_manager_remove_ui (manager, helper->priv->ui_id); } if (helper->priv->panel_widget) { GeditPanel *panel; panel = gedit_window_get_side_panel (helper->priv->window); gedit_panel_remove_item (panel, helper->priv->panel_widget); } g_signal_handler_disconnect (helper->priv->window, helper->priv->active_tab_changed_handler_id); g_object_unref (helper->priv->window); helper->priv->window = NULL; } if (window) { helper->priv->window = g_object_ref (window); helper->priv->active_tab_changed_handler_id = g_signal_connect_swapped (window, "active-tab-changed", G_CALLBACK (update_active_tab), helper); } }
static void impl_deactivate (GeditPlugin *plugin, GeditWindow *window) { GtkUIManager *manager; WindowData *data; gedit_debug (DEBUG_PLUGINS); manager = gedit_window_get_ui_manager (window); data = (WindowData *) g_object_get_data (G_OBJECT (window), WINDOW_DATA_KEY); g_return_if_fail (data != NULL); gtk_ui_manager_remove_ui (manager, data->ui_id); gtk_ui_manager_remove_action_group (manager, data->action_group); g_signal_handler_disconnect (window, data->tab_added_id); g_signal_handler_disconnect (window, data->tab_removed_id); g_object_set_data (G_OBJECT (window), WINDOW_DATA_KEY, NULL); }
static void add_window_menu (GeditCollaborationWindowHelper *helper) { GtkUIManager *manager; manager = gedit_window_get_ui_manager (helper->priv->window); helper->priv->action_group = gtk_action_group_new ("GeditCollaborationWindowActions"); gtk_action_group_set_translation_domain (helper->priv->action_group, GETTEXT_PACKAGE); gtk_action_group_add_actions (helper->priv->action_group, action_clear_colors_entries, G_N_ELEMENTS (action_clear_colors_entries), helper); gtk_ui_manager_insert_action_group (manager, helper->priv->action_group, -1); helper->priv->ui_id = gtk_ui_manager_add_ui_from_string (manager, submenu, -1, NULL); }
static void impl_activate (GeditPlugin *plugin, GeditWindow *window) { GtkUIManager *manager; WindowData *data; ActionData *action_data; GList *docs, *l; gedit_debug (DEBUG_PLUGINS); data = g_slice_new (WindowData); action_data = g_slice_new (ActionData); action_data->plugin = plugin; action_data->window = window; manager = gedit_window_get_ui_manager (window); data->action_group = gtk_action_group_new ("GeditSpellPluginActions"); gtk_action_group_set_translation_domain (data->action_group, GETTEXT_PACKAGE); gtk_action_group_add_actions_full (data->action_group, action_entries, G_N_ELEMENTS (action_entries), action_data, (GDestroyNotify) free_action_data); gtk_action_group_add_toggle_actions (data->action_group, toggle_action_entries, G_N_ELEMENTS (toggle_action_entries), window); gtk_ui_manager_insert_action_group (manager, data->action_group, -1); data->ui_id = gtk_ui_manager_new_merge_id (manager); data->message_cid = gtk_statusbar_get_context_id (GTK_STATUSBAR (gedit_window_get_statusbar (window)), "spell_plugin_message"); g_object_set_data_full (G_OBJECT (window), WINDOW_DATA_KEY, data, (GDestroyNotify) free_window_data); gtk_ui_manager_add_ui (manager, data->ui_id, MENU_PATH, "CheckSpell", "CheckSpell", GTK_UI_MANAGER_MENUITEM, FALSE); gtk_ui_manager_add_ui (manager, data->ui_id, MENU_PATH, "AutoSpell", "AutoSpell", GTK_UI_MANAGER_MENUITEM, FALSE); gtk_ui_manager_add_ui (manager, data->ui_id, MENU_PATH, "ConfigSpell", "ConfigSpell", GTK_UI_MANAGER_MENUITEM, FALSE); update_ui_real (window, data); docs = gedit_window_get_documents (window); for (l = docs; l != NULL; l = g_list_next (l)) { set_auto_spell_from_metadata (window, GEDIT_DOCUMENT (l->data), data->action_group); } data->tab_added_id = g_signal_connect (window, "tab-added", G_CALLBACK (tab_added_cb), NULL); data->tab_removed_id = g_signal_connect (window, "tab-removed", G_CALLBACK (tab_removed_cb), NULL); }