diff options
| author | David Kühling <dvdkhlng@gmx.de> | 2010-09-18 20:47:21 +0200 |
|---|---|---|
| committer | David Kühling <dvdkhlng@gmx.de> | 2010-09-18 20:47:21 +0200 |
| commit | 4bfce3b6e2ea095ea3d9f5d2d1018cc0a1e5ce09 (patch) | |
| tree | 58590463ada82a27eca0889312c32450358249a8 /stardict/patches/020-add-nanonote-support.patch | |
| download | qipackages-fork-4bfce3b6e2ea095ea3d9f5d2d1018cc0a1e5ce09.tar.gz | |
Major overhaul and cleanup. Support for .ubi image file installations.grafted
Only compile&install a minimum host Gforth for bootstrapping the target
Gforth, removing strange emacs-dependencies that cropped up earlier.
Image file can now be built on the nanonote using 'gforth-update-image'
command. Also, Gforth is now run through a wrapper that calls
'gforth-update-image' automatically, if necessary.
Also first attempts at supporting libcc C-interface libraries pre-compiled on
the host.
Tested to compile on amd64 and i386.
Diffstat (limited to 'stardict/patches/020-add-nanonote-support.patch')
| -rw-r--r-- | stardict/patches/020-add-nanonote-support.patch | 415 |
1 files changed, 415 insertions, 0 deletions
diff --git a/stardict/patches/020-add-nanonote-support.patch b/stardict/patches/020-add-nanonote-support.patch new file mode 100644 index 0000000..fec7c51 --- /dev/null +++ b/stardict/patches/020-add-nanonote-support.patch @@ -0,0 +1,415 @@ +add CONFIG_NANONOTE support + +From: Xiangfu Liu <xiangfu@sharism.cc> + + +--- + + configure.in | 36 +++++++++++++++++--------- + src/Makefile.am | 6 ++++ + src/class_factory.cpp | 6 ++++ + src/conf.cpp | 4 +++ + src/desktop.cpp | 2 + + src/mainwin.cpp | 8 +++++- + src/stardict.cpp | 67 ++++++++++++++++++++++++++++++++++++------------- + 7 files changed, 94 insertions(+), 35 deletions(-) + + +diff --git a/configure.in b/configure.in +index 83d3d95..4b15e43 100644 +--- a/configure.in ++++ b/configure.in +@@ -296,14 +296,18 @@ dnl ================================================================ + AC_ARG_ENABLE(gnome-support, AC_HELP_STRING([--disable-gnome-support], [Disable gnome support])) + AC_ARG_ENABLE(gpe-support, AC_HELP_STRING([--enable-gpe-support], [Enable gpe support])) + AC_ARG_ENABLE(maemo-support, AC_HELP_STRING([--enable-maemo-support], [Enable maemo support])) ++AC_ARG_ENABLE(nanonote-support, AC_HELP_STRING([--enable-nanonote-support], [Enable Qi Hardware NanoNote support])) + AM_CONDITIONAL(GNOME_SUPPORT, test "x${enable_gpe_support}" != "xyes" && test "x${enable_maemo_support}" != "xyes" && test "x${enable_gnome_support}" != "xno") + AM_CONDITIONAL(GPE_SUPPORT, test "x${enable_gpe_support}" = "xyes") + AM_CONDITIONAL(MAEMO_SUPPORT, test "x${enable_maemo_support}" = "xyes") ++AM_CONDITIONAL(NANONOTE_SUPPORT, test "x${enable_nanonote_support}" = "xyes") + + if test "x${enable_gpe_support}" = "xyes" ; then + DEP_MODULES="gtk+-2.0 >= 2.12 glib-2.0 >= 2.14 gthread-2.0 libgpewidget >= 0.109" + elif test "x${enable_maemo_support}" = "xyes" ; then + DEP_MODULES="gtk+-2.0 >= 2.12 gthread-2.0 gconf-2.0 >= 2.6 hildon-libs >= 0.12" ++elif test "x${enable_nanonote_support}" = "xyes" ; then ++ DEP_MODULES="gtk+-2.0 >= 2.12 gthread-2.0 gconf-2.0 >= 2.6" + elif test "x${enable_gnome_support}" = "xno" ; then + DEP_MODULES="gtk+-2.0 >= 2.12 gthread-2.0" + else +@@ -329,6 +333,11 @@ elif test "x${enable_maemo_support}" = "xyes" ; then + fi + AM_GCONF_SOURCE_2 + AM_CONDITIONAL(SCHEMAS_INSTALL, test x$schemas_install = xtrue) ++elif test "x${enable_nanonote_support}" = "xyes" ; then ++ echo "Enable Qi Hardware NanoNote suppport"; ++ AC_DEFINE([CONFIG_NANONOTE],[], [Compile with nanonote support]) ++ AM_CONDITIONAL(SCHEMAS_INSTALL, test "x${enable_nanonote_support}" != "xyes") ++ AM_CONDITIONAL(GCONF_SCHEMAS_INSTALL, test "x${enable_nanonote_support}" != "xyes") + elif test "x${enable_gnome_support}" = "xno" ; then + echo "Disable gnome support"; + AC_DEFINE([CONFIG_GTK],[], [Compile without gnome support]) +@@ -414,21 +423,21 @@ dnl ========================================================================== + + # Checks for header files. need by Solaris. + AC_PATH_XTRA +-if test -n "$X_CFLAGS"; then +-CPPFLAGS="$CPPFLAGS $X_CFLAGS" +-fi +-if test -n "$X_LIBS"; then +-LDFLAGS="$LDFLAGS $X_LIBS" +-fi +-if test -n "$X_PRE_LIBS"; then +-LDFLAGS="$LDFLAGS $X_PRE_LIBS" +-fi +-if test -n "$X_EXTRA_LIBS"; then +-LDFLAGS="$LDFLAGS $X_EXTRA_LIBS" +-fi ++#if test -n "$X_CFLAGS"; then ++#CPPFLAGS="$CPPFLAGS $X_CFLAGS" ++#fi ++#if test -n "$X_LIBS"; then ++#LDFLAGS="$LDFLAGS $X_LIBS" ++#fi ++#if test -n "$X_PRE_LIBS"; then ++#LDFLAGS="$LDFLAGS $X_PRE_LIBS" ++#fi ++#if test -n "$X_EXTRA_LIBS"; then ++#LDFLAGS="$LDFLAGS $X_EXTRA_LIBS" ++#fi + + # Checks for libraries. +-AC_CHECK_LIB([X11], [main], , [AC_MSG_ERROR([X11 lib not found])]) ++#AC_CHECK_LIB([X11], [main], , [AC_MSG_ERROR([X11 lib not found])]) + + AC_SUBST(STARDICT_LIBS) + AC_SUBST(STARDICT_CFLAGS) +@@ -494,3 +503,4 @@ echo " + Type \"make\" to compile StarDict. + + " ++ +diff --git a/src/Makefile.am b/src/Makefile.am +index bca4861..1499775 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -34,9 +34,13 @@ CONFIG_FILE_MODULE = gconf_file.cpp gconf_file.hpp + else + CONFIG_FILE_MODULE = inifile.cpp inifile.hpp + endif ++if NANONOTE_SUPPORT ++X11_ISKEYSPRESSED_FILE_MODULE = ++endif + else + CONFIG_FILE_MODULE = gconf_file.cpp gconf_file.hpp + IDL_FILE = GNOME_Stardict.idl ++X11_ISKEYSPRESSED_FILE_MODULE = x11_iskeyspressed.cpp x11_iskeyspressed.hpp + + IDL_SOURCES = \ + GNOME_Stardict-stubs.c \ +@@ -73,7 +77,7 @@ stardict_SOURCES = \ + class_factory.cpp class_factory.hpp \ + config_file.hpp \ + $(CONFIG_FILE_MODULE) \ +- x11_iskeyspressed.cpp x11_iskeyspressed.hpp \ ++ $(X11_ISKEYSPRESSED_FILE_MODULE) \ + gtk_iskeyspressed.cpp gtk_iskeyspressed.hpp \ + progresswin.cpp progresswin.hpp \ + tray.cpp tray.hpp \ +diff --git a/src/class_factory.cpp b/src/class_factory.cpp +index 8bff538..653111e 100644 +--- a/src/class_factory.cpp ++++ b/src/class_factory.cpp +@@ -34,7 +34,9 @@ + # include "win32/win32_iskeyspressed.h" + # include "win32/systray.h" + #else ++#ifndef CONFIG_NANONOTE + # include "x11_iskeyspressed.hpp" ++#endif + # include "docklet.h" + #endif + +@@ -51,8 +53,10 @@ void *PlatformFactory::create_class_by_name(const std::string& name, void *param + return new inifile(get_user_config_dir()+ G_DIR_SEPARATOR_S "stardict.cfg"); + #endif + } else if (name=="hotkeys") { +-#ifdef _WIN32 ++#if defined(_WIN32) + return new win32_hotkeys(); ++#elif defined(CONFIG_NANONOTE) ++ return NULL; + #else + return new x11_hotkeys(GTK_WINDOW(param)); + #endif +diff --git a/src/conf.cpp b/src/conf.cpp +index 2d0f89d..9f5e308 100644 +--- a/src/conf.cpp ++++ b/src/conf.cpp +@@ -33,6 +33,10 @@ + const int DEFAULT_WINDOW_WIDTH=238; + const int DEFAULT_WINDOW_HEIGHT=279; + const int DEFAULT_HPANED_POS=79; ++#elif defined(CONFIG_NANONOTE) ++const int DEFAULT_WINDOW_WIDTH=320; ++const int DEFAULT_WINDOW_HEIGHT=240; ++const int DEFAULT_HPANED_POS=79; + #else + const int DEFAULT_WINDOW_WIDTH=463; + const int DEFAULT_WINDOW_HEIGHT=321; +diff --git a/src/desktop.cpp b/src/desktop.cpp +index 9d08caf..4f95bcb 100644 +--- a/src/desktop.cpp ++++ b/src/desktop.cpp +@@ -37,7 +37,7 @@ + + #include "desktop.hpp" + +-#if defined(CONFIG_GTK) || defined(CONFIG_GPE) || defined(CONFIG_MAEMO) ++#if defined(CONFIG_GTK) || defined(CONFIG_GPE) || defined(CONFIG_MAEMO) || defined(CONFIG_NANONOTE) + static void spawn_command(const gchar *exe, const gchar *arg) + { + gchar *qarg = g_shell_quote(arg); +diff --git a/src/mainwin.cpp b/src/mainwin.cpp +index 7005f7b..f7dac0b 100644 +--- a/src/mainwin.cpp ++++ b/src/mainwin.cpp +@@ -129,10 +129,12 @@ void TopWin::Create(GtkWidget *vbox) + gtk_box_pack_start(GTK_BOX(hbox),button,false,false,0); + gtk_widget_set_tooltip_text(button,_("Go Back - Right button: history (Alt+Left)")); + ++#ifndef CONFIG_NANONOTE + GtkWidget *label; + label = gtk_label_new("\t"); + gtk_widget_show(label); + gtk_box_pack_start(GTK_BOX(hbox),label,false,false,0); ++#endif + + button=gtk_button_new(); + gtk_container_add(GTK_CONTAINER(button),gtk_image_new_from_stock(GTK_STOCK_HOME,GTK_ICON_SIZE_BUTTON)); +@@ -1807,7 +1809,10 @@ void TextWin::ShowTips() + query_result = TEXT_WIN_TIPS; + view->set_text( + _(" Welcome to StarDict!\n\n" +- " Press Ctrl+Q to quit. Press Alt+Z to iconify the window or Alt+X to hide the window.\n" ++ " Press Ctrl+Q to quit. \n" ++#ifndef CONFIG_NANONOTE ++ " Press Alt+Z to iconify the window or Alt+X to hide the window.\n" ++#endif + " Press Alt+C or ESC to clear the input entry's text.\n" + " Press Space key to move focus to the input entry.\n" + " If the query word was not found, you can press Tab key to select the first word in the word list.\n" +@@ -2665,6 +2670,7 @@ void MidWin::Create(GtkWidget *vbox) + + notebook = gtk_notebook_new(); + gtk_widget_show(notebook); ++ gtk_widget_set_size_request(GTK_WIDGET(notebook), 50, 20); + gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), false); + gtk_notebook_set_show_border(GTK_NOTEBOOK(notebook),false); + +diff --git a/src/stardict.cpp b/src/stardict.cpp +index 326ca4a..2d4acb8 100644 +--- a/src/stardict.cpp ++++ b/src/stardict.cpp +@@ -214,7 +214,9 @@ void AppCore::do_send_http_request(const char* shost, const char* sfile, get_htt + + void AppCore::set_news(const char *news, const char *links) + { ++#ifndef CONFIG_NANONOTE + gpAppFrame->oBottomWin.set_news(news, links); ++#endif + } + + void AppCore::show_netdict_resp(NetDictResponse *resp, bool ismainwin) +@@ -350,12 +352,13 @@ void AppCore::Create(gchar *queryword) + gtk_container_add(GTK_CONTAINER(window),vbox); + oTopWin.Create(vbox); + oMidWin.Create(vbox); ++ oFloatWin.Create(); ++ bool scan=conf->get_bool_at("dictionary/scan_selection"); ++#ifndef CONFIG_NANONOTE + oBottomWin.Create(vbox); + unlock_keys.reset(static_cast<hotkeys *>(PlatformFactory::create_class_by_name("hotkeys", + GTK_WINDOW(window)))); + unlock_keys->set_comb(combnum2str(conf->get_int_at("dictionary/scan_modifier_key"))); +- oFloatWin.Create(); +- bool scan=conf->get_bool_at("dictionary/scan_selection"); + oDockLet.reset(PlatformFactory::create_tray_icon(window, scan, + oAppSkin)); + oDockLet->on_quit_.connect(sigc::mem_fun(this, &AppCore::Quit)); +@@ -365,6 +368,7 @@ void AppCore::Create(gchar *queryword) + sigc::mem_fun(this, &AppCore::on_maximize)); + oDockLet->on_middle_btn_click_.connect( + sigc::mem_fun(this, &AppCore::on_middle_button_click)); ++#endif // CONFIG_NANONOTE + oSelection.Init(); + #ifdef _WIN32 + oClipboard.Init(); +@@ -393,7 +397,9 @@ void AppCore::Create(gchar *queryword) + //NOTICE: when docklet embedded failed,it should always show the window,but,how to detect the failure? + // As stardict is FOR GNOME,so i don't want to consider the case that haven't the Notification area applet. + if (!hide_option && (queryword || !hide)) { ++#ifndef CONFIG_NANONOTE + oDockLet->hide_state(); ++#endif + gtk_widget_show(window); + } else { + // This may be needed, so gtk_window_get_screen() in gtk_iskeyspressed.cpp can always work. +@@ -423,8 +429,12 @@ void AppCore::Create(gchar *queryword) + + gboolean AppCore::on_delete_event(GtkWidget * window, GdkEvent *event , AppCore *app) + { ++#ifndef CONFIG_NANONOTE + app->oDockLet->minimize_to_tray(); +- return TRUE; ++#endif ++ g_print("Quitting..\n"); ++ gtk_main_quit(); ++ return FALSE; + } + + gboolean AppCore::on_window_state_event(GtkWidget *window, +@@ -432,12 +442,16 @@ gboolean AppCore::on_window_state_event(GtkWidget *window, + { + switch (event->changed_mask) { + case GDK_WINDOW_STATE_WITHDRAWN: ++#ifndef CONFIG_NANONOTE + if (conf->get_bool_at("dictionary/scan_selection")) + app->oDockLet->set_scan_mode(true); + else + app->oDockLet->set_scan_mode(false); ++#endif + if (!(event->new_window_state & GDK_WINDOW_STATE_WITHDRAWN)) { ++#ifndef CONFIG_NANONOTE + app->oDockLet->hide_state(); ++#endif + if (app->oTopWin.get_text()[0]) + gtk_widget_grab_focus(app->oMidWin.oTextWin.view->widget()); + } +@@ -475,7 +489,9 @@ gboolean AppCore::vKeyPressReleaseCallback(GtkWidget * window, GdkEventKey *even + } + else if ((event->keyval==GDK_x || event->keyval==GDK_X) && only_mod1_pressed) { + if (event->type==GDK_KEY_PRESS) { ++#ifndef CONFIG_NANONOTE + oAppCore->oDockLet->minimize_to_tray(); ++#endif + } + } + else if ((event->keyval==GDK_z || event->keyval==GDK_Z) && only_mod1_pressed) { +@@ -2005,10 +2021,20 @@ private: + + void AppCore::PopupPrefsDlg() + { ++ static std::list<std::string> posb_combs; ++ ++ if (posb_combs.empty()) { ++ posb_combs.push_back("Win"); ++ posb_combs.push_back("Shift"); ++ posb_combs.push_back("Alt"); ++ posb_combs.push_back("Ctrl"); ++ posb_combs.push_back("Ctrl+Alt"); ++ } ++ + if (!prefs_dlg) { + prefs_dlg = new PrefsDlg(GTK_WINDOW(window), +- get_impl(oAppSkin.icon), +- unlock_keys->possible_combs()); ++ get_impl(oAppSkin.icon), ++ posb_combs); + bool enbcol = + conf->get_bool_at("dictionary/enable_collation"); + int colf = +@@ -2105,16 +2131,16 @@ void AppCore::End() + #endif + oFloatWin.End(); + +- oDockLet.reset(0); +- + if (dict_manage_dlg) + dict_manage_dlg->Close(); + if (prefs_dlg) + prefs_dlg->Close(); // After user open the preferences dialog, then choose quit in the notification icon, this dialog can be closed. + oTopWin.Destroy(); + oMidWin.oIndexWin.oListWin.Destroy(); ++#ifndef CONFIG_NANONOTE ++ oDockLet.reset(0); + oBottomWin.Destroy(); +- ++#endif + gtk_widget_destroy(window); + } + +@@ -2153,17 +2179,17 @@ void AppCore::Quit() + if (!conf->get_bool_at("main_window/maximized")) { + gint width, height; + gtk_window_get_size(GTK_WINDOW(window), &width, &height); +- conf->set_int_at("main_window/window_width", width); +- conf->set_int_at("main_window/window_height", height); ++ conf->set_int_at("main_window/window_width", width); ++ conf->set_int_at("main_window/window_height", height); + } + gint pos = gtk_paned_get_position(GTK_PANED(oMidWin.hpaned)); +- conf->set_int_at("main_window/hpaned_pos", pos); ++ conf->set_int_at("main_window/hpaned_pos", pos); + + if (conf->get_bool_at("floating_window/lock")) { + gint x, y; + gtk_window_get_position(GTK_WINDOW(oFloatWin.FloatWindow), &x, &y); +- conf->set_int_at("floating_window/lock_x", x); +- conf->set_int_at("floating_window/lock_y", y); ++ conf->set_int_at("floating_window/lock_x", x); ++ conf->set_int_at("floating_window/lock_y", y); + } + + End(); +@@ -2171,9 +2197,11 @@ void AppCore::Quit() + #ifdef CONFIG_GNOME + bonobo_object_unref (stardict_app_server); + #endif +- unlock_keys.reset(0); +- conf.reset(0); +- gtk_main_quit(); ++#ifndef CONFIG_NANONOTE ++ unlock_keys.reset(0); ++#endif ++ conf.reset(0); ++ gtk_main_quit(); + } + + void AppCore::on_main_win_hide_list_changed(const baseconfval* hideval) +@@ -2198,12 +2226,13 @@ void AppCore::on_dict_scan_select_changed(const baseconfval* scanval) + bool scan = static_cast<const confval<bool> *>(scanval)->val_; + + gtk_widget_set_sensitive(oFloatWin.StopButton, scan); ++#ifndef CONFIG_NANONOTE + if (scan != gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(oBottomWin.ScanSelectionCheckButton))) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(oBottomWin.ScanSelectionCheckButton), scan); +- + oDockLet->set_scan_mode(scan); + if (GTK_WIDGET_VISIBLE(window)) + oDockLet->hide_state(); ++#endif + if (scan) { + bool lock=conf->get_bool_at("floating_window/lock"); + if (lock && !oFloatWin.QueryingWord.empty()) +@@ -2263,8 +2292,10 @@ void AppCore::on_floatwin_lock_y_changed(const baseconfval* lock_y_val) + + void AppCore::on_scan_modifier_key_changed(const baseconfval* keyval) + { ++#ifndef CONFIG_NANONOTE + int key = static_cast<const confval<int> *>(keyval)->val_; + unlock_keys->set_comb(combnum2str(key)); ++#endif + } + + gchar* GetPureEnglishAlpha(gchar *str) +@@ -2439,7 +2470,7 @@ int main(int argc,char **argv) + g_warning("Cannot create directory %s.", userdir.c_str()); + } + g_thread_init (NULL); +-#if defined(_WIN32) || defined(CONFIG_GTK) || defined(CONFIG_MAEMO) ++#if defined(_WIN32) || defined(CONFIG_GTK) || defined(CONFIG_MAEMO) || defined(CONFIG_NANONOTE) + gtk_set_locale(); + gtk_init(&argc, &argv); + #endif |
