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);
	}
}
Esempio n. 2
0
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);
}
Esempio n. 4
0
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);
}