static gboolean inf_gtk_browser_model_sort_browser_iter_to_tree_iter(InfGtkBrowserModel* mdl, InfcBrowser* browser, InfcBrowserIter* iter, GtkTreeIter* tree_iter) { GtkTreeModel* child_model; GtkTreeIter child_iter; gboolean result; child_model = gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(mdl)); result = inf_gtk_browser_model_browser_iter_to_tree_iter( INF_GTK_BROWSER_MODEL(child_model), browser, iter, &child_iter ); if(result == TRUE) { gtk_tree_model_sort_convert_child_iter_to_iter( GTK_TREE_MODEL_SORT(mdl), tree_iter, &child_iter ); return TRUE; } else { return FALSE; } }
static void inf_gtk_browser_model_sort_set_browser_cb(InfGtkBrowserModel* model, GtkTreePath* path, GtkTreeIter* iter, InfcBrowser* browser, gpointer user_data) { GtkTreeModelSort* model_sort; GtkTreePath* own_path; GtkTreeIter own_iter; model_sort = GTK_TREE_MODEL_SORT(user_data); own_path = gtk_tree_model_sort_convert_child_path_to_path(model_sort, path); gtk_tree_model_sort_convert_child_iter_to_iter(model_sort, &own_iter, iter); inf_gtk_browser_model_set_browser( INF_GTK_BROWSER_MODEL(user_data), own_path, &own_iter, browser ); gtk_tree_path_free(own_path); }
void Gobby::Browser::set_selected(InfBrowser* browser, const InfBrowserIter* iter) { GtkTreeIter tree_iter; gboolean has_iter = inf_gtk_browser_model_browser_iter_to_tree_iter( INF_GTK_BROWSER_MODEL(m_sort_model), browser, iter, &tree_iter); g_assert(has_iter == TRUE); inf_gtk_browser_view_set_selected(m_browser_view, &tree_iter); }
static void inf_gtk_browser_model_sort_resolve(InfGtkBrowserModel* model, InfDiscovery* discovery, InfDiscoveryInfo* info) { GtkTreeModel* child_model; child_model = gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(model)); inf_gtk_browser_model_resolve( INF_GTK_BROWSER_MODEL(child_model), discovery, info ); }
static void inf_gtk_browser_model_sort_notify_model_cb(GObject* object, GParamSpec* pspec, gpointer user_data) { GtkTreeModel* child_model; child_model = gtk_tree_model_sort_get_model( GTK_TREE_MODEL_SORT(object) ); inf_gtk_browser_model_sort_sync_child_model( INF_GTK_BROWSER_MODEL_SORT(object), INF_GTK_BROWSER_MODEL(child_model) ); }
static void inf_gtk_browser_model_filter_set_browser_cb(InfGtkBrowserModel* model, GtkTreePath* path, GtkTreeIter* iter, InfcBrowser* browser, gpointer user_data) { GtkTreeModelFilter* model_filter; GtkTreePath* own_path; GtkTreeIter own_iter; gboolean result; model_filter = GTK_TREE_MODEL_FILTER(user_data); result = gtk_tree_model_filter_convert_child_iter_to_iter( model_filter, &own_iter, iter ); if(result == TRUE) { own_path = gtk_tree_model_filter_convert_child_path_to_path( model_filter, path ); g_assert(own_path != NULL); inf_gtk_browser_model_set_browser( INF_GTK_BROWSER_MODEL(user_data), own_path, &own_iter, browser ); gtk_tree_path_free(own_path); } }
static GObject* inf_gtk_browser_model_sort_constructor(GType type, guint n_construct_properties, GObjectConstructParam* properties) { GObject* object; object = G_OBJECT_CLASS(parent_class)->constructor( type, n_construct_properties, properties ); /* Set initial model, we do not get notified for this */ inf_gtk_browser_model_sort_sync_child_model( INF_GTK_BROWSER_MODEL_SORT(object), INF_GTK_BROWSER_MODEL( gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(object)) ) ); return object; }
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 init_infinity (GeditCollaborationWindowHelper *helper) { InfGtkIo *io; InfCommunicationManager *communication_manager; InfXmppManager *xmpp_manager; InfCertificateCredentials *certificate_credentials; InfGtkBrowserModel *model_sort; io = inf_gtk_io_new (); communication_manager = inf_communication_manager_new (); xmpp_manager = inf_xmpp_manager_new (); certificate_credentials = inf_certificate_credentials_new (); helper->priv->io = INF_IO (io); helper->priv->certificate_credentials = certificate_credentials; helper->priv->browser_store = inf_gtk_browser_store_new (INF_IO (io), communication_manager); model_sort = INF_GTK_BROWSER_MODEL ( inf_gtk_browser_model_sort_new ( INF_GTK_BROWSER_MODEL (helper->priv->browser_store) ) ); gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (model_sort), compare_func, NULL, NULL); helper->priv->browser_view = inf_gtk_browser_view_new_with_model (model_sort); gtk_widget_show (helper->priv->browser_view); g_signal_connect_after (helper->priv->browser_store, "set-browser", G_CALLBACK (on_set_browser), helper); g_signal_connect (helper->priv->browser_view, "selection-changed", G_CALLBACK (on_selection_changed), helper); g_signal_connect (helper->priv->browser_view, "populate-popup", G_CALLBACK (on_populate_popup), helper); g_signal_connect (helper->priv->browser_view, "activate", G_CALLBACK (on_browser_activate), helper); #ifdef LIBINFINITY_HAVE_AVAHI init_infinity_discovery (helper, xmpp_manager); #endif init_bookmarks (helper); g_object_unref (communication_manager); g_object_unref (xmpp_manager); }
int main(int argc, char* argv[]) { InfGtkIo* io; InfConnectionManager* connection_manager; #ifdef LIBINFINITY_HAVE_AVAHI InfXmppManager* xmpp_manager; InfDiscoveryAvahi* avahi; #endif InfGtkBrowserStore* store; GtkWidget* view; GtkWidget* scroll; GtkWidget* window; gtk_init(&argc, &argv); gnutls_global_init(); io = inf_gtk_io_new(); #ifdef LIBINFINITY_HAVE_AVAHI xmpp_manager = inf_xmpp_manager_new(); avahi = inf_discovery_avahi_new(INF_IO(io), xmpp_manager, NULL, NULL, NULL); g_object_unref(G_OBJECT(xmpp_manager)); #endif connection_manager = inf_connection_manager_new(); store = inf_gtk_browser_store_new(INF_IO(io), connection_manager, NULL); g_object_unref(G_OBJECT(connection_manager)); g_object_unref(G_OBJECT(io)); g_signal_connect( G_OBJECT(store), "set-browser", G_CALLBACK(on_set_browser), NULL ); #ifdef LIBINFINITY_HAVE_AVAHI inf_gtk_browser_store_add_discovery(store, INF_DISCOVERY(avahi)); g_object_unref(G_OBJECT(avahi)); #endif view = inf_gtk_browser_view_new_with_model(INF_GTK_BROWSER_MODEL(store)); g_object_unref(G_OBJECT(store)); gtk_widget_show(view); g_signal_connect( G_OBJECT(view), "activate", G_CALLBACK(on_activate), NULL ); scroll = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); gtk_scrolled_window_set_shadow_type( GTK_SCROLLED_WINDOW(scroll), GTK_SHADOW_IN ); gtk_container_add(GTK_CONTAINER(scroll), view); gtk_widget_show(scroll); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window),"Infinote Browser"); gtk_window_set_default_size(GTK_WINDOW(window), 400, 400); gtk_window_set_icon_name(GTK_WINDOW(window), "infinote"); gtk_container_set_border_width(GTK_CONTAINER(window), 6); gtk_container_add(GTK_CONTAINER(window), scroll); gtk_widget_show(window); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(on_destroy), NULL); gtk_main(); return 0; }