Popup menu problem has been fixed; Words list has been improved; Hardware keys are...
authormaritus <lucas.pawlik@gmail.com>
Mon, 28 Aug 2006 11:45:59 +0000 (11:45 +0000)
committermaritus <lucas.pawlik@gmail.com>
Mon, 28 Aug 2006 11:45:59 +0000 (11:45 +0000)
git-svn-id: file:///svnroot/mdictionary/trunk@3 5bde0345-f819-0410-ac75-e5045f9217cc

gui/src/ws_gui.c
gui/src/ws_gui_callbacks.c
gui/src/ws_gui_layout.c
include/ws_gui.h
include/ws_gui_callbacks.h
include/ws_gui_layout.h

index 150bb75..5ecb819 100644 (file)
@@ -44,10 +44,11 @@ int main(int argc, char *argv[])
        ws_dbus_notify(ws_gui_app->dbus_data, WS_DBUS_ERROR_UNKNOWN);
        
        g_signal_connect (G_OBJECT (ws_gui_app->ws_gui_w_list->ws_gui_selection), "changed", G_CALLBACK (ws_gui_tree_selection_changed), ws_gui_app);
+       g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_hildon_window), "key-press-event", G_CALLBACK(hildon_key_press_listener), ws_gui_app);
        
-       g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_html), "button-press-event", G_CALLBACK(ws_gui_button_press_event), ws_gui_app);
+       ws_gui_app->ws_gui_menu->ws_gui_popup_menu = ws_gui_create_popup_menu(ws_gui_app);      
 
-       g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_hildon_window), "key-press-event", G_CALLBACK(hildon_key_press_listener), ws_gui_app);
+       gtk_widget_tap_and_hold_setup(GTK_WIDGET(ws_gui_app->ws_gui_html), GTK_WIDGET(ws_gui_app->ws_gui_menu->ws_gui_popup_menu), NULL, FALSE);
 
        g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_hildon_window), "delete-event", G_CALLBACK(ws_gui_on_exit), ws_gui_app);
 
index aabcaf3..a3dd430 100644 (file)
@@ -162,7 +162,7 @@ void ws_gui_dbus_return_words (GError *error, GArray *words, gpointer user_data)
        gtk_widget_set_sensitive(GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_stop), FALSE);
        gtk_widget_set_sensitive(GTK_WIDGET(ws_gui_app->ws_gui_menu->ws_gui_menu_stop), FALSE);
        gtk_list_store_clear(ws_gui_app->ws_gui_w_list->ws_gui_store);
-       
+
        ws_gui_app->ws_gui_w_list->ws_gui_model = create_and_fill_model(tmp, ws_gui_app);
        
        if (tmp->len == 0)
@@ -183,7 +183,7 @@ void ws_gui_dbus_return_translation (GError *error, GArray *words, gpointer user
 {
        timer(TIMER_START, (gchar*)__FUNCTION__);       
        WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
-       g_printf("\n\n .::GUI::. User data in dbus_return_translation: %p\n\n", ws_gui_app);
+       //g_printf("\n\n .::GUI::. User data in dbus_return_translation: %p\n\n", ws_gui_app);
        
        osso_rpc_t data;
        
@@ -266,7 +266,7 @@ switch ((guint)(keyevent->keyval)) {
        break;
        
        case GDK_Return: /*start search*/
-       g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, ".::GUI::. Return");
+       //g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, ".::GUI::. Return");
        ws_gui_search(NULL, ws_gui_app);
        break;
        
@@ -296,27 +296,6 @@ switch ((guint)(keyevent->keyval)) {
     }
        return TRUE;
 }
-/** this function handles button press event; contex menu is created 
- *
- * @param widget - the object which received the signal
- * @param event        
- * @param user_data - user data set when the signal handler was connected
- * @return TRUE to stop other handlers from being invoked for the event. FALSE to propagate the event further.
- */
-gboolean ws_gui_button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer user_data)
-{
-       WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
-       
-       g_return_val_if_fail (widget != NULL, FALSE);
-       g_return_val_if_fail (event != NULL, FALSE);
-       
-       if (event->type == GDK_BUTTON_PRESS && event->button == 3) 
-               {
-                       ws_gui_create_popup_menu(widget, event, ws_gui_app);
-                       return TRUE;
-               }       
-       return FALSE;
-}
 
 /** this function allow to hide words list using menu item from application menu
  *
@@ -500,17 +479,25 @@ GtkTreeModel * create_and_fill_model (GArray *words_list, gpointer user_data)
        WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
        guint i = 0;
        gchar *tmp = g_strdup(g_array_index(words_list, gchar*, i));
+       gchar *tmp2;
        gboolean valid;
        valid =gtk_tree_model_get_iter_first(GTK_TREE_MODEL(ws_gui_app->ws_gui_w_list->ws_gui_store), &ws_gui_app->ws_gui_w_list->ws_gui_iter);
        
         /* Append a row and fill in some data */
        while (tmp != NULL)
        {
+       tmp2 = g_utf8_normalize(tmp, strlen(tmp), G_NORMALIZE_ALL);
        gtk_list_store_append (ws_gui_app->ws_gui_w_list->ws_gui_store, &ws_gui_app->ws_gui_w_list->ws_gui_iter);
        gtk_list_store_set (ws_gui_app->ws_gui_w_list->ws_gui_store,                                                               &ws_gui_app->ws_gui_w_list->ws_gui_iter,                                                                COL_WORD,                                                                                               tmp,                                                                                                    -1);
        i=i+1;
        tmp = g_strdup(g_array_index(words_list, gchar*, i));
        };
