GtkWidget * show_main_window (GCallback installed_db_cb, GCallback custom_db_cb, GCallback about_cb, GCallback search_clicked_cb, GCallback random_clicked_cb) { GtkWidget *window; GtkWidget *search_btn; GtkWidget *random_btn; GtkWidget *label; GtkWidget *image; GtkWidget *vbox; GtkWidget *hbox; window = hildon_stackable_window_new (); g_signal_connect (G_OBJECT (window), "delete-event", G_CALLBACK (gtk_main_quit), NULL); hildon_window_set_app_menu (HILDON_WINDOW (window), HILDON_APP_MENU (create_app_menu (window, installed_db_cb, custom_db_cb, about_cb))); vbox = gtk_vbox_new (FALSE, 0); hbox = gtk_hbox_new (TRUE, 10); label = gtk_label_new ("Mawire, the offline Wikipedia reader"); g_object_set (G_OBJECT (label), "wrap", TRUE, NULL); image = gtk_image_new_from_file (MAIN_WINDOW_IMAGE); gtk_box_pack_start (GTK_BOX (vbox), image, TRUE, TRUE, 5); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 5); search_btn = hildon_button_new_with_text ( HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL, "Search", NULL); random_btn = hildon_button_new_with_text ( HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL, "Random", NULL); gtk_box_pack_start (GTK_BOX (hbox), search_btn, TRUE, TRUE, 5); gtk_box_pack_start (GTK_BOX (hbox), random_btn, TRUE, TRUE, 5); gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, FALSE, 5); gtk_container_add (GTK_CONTAINER (window), vbox); g_signal_connect (G_OBJECT (search_btn), "clicked", G_CALLBACK (search_clicked_cb), window); g_signal_connect (G_OBJECT (random_btn), "clicked", G_CALLBACK (random_clicked_cb), window); return window; }
int main (int argc, char **argv) { GtkWidget *win; GtkWidget *label; GtkWidget *label2; GtkBox *vbox; HildonAppMenu *menu; GtkAccelGroup *accel; hildon_gtk_init (&argc, &argv); label = gtk_label_new ("This is an example of the\nHildonAppMenu widget.\n\n" "Click on the titlebar\nto pop up the menu."); label2 = gtk_label_new ("No menu option has been selected yet."); accel = gtk_accel_group_new (); gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER); gtk_label_set_justify (GTK_LABEL (label2), GTK_JUSTIFY_CENTER); vbox = GTK_BOX (gtk_vbox_new (FALSE, 10)); win = hildon_stackable_window_new (); menu = create_menu (label2, accel); hildon_window_set_app_menu (HILDON_WINDOW (win), menu); gtk_window_add_accel_group (GTK_WINDOW (win), accel); g_object_unref (accel); gtk_box_pack_start (vbox, label, TRUE, TRUE, 0); gtk_box_pack_start (vbox, label2, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (win), 20); gtk_container_add (GTK_CONTAINER (win), GTK_WIDGET (vbox)); g_signal_connect (win, "delete_event", G_CALLBACK (gtk_main_quit), NULL); gtk_widget_show_all (win); gtk_main (); return 0; }
void maemo_init(int *argc, char ***argv) { FILE* pFile; pFile = fopen("/opt/psx4m/keys", "r"); // assume the file exists and has data int ch; int i=0; for (i=0;i<65536;i++) keymap[i]=164; if (NULL != pFile) { for(i=0;i<21;i++){ fscanf(pFile, "%i",&ch); keymap[ch]=i; } fclose(pFile); } gtk_init (argc, argv); window = hildon_stackable_window_new (); gtk_widget_realize (window); gtk_window_fullscreen (GTK_WINDOW(window)); g_signal_connect (G_OBJECT (window), "key-press-event", G_CALLBACK (window_key_proxy), NULL); g_signal_connect (G_OBJECT (window), "key-release-event", G_CALLBACK (window_key_proxy), NULL); g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (hildon_quit), NULL); gtk_widget_add_events (window, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); actor = HILDON_ANIMATION_ACTOR (hildon_animation_actor_new()); hildon_animation_actor_set_position (actor, (X_RES - D_WIDTH)/2, (Y_RES - D_HEIGHT)/2 ); hildon_animation_actor_set_parent (actor, GTK_WINDOW (window)); drawing = gtk_image_new (); gtk_container_add (GTK_CONTAINER (actor), drawing); gtk_widget_show_all (GTK_WIDGET (actor)); gtk_widget_show_all (GTK_WIDGET (window)); }
int main (int argc, char **argv) { GtkWidget *win; GtkWidget *showprogressbutton, *hideprogressbutton; GtkBox *vbox; hildon_gtk_init (&argc, &argv); /* Window and vbox to pack everything */ win = hildon_stackable_window_new (); vbox = GTK_BOX (gtk_vbox_new (FALSE, 10)); /* Buttons */ showprogressbutton = hildon_gtk_button_new (HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH); gtk_button_set_label (GTK_BUTTON (showprogressbutton), "Show progress indicator"); hideprogressbutton = hildon_gtk_button_new (HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH); gtk_button_set_label (GTK_BUTTON (hideprogressbutton), "Hide progress indicator"); /* Pack all widgets */ gtk_box_pack_start (GTK_BOX (vbox), showprogressbutton, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (vbox), hideprogressbutton, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (win), 20); gtk_container_add (GTK_CONTAINER (win), GTK_WIDGET (vbox)); /* Connect signals */ g_signal_connect (win, "destroy", G_CALLBACK (gtk_main_quit), NULL); g_signal_connect (showprogressbutton, "clicked", G_CALLBACK (show_progress_button_clicked), win); g_signal_connect (hideprogressbutton, "clicked", G_CALLBACK (hide_progress_button_clicked), win); /* Run example */ gtk_widget_show_all (win); gtk_main (); return 0; }
ZLGtkApplicationWindow::ZLGtkApplicationWindow(ZLApplication *application) : ZLApplicationWindow(application), KeyActionOnReleaseNotOnPressOption(ZLCategoryKey::CONFIG, "KeyAction", "OnRelease", false), myFullScreen(false) { myProgram = HILDON_PROGRAM(hildon_program_get_instance()); g_set_application_name(""); myWindow = HILDON_WINDOW(hildon_stackable_window_new()); ((ZLMaemoCommunicationManager&)ZLCommunicationManager::Instance()).init(); myMenu = HILDON_APP_MENU(hildon_app_menu_new()); hildon_window_set_app_menu(myWindow, myMenu); hildon_program_add_window(myProgram, myWindow); gtk_widget_show_all(GTK_WIDGET(myWindow)); myViewWidget = 0; ZLGtkSignalUtil::connectSignal(GTK_OBJECT(myWindow), "delete_event", GTK_SIGNAL_FUNC(applicationQuit), this); ZLGtkSignalUtil::connectSignal(GTK_OBJECT(myWindow), "key_press_event", GTK_SIGNAL_FUNC(handleKeyPress), this); ZLGtkSignalUtil::connectSignal(GTK_OBJECT(myWindow), "key_release_event", GTK_SIGNAL_FUNC(handleKeyRelease), this); }
GtkWidget * show_results_window (gchar *query, GList *results, GCallback selected_cb) { GtkWidget *win; GtkWidget *pannable; GtkWidget *view; GtkListStore *model; GtkWidget *aa; GtkWidget *n_results_label; GtkTreePath *exact_match = NULL; gchar *query_icase; gint n_results; gchar *tmp; query_icase = g_utf8_casefold (query, -1); n_results = g_list_length (results); DEBUG ("Showing %d results for: %s", n_results, query); win = hildon_stackable_window_new (); gtk_window_set_title (GTK_WINDOW (win), "Search results"); g_signal_connect (G_OBJECT (win), "delete-event", G_CALLBACK (gtk_widget_destroy), win); pannable = hildon_pannable_area_new (); g_object_set (pannable, "mov-mode", HILDON_MOVEMENT_MODE_VERT, "hscrollbar-policy", GTK_POLICY_NEVER, NULL); view = create_tree_view (&model); aa = hildon_tree_view_get_action_area_box (GTK_TREE_VIEW (view)); hildon_tree_view_set_action_area_visible (GTK_TREE_VIEW (view), TRUE); tmp = g_strdup_printf ("Found %s%d articles about %s", (n_results == 500) ? "more than " : "", n_results, query); n_results_label = gtk_label_new (tmp); g_free (tmp); gtk_container_add (GTK_CONTAINER (aa), n_results_label); gtk_container_add (GTK_CONTAINER (win), pannable); gtk_container_add (GTK_CONTAINER (pannable), view); g_signal_connect (G_OBJECT (view), "row-activated", G_CALLBACK (row_activated_cb), selected_cb); while (results) { GtkTreeIter iter; tmp = results->data; gchar *tmp_icase = g_utf8_casefold (tmp, -1); gtk_list_store_insert_with_values (model, &iter, -1, 0, tmp, -1); if (!g_utf8_collate (tmp_icase, query_icase)) exact_match = gtk_tree_model_get_path (GTK_TREE_MODEL (model), &iter); results = g_list_remove (results, tmp); g_free (tmp); g_free (tmp_icase); } /* if there's exact match in the results, we want to scroll * to it so the user doesn't need to scroll potentially huge * list to find it. */ if (exact_match) { gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (view), exact_match, NULL, FALSE, 0.0, 0.0); gtk_tree_path_free (exact_match); exact_match = NULL; } gtk_widget_show_all (win); return win; }
GtkWidget * show_article_window (gchar *title, gchar *text) { GtkWidget *win; GtkWidget *pannable; GtkWidget *vbox; GtkWidget *title_label; GtkWidget *text_box; GtkTextBuffer *buffer; GtkWidget *more; gchar *pango; win = hildon_stackable_window_new (); gtk_window_set_title (GTK_WINDOW (win), title); g_signal_connect (G_OBJECT (win), "delete-event", G_CALLBACK (gtk_widget_destroy), win); pannable = hildon_pannable_area_new (); g_object_set (pannable, "mov-mode", HILDON_MOVEMENT_MODE_VERT, "hscrollbar-policy", GTK_POLICY_NEVER, NULL); pango = g_markup_printf_escaped ("<span size='xx-large'>%s</span>", title); title_label = gtk_label_new (NULL); gtk_label_set_markup (GTK_LABEL (title_label), pango); gtk_misc_set_alignment (GTK_MISC (title_label), 0.0, 0.5); g_object_set (G_OBJECT (title_label), "wrap", TRUE, NULL); text_box = hildon_text_view_new (); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_box), GTK_WRAP_WORD_CHAR); g_object_set (text_box, "editable", FALSE, NULL); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_box)); gtk_text_buffer_create_tag (buffer, "bold", "weight", PANGO_WEIGHT_BOLD, NULL); gtk_text_buffer_create_tag (buffer, "emph", "style", PANGO_STYLE_ITALIC, NULL); insert_text (buffer, text); vbox = gtk_vbox_new (FALSE, 10); gtk_box_pack_start (GTK_BOX (vbox), title_label, FALSE, FALSE, 10); gtk_box_pack_start (GTK_BOX (vbox), text_box, TRUE, TRUE, 0); more = hildon_button_new_with_text ( HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL, "Read complete article on Wikipedia", NULL); gtk_box_pack_start (GTK_BOX (vbox), more, FALSE, FALSE, 0); gtk_container_add (GTK_CONTAINER (win), pannable); hildon_pannable_area_add_with_viewport (HILDON_PANNABLE_AREA (pannable), vbox); g_signal_connect (G_OBJECT (more), "clicked", G_CALLBACK (open_in_browser), g_strdup (title)); /* FIXME: memleak! */ gtk_widget_show_all (win); return win; }