summaryrefslogtreecommitdiff
path: root/stardict/patches/020-add-nanonote-support.patch
diff options
context:
space:
mode:
authorDavid Kühling <dvdkhlng@gmx.de>2010-09-18 20:47:21 +0200
committerDavid Kühling <dvdkhlng@gmx.de>2010-09-18 20:47:21 +0200
commit4bfce3b6e2ea095ea3d9f5d2d1018cc0a1e5ce09 (patch)
tree58590463ada82a27eca0889312c32450358249a8 /stardict/patches/020-add-nanonote-support.patch
downloadqipackages-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.patch415
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