+
+       tmp = g_strdup(g_array_index(words_list, gchar*, 0));
+       if (tmp != NULL)
+       {
+               ws_dbus_client_find_translation(ws_gui_app->dbus_data, tmp);
+       }
        
        return GTK_TREE_MODEL(ws_gui_app->ws_gui_w_list->ws_gui_store);
 }
@@ -525,7 +512,6 @@ GtkWidget * create_view_and_model (GArray *words_list, gpointer user_data)
 {
        WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
        
-
        ws_gui_app->ws_gui_w_list->ws_gui_view = gtk_tree_view_new ();
 
        ws_gui_app->ws_gui_w_list->ws_gui_renderer = gtk_cell_renderer_text_new ();
@@ -549,18 +535,21 @@ void ws_gui_tree_selection_changed(GtkTreeSelection *selection, gpointer user_da
 {
 WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
 gchar *string;
-if (gtk_tree_selection_get_selected (selection, &ws_gui_app->ws_gui_w_list->ws_gui_model,                                                              &ws_gui_app->ws_gui_w_list->ws_gui_iter))
-        {
-                gtk_tree_model_get (ws_gui_app->ws_gui_w_list->ws_gui_model, &ws_gui_app->ws_gui_w_list->ws_gui_iter, COL_WORD, &string, -1);
 
-               ws_dbus_client_find_translation(ws_gui_app->dbus_data, string);
+       if (gtk_tree_selection_get_selected (selection, &ws_gui_app->ws_gui_w_list->ws_gui_model,                                                               &ws_gui_app->ws_gui_w_list->ws_gui_iter))
+               {
+                       gtk_tree_model_get (ws_gui_app->ws_gui_w_list->ws_gui_model, &ws_gui_app->ws_gui_w_list->ws_gui_iter, COL_WORD, &string, -1);
+       
+                       ws_dbus_client_find_translation(ws_gui_app->dbus_data, string); 
                
-               ws_gui_history_add(string, ws_gui_app);
+                       ws_gui_history_add(string, ws_gui_app);
+       
+                       g_free (string);
+               }
 
-                g_free (string);
-        }
 }
 
+
 /** switch application between fun screen and normal mode
  *
  * @param menuitem - object which recived the signal
index 11c015d..10f978b 100644 (file)
@@ -23,31 +23,15 @@ void ws_gui_create_window(gpointer user_data)
 
        ws_gui_app->ws_gui_banner_flag = FALSE;
        ws_gui_app->ws_gui_full_screen_flag = FALSE;    
-
        
        ws_gui_app->ws_gui_history = g_array_new(TRUE, TRUE, sizeof(gchar*));
        ws_gui_app->ws_gui_history_cur_pos = -1;
        ws_gui_app->ws_gui_hildon_program = HILDON_PROGRAM(hildon_program_get_instance());
        g_set_application_name("WhiteStork");
-       //hildon_program_set_can_hibernate (ws_gui_app->ws_gui_hildon_program, FALSE);
-  
+       
        ws_gui_app->ws_gui_hildon_window = HILDON_WINDOW(hildon_window_new());
        hildon_program_add_window(ws_gui_app->ws_gui_hildon_program, ws_gui_app->ws_gui_hildon_window);
        
-       /*GdkPixbuf *pixbuf;
-       pixbuf = gdk_pixbuf_new_from_file ("gui/src/ikona.png", NULL);
-       gtk_window_set_icon (GTK_WINDOW(ws_gui_app->ws_gui_hildon_window), pixbuf);
-       gdk_pixbuf_unref (pixbuf);*/
-       /*hildon_icon_sizes_init();
-       if (gtk_window_set_default_icon_from_file("gui/src/ikona.png", NULL) == TRUE)
-       {
-       g_printf("\n\n.::GUI::. Icon loaded");
-       }
-       else 
-       {
-       g_printf("\n\n.::GUI::. Icon failed");
-       }*/
-       
        ws_gui_create_main_menu(ws_gui_app);
        ws_gui_create_find_toolbar(ws_gui_app);
 
@@ -62,13 +46,10 @@ void ws_gui_create_window(gpointer user_data)
        ws_gui_app->ws_gui_scrolledwindow_right = gtk_scrolled_window_new (NULL, NULL);
        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (ws_gui_app->ws_gui_scrolledwindow_right), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
        
-       //ws_gui_app->ws_gui_w_list->ws_gui_list = gtk_list_new();
        ws_gui_app->ws_gui_w_list->ws_gui_store = gtk_list_store_new (NUM_COLS, G_TYPE_STRING, G_TYPE_UINT);
        ws_gui_app->ws_gui_w_list->ws_gui_view = create_view_and_model(array_tmp, ws_gui_app);  
        gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_w_list->ws_gui_view));
        
