static RESULT *res1 = NULL;
static gint rootindent = 0;
if(res->book_title)
- g_free(res->book_title);
+ g_free(res->book_title);
res->book_title = g_strdup(res->binfo->title);
if(g_utf8_strlen(res->book_title, 10*n) > n)
{
- gchar *offset = g_utf8_offset_to_pointer(res->book_title, n);
- gchar *offset2 = g_utf8_offset_to_pointer(res->book_title, n + 1);
- for(; offset != offset2;)
- {
- *offset++ = 0;
- }
+ gchar *offset = g_utf8_offset_to_pointer(res->book_title, n);
+ gchar *offset2 = g_utf8_offset_to_pointer(res->book_title, n + 1);
+ for(; offset != offset2;)
+ {
+ *offset++ = 0;
+ }
}
if(prefs_get_int(mw->prefs, "headword.use_tree"))
{
- n = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
- GtkTreeViewColumn *col = gtk_tree_view_get_column(tree, 0);
- GtkTreePath *path = NULL;
- GdkRectangle r;
- if(!n)
- {
- gtk_tree_store_append(store, &iter1, NULL);
- gtk_tree_store_set(store, &iter1, 0, res->heading, 1, res, 2, res->book_title, -1);
- res1 = res;
- path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter1);
- gtk_tree_view_get_cell_area(tree, path, col, &r);
- rootindent = r.x;
- mw->indent = 0;
- }
- else if(!g_strcmp0(res1->binfo->title, res->binfo->title))
- {
- GtkTreeIter iter;
- gtk_tree_store_append(store, &iter, &iter1);
- gtk_tree_store_set(store, &iter, 0, res->heading, 1, res, 2, res->book_title, -1);
- path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter);
- gtk_tree_view_get_cell_area(tree, path, col, &r);
- if(!mw->indent)
- mw->indent = abs(rootindent - r.x);
- }
- else
- {
- gtk_tree_store_append(store, &iter1, NULL);
- gtk_tree_store_set(store, &iter1, 0, res->heading, 1, res, 2, res->book_title, -1);
- res1 = res;
- }
- gtk_tree_path_free(path);
+ n = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
+ GtkTreeViewColumn *col = gtk_tree_view_get_column(tree, 0);
+ GtkTreePath *path = NULL;
+ GdkRectangle r;
+ if(!n)
+ {
+ gtk_tree_store_append(store, &iter1, NULL);
+ gtk_tree_store_set(store, &iter1, 0, res->heading, 1, res, 2, res->book_title, -1);
+ res1 = res;
+ path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter1);
+ gtk_tree_view_get_cell_area(tree, path, col, &r);
+ rootindent = r.x;
+ mw->indent = 0;
+ }
+ else if(!g_strcmp0(res1->binfo->title, res->binfo->title))
+ {
+ GtkTreeIter iter;
+ gtk_tree_store_append(store, &iter, &iter1);
+ gtk_tree_store_set(store, &iter, 0, res->heading, 1, res, 2, res->book_title, -1);
+ path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter);
+ gtk_tree_view_get_cell_area(tree, path, col, &r);
+ if(!mw->indent)
+ mw->indent = abs(rootindent - r.x);
+ }
+ else
+ {
+ gtk_tree_store_append(store, &iter1, NULL);
+ gtk_tree_store_set(store, &iter1, 0, res->heading, 1, res, 2, res->book_title, -1);
+ res1 = res;
+ }
+ gtk_tree_path_free(path);
}
else
{
- gtk_tree_store_append(store, &iter1, NULL);
- gtk_tree_store_set(store, &iter1, 0, res->heading, 1, res, 2, res->book_title, -1);
+ gtk_tree_store_append(store, &iter1, NULL);
+ gtk_tree_store_set(store, &iter1, 0, res->heading, 1, res, 2, res->book_title, -1);
}
}
gboolean mainwnd_headword_counters_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
{
if(gtk_tree_path_get_depth(path) > 1)
- return False;
+ return False;
Mainwnd *mw = MAINWND(data);
RESULT *res;
gtk_tree_model_get(model, iter, 1, &res, -1);
if(prefs_get_int(mw->prefs, "headword.use_tree"))
{
- gint n = gtk_tree_model_iter_n_children(model, iter);
- gchar buf[16];
- g_sprintf(buf, "(%d)", n + 1);
- gchar *ptr = g_strstr_len(res->heading, -1, buf);
- if(ptr)
- return True;
- gchar *str = g_malloc0(strlen(res->heading) + 16);
- g_sprintf(str, "%s (%d)", res->heading, n + 1);
- g_free(res->heading);
- res->heading = str;
- gtk_tree_store_set(GTK_TREE_STORE(model), iter, 0, res->heading, -1);
+ gint n = gtk_tree_model_iter_n_children(model, iter);
+ gchar buf[16];
+ g_sprintf(buf, "(%d)", n + 1);
+ gchar *ptr = g_strstr_len(res->heading, -1, buf);
+ if(ptr)
+ return True;
+ gchar *str = g_malloc0(strlen(res->heading) + 16);
+ g_sprintf(str, "%s (%d)", res->heading, n + 1);
+ g_free(res->heading);
+ res->heading = str;
+ gtk_tree_store_set(GTK_TREE_STORE(model), iter, 0, res->heading, -1);
}
else
{
- gchar *ptr1 = g_strstr_len(res->heading, -1, "(");
- gchar *ptr2 = g_strstr_len(res->heading, -1, ")");
- if(ptr1 && ptr2)
- {
- if(ptr1 < ptr2)
- for(; ptr1 != ptr2 ;)
- *ptr1++ = 0;
- gtk_tree_store_set(GTK_TREE_STORE(model), iter, 0, res->heading, -1);
- }
+ gchar *ptr1 = g_strstr_len(res->heading, -1, "(");
+ gchar *ptr2 = g_strstr_len(res->heading, -1, ")");
+ if(ptr1 && ptr2)
+ {
+ if(ptr1 < ptr2)
+ for(; ptr1 != ptr2 ;)
+ *ptr1++ = 0;
+ gtk_tree_store_set(GTK_TREE_STORE(model), iter, 0, res->heading, -1);
+ }
}
return False;
}
{
GtkTreeView *tree = GTK_TREE_VIEW(gtk_builder_get_object(GTK_BUILDER(self->builder), "mainwnd_results"));
GtkTreeModel *model = gtk_tree_view_get_model(tree);
+ GtkTreeSelection *select = gtk_tree_view_get_selection(tree);
+ g_signal_handler_block(G_OBJECT(select), self->change_id);
gtk_tree_store_clear(GTK_TREE_STORE(model));
+ g_signal_handler_unblock(G_OBJECT(select), self->change_id);
if(!g_sequence_get_length(self->results))
{
- textview_insert_message(self->text, _("<No hits>"), True);
- return;
+ textview_insert_message(self->text, _("<No hits>"), True);
+ return;
}
g_sequence_foreach(self->results, mainwnd_headword_append_cb, self);
gtk_tree_view_columns_autosize(tree);
gtk_tree_model_foreach(model, mainwnd_headword_counters_cb, self);
GtkTreeIter iter;
- GtkTreeSelection *select = gtk_tree_view_get_selection(tree);
if(gtk_tree_model_get_iter_first(model, &iter))
{
gtk_tree_view_scroll_to_point(tree, 0, 0);
gtk_tree_selection_select_iter(select, &iter);
- builder_grab_focus(self->builder, "mainwnd_results");
+ builder_grab_focus(self->builder, "mainwnd_results");
}
}
{
Mainwnd *self = MAINWND(data);
if(!selection)
- return;
+ return;
GtkTreeIter iter;
GtkTreeModel *store;
{
if(self->word)
{
- g_free(self->word);
- self->word = NULL;
+ g_free(self->word);
+ self->word = NULL;
}
if(word)
- self->word = g_strdup(word);
+ self->word = g_strdup(word);
if(method == -1)
- method = builder_get_int(self->builder, "mainwnd_search_method");
+ method = builder_get_int(self->builder, "mainwnd_search_method");
if(word)
- builder_set_str(self->builder, "mainwnd_search", word);
+ builder_set_str(self->builder, "mainwnd_search", word);
history_insert_word(self->history, word);
gint maxhits = prefs_get_int(self->prefs, "headword.maxhits");
ebook_search(word, method, self->results, maxhits, prefs_get_int(self->prefs, "headword.use_tree"));
const gchar *fontstr = prefs_get_str(_mainwnd->prefs, "mainwnd.font");
if(fontstr)
{
- PangoFontDescription *desc = pango_font_description_from_string(fontstr);
- gint sz = pango_font_description_get_size(desc);
- return sz/1024;
+ PangoFontDescription *desc = pango_font_description_from_string(fontstr);
+ gint sz = pango_font_description_get_size(desc);
+ return sz/1024;
}
return 16;
}
GdkScreen *screen = gtk_window_get_screen(GTK_WINDOW(self));
if(provider)
{
- gtk_style_context_remove_provider_for_screen(screen, GTK_STYLE_PROVIDER(provider));
- g_object_unref(provider);
- provider = NULL;
+ 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);
+ 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);
}
}
int btree = prefs_get_int(self->prefs, "headword.use_tree");
if(btree != btree_old)
{
- if(prefs_get_int(self->prefs, "headword.use_tree"))
- {
- gtk_tree_view_column_set_visible(column, True);
- gtk_tree_view_set_show_expanders(tree, True);
- }
- else
- {
- gint prepend = prefs_get_int(self->prefs, "prepend_title");
- gtk_tree_view_column_set_visible(column, prepend);
- gtk_tree_view_set_show_expanders(tree, False);
- }
- btree_old = btree;
- mainwnd_update_results(self);
+ if(prefs_get_int(self->prefs, "headword.use_tree"))
+ {
+ gtk_tree_view_column_set_visible(column, True);
+ gtk_tree_view_set_show_expanders(tree, True);
+ }
+ else
+ {
+ gint prepend = prefs_get_int(self->prefs, "prepend_title");
+ gtk_tree_view_column_set_visible(column, prepend);
+ gtk_tree_view_set_show_expanders(tree, False);
+ }
+ btree_old = btree;
+ mainwnd_update_results(self);
}
else
{
- GtkTreeSelection *selection = gtk_tree_view_get_selection(tree);
- mainwnd_results_selection_changed_cb(selection, (gpointer)self);
+ GtkTreeSelection *selection = gtk_tree_view_get_selection(tree);
+ mainwnd_results_selection_changed_cb(selection, (gpointer)self);
}
const gchar *color = prefs_get_str(self->prefs, "color.title");
g_object_set(self->dictr, "foreground", color, NULL);
builder_set_int(self->builder, "mainwnd_scan", scan);
prefs_set_int(self->prefs, "selection.lookup_started", scan);
if(scan)
- popupwnd_lookup_start(self->popupwnd);
+ popupwnd_lookup_start(self->popupwnd);
else
- popupwnd_lookup_stop(self->popupwnd);
+ popupwnd_lookup_stop(self->popupwnd);
}
void mainwnd_scan_toggled_cb(GtkToggleButton *btn, gpointer data)
Mainwnd *mw = MAINWND(data);
if(gtk_widget_get_visible(GTK_WIDGET(mw)))
{
- prefs_close_wnd(mw->prefs);
- gtk_widget_hide(GTK_WIDGET(mw));
+ prefs_close_wnd(mw->prefs);
+ gtk_widget_hide(GTK_WIDGET(mw));
}
else
- gtk_window_present(GTK_WINDOW(mw));
+ gtk_window_present(GTK_WINDOW(mw));
}
void mainwnd_iconify_cb(GtkWidget *widget, gpointer data)
gtk_toolbar_insert(tb, gtk_separator_tool_item_new(), -1);
gint n = builder_get_int(self->builder, "mainwnd_dict_group");
if(n < 0)
- return;
+ return;
GtkTreeIter iter;
if(!dicts_get_nth(self->dicts, n, &iter))
- return;
+ return;
gchar *title;
BOOK_INFO *binfo;
GtkTreeModel *store = GTK_TREE_MODEL(self->dicts->store);
do
{
- gtk_tree_model_get(store, &iter, DICT_ALIAS, &title, DICT_BINFO, &binfo, -1);
- GtkToolItem *toggle = gtk_toggle_tool_button_new();
+ gtk_tree_model_get(store, &iter, DICT_ALIAS, &title, DICT_BINFO, &binfo, -1);
+ GtkToolItem *toggle = gtk_toggle_tool_button_new();
gtk_tool_button_set_label(GTK_TOOL_BUTTON(toggle), title);
- if(binfo->book)
- gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(toggle), binfo->active);
- else
+ if(binfo->book)
+ gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(toggle), binfo->active);
+ else
gtk_widget_set_sensitive(GTK_WIDGET(toggle), FALSE);
gtk_tool_item_set_homogeneous(toggle, FALSE);
g_signal_connect(G_OBJECT(toggle),"toggled", G_CALLBACK(mainwnd_dict_toggled_cb), (gpointer)binfo);
- gtk_toolbar_insert(tb, toggle, -1);
- gtk_widget_set_tooltip_text(GTK_WIDGET(toggle), title);
- g_free(title);
- if(!gtk_tree_model_iter_next(store, &iter))
+ gtk_toolbar_insert(tb, toggle, -1);
+ gtk_widget_set_tooltip_text(GTK_WIDGET(toggle), title);
+ g_free(title);
+ if(!gtk_tree_model_iter_next(store, &iter))
break;
gtk_toolbar_insert(tb, gtk_separator_tool_item_new(), -1);
} while(TRUE);
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), &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), &iter));
- if(i <= ngroup)
- ngroup = 0;
+ gint i = 0;
+ do {
+ gchar *title;
+ 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), &iter));
+ if(i <= ngroup)
+ ngroup = 0;
}
g_free(sgroup);
builder_set_int(self->builder, "mainwnd_dict_group", ngroup);
GtkTreeModel *model = gtk_tree_view_get_model(tree);
if(prefs_get_int(mw->prefs, "headword.use_tree") && ((event->keyval == GDK_KEY_Left) || (event->keyval == GDK_KEY_Right)))
{
- GtkTreeSelection *select = gtk_tree_view_get_selection(tree);
- GtkTreeIter iter;
- if(!gtk_tree_selection_get_selected(select, NULL, &iter))
- return False;
- GtkTreePath *path = gtk_tree_model_get_path(model, &iter);
- if(event->keyval == GDK_KEY_Right)
- gtk_tree_view_expand_row(tree, path, False);
- if(event->keyval == GDK_KEY_Left)
- {
- if(gtk_tree_path_get_depth(path) == 2)
- {
- gtk_tree_path_up(path);
- gtk_tree_model_get_iter(model, &iter, path);
- }
- gtk_tree_view_collapse_row(tree, path);
- gtk_tree_selection_select_iter(select, &iter);
- }
- gtk_tree_path_free(path);
- return True;
+ GtkTreeSelection *select = gtk_tree_view_get_selection(tree);
+ GtkTreeIter iter;
+ if(!gtk_tree_selection_get_selected(select, NULL, &iter))
+ return False;
+ GtkTreePath *path = gtk_tree_model_get_path(model, &iter);
+ if(event->keyval == GDK_KEY_Right)
+ gtk_tree_view_expand_row(tree, path, False);
+ if(event->keyval == GDK_KEY_Left)
+ {
+ if(gtk_tree_path_get_depth(path) == 2)
+ {
+ gtk_tree_path_up(path);
+ gtk_tree_model_get_iter(model, &iter, path);
+ }
+ gtk_tree_view_collapse_row(tree, path);
+ gtk_tree_selection_select_iter(select, &iter);
+ }
+ gtk_tree_path_free(path);
+ return True;
}
return FALSE;
}
Mainwnd *mw = MAINWND(data);
if(event->keyval == GDK_KEY_BackSpace)
{
- GtkWidget *find = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(mw->builder), "mainwnd_find"));
- if(gtk_widget_has_focus(find))
- return False;
- GtkWidget *combo = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(mw->builder), "mainwnd_search"));
- GtkWidget *child = gtk_bin_get_child(GTK_BIN(combo));
- if(!gtk_widget_has_focus(child))
- {
- gtk_widget_grab_focus(combo);
- gtk_editable_set_position(GTK_EDITABLE(child), -1);
- return TRUE;
- }
+ GtkWidget *find = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(mw->builder), "mainwnd_find"));
+ if(gtk_widget_has_focus(find))
+ return False;
+ GtkWidget *combo = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(mw->builder), "mainwnd_search"));
+ GtkWidget *child = gtk_bin_get_child(GTK_BIN(combo));
+ if(!gtk_widget_has_focus(child))
+ {
+ gtk_widget_grab_focus(combo);
+ gtk_editable_set_position(GTK_EDITABLE(child), -1);
+ return TRUE;
+ }
}
return FALSE;
}
GtkListStore *store = GTK_LIST_STORE(gtk_builder_get_object(GTK_BUILDER(self->builder), "mainwnd_search_method_store"));
for(i = 0; i < 4; i++)
{
- const gchar *name = ebook_index_to_method_name(i);
- gtk_list_store_append(store, &iter);
- gtk_list_store_set(store, &iter, 0, name, -1);
+ const gchar *name = ebook_index_to_method_name(i);
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter, 0, name, -1);
}
builder_set_int(self->builder, "mainwnd_search_method", 0);
gint w = prefs_get_int(self->prefs, "mainwnd.w");
gint h = prefs_get_int(self->prefs, "mainwnd.h");
if((w > 100) && (h > 50))
- gtk_window_resize(GTK_WINDOW(self), w, h);
+ gtk_window_resize(GTK_WINDOW(self), w, h);
w = prefs_get_int(self->prefs, "paned.tree_width");
GtkPaned *p = GTK_PANED(gtk_builder_get_object(GTK_BUILDER(self->builder), "hpaned1"));
gtk_paned_set_position(p, w);
if(prefs_get_int(self->prefs, "mainwnd.remember_pos"))
{
- gint x = prefs_get_int(self->prefs, "mainwnd.x");
- gint y = prefs_get_int(self->prefs, "mainwnd.y");
+ gint x = prefs_get_int(self->prefs, "mainwnd.x");
+ gint y = prefs_get_int(self->prefs, "mainwnd.y");
gtk_window_move(GTK_WINDOW(self), x, y);
}
GtkTreeView *tree = GTK_TREE_VIEW(gtk_builder_get_object(GTK_BUILDER(self->builder), "mainwnd_results"));
GtkTreeSelection *select = gtk_tree_view_get_selection(tree);
gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE);
- g_signal_connect(G_OBJECT(select), "changed", G_CALLBACK(mainwnd_results_selection_changed_cb), self);
+ self->change_id = g_signal_connect(G_OBJECT(select), "changed", G_CALLBACK(mainwnd_results_selection_changed_cb), self);
GtkCellRenderer *renderer = g_object_new(TYPE_RENDER_HEADWORD, NULL); //gtk_cell_renderer_text_new();
gtk_tree_view_insert_column_with_attributes(tree, -1, _("Result"), renderer, "text", 0, "result", 1, NULL);
*store = GTK_TREE_MODEL(gtk_builder_get_object(GTK_BUILDER(self->builder), "dicts_store"));
GtkTreeIter iter1;
if(!gtk_tree_model_iter_nth_child(*store, &iter1, NULL, n))
- return FALSE;
+ return FALSE;
if(!gtk_tree_model_iter_children(*store, iter, &iter1))
return FALSE;
return TRUE;