static void treeview_cursor_changed (GtkTreeView *view, PlumaDocumentsPanel *panel) { GtkTreeIter iter; GtkTreeSelection *selection; gpointer tab; selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW (panel->priv->treeview)); if (gtk_tree_selection_get_selected (selection, NULL, &iter)) { gtk_tree_model_get (panel->priv->model, &iter, TAB_COLUMN, &tab, -1); if (pluma_window_get_active_tab (panel->priv->window) != tab) { pluma_window_set_active_tab (panel->priv->window, PLUMA_TAB (tab)); } } }
void _pluma_cmd_file_print (GtkAction *action, PlumaWindow *window) { PlumaTab *tab; pluma_debug (DEBUG_COMMANDS); tab = pluma_window_get_active_tab (window); if (tab == NULL) return; _pluma_tab_print (tab); }
static void update_ui (PlumaSpellPlugin *plugin) { PlumaSpellPluginPrivate *data; PlumaWindow *window; PlumaDocument *doc; PlumaView *view; gboolean autospell; GtkAction *action; pluma_debug (DEBUG_PLUGINS); data = plugin->priv; window = PLUMA_WINDOW (data->window); doc = pluma_window_get_active_document (window); view = pluma_window_get_active_view (window); autospell = (doc != NULL && pluma_automatic_spell_checker_get_from_document (doc) != NULL); if (doc != NULL) { PlumaTab *tab; PlumaTabState state; tab = pluma_window_get_active_tab (window); state = pluma_tab_get_state (tab); /* If the document is loading we can't get the metadata so we endup with an useless speller */ if (state == PLUMA_TAB_STATE_NORMAL) { action = gtk_action_group_get_action (data->action_group, "AutoSpell"); g_signal_handlers_block_by_func (action, auto_spell_cb, plugin); set_auto_spell (window, doc, autospell); gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), autospell); g_signal_handlers_unblock_by_func (action, auto_spell_cb, plugin); } } gtk_action_group_set_sensitive (data->action_group, (view != NULL) && gtk_text_view_get_editable (GTK_TEXT_VIEW (view))); }
void _pluma_cmd_documents_move_to_new_window (GtkAction *action, PlumaWindow *window) { PlumaNotebook *old_notebook; PlumaTab *tab; pluma_debug (DEBUG_COMMANDS); tab = pluma_window_get_active_tab (window); if (tab == NULL) return; old_notebook = PLUMA_NOTEBOOK (_pluma_window_get_notebook (window)); g_return_if_fail (gtk_notebook_get_n_pages (GTK_NOTEBOOK (old_notebook)) > 1); _pluma_window_move_tab_to_new_window (window, tab); }
static void treeview_row_inserted (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter, PlumaDocumentsPanel *panel) { PlumaTab *tab; gint *indeces; GtkWidget *nb; gint old_position; gint new_position; if (panel->priv->adding_tab) return; tab = pluma_window_get_active_tab (panel->priv->window); g_return_if_fail (tab != NULL); panel->priv->is_reodering = TRUE; indeces = gtk_tree_path_get_indices (path); /* g_debug ("New Index: %d (path: %s)", indeces[0], gtk_tree_path_to_string (path));*/ nb = _pluma_window_get_notebook (panel->priv->window); new_position = indeces[0]; old_position = gtk_notebook_page_num (GTK_NOTEBOOK (nb), GTK_WIDGET (tab)); if (new_position > old_position) new_position = MAX (0, new_position - 1); pluma_notebook_reorder_tab (PLUMA_NOTEBOOK (nb), tab, new_position); panel->priv->is_reodering = FALSE; }
static void window_tab_added (PlumaWindow *window, PlumaTab *tab, PlumaDocumentsPanel *panel) { GtkTreeIter iter; GtkTreeIter sibling; GdkPixbuf *pixbuf; gchar *name; g_signal_connect (tab, "notify::name", G_CALLBACK (sync_name_and_icon), panel); g_signal_connect (tab, "notify::state", G_CALLBACK (sync_name_and_icon), panel); get_iter_from_tab (panel, tab, &sibling); panel->priv->adding_tab = TRUE; if (gtk_list_store_iter_is_valid (GTK_LIST_STORE (panel->priv->model), &sibling)) { gtk_list_store_insert_after (GTK_LIST_STORE (panel->priv->model), &iter, &sibling); } else { PlumaTab *active_tab; gtk_list_store_append (GTK_LIST_STORE (panel->priv->model), &iter); active_tab = pluma_window_get_active_tab (panel->priv->window); if (tab == active_tab) { GtkTreeSelection *selection; selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW (panel->priv->treeview)); gtk_tree_selection_select_iter (selection, &iter); } } name = tab_get_name (tab); pixbuf = _pluma_tab_get_icon (tab); gtk_list_store_set (GTK_LIST_STORE (panel->priv->model), &iter, PIXBUF_COLUMN, pixbuf, NAME_COLUMN, name, TAB_COLUMN, tab, -1); g_free (name); if (pixbuf != NULL) g_object_unref (pixbuf); panel->priv->adding_tab = FALSE; }
static void refresh_list (PlumaDocumentsPanel *panel) { /* TODO: refresh the list only if the panel is visible */ GList *tabs; GList *l; GtkWidget *nb; GtkListStore *list_store; PlumaTab *active_tab; /* g_debug ("refresh_list"); */ list_store = GTK_LIST_STORE (panel->priv->model); gtk_list_store_clear (list_store); active_tab = pluma_window_get_active_tab (panel->priv->window); nb = _pluma_window_get_notebook (panel->priv->window); tabs = gtk_container_get_children (GTK_CONTAINER (nb)); l = tabs; panel->priv->adding_tab = TRUE; while (l != NULL) { GdkPixbuf *pixbuf; gchar *name; GtkTreeIter iter; name = tab_get_name (PLUMA_TAB (l->data)); pixbuf = _pluma_tab_get_icon (PLUMA_TAB (l->data)); /* Add a new row to the model */ gtk_list_store_append (list_store, &iter); gtk_list_store_set (list_store, &iter, PIXBUF_COLUMN, pixbuf, NAME_COLUMN, name, TAB_COLUMN, l->data, -1); g_free (name); if (pixbuf != NULL) g_object_unref (pixbuf); if (l->data == active_tab) { GtkTreeSelection *selection; selection = gtk_tree_view_get_selection ( GTK_TREE_VIEW (panel->priv->treeview)); gtk_tree_selection_select_iter (selection, &iter); } l = g_list_next (l); } panel->priv->adding_tab = FALSE; g_list_free (tabs); }