-       //gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(ws_gui_app->ws_gui_scrolledwindow_left), ws_gui_app->ws_gui_w_list->ws_gui_list);
        gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(ws_gui_app->ws_gui_scrolledwindow_left), ws_gui_app->ws_gui_w_list->ws_gui_view);
 
        ws_gui_app->ws_gui_html = gtk_html_new_from_string(ws_gui_app->ws_gui_w_list->ws_gui_list_item_data_string, strlen(ws_gui_app->ws_gui_w_list->ws_gui_list_item_data_string));
@@ -79,13 +60,14 @@ void ws_gui_create_window(gpointer user_data)
 
        gtk_html_set_editable(GTK_HTML(ws_gui_app->ws_gui_html), TRUE); /* editable */
        gtk_html_allow_selection(GTK_HTML(ws_gui_app->ws_gui_html), TRUE);
+       gtk_html_set_blocking(GTK_HTML(ws_gui_app->ws_gui_html), FALSE);
        
        gtk_container_add(GTK_CONTAINER(ws_gui_app->ws_gui_hildon_window), ws_gui_app->ws_gui_hpane);
        gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_hildon_window));
        
        ws_gui_app->ws_gui_w_list->ws_gui_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (ws_gui_app->ws_gui_w_list->ws_gui_view));
        
-       gtk_tree_selection_set_mode (ws_gui_app->ws_gui_w_list->ws_gui_selection, GTK_SELECTION_SINGLE);
+       gtk_tree_selection_set_mode (ws_gui_app->ws_gui_w_list->ws_gui_selection, GTK_SELECTION_BROWSE);
        
 }
 
@@ -93,19 +75,19 @@ void ws_gui_create_window(gpointer user_data)
  *
  * @param user_data - set when the signal handler was connected
  */
