OSDN Git Service

some code cleanup
authorevgeny <evgeny@users.sourceforge.jp>
Mon, 22 Aug 2011 20:17:39 +0000 (00:17 +0400)
committerevgeny <evgeny@users.sourceforge.jp>
Mon, 22 Aug 2011 20:17:39 +0000 (00:17 +0400)
15 files changed:
src/audio.c
src/builder.c
src/defs.h
src/dicts.c
src/dicts.h
src/eb123.glade
src/ebook.c
src/ebook.h
src/mainwnd.c
src/mainwnd.h
src/popupwnd.c
src/prefs.c
src/prefs.h
src/textview.c
src/video.c

index 13468b6..77b2b4e 100644 (file)
@@ -183,8 +183,8 @@ static void audio_init(Audio *self)
 
 void audio_render(Audio *self)
 {
-    GtkTextIter iter1, iter2;
 #if 0
+    GtkTextIter iter1, iter2;
     if(render_get_last_mark("wave", &iter1, &iter2))
     {
         gtk_text_buffer_delete(render.buf, &iter1, &iter2);
index 96cb296..9641e0a 100644 (file)
@@ -64,9 +64,7 @@ gint builder_get_int(Builder *self, const gchar *name)
     if(GTK_IS_COMBO_BOX(w))
     {
        ret = gtk_combo_box_get_active(GTK_COMBO_BOX(w));
-       g_printf("combobox_active = %d\n", ret);
        GtkTreeModel *m = gtk_combo_box_get_model(w);
-       //if(ret < 0) ret = 0;
     }
     if(GTK_IS_TOGGLE_BUTTON(w))
     {
index 3f7f25a..2cbe0b6 100644 (file)
 
 #include "../config.h"
 
-#define SEARCH_METHOD_FORWARD        0
-#define SEARCH_METHOD_BACKWARD       1
-#define SEARCH_METHOD_EXACTWORD      2
-#define SEARCH_METHOD_KEYWORD        3
-#define SEARCH_METHOD_MENU          10
-#define SEARCH_METHOD_COPYRIGHT     11
-#define SEARCH_METHOD_UNKNOWN       99
-
-#define SEARCH_FORWARD      _("Forward")
-#define SEARCH_BACKWARD     _("Backward")
-#define SEARCH_EXACTWORD    _("Exactword")
-#define SEARCH_KEYWORD      _("Keyword")
-#define SEARCH_MENU         _("Menu")
-#define SEARCH_COPYRIGHT    _("Copyright")
-
 #define ENC_UTF8            "utf-8"
 #define ENC_EUC_JP          "euc-jp"
 #define ENC_SHIFT_JIS       "shift-jis"
@@ -101,6 +86,27 @@ typedef struct _result_eb
     gchar *filename;
 } RESULT;
 
+#if 0
+#define SEARCH_METHOD_FORWARD        0
+#define SEARCH_METHOD_BACKWARD       1
+#define SEARCH_METHOD_EXACTWORD      2
+#define SEARCH_METHOD_KEYWORD        3
+#define SEARCH_METHOD_MENU          10
+#define SEARCH_METHOD_COPYRIGHT     11
+#define SEARCH_METHOD_UNKNOWN       99
+#else
+enum
+{
+    SEARCH_METHOD_FORWARD,
+    SEARCH_METHOD_BACKWARD,
+    SEARCH_METHOD_EXACTWORD,
+    SEARCH_METHOD_KEYWORD,
+    SEARCH_METHOD_MENU,
+    SEARCH_METHOD_COPYRIGHT,
+    SEARCH_METHOD_UNKNOWN
+};
+#endif
+
 enum
 {
     COLOR_LINK,
index 0e3f6b2..5ceed24 100644 (file)
@@ -135,15 +135,6 @@ static void dicts_item_move(GtkWidget *w, gpointer data, gboolean up)
 #endif
 
 #if 0
-static void dicts_view_scroll_down()
-{
-    while(gtk_events_pending())
-       gtk_main_iteration();
-    GdkScreen *screen = gdk_screen_get_default();
-    gint h = gdk_screen_get_width(screen);
-    gtk_tree_view_scroll_to_point(GTK_TREE_VIEW(dicts.view), 0, h);
-}
-
 static void dicts_item_up_cb(GtkWidget *w, gpointer data)
 {
     dicts_item_move(w, data, TRUE);
@@ -173,20 +164,6 @@ static void dicts_add_group_cb(GtkWidget *w, gpointer data)
 #endif
 
 #if 0
-static void dicts_search_disk(GtkWidget *w, gpointer data)
-{
-    if(!gtk_entry_get_text_length(GTK_ENTRY(dicts.path)))
-       return;
-    gchar *dirname = (gchar*)gtk_entry_get_text(GTK_ENTRY(dicts.path));
-    dirname = g_strdup(dirname);
-    //dicts_search_recursive(dirname, 0);
-    g_free(dirname);
-    gtk_entry_set_text(GTK_ENTRY(dicts.path), "");
-    dicts_view_scroll_down();
-}
-#endif
-
-#if 0
 static gboolean dicts_drag_data_received(GtkTreeDragDest *drag_dest, GtkTreePath *dest, GtkSelectionData  *selection_data)
 {
     return FALSE;
@@ -299,6 +276,7 @@ void my_gtk_tree_store_swap(GtkTreeStore *tree_store, GtkTreeIter *a, GtkTreeIte
     g_free(order);
 }
 
+#if 0
 void my_gtk_combo_box_set_active_text(GtkComboBox *combo, const gchar *text)
 {
     if(!text) return;
@@ -322,6 +300,17 @@ void my_gtk_combo_box_set_active_text(GtkComboBox *combo, const gchar *text)
     if(gtk_combo_box_get_active(combo) < 0)
        gtk_combo_box_set_active(combo, 0);
 }
+#endif
+
+static void dicts_scroll_down(Dicts *dicts)
+{
+    while(gtk_events_pending())
+       gtk_main_iteration();
+    GdkScreen *screen = gdk_screen_get_default();
+    gint h = gdk_screen_get_height(screen);
+    GtkTreeView *tree = GTK_TREE_VIEW(gtk_builder_get_object(GTK_BUILDER(dicts->builder), "dicts_tree"));
+    gtk_tree_view_scroll_to_point((tree), 0, h);
+}
 
 void dicts_info_update_search(GtkWidget *w, gpointer data)
 {
@@ -330,10 +319,9 @@ void dicts_info_update_search(GtkWidget *w, gpointer data)
     const gchar *name = NULL;
     for(i = 0; (name = ebook_index_to_method_name(i)); i++)
     {
-       code = ebook_index_to_method_code(i);
        if(!g_strcmp0(gtk_label_get_text(GTK_LABEL(w)), name))
        {
-           (book ? ebook_has_method(book, code) : FALSE) ? gtk_widget_show(w) : gtk_widget_hide(w);
+           (book ? ebook_has_method(book, i) : FALSE) ? gtk_widget_show(w) : gtk_widget_hide(w);
            break;
        }
     }
@@ -484,10 +472,11 @@ void dicts_find_btn_clicked_cb(GtkWidget *widget, gpointer data)
 
 void dicts_close_btn_clicked_cb(GtkWidget *widget, gpointer data)
 {
+    Mainwnd *mw = MAINWND(data);
     GtkWidget *wnd = gtk_widget_get_toplevel(widget);
     gtk_widget_hide(wnd);
-    dicts_save(_dicts);
-    mainwnd_dicts_update();
+    dicts_save(mw->dicts);
+    mainwnd_dicts_update(mw);
 }
 
 static void dicts_selection_changed_cb(GtkTreeSelection *selection, gpointer data)
@@ -498,7 +487,7 @@ static void dicts_selection_changed_cb(GtkTreeSelection *selection, gpointer dat
     GtkTreePath *path;
     GtkTreeModel *store;
     BOOK_INFO *binfo = NULL;
-    Mainwnd *mainwnd = MAINWND(data);
+    Mainwnd *mw = MAINWND(data);
 
     if(gtk_tree_selection_get_selected(selection, &store, &iter))
     {
@@ -508,22 +497,22 @@ static void dicts_selection_changed_cb(GtkTreeSelection *selection, gpointer dat
        if(n == 2)
            gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, DICT_BINFO, &binfo, -1);
     }
-    builder_set_str(mainwnd->builder, "dicts_book_title", binfo ? binfo->title : "");
-    builder_set_str(mainwnd->builder, "dicts_book_path", binfo ? binfo->path : "");
-    builder_set_int(mainwnd->builder, "dicts_subbook_no", binfo ? binfo->subbook_no : -1);
-    builder_set_str(mainwnd->builder, "dicts_appendix_path", binfo ? (binfo->appendix_path ? binfo->appendix_path : "") : "");
-    builder_set_int(mainwnd->builder, "dicts_appendix_subbook_no", binfo ? binfo->appendix_subbook_no : -1);
+    builder_set_str(mw->builder, "dicts_book_title", binfo ? binfo->title : "");
+    builder_set_str(mw->builder, "dicts_book_path", binfo ? binfo->path : "");
+    builder_set_int(mw->builder, "dicts_subbook_no", binfo ? binfo->subbook_no : -1);
+    builder_set_str(mw->builder, "dicts_appendix_path", binfo ? (binfo->appendix_path ? binfo->appendix_path : "") : "");
+    builder_set_int(mw->builder, "dicts_appendix_subbook_no", binfo ? binfo->appendix_subbook_no : -1);
     //gtk_container_foreach(GTK_CONTAINER(searches), dicts_info_update_search, binfo ? (gpointer)binfo->book : NULL);
 }
 
 void dicts_btn_clicked_cb(GtkWidget *widget, gpointer data)
 {
-    Mainwnd *mainwnd = MAINWND(data);
-    GtkWidget *wnd = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(mainwnd->builder), "dictionaries"));
+    Mainwnd *mw = MAINWND(data);
+    GtkWidget *wnd = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(mw->builder), "dictionaries"));
     gtk_widget_hide_on_delete(wnd);
     GtkTreeIter iter1;
-    GtkTreeView *dicts_tree = GTK_TREE_VIEW(gtk_builder_get_object(GTK_BUILDER(mainwnd->builder), "dicts_tree"));
-    GtkTreeStore *dicts_store = GTK_TREE_STORE(gtk_builder_get_object(GTK_BUILDER(mainwnd->builder), "dicts_store"));
+    GtkTreeView *dicts_tree = GTK_TREE_VIEW(gtk_builder_get_object(GTK_BUILDER(mw->builder), "dicts_tree"));
+    GtkTreeStore *dicts_store = GTK_TREE_STORE(gtk_builder_get_object(GTK_BUILDER(mw->builder), "dicts_store"));
     GtkTreeSelection *select = gtk_tree_view_get_selection(dicts_tree);
     static gboolean preparewnd = True;
     if(preparewnd)
@@ -680,8 +669,9 @@ void dicts_startElement(void *ctx, const xmlChar *name, const xmlChar **atts)
     }
 }
 
-gint dicts_load(Dicts *self)
+gint dicts_load(Dicts *self, Builder *builder)
 {
+    self->builder = builder;
     gchar filename[PATH_MAX];
     xmlSAXHandler cb;
     gint active = 0;
@@ -709,7 +699,6 @@ gboolean dicts_get_nth(Dicts *self, gint n, GtkTreeIter *iter)
 
 void dicts_delete_btn_clicked_cb(GtkWidget *widget, gpointer data)
 {
-    g_printf("remove\n");
     gboolean b;
     gchar *title;
     GtkTreeIter iter, iter2;
index fc08e8d..14fe608 100644 (file)
@@ -2,6 +2,8 @@
 #ifndef __DICTS_H__
 #define __DICTS_H__
 
+#include "builder.h"
+
 G_BEGIN_DECLS
 
 #define TYPE_DICTS (dicts_get_type ())
@@ -18,13 +20,14 @@ struct _Dicts {
     GObject        parent_instance;
     GData          *data;
     GtkTreeStore    *store;
+    Builder        *builder;
 };
 
 struct _DictsClass {
     GObjectClass    parent_class;
 };
 
-gint               dicts_load(Dicts *self);
+gint               dicts_load(Dicts *self, Builder *builder);
 void               dicts_save(Dicts *self);
 gboolean           dicts_get_nth(Dicts *self, gint n, GtkTreeIter *iter);
 
@@ -38,21 +41,9 @@ G_END_DECLS
 #define __PREF_DICTGROUP_H__
 
 void            dicts_show(GtkWidget *w, gpointer data);
-//void            dicts_save();
-//void            dicts_load();
 GtkWidget*     dicts_info(gboolean create);
 GtkTreePath*    dicts_find_path(EB_Book *book);
 
 void            my_gtk_tree_store_swap(GtkTreeStore *tree_store, GtkTreeIter *a, GtkTreeIter *b);
-void            my_gtk_combo_box_set_active_text(GtkComboBox *combo, const gchar *text);
-
-#if 0
-struct _dicts
-{
-    gboolean show_info;
-    GtkTreeStore *store;
-    GtkWidget   *dlg, *view, *path, *search_depth;
-} dicts;
-#endif
 
 #endif /* __PREF_DICTGROUP_H__ */
index 2586803..26a63ae 100644 (file)
   <object class="GtkWindow" id="mainwnd">
     <property name="can_focus">False</property>
     <property name="window_position">center</property>
+    <signal name="delete-event" handler="mainwnd_delete_event_cb" swapped="no"/>
     <child>
       <object class="GtkVBox" id="vbox1">
         <property name="visible">True</property>
index 56d1ab3..01b4ec2 100644 (file)
 #define MAX_BUFSIZE 65535
 #endif
 
+#define SEARCH_FORWARD      _("Forward")
+#define SEARCH_BACKWARD     _("Backward")
+#define SEARCH_EXACTWORD    _("Exactword")
+#define SEARCH_KEYWORD      _("Keyword")
+#define SEARCH_MENU         _("Menu")
+#define SEARCH_COPYRIGHT    _("Copyright")
+
 typedef struct
 {
-    gint  code;
     gchar *name;
     int (* have_method)(EB_Book *book);
     EB_Error_Code (* search)(EB_Book *book, const gchar* input_word);
@@ -24,12 +30,12 @@ typedef struct
 
 static const SEARCH_METHOD methods[] =
 {
-    {SEARCH_METHOD_FORWARD,     SEARCH_FORWARD,            eb_have_word_search,        eb_search_word},
-    {SEARCH_METHOD_BACKWARD,    SEARCH_BACKWARD,    eb_have_endword_search,    eb_search_endword},
-    {SEARCH_METHOD_EXACTWORD,   SEARCH_EXACTWORD,   eb_have_exactword_search,  eb_search_exactword},
-    {SEARCH_METHOD_KEYWORD,     SEARCH_KEYWORD,            eb_have_keyword_search,     ebook_search_keyword},
-    {SEARCH_METHOD_MENU,       SEARCH_MENU,        eb_have_menu,               NULL},
-    {SEARCH_METHOD_COPYRIGHT,  SEARCH_COPYRIGHT,   eb_have_copyright,          NULL},
+    {SEARCH_FORWARD,       eb_have_word_search,        eb_search_word},
+    {SEARCH_BACKWARD,      eb_have_endword_search,     eb_search_endword},
+    {SEARCH_EXACTWORD,     eb_have_exactword_search,   eb_search_exactword},
+    {SEARCH_KEYWORD,       eb_have_keyword_search,     ebook_search_keyword},
+    {SEARCH_MENU,          eb_have_menu,               NULL},
+    {SEARCH_COPYRIGHT,     eb_have_copyright,          NULL},
 };
 
 const gchar* ebook_index_to_method_name(gint index)
@@ -42,26 +48,13 @@ const gchar* ebook_index_to_method_name(gint index)
     return m.name;
 }
 
-gint ebook_index_to_method_code(gint index)
+gboolean ebook_has_method(EB_Book *book, gint index)
 {
     if(index < 0)
-       index = 0;
+       return False;
     if(index >= SZ(methods))
-       index = 0;
-    SEARCH_METHOD m = methods[index];
-    return m.code;
-}
-
-gboolean ebook_has_method(BOOK_INFO *binfo, gint method)
-{
-    gboolean ret = False;
-    gint i;
-    for(i = 0; i < SZ(methods); i++)
-    {
-       if(methods[i].code == method)
-           ret = methods[i].have_method(binfo->book);
-    }
-    return ret;
+       return False;
+    return methods[index].have_method(book);
 }
 
 BOOK_INFO *ebook_load(const gchar *path, int subbook_no)
@@ -398,14 +391,7 @@ EB_Error_Code ebook_search_keyword(EB_Book *book, const char *input_word)
 
 gboolean ebook_search_book(const gchar *word, gint method, GSequence *results, gint maxhits, BOOK_INFO *binfo, gboolean jap_only)
 {
-    gint i;
-    gboolean have_method = False;
-    for(i = 0; i < SZ(methods); i++)
-    {
-       if(methods[i].code == method)
-           have_method = methods[i].have_method(binfo->book);
-    }
-    if(!have_method)
+    if(!methods[method].have_method(binfo->book))
        return False;
     gchar *euc_str = NULL;
     if(word)
@@ -473,52 +459,6 @@ gboolean ebook_search(const gchar *word, gint method, GSequence *results, gint m
     return ret;
 }
 
-#if 0
-void ebook_search_menu_or_copyright(gboolean menu, GSequence *results)
-{
-    GtkTreeIter iter;
-    GtkTreeModel *store;
-    BOOK_INFO *binfo;
-
-    if(!mainwnd_get_dicts(&store, &iter))
-        return;
-
-    GtkTreeIter iter;
-    GtkTreeModel *store;
-    EB_Position pos;
-    RESULT *rp;
-    BOOK_INFO *binfo;
-    EB_Error_Code err;
-    ebook.results = results;
-
-    mainwnd_clear_text();
-    //headword_clear();
-    ebook_clear_results(results);
-
-    if(!mainwnd_get_dicts(&store, &iter))
-        return;
-    
-    do {
-        gtk_tree_model_get(GTK_TREE_MODEL(dicts.store), &iter, DICT_BINFO, &binfo, -1);
-        if(!binfo->active)
-            continue;
-        if(menu ? !eb_have_menu(binfo->book) : !eb_have_copyright(binfo->book))
-            continue;
-        err = menu ? eb_menu(binfo->book, &pos) : eb_copyright(binfo->book, &pos);
-        if(err != EB_SUCCESS)
-            continue;
-        rp = (RESULT *)calloc(sizeof(RESULT), 1);
-        rp->heading = g_strdup_printf("%s : %s", menu ? _("menu") : _("copyright"), binfo->title);
-        rp->binfo = binfo;
-        rp->pos = pos;
-        g_sequence_append(ebook.results, rp);
-    } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(dicts.store), &iter));
-    ebook.results = NULL;
-
-    //headword_show_results();
-}
-#endif
-
 GdkPixbuf *ebook_load_image(BOOK_INFO *binfo, EB_Position *pos)
 {
     EB_Book *book = binfo->book;
index ac92d85..081c0e3 100644 (file)
@@ -2,9 +2,8 @@
 #ifndef __EBOOK_H_
 #define __EBOOK_H_
 
-gint            ebook_index_to_method_code(gint index);
+gboolean       ebook_has_method(EB_Book *book, gint method);
 const gchar*   ebook_index_to_method_name(gint index);
-const gchar*   ebook_have_method(BOOK_INFO *binfo, gint method);
 
 BOOK_INFO*      ebook_load(const gchar *path, int subbook_no);
 GdkPixbuf*      ebook_load_image(BOOK_INFO *binfo, EB_Position *pos);
index 9f6b78f..29aba16 100644 (file)
@@ -38,9 +38,6 @@ static void mainwnd_init(Mainwnd *self)
     self->text = g_object_new(TYPE_TEXTVIEW, "prefs", self->prefs, NULL);
     gtk_container_add(scroll, GTK_WIDGET(self->text));
     self->popupwnd = g_object_new(TYPE_POPUPWND, "mainwnd", self, "type", GTK_WINDOW_POPUP, NULL);
-    GtkToggleButton *scan = GTK_TOGGLE_BUTTON(gtk_builder_get_object(GTK_BUILDER(self->builder), "mainwnd_scan"));
-    gboolean b = prefs_get_int(self->prefs, "selection.lookup_started");
-    gtk_toggle_button_set_active(scan, b);
 }
 
 void mainwnd_headword_append(gpointer data, gpointer user_data)
@@ -121,6 +118,13 @@ void mainwnd_exit_btn_clicked_cb(GtkWidget *widget, gpointer data)
     mainwnd_exit();
 }
 
+gboolean mainwnd_delete_event_cb(GtkWidget *widget, GdkEvent *event, gpointer user_data)
+{
+    g_printf("delete-event\n");
+    gtk_widget_hide(widget);
+    return TRUE;
+}
+
 void mainwnd_search_clear_clicked_cb(GtkWidget *widget, gpointer data)
 {
     Mainwnd *wnd = MAINWND(data);
@@ -130,17 +134,14 @@ void mainwnd_search_clear_clicked_cb(GtkWidget *widget, gpointer data)
     gtk_widget_grab_focus(GTK_WIDGET(entry));
 }
 
-void mainwnd_search(Mainwnd *self, const gchar *word)
+void mainwnd_search(Mainwnd *self, const gchar *word, gint method)
 {
-    gint i = builder_get_int(self->builder, "mainwnd_search");
-    g_printf("method ? = %d\n", i);
-    gint method = ebook_index_to_method_code(i);
-    //history_insert_word(word);
+    if(method == -1)
+       method = builder_get_int(self->builder, "mainwnd_search_method");
 
+    //history_insert_word(word);
     gint maxhits = prefs_get_int(self->prefs, "headword.maxhits");
-    g_printf("maxhits = %d\n", maxhits);
     ebook_search(word, method, self->results, maxhits, False);
-    g_printf("results len: %d\n", g_sequence_get_length(self->results));
     mainwnd_update_results(self);
     gtk_window_deiconify(GTK_WINDOW(self));
     gtk_widget_show_all(GTK_WIDGET(self));
@@ -150,7 +151,7 @@ void mainwnd_search(Mainwnd *self, const gchar *word)
 void mainwnd_search_()
 {
     const gchar *word = builder_get_str(_mainwnd->builder, "mainwnd_search");
-    mainwnd_search(_mainwnd, word);
+    mainwnd_search(_mainwnd, word, -1);
 }
 
 void mainwnd_about_btn_clicked_cb(GtkWidget *w, gpointer data)
@@ -249,20 +250,21 @@ void mainwnd_status_icon_menu_cb(GtkStatusIcon *status_icon, guint button, guint
     gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time());
 }
 
-void mainwnd_iconify_restore()
+void mainwnd_iconify_restore(Mainwnd *mw)
 {
-    if(gtk_widget_get_visible(GTK_WIDGET(mainwnd_get_wnd())))
+    if(gtk_widget_get_visible(GTK_WIDGET(mw)))
     {
-       prefs_close_wnd();
-       gtk_widget_hide(GTK_WIDGET(mainwnd_get_wnd()));
+       prefs_close_wnd(mw->prefs);
+       gtk_widget_hide(GTK_WIDGET(mw));
     }
     else
-       gtk_window_present(mainwnd_get_wnd());
+       gtk_window_present(mw);
 }
 
 void mainwnd_iconify_cb(GtkWidget *widget, gpointer data)
 {
-    mainwnd_iconify_restore();
+    Mainwnd *mw = MAINWND(data);
+    mainwnd_iconify_restore(mw);
 }
 
 void mainwnd_status_icon_add(Mainwnd *self)
@@ -321,13 +323,14 @@ void mainwnd_find_btn_clicked_cb(GtkWidget *w, gpointer data)
 {
     Mainwnd *mw = MAINWND(data);
     const gchar *word = builder_get_str(mw->builder, "mainwnd_search");
-    mainwnd_search(mw, word);
+    mainwnd_search(mw, word, -1);
 }
 
 void mainwnd_dict_buttons_add(Mainwnd *self)
 {
     gint n = builder_get_int(self->builder, "mainwnd_dict_group");
-    g_printf("group %d\n", n);
+    if(n < 0)
+       return;
     GtkTreeIter iter;
     if(!dicts_get_nth(self->dicts, n, &iter))
        return;
@@ -371,6 +374,9 @@ void mainwnd_prepare(Mainwnd *self)
     GdkPixbuf *pixbuf = gdk_pixbuf_new_from_xpm_data((const char **)icon_xpm);
     gtk_window_set_default_icon(pixbuf);
     g_object_unref(pixbuf);
+    gtk_widget_hide_on_delete(GTK_WIDGET(self));
+
+    prefs_load(self->prefs, self->builder);
 
     builder_install_text_cellrenderer(self->builder, "mainwnd_search_method");
     builder_install_text_cellrenderer(self->builder, "mainwnd_dict_group");
@@ -388,20 +394,21 @@ void mainwnd_prepare(Mainwnd *self)
 
     mainwnd_status_icon_add(self);
 
-    gint active = dicts_load(self->dicts);
+    gint active = dicts_load(self->dicts, self->builder);
     mainwnd_dict_groups_update(self);
     mainwnd_dict_buttons_update(self);
     builder_set_int(self->builder, "mainwnd_dict_group", active);
     builder_set_int(self->builder, "mainwnd_search", 0);
 
-    GtkListStore *store = GTK_LIST_STORE(gtk_builder_get_object(GTK_BUILDER(self->builder), "mainwnd_search_store"));
-    GtkTreeIter iter;
-    gtk_list_store_clear(store);
+    gboolean b = prefs_get_int(self->prefs, "selection.lookup_started");
+    builder_set_int(self->builder, "mainwnd_scan", b);
+
     gint i;
-    const gchar *name;
+    GtkTreeIter iter;
+    GtkListStore *store = GTK_LIST_STORE(gtk_builder_get_object(GTK_BUILDER(self->builder), "mainwnd_search_store"));
     for(i = 0; i < 4; i++)
     {
-       name = ebook_index_to_method_name(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);
     }
@@ -423,10 +430,10 @@ void mainwnd_prepare(Mainwnd *self)
     builder_grab_focus(self->builder, "mainwnd_search");
 }
 
-void mainwnd_dicts_update()
+void mainwnd_dicts_update(Mainwnd *self)
 {
-    mainwnd_dict_groups_update(_mainwnd);
-    mainwnd_dict_buttons_update(_mainwnd);
+    mainwnd_dict_groups_update(self);
+    mainwnd_dict_buttons_update(self);
 }
 
 gboolean mainwnd_get_dicts(GtkTreeModel **store, GtkTreeIter *iter)
@@ -477,17 +484,13 @@ void mainwnd_open(Mainwnd *self, RESULT *res)
 void mainwnd_menu_btn_clicked_cb(GtkWidget *widget, gpointer data)
 {
     Mainwnd *mw = MAINWND(data);
-    gint maxhits = prefs_get_int(mw->prefs, "headword.maxhits");
-    ebook_search(NULL, SEARCH_METHOD_MENU, mw->results, maxhits, False);
-    mainwnd_update_results(mw);
+    mainwnd_search(mw, NULL, SEARCH_METHOD_MENU);
 }
 
 void mainwnd_copyright_btn_clicked_cb(GtkWidget *widget, gpointer data)
 {
     Mainwnd *mw = MAINWND(data);
-    gint maxhits = prefs_get_int(mw->prefs, "headword.maxhits");
-    ebook_search(NULL, SEARCH_METHOD_COPYRIGHT, mw->results, maxhits, False);
-    mainwnd_update_results(mw);
+    mainwnd_search(mw, NULL, SEARCH_METHOD_COPYRIGHT);
 }
 
 void mainwnd_dict_group_changed_cb(GtkComboBox *widget, gpointer data)
index 524a7e1..5bce9fb 100644 (file)
@@ -36,14 +36,14 @@ struct _MainwndClass {
 
 void            mainwnd_show_about(GtkWidget *w, gpointer data);
 void            mainwnd_prepare(Mainwnd *self);
-void           mainwnd_dicts_update();
+void           mainwnd_dicts_update(Mainwnd *self);
 GtkWindow*     mainwnd_get_wnd();
 GSequence*     mainwnd_get_results();
 gint           mainwnd_get_search_method();
 gboolean        mainwnd_get_dicts(GtkTreeModel **store, GtkTreeIter *iter);
 void           mainwnd_insert_text(gchar *txt, gboolean clear);
 void           mainwnd_clear_text();
-void            mainwnd_search(Mainwnd *self, const gchar *word);
+void            mainwnd_search(Mainwnd *self, const gchar *word, gint method);
 void            mainwnd_open(Mainwnd *self, RESULT *res);
 void           mainwnd_exit();
 
index 3795951..30789f1 100644 (file)
@@ -311,11 +311,10 @@ void popupwnd_lock_btn_toggled_cb(GtkWidget *widget, gpointer user_data)
 
 void popupwnd_find_btn_clicked_cb(GtkWidget *widget, gpointer data)
 {
-    Mainwnd *mainwnd = MAINWND(data);
-    GtkLabel *label = GTK_LABEL(gtk_builder_get_object(GTK_BUILDER(_popupwnd->builder), "popupwnd_label"));
-    const gchar *str = gtk_label_get_text(label);
-    gtk_window_deiconify(GTK_WINDOW(mainwnd));
-    mainwnd_search(mainwnd, str);
+    Mainwnd *mw = MAINWND(data);
+    const gchar *str = builder_get_str(mw->builder, "popupwnd_label");
+    gtk_window_deiconify(GTK_WINDOW(mw));
+    mainwnd_search(mw, str, -1);
 }
 
 void popupwnd_close_btn_clicked_cb(GtkWidget *widget, gpointer data)
index 66d5ac8..8c7e09e 100644 (file)
@@ -90,8 +90,6 @@ static void prefs_init(Prefs *self)
     }
     else
         g_dir_close(dir);
-
-    prefs_load(self);
 }
 
 enum
