static void gdict_source_chooser_dispose (GObject *gobject) { GdictSourceChooser *chooser = GDICT_SOURCE_CHOOSER (gobject); GdictSourceChooserPrivate *priv = chooser->priv; if (priv->store) { g_object_unref (priv->store); priv->store = NULL; } if (priv->loader) { g_object_unref (priv->loader); priv->loader = NULL; } if (priv->busy_cursor) { gdk_cursor_unref (priv->busy_cursor); priv->busy_cursor = NULL; } G_OBJECT_CLASS (gdict_source_chooser_parent_class)->dispose (gobject); }
static void gtr_dict_panel_set_source_name (GtrDictPanel * panel, const gchar * source_name) { GtrDictPanelPrivate *priv = panel->priv; GdictContext *context; if (priv->source_name && source_name && strcmp (priv->source_name, source_name) == 0) return; g_free (priv->source_name); if (source_name) priv->source_name = g_strdup (source_name); else priv->source_name = g_settings_get_string (priv->settings, DICTIONARY_SETTINGS_SOURCE_KEY); context = get_context_from_loader (panel); gtr_dict_panel_set_context (panel, context); if (priv->source_chooser) gdict_source_chooser_set_current_source (GDICT_SOURCE_CHOOSER (priv->source_chooser), priv->source_name); }
static void gdict_source_chooser_finalize (GObject *gobject) { GdictSourceChooser *chooser = GDICT_SOURCE_CHOOSER (gobject); GdictSourceChooserPrivate *priv = chooser->priv; g_free (priv->current_source); G_OBJECT_CLASS (gdict_source_chooser_parent_class)->finalize (gobject); }
static void sidebar_page_changed_cb (GdictSidebar * sidebar, GtrDictPanel * panel) { GtrDictPanelPrivate *priv = panel->priv; const gchar *page_id; const gchar *message; page_id = gdict_sidebar_current_page (sidebar); switch (page_id[0]) { case 's': { switch (page_id[1]) { case 'p': /* speller */ message = _("Double-click on the word to look up"); if (priv->word) gdict_speller_match (GDICT_SPELLER (priv->speller), priv->word); break; case 't': /* strat-chooser */ message = _("Double-click on the matching strategy to use"); gdict_strategy_chooser_refresh (GDICT_STRATEGY_CHOOSER (priv->strat_chooser)); break; case 'o': /* source-chooser */ message = _("Double-click on the source to use"); gdict_source_chooser_refresh (GDICT_SOURCE_CHOOSER (priv->source_chooser)); break; default: message = NULL; } } break; case 'd': /* db-chooser */ message = _("Double-click on the database to use"); gdict_database_chooser_refresh (GDICT_DATABASE_CHOOSER (priv->db_chooser)); break; default: message = NULL; break; } if (message && priv->status) gtr_statusbar_flash_message (panel->priv->status, 0, "%s", message); }
static void gdict_source_chooser_set_property (GObject *gobject, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_LOADER: gdict_source_chooser_set_loader (GDICT_SOURCE_CHOOSER (gobject), g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } }
static void gdict_source_chooser_get_property (GObject *gobject, guint prop_id, GValue *value, GParamSpec *pspec) { GdictSourceChooserPrivate *priv; priv = GDICT_SOURCE_CHOOSER (gobject)->priv; switch (prop_id) { case PROP_LOADER: g_value_set_object (value, priv->loader); break; case PROP_COUNT: g_value_set_int (value, priv->n_sources); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; } }
static void row_activated_cb (GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *column, gpointer data) { GdictSourceChooser *chooser = GDICT_SOURCE_CHOOSER (data); GdictSourceChooserPrivate *priv = chooser->priv; GtkTreeIter iter; gchar *name; GdictSource *source; if (!priv->loader) return; if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (priv->store), &iter, path)) return; gtk_tree_model_get (GTK_TREE_MODEL (priv->store), &iter, SOURCE_NAME, &name, -1); if (!name) return; source = gdict_source_loader_get_source (priv->loader, name); if (!source) { g_free (name); return; } g_signal_emit (chooser, source_chooser_signals[SOURCE_ACTIVATED], 0, name, source); g_free (name); g_object_unref (source); }
static GObject * gdict_source_chooser_constructor (GType gtype, guint n_params, GObjectConstructParam *params) { GdictSourceChooser *chooser; GdictSourceChooserPrivate *priv; GObjectClass *parent_class; GObject *retval; GtkWidget *sw; GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkWidget *hbox; parent_class = G_OBJECT_CLASS (gdict_source_chooser_parent_class); retval = parent_class->constructor (gtype, n_params, params); chooser = GDICT_SOURCE_CHOOSER (retval); priv = chooser->priv; gtk_widget_push_composite_child (); sw = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_composite_name (sw, "gdict-source-chooser-scrolled-window"); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (chooser), sw, TRUE, TRUE, 0); gtk_widget_show (sw); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("sources", renderer, "text", SOURCE_DESCRIPTION, "weight", SOURCE_CURRENT, NULL); priv->treeview = gtk_tree_view_new (); gtk_widget_set_composite_name (priv->treeview, "gdict-source-chooser-treeview"); gtk_tree_view_set_model (GTK_TREE_VIEW (priv->treeview), GTK_TREE_MODEL (priv->store)); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (priv->treeview), FALSE); gtk_tree_view_append_column (GTK_TREE_VIEW (priv->treeview), column); g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->treeview)), "changed", G_CALLBACK (selection_changed_cb), chooser); g_signal_connect (priv->treeview, "row-activated", G_CALLBACK (row_activated_cb), chooser); gtk_container_add (GTK_CONTAINER (sw), priv->treeview); gtk_widget_show (priv->treeview); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); priv->buttons_box = hbox; priv->refresh_button = gtk_button_new (); gtk_button_set_image (GTK_BUTTON (priv->refresh_button), gtk_image_new_from_stock (GTK_STOCK_REFRESH, GTK_ICON_SIZE_BUTTON)); g_signal_connect (priv->refresh_button, "clicked", G_CALLBACK (refresh_button_clicked_cb), chooser); gtk_box_pack_start (GTK_BOX (hbox), priv->refresh_button, FALSE, FALSE, 0); gtk_widget_show (priv->refresh_button); gtk_widget_set_tooltip_text (priv->refresh_button, _("Reload the list of available sources")); gtk_box_pack_end (GTK_BOX (chooser), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); gtk_widget_pop_composite_child (); return retval; }
static void refresh_button_clicked_cb (GtkButton *button, gpointer data) { gdict_source_chooser_refresh (GDICT_SOURCE_CHOOSER (data)); }