[maemo-commits] [maemo-commits] r19284 - in projects/haf/trunk/hildon-input-method-plugins-example: . src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Tue Sep 1 18:00:46 EEST 2009
- Previous message: [maemo-commits] r19283 - projects/haf/trunk/clutter0.8/debian
- Next message: [maemo-commits] r19285 - projects/haf/trunk/hildon-input-method-plugins-example/src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: femorandeira Date: 2009-09-01 18:00:42 +0300 (Tue, 01 Sep 2009) New Revision: 19284 Modified: projects/haf/trunk/hildon-input-method-plugins-example/configure.ac projects/haf/trunk/hildon-input-method-plugins-example/src/Makefile.am projects/haf/trunk/hildon-input-method-plugins-example/src/hildon-im-example-fkb.c Log: I refined the FKB, trying to make it appear faster by having it as a "cached" plugin. I am also committing the changes that I have made to the configure.ac and src/Makefile.am files. Modified: projects/haf/trunk/hildon-input-method-plugins-example/configure.ac =================================================================== --- projects/haf/trunk/hildon-input-method-plugins-example/configure.ac 2009-09-01 09:44:43 UTC (rev 19283) +++ projects/haf/trunk/hildon-input-method-plugins-example/configure.ac 2009-09-01 15:00:42 UTC (rev 19284) @@ -14,7 +14,8 @@ PKG_CHECK_MODULES(HIM_PLUGINS_EXAMPLE, hildon-input-method-framework-3.0 >= 1.99.0 hildon-input-method-ui-3.0 >= 1.99.0 gtk+-2.0 >= 2.4.0 gconf-2.0 > 2.0 - dbus-1 >= 0.60) + dbus-1 >= 0.60 + hildon-1 >= 1.0.0) AC_SUBST(HIM_PLUGINS_EXAMPLE_CFLAGS) AC_SUBST(HIM_PLUGINS_EXAMPLE_LIBS) Modified: projects/haf/trunk/hildon-input-method-plugins-example/src/Makefile.am =================================================================== --- projects/haf/trunk/hildon-input-method-plugins-example/src/Makefile.am 2009-09-01 09:44:43 UTC (rev 19283) +++ projects/haf/trunk/hildon-input-method-plugins-example/src/Makefile.am 2009-09-01 15:00:42 UTC (rev 19284) @@ -1,16 +1,30 @@ AM_CPPFLAGS = $(HIM_PLUGINS_EXAMPLE_CFLAGS) $(HIM_PLUGINS_EXAMPLE_WARNING_FLAGS) +INCLUDES = \ + $(HILDON_CFLAGS) \ + $(HILDON_IM_CFLAGS)\ + $(HILDON_IMF_CFLAGS)\ + $(GCONF_CFLAGS)\ + $(LIBOSSO_CFLAGS) \ + $(HILDON_LGPL_CFLAGS) \ + $(XI_CFLAGS) + # Install the plugin (shared library) in, for instance, # /usr/lib/hildon-input-method/, where it will be found by the # hildon-input-method framework: implugindir = $(libdir)/hildon-input-method -implugin_LTLIBRARIES = him_vkb_example.la +implugin_LTLIBRARIES = him_vkb_example.la hildon_im_example_fkb.la # Build the plugin (shared library): him_vkb_example_la_SOURCES = him-vkb-example.c him_vkb_example_la_LIBADD = $(HIM_PLUGINS_EXAMPLE_LIBS) him_vkb_example_la_LDFLAGS = -avoid-version -module +# Build the plugin (shared library): +hildon_im_example_fkb_la_SOURCES = hildon-im-example-fkb.c +hildon_im_example_fkb_la_LIBADD = $(HIM_PLUGINS_EXAMPLE_LIBS) +hildon_im_example_fkb_la_LDFLAGS = -avoid-version -module + # After installation, update the cache so that hildon-input-method knows about # the new plugin: install-data-hook: Modified: projects/haf/trunk/hildon-input-method-plugins-example/src/hildon-im-example-fkb.c =================================================================== --- projects/haf/trunk/hildon-input-method-plugins-example/src/hildon-im-example-fkb.c 2009-09-01 09:44:43 UTC (rev 19283) +++ projects/haf/trunk/hildon-input-method-plugins-example/src/hildon-im-example-fkb.c 2009-09-01 15:00:42 UTC (rev 19284) @@ -80,12 +80,12 @@ gint saved_offset; GtkWidget *vbox; - GtkWidget *keyboard_vbox; + GtkWidget *keyboard_nbook; - GtkWidget *alpha_lower; - GtkWidget *alpha_upper; - GtkWidget *special_lower; - GtkWidget *special_upper; + gint alpha_lower; + gint alpha_upper; + gint special_lower; + gint special_upper; GtkWidget *shift_button; GtkWidget *symbols_button; @@ -170,7 +170,7 @@ /* * Internal functions */ -static void create_window (HildonIMExampleFKB *self); +static void populate_window (HildonIMExampleFKB *self); /* @@ -235,7 +235,7 @@ NULL, /* menu title */ NULL, /* gettext domain */ TRUE, /* visible in menu */ - FALSE, /* cached */ + TRUE, /* cached */ HILDON_IM_TYPE_FULLSCREEN, /* UI type */ HILDON_IM_GROUP_LATIN, /* group */ HILDON_IM_DEFAULT_PLUGIN_PRIORITY, /* priority */ @@ -342,10 +342,6 @@ priv = HILDON_IM_EXAMPLE_FKB_GET_PRIVATE(self); priv->window = NULL; - priv->alpha_lower = NULL; - priv->alpha_upper = NULL; - priv->special_lower = NULL; - priv->special_upper = NULL; } static void @@ -414,18 +410,28 @@ { HildonIMExampleFKB *self; HildonIMExampleFKBPrivate *priv; + gboolean window_is_new; g_return_if_fail (HILDON_IS_IM_EXAMPLE_FKB (plugin)); self = HILDON_IM_EXAMPLE_FKB(plugin); priv = HILDON_IM_EXAMPLE_FKB_GET_PRIVATE(self); - if (priv->window == NULL) + window_is_new = (priv->window == NULL); + + if (window_is_new) { - create_window(self); + priv->window = gtk_window_new (GTK_WINDOW_TOPLEVEL); } + + gtk_window_set_type_hint(GTK_WINDOW(priv->window), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_decorated(GTK_WINDOW(priv->window), FALSE); + /* + we don't really support this... + hildon_gtk_window_set_portrait_flags (GTK_WINDOW(priv->window), + HILDON_PORTRAIT_MODE_SUPPORT); + */ priv->saved_offset = 0; - hildon_im_ui_send_communication_message(priv->ui, HILDON_IM_CONTEXT_REQUEST_SURROUNDING_FULL); @@ -434,6 +440,12 @@ gdk_window_set_transient_for(GTK_WIDGET(priv->window)->window, gtk_widget_get_root_window(GTK_WIDGET(priv->window))); + + if (window_is_new) + { + populate_window(self); + gtk_widget_show_all(priv->window); + } } static void @@ -446,8 +458,11 @@ self = HILDON_IM_EXAMPLE_FKB(plugin); priv = HILDON_IM_EXAMPLE_FKB_GET_PRIVATE(self); - gtk_widget_hide(GTK_WIDGET(priv->window)); - hildon_im_ui_restore_previous_mode(priv->ui); + if (GTK_WIDGET_VISIBLE(GTK_WIDGET(priv->window))) + { + gtk_widget_hide(GTK_WIDGET(priv->window)); + hildon_im_ui_restore_previous_mode(priv->ui); + } } static void @@ -546,7 +561,7 @@ get_keyboard_layout (HildonIMExampleFKB *self, const gchar** keyboard_layout[]) { - GtkWidget *vbox = gtk_vbox_new(TRUE, 0); + GtkWidget *vbox = gtk_vbox_new(TRUE, 5); gint i, j; for (i = 0; keyboard_layout[i] != NULL; i++) @@ -578,24 +593,6 @@ } static void -apply_keyboard_layout (HildonIMExampleFKB *self, - GtkWidget *layout) -{ - HildonIMExampleFKBPrivate *priv; - - priv = HILDON_IM_EXAMPLE_FKB_GET_PRIVATE(self); - - gtk_container_forall(GTK_CONTAINER(priv->keyboard_vbox), - remove_children_from_container, - GTK_CONTAINER(priv->keyboard_vbox)); - - gtk_box_pack_start(GTK_BOX(priv->keyboard_vbox), layout, FALSE, FALSE, 0); - - gtk_widget_show_all (priv->keyboard_vbox); - gtk_container_resize_children (GTK_CONTAINER(priv->window)); -} - -static void delete_button_clicked (GtkButton *button, gpointer user_data) { HildonIMExampleFKB *self; @@ -670,52 +667,46 @@ { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->shift_button))) { - apply_keyboard_layout(self, priv->special_upper); + gtk_notebook_set_current_page(GTK_NOTEBOOK(priv->keyboard_nbook), + priv->special_upper); } else { - apply_keyboard_layout(self, priv->special_lower); + gtk_notebook_set_current_page(GTK_NOTEBOOK(priv->keyboard_nbook), + priv->special_lower); } } else { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->shift_button))) { - apply_keyboard_layout(self, priv->alpha_upper); + gtk_notebook_set_current_page(GTK_NOTEBOOK(priv->keyboard_nbook), + priv->alpha_upper); } else { - apply_keyboard_layout(self, priv->alpha_lower); + gtk_notebook_set_current_page(GTK_NOTEBOOK(priv->keyboard_nbook), + priv->alpha_lower); } } } static void -create_window (HildonIMExampleFKB *self) +populate_window (HildonIMExampleFKB *self) { HildonIMExampleFKBPrivate *priv; + GtkWidget *parea, *hbox; + gint screen_width = gdk_screen_width(); priv = HILDON_IM_EXAMPLE_FKB_GET_PRIVATE(self); - priv->window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - - gtk_window_set_type_hint(GTK_WINDOW(priv->window), GDK_WINDOW_TYPE_HINT_DIALOG); - gtk_window_set_decorated(GTK_WINDOW(priv->window), FALSE); - gtk_window_fullscreen(GTK_WINDOW(priv->window)); - /* - It is always rotated! :-( - */ - hildon_gtk_window_set_portrait_flags (GTK_WINDOW(priv->window), - HILDON_PORTRAIT_MODE_SUPPORT); - - GtkWidget *parea, *hbox; - priv->vbox = gtk_vbox_new(FALSE, 5); priv->text_view = hildon_text_view_new(); gtk_widget_set_name(priv->text_view, "him-textview"); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(priv->text_view), GTK_WRAP_WORD_CHAR); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(priv->text_view), TRUE); + gtk_widget_set_name(priv->text_view, "him-textview"); g_signal_connect_after(G_OBJECT(priv->text_view), "button-press-event", G_CALLBACK(textview_button_release_cb), self); @@ -726,19 +717,48 @@ gtk_box_pack_start(GTK_BOX(priv->vbox), parea, TRUE, TRUE, 0); - priv->keyboard_vbox = gtk_vbox_new(TRUE, 5); - gtk_box_pack_start(GTK_BOX(priv->vbox), priv->keyboard_vbox, FALSE, FALSE, 0); + /* now we create the different layouts and place them in a notebook */ + + priv->keyboard_nbook = gtk_notebook_new(); + g_object_set (G_OBJECT(priv->keyboard_nbook), "show-tabs", FALSE, NULL); + + priv->alpha_lower = + gtk_notebook_append_page(GTK_NOTEBOOK(priv->keyboard_nbook), + get_keyboard_layout(self, alpha_lower), NULL); + priv->alpha_upper = + gtk_notebook_append_page(GTK_NOTEBOOK(priv->keyboard_nbook), + get_keyboard_layout(self, alpha_upper), NULL); + priv->special_lower = + gtk_notebook_append_page(GTK_NOTEBOOK(priv->keyboard_nbook), + get_keyboard_layout(self, special_lower), NULL); + priv->special_upper = + gtk_notebook_append_page(GTK_NOTEBOOK(priv->keyboard_nbook), + get_keyboard_layout(self, special_upper), NULL); - gint screen_width = gdk_screen_width(); + gtk_notebook_set_current_page(GTK_NOTEBOOK(priv->keyboard_nbook), + priv->alpha_lower); + + gtk_box_pack_start(GTK_BOX(priv->vbox), priv->keyboard_nbook, FALSE, FALSE, 0); hbox = gtk_hbox_new(FALSE, 0); + + /* Close button */ - /* Shif button */ + priv->close_button = hildon_button_new(HILDON_SIZE_FINGER_HEIGHT, + HILDON_BUTTON_ARRANGEMENT_VERTICAL); + hildon_button_set_image(HILDON_BUTTON(priv->close_button), + gtk_image_new_from_icon_name("keyboard_close", -1)); + hildon_button_set_image_alignment(HILDON_BUTTON(priv->close_button), 0.0, 0.0); + gtk_widget_set_size_request(priv->close_button, screen_width*0.1, 70); + gtk_box_pack_start(GTK_BOX(hbox), priv->close_button, FALSE, FALSE, 0); + g_signal_connect(priv->close_button, "clicked", G_CALLBACK(close_fkb), self); + /* Shift button */ + priv->shift_button = hildon_gtk_toggle_button_new(HILDON_SIZE_FINGER_HEIGHT); gtk_button_set_label(GTK_BUTTON(priv->shift_button), "↑"); gtk_widget_set_size_request(priv->shift_button, screen_width*0.15, 70); - gtk_box_pack_start(GTK_BOX(hbox), priv->shift_button, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(hbox), priv->shift_button, FALSE, FALSE, 0); g_signal_connect(priv->shift_button, "toggled", G_CALLBACK(shift_symbols_buttons_toggled), self); @@ -747,7 +767,7 @@ priv->symbols_button = hildon_gtk_toggle_button_new (HILDON_SIZE_FINGER_HEIGHT); gtk_button_set_label(GTK_BUTTON(priv->symbols_button), "1*?"); gtk_widget_set_size_request(priv->symbols_button, screen_width*0.15, 70); - gtk_box_pack_start(GTK_BOX(hbox), priv->symbols_button, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(hbox), priv->symbols_button, FALSE, FALSE, 0); g_signal_connect(priv->symbols_button, "toggled", G_CALLBACK(shift_symbols_buttons_toggled), self); @@ -756,7 +776,6 @@ priv->space_button = hildon_button_new_with_text (HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL, " ", NULL); - gtk_widget_set_size_request(priv->space_button, screen_width*0.3, 70); gtk_box_pack_start(GTK_BOX(hbox), priv->space_button, TRUE, TRUE, 0); g_signal_connect(priv->space_button, "pressed", G_CALLBACK(text_button_clicked), self); @@ -768,7 +787,7 @@ gtk_image_new_from_icon_name("keyboard_enter", -1)); gtk_widget_set_size_request(priv->return_button, screen_width*0.15, 70); - gtk_box_pack_start(GTK_BOX(hbox), priv->return_button, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(hbox), priv->return_button, FALSE, FALSE, 0); g_signal_connect(priv->return_button, "pressed", G_CALLBACK(return_button_clicked), self); /* Delete button */ @@ -778,37 +797,12 @@ hildon_button_set_image(HILDON_BUTTON(priv->delete_button), gtk_image_new_from_icon_name("general_backspace", -1)); + hildon_button_set_image_alignment(HILDON_BUTTON(priv->delete_button), 1.0, 0.0); gtk_widget_set_size_request(priv->delete_button, screen_width*0.15, 70); - gtk_box_pack_start(GTK_BOX(hbox), priv->delete_button, TRUE, TRUE, 0); - g_signal_connect(priv->delete_button, "pressed", G_CALLBACK(delete_button_clicked), self); - - /* Close button - * TODO place it somewhere else */ + gtk_box_pack_start(GTK_BOX(hbox), priv->delete_button, FALSE, FALSE, 0); + g_signal_connect(priv->delete_button, "clicked", G_CALLBACK(delete_button_clicked), self); - priv->close_button = hildon_button_new(HILDON_SIZE_FINGER_HEIGHT, - HILDON_BUTTON_ARRANGEMENT_VERTICAL); - hildon_button_set_image(HILDON_BUTTON(priv->close_button), - gtk_image_new_from_icon_name("keyboard_close", - -1)); - gtk_widget_set_size_request(priv->close_button, screen_width*0.1, 70); - gtk_box_pack_start(GTK_BOX(hbox), priv->close_button, TRUE, TRUE, 0); - g_signal_connect(priv->close_button, "pressed", G_CALLBACK(close_fkb), self); - gtk_box_pack_start(GTK_BOX(priv->vbox), hbox, FALSE, FALSE, 0); gtk_container_add (GTK_CONTAINER(priv->window), priv->vbox); - - /* now we create the different layouts - * if this is too slow, we could do it on demand */ - priv->alpha_lower = get_keyboard_layout(self, alpha_lower); - priv->alpha_upper = get_keyboard_layout(self, alpha_upper); - priv->special_lower = get_keyboard_layout(self, special_lower); - priv->special_upper = get_keyboard_layout(self, special_upper); - - g_object_ref(priv->alpha_lower); - g_object_ref(priv->alpha_upper); - g_object_ref(priv->special_lower); - g_object_ref(priv->special_upper); - - apply_keyboard_layout(self, priv->alpha_lower); }
- Previous message: [maemo-commits] r19283 - projects/haf/trunk/clutter0.8/debian
- Next message: [maemo-commits] r19285 - projects/haf/trunk/hildon-input-method-plugins-example/src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]