OSDN Git Service

clear btn, about btn, dicts info ...
authorevgeny <evgeny@users.sourceforge.jp>
Fri, 19 Aug 2011 21:45:43 +0000 (01:45 +0400)
committerevgeny <evgeny@users.sourceforge.jp>
Fri, 19 Aug 2011 21:45:43 +0000 (01:45 +0400)
src/Makefile.in
src/builder.c
src/builder.h
src/dicts.c
src/eb123.glade
src/ebook.c
src/ebook.h
src/mainwnd.c
src/prefs.c

index 806d6e2..63bd2b0 100644 (file)
@@ -92,6 +92,7 @@ CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 EBCONF_EBINCS = @EBCONF_EBINCS@
@@ -128,6 +129,7 @@ LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
 NM = @NM@
 NMEDIT = @NMEDIT@
@@ -159,6 +161,7 @@ abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 am__include = @am__include@
@@ -191,7 +194,6 @@ libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
index 57d3635..3588184 100644 (file)
@@ -42,12 +42,11 @@ void builder_load(Builder *self)
         g_printf("failed to load glade ui\n");
        gtk_main_quit();
     }
-    printf("builder = %.8X\n", (gint)self);
 }
 
 void builder_grab_focus(Builder *self, gchar *name)
 {
-    GtkWidget *w = gtk_builder_get_object(GTK_BUILDER(self), name);
+    GtkWidget *w = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(self), name));
     if(w)
     {
        gtk_widget_grab_focus(w);
@@ -57,7 +56,7 @@ void builder_grab_focus(Builder *self, gchar *name)
 gint builder_get_int(Builder *self, const gchar *name)
 {
     gint ret = 0;
-    GtkWidget *w = gtk_builder_get_object(GTK_BUILDER(self), name);
+    GtkWidget *w = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(self), name));
     if(GTK_IS_SPIN_BUTTON(w))
     {
        ret = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(w));
@@ -76,7 +75,7 @@ gint builder_get_int(Builder *self, const gchar *name)
 
 void builder_set_int(Builder *self, const gchar *name, gint value)
 {
-    GtkWidget *w = gtk_builder_get_object(self, name);
+    GtkWidget *w = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(self), name));
     if(GTK_IS_SPIN_BUTTON(w))
     {
        gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), value);
@@ -89,27 +88,17 @@ void builder_set_int(Builder *self, const gchar *name, gint value)
     {
         gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), value);
     }
-}
-
-#if 0
-gboolean builder_get_iter_n(GtkTreeModel *m, GtkTreeIter *iter, gint n)
-{
-    GtkTreeIter iter1;
-    if(!gtk_tree_model_get_iter_first(m, iter))
-       return;
-    gint i;
-    for(i = 0; i < n; i++)
+    if(GTK_IS_ENTRY(w))
     {
-        if(!gtk_tree_model_iter_next(m, iter))
-            return FALSE;
+       gchar *buf[16];
+       sprintf(buf, "%d", value);
+       return gtk_entry_set_text(GTK_ENTRY(w), (value >= 0) ? buf : "");
     }
-    return TRUE;
 }
-#endif
 
-gchar* builder_get_str(Builder *self, const gchar *name)
+const gchar* builder_get_str(Builder *self, const gchar *name)
 {
-    GtkWidget *w = gtk_builder_get_object(self, name);
+    GtkWidget *w = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(self), name));
     if(GTK_IS_ENTRY(w))
     {
        return gtk_entry_get_text(GTK_ENTRY(w));
@@ -138,21 +127,34 @@ gchar* builder_get_str(Builder *self, const gchar *name)
            }
        }
     }
+    if(GTK_IS_COLOR_BUTTON(w))
+    {
+       GdkColor color;
+       gtk_color_button_get_color(GTK_COLOR_BUTTON(w), &color);
+       return gtk_color_selection_palette_to_string(&color, 1);
+    }
+    return NULL;
 }
 
