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); }
Gobby::Browser::Browser(Gtk::Window& parent, StatusBar& status_bar, ConnectionManager& connection_manager): m_parent(parent), m_status_bar(status_bar), m_connection_manager(connection_manager), m_expander(_("_Direct Connection"), true), m_hbox(false, 6), m_label_hostname(_("Host Name:")), m_entry_hostname(config_filename("recent_hosts"), 5) { m_label_hostname.show(); m_entry_hostname.get_entry()->signal_activate().connect( sigc::mem_fun(*this, &Browser::on_hostname_activate)); m_entry_hostname.show(); m_hbox.pack_start(m_label_hostname, Gtk::PACK_SHRINK); m_hbox.pack_start(m_entry_hostname, Gtk::PACK_EXPAND_WIDGET); m_hbox.show(); m_expander.add(m_hbox); m_expander.show(); m_expander.property_expanded().signal_changed().connect( sigc::mem_fun(*this, &Browser::on_expanded_changed)); m_browser_store = inf_gtk_browser_store_new( connection_manager.get_io(), connection_manager.get_communication_manager()); m_sort_model = inf_gtk_browser_model_sort_new( INF_GTK_BROWSER_MODEL(m_browser_store)); gtk_tree_sortable_set_default_sort_func( GTK_TREE_SORTABLE(m_sort_model), compare_func, NULL, NULL); if(m_connection_manager.get_discovery() != NULL) { inf_gtk_browser_store_add_discovery( m_browser_store, m_connection_manager.get_discovery()); } Glib::ustring known_hosts_file = config_filename("known_hosts"); m_cert_checker = inf_gtk_certificate_manager_new( parent.gobj(), m_connection_manager.get_xmpp_manager(), known_hosts_file.c_str()); m_browser_view = INF_GTK_BROWSER_VIEW( inf_gtk_browser_view_new_with_model( INF_GTK_BROWSER_MODEL(m_sort_model))); gtk_widget_show(GTK_WIDGET(m_browser_view)); gtk_container_add(GTK_CONTAINER(m_scroll.gobj()), GTK_WIDGET(m_browser_view)); m_scroll.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); m_scroll.set_shadow_type(Gtk::SHADOW_IN); m_scroll.show(); g_signal_connect( m_browser_store, "set-browser", G_CALLBACK(&on_set_browser_static), this ); g_signal_connect( m_browser_view, "activate", G_CALLBACK(&on_activate_static), this ); set_spacing(6); pack_start(m_scroll, Gtk::PACK_EXPAND_WIDGET); pack_start(m_expander, Gtk::PACK_SHRINK); init_accessibility(); set_focus_child(m_expander); }
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); } }