void on_action_bookmark_edit (GtkAction *action, GeditCollaborationWindowHelper *helper) { GtkTreeIter iter; InfcBrowser *browser; GeditCollaborationBookmark *bookmark; InfXmlConnection *connection; GtkTreeIter selected; if (!inf_gtk_browser_view_get_selected (INF_GTK_BROWSER_VIEW (helper->priv->browser_view), &selected)) { return; } gtk_tree_model_sort_convert_iter_to_child_iter ( GTK_TREE_MODEL_SORT ( gtk_tree_view_get_model ( GTK_TREE_VIEW (helper->priv->browser_view) ) ), &iter, &selected ); gtk_tree_model_get (GTK_TREE_MODEL (helper->priv->browser_store), &iter, INF_GTK_BROWSER_MODEL_COL_BROWSER, &browser, -1); if (browser == NULL) { return; } connection = infc_browser_get_connection (browser); bookmark = g_object_get_data (G_OBJECT (connection), BOOKMARK_DATA_KEY); create_bookmark_dialog (helper, bookmark); g_object_unref (browser); }
void on_action_session_disconnect (GtkAction *action, GeditCollaborationWindowHelper *helper) { GtkTreeIter iter; GtkTreeIter selected; InfcBrowser *browser; InfXmlConnection *connection; if (!inf_gtk_browser_view_get_selected (INF_GTK_BROWSER_VIEW (helper->priv->browser_view), &selected)) { return; } gtk_tree_model_sort_convert_iter_to_child_iter ( GTK_TREE_MODEL_SORT ( gtk_tree_view_get_model ( GTK_TREE_VIEW (helper->priv->browser_view) ) ), &iter, &selected ); gtk_tree_model_get (GTK_TREE_MODEL (helper->priv->browser_store), &iter, INF_GTK_BROWSER_MODEL_COL_BROWSER, &browser, -1); if (browser == NULL) { return; } connection = infc_browser_get_connection (browser); inf_xml_connection_close (connection); inf_gtk_browser_store_clear_connection_error (helper->priv->browser_store, connection); g_object_unref (browser); }
bool Gobby::Browser::get_selected(InfBrowser** browser, InfBrowserIter* iter) { GtkTreeIter tree_iter; if(!inf_gtk_browser_view_get_selected(m_browser_view, &tree_iter)) return false; InfBrowser* tmp_browser; InfBrowserIter* tmp_iter; gtk_tree_model_get( GTK_TREE_MODEL(m_sort_model), &tree_iter, INF_GTK_BROWSER_MODEL_COL_BROWSER, &tmp_browser, -1); if(tmp_browser == NULL) return false; InfBrowserStatus browser_status; g_object_get(G_OBJECT(tmp_browser), "status", &browser_status, NULL); if(browser_status != INF_BROWSER_OPEN) return true; gtk_tree_model_get( GTK_TREE_MODEL(m_sort_model), &tree_iter, INF_GTK_BROWSER_MODEL_COL_NODE, &tmp_iter, -1); *browser = tmp_browser; *iter = *tmp_iter; inf_browser_iter_free(tmp_iter); g_object_unref(tmp_browser); return true; }
static void update_sensitivity (GeditCollaborationWindowHelper *helper) { gboolean has_selection; GtkTreeIter selected; GtkTreeIter sorted; InfcBrowser *browser = NULL; InfDiscovery *discovery = NULL; GtkTreeModel *model; GtkAction *action; GtkTreePath *path; gboolean toplevel = FALSE; model = GTK_TREE_MODEL (helper->priv->browser_store); has_selection = inf_gtk_browser_view_get_selected (INF_GTK_BROWSER_VIEW (helper->priv->browser_view), &sorted); if (has_selection) { gtk_tree_model_sort_convert_iter_to_child_iter ( GTK_TREE_MODEL_SORT ( inf_gtk_browser_view_get_model ( INF_GTK_BROWSER_VIEW (helper->priv->browser_view) ) ), &selected, &sorted ); } if (has_selection) { /* Check if the iter is a top-level (aka. browser node) */ gtk_tree_model_get (model, &selected, INF_GTK_BROWSER_MODEL_COL_BROWSER, &browser, INF_GTK_BROWSER_MODEL_COL_DISCOVERY, &discovery, -1); path = gtk_tree_model_get_path (model, &selected); toplevel = gtk_tree_path_get_depth (path) == 1; gtk_tree_path_free (path); } gtk_action_group_set_sensitive (get_action_group (helper, "action_group_connected"), browser != NULL && infc_browser_get_status (browser) == INFC_BROWSER_CONNECTED); action = get_action (helper, "SessionDisconnect"); gtk_action_set_sensitive (action, toplevel && browser != NULL && infc_browser_get_status (browser) != INFC_BROWSER_DISCONNECTED); /* Handle other actions manually */ action = get_action (helper, "ItemDelete"); gtk_action_set_sensitive (action, has_selection && (!toplevel || ( discovery == NULL && (browser == NULL || infc_browser_get_status (browser) != INFC_BROWSER_CONNECTED)))); action = get_action (helper, "BookmarkEdit"); gtk_action_set_sensitive (action, has_selection && discovery == NULL && toplevel); if (browser) { g_object_unref (browser); } if (discovery) { g_object_unref (discovery); } }
static void item_new_dialog (GeditCollaborationWindowHelper *helper, gboolean newfile) { GtkWidget *dialog; ItemNew *item; GtkTreeIter iter; GtkTreeIter selected; InfcBrowser *browser; InfcBrowserIter *node; GtkWidget *label; GtkWidget *entry; GtkWidget *hbox; if (!inf_gtk_browser_view_get_selected (INF_GTK_BROWSER_VIEW (helper->priv->browser_view), &selected)) { return; } gtk_tree_model_sort_convert_iter_to_child_iter ( GTK_TREE_MODEL_SORT ( gtk_tree_view_get_model ( GTK_TREE_VIEW (helper->priv->browser_view) ) ), &iter, &selected ); dialog = gtk_dialog_new_with_buttons (newfile ? _("New File") : _("New Folder"), GTK_WINDOW (helper->priv->window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_widget_show (hbox); label = gtk_label_new_with_mnemonic (newfile ? _("File _name:") : _("Folder _name:")); gtk_widget_show (label); entry = gtk_entry_new (); gtk_widget_show (entry); gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE); gtk_container_set_border_width (GTK_CONTAINER (dialog), 5); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), hbox, FALSE, FALSE, 0); gtk_tree_model_get (GTK_TREE_MODEL (helper->priv->browser_store), &iter, INF_GTK_BROWSER_MODEL_COL_BROWSER, &browser, INF_GTK_BROWSER_MODEL_COL_NODE, &node, -1); item = g_slice_new (ItemNew); item->helper = helper; item->iter = *node; item->browser = browser; item->newfile = newfile; item->entry = GTK_ENTRY (entry); infc_browser_iter_free (node); g_signal_connect (dialog, "response", G_CALLBACK (on_item_new_response), item); gtk_widget_show (dialog); }
void on_action_item_delete (GtkAction *action, GeditCollaborationWindowHelper *helper) { GtkTreeIter iter; GtkTreeIter selected; InfcBrowser *browser; InfcBrowserIter *browser_iter; InfcBrowserIter parent; if (!inf_gtk_browser_view_get_selected (INF_GTK_BROWSER_VIEW (helper->priv->browser_view), &selected)) { return; } gtk_tree_model_sort_convert_iter_to_child_iter ( GTK_TREE_MODEL_SORT ( gtk_tree_view_get_model ( GTK_TREE_VIEW (helper->priv->browser_view) ) ), &iter, &selected ); gtk_tree_model_get (GTK_TREE_MODEL (helper->priv->browser_store), &iter, INF_GTK_BROWSER_MODEL_COL_BROWSER, &browser, INF_GTK_BROWSER_MODEL_COL_NODE, &browser_iter, -1); parent = *browser_iter; if (!infc_browser_iter_get_parent (browser, &parent)) { /* Toplevel bookmark */ InfXmlConnection *connection = infc_browser_get_connection (browser); GeditCollaborationBookmarks *bookmarks; GeditCollaborationBookmark *bookmark = g_object_get_data (G_OBJECT (connection), BOOKMARK_DATA_KEY); /* Close connection first */ if (infc_browser_get_status (browser) != INFC_BROWSER_DISCONNECTED) { inf_xml_connection_close (connection); } inf_gtk_browser_store_remove_connection (helper->priv->browser_store, connection); bookmarks = gedit_collaboration_bookmarks_get_default (); gedit_collaboration_bookmarks_remove (bookmarks, bookmark); } else { /* Remove the iter itself */ infc_browser_remove_node (browser, browser_iter); } g_object_unref (browser); if (browser_iter) { infc_browser_iter_free (browser_iter); } }