-void builder_set_str(Builder *self, const gchar *name, gchar *value)
+void builder_set_str(Builder *self, const gchar *name, const gchar *value)
 {
-    GtkWidget *w = gtk_builder_get_object(self, name);
+    GtkWidget *w = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(self), name));
     if(GTK_IS_ENTRY(w))
     {
        gtk_entry_set_text(GTK_ENTRY(w), value);
     }
+    if(GTK_IS_COLOR_BUTTON(w))
+    {
+       GdkColor color;
+       gdk_color_parse(value, &color);
+       gtk_color_button_set_color(GTK_COLOR_BUTTON(w), &color);
+    }
 }
 
 void builder_install_text_cellrenderer(Builder *self, gchar *box)
 {
-    GtkWidget *w = gtk_builder_get_object(GTK_BUILDER(self), box);
-    if(GTK_IS_COMBO_BOX(w) || GTK_IS_TREE_VIEW(w) && !GTK_IS_COMBO_BOX_TEXT(w))
+    GtkWidget *w = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(self), box));
+    if((GTK_IS_COMBO_BOX(w) || GTK_IS_TREE_VIEW(w)) && !GTK_IS_COMBO_BOX_TEXT(w))
     {
        GtkCellRenderer *cell = gtk_cell_renderer_text_new();
        gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(w), cell, TRUE);
index 88ca841..177d860 100644 (file)
@@ -33,8 +33,8 @@ void              builder_install_text_cellrenderer(Builder *self, gchar *box);
 gint               builder_get_int(Builder *self, const gchar *name);
 void               builder_set_int(Builder *self, const gchar *name, gint value);
 
-gchar*             builder_get_str(Builder *self, const gchar *name);
-void               builder_set_str(Builder *self, const gchar *name, gchar *value);
+const gchar*       builder_get_str(Builder *self, const gchar *name);
+void               builder_set_str(Builder *self, const gchar *name, const gchar *value);
 
 GType              builder_get_type (void);
 
index 3257b2a..9c3e6db 100644 (file)
@@ -727,13 +727,40 @@ void dicts_close_btn_clicked_cb(GtkWidget *widget, gpointer data)
     mainwnd_dicts_update();
 }
 
+static void dicts_selection_changed_cb(GtkTreeSelection *selection, gpointer data)
+{
+    gint n;
+    gchar buff[128];
+    GtkTreeIter iter;
+    GtkTreePath *path;
+    GtkTreeModel *store;
+    BOOK_INFO *binfo = NULL;
+    Mainwnd *mainwnd = MAINWND(data);
+
+    if(gtk_tree_selection_get_selected(selection, &store, &iter))
+    {
+       path = gtk_tree_model_get_path(store, &iter);
+       n = gtk_tree_path_get_depth(path);
+       gtk_tree_path_free(path);
+       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);
+    //gtk_container_foreach(GTK_CONTAINER(searches), dicts_info_update_search, binfo ? (gpointer)binfo->book : NULL);
+}
+
 void on_btn_dicts_clicked(GtkWidget *widget, gpointer data)
 {
-    GtkWidget *wnd = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(_builder), "dictionaries"));
+    Mainwnd *mainwnd = MAINWND(data);
+    GtkWidget *wnd = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(mainwnd->builder), "dictionaries"));
     gtk_widget_hide_on_delete(wnd);
     GtkTreeIter iter1;
-    GtkTreeView *dicts_tree = GTK_TREE_VIEW(gtk_builder_get_object(GTK_BUILDER(_builder), "dicts_tree"));
-    GtkTreeStore *dicts_store = GTK_TREE_STORE(gtk_builder_get_object(GTK_BUILDER(_builder), "dicts_store"));
+    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"));
     GtkTreeSelection *select = gtk_tree_view_get_selection(dicts_tree);
     static gboolean preparewnd = True;
     if(preparewnd)
