{
gint custom_font = prefs_get_int(self->prefs, "mainwnd.custom_font");
const gchar *fontstr = prefs_get_str(self->prefs, "mainwnd.font");
-
const gchar *font = custom_font ? fontstr : "";
- gchar *s = g_strdup_printf("style \"custom-font\"{font_name=\"%s\"}\nclass \"GtkWidget\" style \"custom-font\"", font);
- gtk_rc_parse_string(s);
- g_free(s);
+
+ static GtkCssProvider *provider = NULL;
GdkScreen *screen = gtk_window_get_screen(GTK_WINDOW(self));
- GtkSettings *settings = gtk_settings_get_for_screen(screen);
- gtk_rc_reset_styles(settings);
+ if(provider)
+ {
+ gtk_style_context_remove_provider_for_screen(screen, GTK_STYLE_PROVIDER(provider));
+ g_object_unref(provider);
+ provider = NULL;
+ }
+ if(custom_font)
+ {
+ provider = gtk_css_provider_new();
+ gchar *s = g_strdup_printf("* {font: %s;}", font);
+ if(gtk_css_provider_load_from_data(GTK_CSS_PROVIDER (provider), s, -1, NULL))
+ gtk_style_context_add_provider_for_screen(screen, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_USER);
+ g_free(s);
+ }
}
void mainwnd_results_row_expanded_collapsed_cb(GtkTreeView *tree, GtkTreeIter *iter, GtkTreePath *path, gpointer data)
void mainwnd_dict_groups_update(Mainwnd *self)
{
GtkTreeStore *dicts_store = GTK_TREE_STORE(gtk_builder_get_object(GTK_BUILDER(self->builder), "dicts_store"));
- GtkListStore *groups = GTK_LIST_STORE(gtk_builder_get_object(GTK_BUILDER(self->builder), "mainwnd_dictgroups_store"));
+ GtkComboBoxText *combo = GTK_COMBO_BOX_TEXT(gtk_builder_get_object(GTK_BUILDER(self->builder), "mainwnd_dict_group"));
gchar *sgroup = g_strdup(builder_get_str(self->builder, "mainwnd_dict_group"));
gint ngroup = builder_get_int(self->builder, "mainwnd_dict_group");
if(ngroup < 0) ngroup = 0;
- gtk_list_store_clear(groups);
- GtkTreeIter iter1, iter2;
- if(gtk_tree_model_get_iter_first(GTK_TREE_MODEL(dicts_store), &iter1))
+ gtk_combo_box_text_remove_all(combo);
+ GtkTreeIter iter;
+ if(gtk_tree_model_get_iter_first(GTK_TREE_MODEL(dicts_store), &iter))
{
gint i = 0;
do {
gchar *title;
- gtk_tree_model_get(GTK_TREE_MODEL(dicts_store), &iter1, DICT_ALIAS, &title, -1);
- gtk_list_store_append(groups, &iter2);
- gtk_list_store_set(groups, &iter2, 0, title, -1);
+ gtk_tree_model_get(GTK_TREE_MODEL(dicts_store), &iter, DICT_ALIAS, &title, -1);
+ gtk_combo_box_text_append_text(combo, title);
if(ngroup == i++)
{
if(g_strcmp0(sgroup, title))
ngroup = 0;
}
g_free(title);
- } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(dicts_store), &iter1));
+ } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(dicts_store), &iter));
if(i <= ngroup)
ngroup = 0;
}
builder_set_int(self->builder, "mainwnd_dict_group", ngroup);
}
-static void mainwnd_dict_remove_cb(GtkWidget *w, gpointer data)
+static void mainwnd_dict_remove_cb(gpointer data, gpointer user_data)
{
- GtkContainer *c = GTK_CONTAINER(data);
+ g_printf("remove_cb\n");
+ //GtkContainer *c = GTK_CONTAINER(data);
+ GtkWidget *w = GTK_WIDGET(data);
if(GTK_IS_TOOL_ITEM(w))
- gtk_container_remove(c, w);
+ gtk_widget_destroy(w);
+// gtk_container_remove(c, w);
}
void mainwnd_dict_buttons_remove(Mainwnd *self)
{
GtkWidget *tb = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(self->builder), "mainwnd_dicts"));
gtk_widget_hide(tb);
- gtk_container_forall(GTK_CONTAINER(tb), mainwnd_dict_remove_cb, tb);
+ GList *list = gtk_container_get_children(GTK_CONTAINER(tb));
+ if(gtk_toolbar_get_n_items(tb) > 0)
+ g_list_foreach(list , mainwnd_dict_remove_cb, tb);
+ //gtk_container_foreach(GTK_CONTAINER(tb), mainwnd_dict_remove_cb, tb);
gtk_widget_show_all(tb);
}