@@ -101,8 +99,6 @@ enum
     PREF_N
 };
 
-extern Builder *_builder;
-
 static void prefs_selection_changed_cb(GtkTreeSelection *selection, gpointer data)
 {
     GtkTreeIter iter;
@@ -178,16 +174,16 @@ void prefs_ok_btn_clicked_cb(GtkWidget *widget, gpointer data)
     prefs_save(mainwnd->prefs);
 }
 
-void prefs_cancel_btn_clicked_cb(GtkWidget *widget, gpointer data)
+void prefs_close_wnd(Prefs *prefs)
 {
-    GtkWidget *wnd = gtk_widget_get_toplevel(widget);
-    gtk_widget_hide(wnd);
+    GtkWidget *w = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(prefs->builder), "preferences"));
+    gtk_widget_hide(w);
 }
 
-void prefs_close_wnd()
+void prefs_cancel_btn_clicked_cb(GtkWidget *widget, gpointer data)
 {
-    GtkWidget *w = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(_builder), "btn_prefs_cancel"));
-    prefs_cancel_btn_clicked_cb(w, NULL);
+    Mainwnd *mw = MAINWND(data);
+    prefs_close_wnd(mw->prefs);
 }
 
 void prefs_btn_clicked_cb(GtkWidget *widget, gpointer data)