@@ -741,6 +768,7 @@ void on_btn_dicts_clicked(GtkWidget *widget, gpointer data)
        GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
        gtk_tree_view_insert_column_with_attributes(dicts_tree, -1, _("Name"), renderer, "text", DICT_ALIAS, "editable", DICT_EDITABLE, NULL);
        gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE);
+       g_signal_connect(G_OBJECT(select), "changed", G_CALLBACK(dicts_selection_changed_cb), data);
        preparewnd = False;
     }
     if(gtk_tree_model_get_iter_first(GTK_TREE_MODEL(dicts_store), &iter1))
index 1431b03..1d18e60 100644 (file)
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkEntry" id="entry2">
+                      <object class="GtkEntry" id="dicts_book_title">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="editable">False</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkEntry" id="entry3">
+                      <object class="GtkEntry" id="dicts_book_path">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="editable">False</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkEntry" id="entry4">
+                      <object class="GtkEntry" id="dicts_subbook_no">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="editable">False</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkEntry" id="entry5">
+                      <object class="GtkEntry" id="dicts_appendix_path">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="editable">False</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkEntry" id="entry6">
+                      <object class="GtkEntry" id="dicts_appendix_subbook_no">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="editable">False</property>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <child>
-              <object class="GtkButton" id="button1">
+              <object class="GtkButton" id="mainwnd_search_clear">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
                 <property name="use_action_appearance">False</property>
                 <property name="relief">none</property>
+                <signal name="clicked" handler="mainwnd_search_clear_clicked_cb" swapped="no"/>
                 <child>
                   <object class="GtkImage" id="image5">
                     <property name="visible">True</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkButton" id="button2">
+                  <object class="GtkButton" id="mainwnd_about_btn">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
                     <property name="use_action_appearance">False</property>
                     <property name="relief">none</property>
                     <property name="image_position">top</property>
+                    <signal name="clicked" handler="mainwnd_about_btn_clicked_cb" swapped="no"/>
                     <child>
                       <object class="GtkImage" id="image1">
                         <property name="visible">True</property>
                             <property name="column_spacing">10</property>
                             <property name="row_spacing">10</property>
                             <child>
-                              <object class="GtkColorButton" id="colorbutton1">
+                              <object class="GtkColorButton" id="color.link">
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">True</property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkColorButton" id="colorbutton2">
+                              <object class="GtkColorButton" id="color.keyword">
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">True</property>
                               </packing>
                             </child>
                             <child>
-                              <object class="GtkColorButton" id="colorbutton3">
+                              <object class="GtkColorButton" id="color.title">
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">True</property>
index b6bd862..6e093aa 100644 (file)
@@ -14,8 +14,6 @@
 #define MAX_BUFSIZE 65535
 #endif
 
-extern Builder *_builder;
-
 struct _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},
@@ -25,20 +23,12 @@ struct _search_method methods[] = {
     {SEARCH_METHOD_COPYRIGHT,  SEARCH_COPYRIGHT,   eb_have_copyright,          NULL},
 };
 
-gint ebook_search_method()
+gint ebook_search_method(gint index)
 {
-    gint i = builder_get_int(_builder, "mainwnd_search");
-    if(i < 0)
-       return SEARCH_METHOD_UNKNOWN;
-    struct _search_method m = methods[i];
+    g_assert(index < 0);
+    g_assert(index >= SZ(methods));
+    struct _search_method m = methods[index];
     return m.code;
-#if 0
-    const gchar *method_name = builder_get_str(_builder, "mainwnd_search");
-    for(i = 0; i < SZ(methods); i++)
-        if(!g_strcmp0(method_name, methods[i].name))
-            return methods[i].code;
-    return SEARCH_METHOD_UNKNOWN;
-#endif
 }
 
 BOOK_INFO *ebook_load(const gchar *path, int subbook_no)
index 009c1bb..a428262 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef __EBOOK_H_
 #define __EBOOK_H_
 