-void ws_gui_create_find_toolbar(gpointer user_data) 
+void ws_gui_create_find_toolbar(gpointer user_data)
 {
        WSGuiApp* ws_gui_app = (WSGuiApp*)user_data;    
 
        GtkToolItem *space;
        ws_gui_app->ws_gui_hildon_find_toolbar = HILDON_FIND_TOOLBAR(hildon_find_toolbar_new("Find word: "));
-    
+
        ws_gui_app->ws_gui_toobar_button_hide = gtk_toggle_tool_button_new_from_stock(GTK_STOCK_GOTO_FIRST);
-       ws_gui_app->ws_gui_toobar_button_back = gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
+       ws_gui_app->ws_gui_toobar_button_back = gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
        ws_gui_app->ws_gui_toobar_button_forward = gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
        ws_gui_app->ws_gui_toobar_button_stop = gtk_tool_button_new_from_stock(GTK_STOCK_STOP);
        space = gtk_separator_tool_item_new(); 
-    
+
        ws_gui_app->ws_gui_toobar_button_close = gtk_toolbar_get_nth_item(GTK_TOOLBAR(ws_gui_app->ws_gui_hildon_find_toolbar), 4);
        gtk_tool_item_set_visible_horizontal(ws_gui_app->ws_gui_toobar_button_close, FALSE);
        
@@ -208,12 +190,10 @@ void ws_gui_create_main_menu (gpointer user_data)
  *
  * @param user_data - set when the signal handler was connected
  */
-void ws_gui_create_popup_menu (GtkWidget *widget, GdkEventButton *event, gpointer user_data) 
+GtkWidget * ws_gui_create_popup_menu (gpointer user_data)
 {
        WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
 
-       int button, event_time;
-
        ws_gui_app->ws_gui_menu->ws_gui_popup_menu = gtk_menu_new();
        ws_gui_app->ws_gui_menu->ws_gui_popup_submenu = gtk_menu_new();
        ws_gui_app->ws_gui_menu->ws_gui_separator = gtk_separator_menu_item_new();
@@ -239,21 +219,11 @@ void ws_gui_create_popup_menu (GtkWidget *widget, GdkEventButton *event, gpointe
        gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_menu);
        gtk_menu_item_set_submenu(GTK_MENU_ITEM(ws_gui_app->ws_gui_menu->ws_gui_popup_edit), ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
 
-       if (event) 
-       {
-               button = event->button;
-               event_time = event->time;
-       }
-       else 
-       {
-               button = 0;
-               event_time = gtk_get_current_event_time();
-       }
-
-       gtk_menu_popup (GTK_MENU(ws_gui_app->ws_gui_menu->ws_gui_popup_menu), NULL, NULL, NULL, NULL, button, event_time);      
        g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_menu->ws_gui_popup_copy), "activate", G_CALLBACK(ws_gui_html_copy), ws_gui_app);
        g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_menu->ws_gui_popup_select_all), "activate", G_CALLBACK(ws_gui_html_select_all), ws_gui_app);
        g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in), "activate", G_CALLBACK(ws_gui_html_zoom_in), ws_gui_app);
        g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out), "activate", G_CALLBACK(ws_gui_html_zoom_out), ws_gui_app);
+       
+       return (GTK_WIDGET(ws_gui_app->ws_gui_menu->ws_gui_popup_menu));
 }
 
index 44c9869..b3701ef 100644 (file)
@@ -139,7 +139,7 @@ struct WSGuiAppData {
        
        gboolean ws_gui_banner_flag; ///< flag; used for notifing if searching is in progress and banner has to be displaying
        gboolean ws_gui_full_screen_flag; ///< flag; used for informing if fullscreen mode is active
-
+       
        WSDBusData *dbus_data; ///< DBUS declaration
 
        GtkWidget* ws_message_dialog; ///< message dialogs; used for informing user about errors
index 713f6f2..623c588 100644 (file)
@@ -51,11 +51,6 @@ void ws_gui_free_memory(gpointer user_data);
 */
 gboolean hildon_key_press_listener (GtkWidget * widget, GdkEventKey * keyevent, gpointer user_data);
 
-/**  \brief handle button press signal.
-*
-*/
-gboolean ws_gui_button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer user_data);
-
 /**  \brief allow to hide words list from menu
 *
 */
index 96904dc..1bf1836 100644 (file)
@@ -35,7 +35,7 @@ void ws_gui_create_main_menu (gpointer user_data);
 * \brief create popup menu
 *
 */
-void ws_gui_create_popup_menu (GtkWidget *widget, GdkEventButton *event, gpointer user_data);
+GtkWidget* ws_gui_create_popup_menu (gpointer user_data);
 
 #ifdef __cplusplus
 }