@@ -307,8 +303,9 @@ void prefs_load_elem(void *ctx, const xmlChar *name, const xmlChar **atts)
     }
 }
 
-void prefs_load(Prefs *self)
+void prefs_load(Prefs *self, Builder *builder)
 {
+    self->builder = builder;
     gchar filename[PATH_MAX];
     xmlSAXHandler cb;
     gchar *userdir = prefs_get_str(self, "userdir");
index 7715a9c..e837be2 100644 (file)
@@ -2,6 +2,8 @@
 #ifndef __PREFS_H__
 #define __PREFS_H__
 
+#include "builder.h"
+
 G_BEGIN_DECLS
 
 #define TYPE_PREFS (prefs_get_type ())
@@ -17,16 +19,17 @@ typedef struct _PrefsClass PrefsClass;
 struct _Prefs {
     GObject        parent_instance;
     GData          *data;
+    Builder        *builder;
 };
 
 struct _PrefsClass {
     GObjectClass    parent_class;
 };
 
-void               prefs_load(Prefs *self);
+void               prefs_load(Prefs *self, Builder *builder);
 void               prefs_save(Prefs *self);
 
-void               prefs_close_wnd();
+void               prefs_close_wnd(Prefs *prefs);
 gchar*             prefs_get_userdir();
 
 gint               prefs_get_int(Prefs *self, const gchar *name);
index ab5d5af..bbeb205 100644 (file)
@@ -16,11 +16,11 @@ static void textview_search_selection_cb(GtkWidget *w, gpointer data)
     GtkTextIter start, end;
     GtkTextView *text = GTK_TEXT_VIEW(data);
     GtkTextBuffer *buf = gtk_text_view_get_buffer(text);
-    Mainwnd *mw = MAINWND(gtk_widget_get_toplevel(text));
+    Mainwnd *mw = MAINWND(gtk_widget_get_toplevel(GTK_WIDGET(text)));
 
     gtk_text_buffer_get_selection_bounds(buf, &start, &end);
     str = gtk_text_buffer_get_text(buf, &start, &end, FALSE);
-    mainwnd_search(mw, str);
+    mainwnd_search(mw, str, -1);
 }
 
 static GtkTextTag *textview_get_link_under_cursor(TextView *self, gint ex, gint ey)
index 2f2c9f1..0bb69dc 100644 (file)
@@ -319,8 +319,8 @@ static void video_init(Video *self)
 
 void video_render(Video *self)
 {
-    GtkTextIter iter1, iter2;
 #if 0
+    GtkTextIter iter1, iter2;
     if(render_get_last_mark("mpeg", &iter1, &iter2))
     {
         gtk_text_buffer_delete(render.buf, &iter1, &iter2);