-gint            ebook_search_method();
+gint            ebook_search_method(gint index);
 BOOK_INFO*      ebook_load(const gchar *path, int subbook_no);
 GdkPixbuf*      ebook_load_image(BOOK_INFO *binfo, EB_Position *pos);
 void            ebook_free(BOOK_INFO *binfo);
index b484b7e..349563f 100644 (file)
@@ -120,10 +120,20 @@ void mainwnd_exit_btn_clicked_cb(GtkWidget *widget, gpointer data)
     mainwnd_exit();
 }
 
+void mainwnd_search_clear_clicked_cb(GtkWidget *widget, gpointer data)
+{
+    Mainwnd *wnd = MAINWND(data);
+    GtkComboBox *combo = GTK_COMBO_BOX(gtk_builder_get_object(GTK_BUILDER(wnd->builder), "mainwnd_search"));
+    GtkEntry *entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(combo)));
+    gtk_entry_set_text(entry, "");
+    gtk_widget_grab_focus(GTK_WIDGET(entry));
+}
+
 void mainwnd_search(Mainwnd *self, const gchar *word)
 {
     gchar *euc_str = iconv_convert(ENC_UTF8, ENC_EUC_JP, word);
-    gint method = ebook_search_method();
+    gint i = builder_get_int(self->builder, "mainwnd_search");
+    gint method = ebook_search_method(i);
     g_strstrip(euc_str);
     if(!strlen(euc_str))
     {
@@ -156,7 +166,7 @@ static void mainwnd_search_cb(GtkWidget *combo, gpointer user_data)
 }
 #endif
 
-void mainwnd_show_about(GtkWidget *w, gpointer data)
+void mainwnd_about_btn_clicked_cb(GtkWidget *w, gpointer data)
 {
     gtk_show_about_dialog(GTK_WINDOW(data),
             "program-name", "eb123",
@@ -189,11 +199,12 @@ gboolean mainwnd_key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_
 {
     if(event->keyval == GDK_BackSpace)
     {
-       GtkWidget *mainwnd_search = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(_mainwnd->builder), "mainwnd_search"));
-        if(!gtk_widget_has_focus(GTK_BIN(mainwnd_search)->child))
+       GtkWidget *combo = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(_mainwnd->builder), "mainwnd_search"));
+       GtkEntry *entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(combo)));
+        if(!gtk_widget_has_focus(entry))
         {
             gtk_widget_grab_focus(mainwnd_search);
-            gtk_editable_set_position(GTK_EDITABLE(GTK_BIN(mainwnd_search)->child), -1);
+            gtk_editable_set_position(GTK_EDITABLE(entry), -1);
             return TRUE;
         }
     }
index aa59762..4e40194 100644 (file)
@@ -104,7 +104,7 @@ enum
 
 extern Builder *_builder;
 
-static void prefs_selection_changed(GtkTreeSelection *selection, gpointer data)
+static void prefs_selection_changed_cb(GtkTreeSelection *selection, gpointer data)
 {
     GtkTreeIter iter;
     GtkTreeModel *model;
@@ -167,12 +167,16 @@ gboolean on_preferences_delete_event(GtkWidget *widget, GdkEvent *event, gpointe
 
 void prefs_ok_btn_clicked_cb(GtkWidget *widget, gpointer data)
 {
+    Mainwnd *mainwnd = MAINWND(data);
     GtkWidget *wnd = gtk_widget_get_toplevel(widget);
     gtk_widget_hide(wnd);
-    prefs_get_widget_data(_prefs, _builder, "mainwnd.remember_pos");
-    prefs_get_widget_data(_prefs, _builder, "headword.maxhits");
-    prefs_get_widget_data(_prefs, _builder, "dictbar.word_hist");
-    prefs_save(_prefs);
+    gint i;
+    for(i = 0; i < SZ(prefs_list); i++)
+    {
+       pref1 *p1 = &(prefs_list[i]);
+       prefs_get_widget_data(mainwnd->prefs, mainwnd->builder, p1->name);
+    }
+    prefs_save(mainwnd->prefs);
 }
 
 void prefs_cancel_btn_clicked_cb(GtkWidget *widget, gpointer data)
@@ -192,11 +196,11 @@ void on_btn_prefs_clicked(GtkWidget *widget, gpointer data)
     Mainwnd *mainwnd = MAINWND(data);
     Prefs *prefs = mainwnd->prefs;
 
-    GtkWidget *wnd = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(_builder), "preferences"));
+    GtkWidget *wnd = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(mainwnd->builder), "preferences"));
     gtk_widget_hide_on_delete(wnd);
 
-    GtkTreeView *prefs_tree = GTK_TREE_VIEW(gtk_builder_get_object(GTK_BUILDER(_builder), "prefs_tree"));
-    GtkTreeStore *prefs_store = GTK_TREE_STORE(gtk_builder_get_object(GTK_BUILDER(_builder), "prefs_store"));
+    GtkTreeView *prefs_tree = GTK_TREE_VIEW(gtk_builder_get_object(GTK_BUILDER(mainwnd->builder), "prefs_tree"));
+    GtkTreeStore *prefs_store = GTK_TREE_STORE(gtk_builder_get_object(GTK_BUILDER(mainwnd->builder), "prefs_store"));
     GtkTreeSelection *select = gtk_tree_view_get_selection(prefs_tree);
     GtkTreeIter iter1, iter2;
     static gboolean preparewnd = True;
@@ -206,9 +210,9 @@ void on_btn_prefs_clicked(GtkWidget *widget, gpointer data)
        GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes(_("Items"), renderer, "text", 0, NULL);
        gtk_tree_view_append_column(prefs_tree, column);
 
-       GtkNotebook *notebook = GTK_NOTEBOOK(gtk_builder_get_object(GTK_BUILDER(_builder), "notebook1"));
+       GtkNotebook *notebook = GTK_NOTEBOOK(gtk_builder_get_object(GTK_BUILDER(mainwnd->builder), "notebook1"));
        gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE);
-       g_signal_connect(G_OBJECT(select), "changed", G_CALLBACK (prefs_selection_changed), notebook);
+       g_signal_connect(G_OBJECT(select), "changed", G_CALLBACK(prefs_selection_changed_cb), notebook);
 
        gint n = gtk_notebook_get_n_pages(notebook);
        gint i;
@@ -228,11 +232,13 @@ void on_btn_prefs_clicked(GtkWidget *widget, gpointer data)
                gtk_tree_store_set(prefs_store, &iter2, 0, _(&(text[1])), 1, i, -1);
            }
        }
+       for(i = 0; i < SZ(prefs_list); i++)
+       {
+           pref1 *p1 = &(prefs_list[i]);
+           prefs_set_widget_data(prefs, mainwnd->builder, p1->name);
+       }
        preparewnd = False;
     }
-    prefs_set_widget_data(prefs, _builder, "mainwnd.remember_pos");
-    prefs_set_widget_data(prefs, _builder, "dictbar.word_hist");
-    prefs_set_widget_data(prefs, _builder, "headword.maxhits");
     if(gtk_tree_model_get_iter_first(GTK_TREE_MODEL(prefs_store), &iter1))
     {
        gtk_tree_selection_select_iter(select, &iter1);
@@ -291,7 +297,9 @@ void prefs_load_elem(void *ctx, const xmlChar *name, const xmlChar **atts)
                prefs_set_int(prefs, (const gchar*)name, atoi((gchar*)atts[1]));
                 break;
             case G_TYPE_STRING:
+               g_printf("%s, %s\n", (const gchar*)name, (gchar*)atts[1]);
                prefs_set_str(prefs, (const gchar*)name, strdup((gchar*)atts[1]));
+               g_printf("%s\n", prefs_get_str(prefs, (const gchar*)name));
                 break;
             case G_TYPE_FLOAT:
                 break;