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; }
GtkWidget * aw_popup_dialog_append (AwPopupDialog *dialog, const char *title, const char *details, AwPopupDialogCallback callback, gpointer user_data) { GtkWidget *button, *content_area; GClosure *closure; g_return_val_if_fail (AW_IS_POPUP_DIALOG (dialog), NULL); button = hildon_button_new_with_text (HILDON_SIZE_AUTO_WIDTH | HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL, title, details); closure = g_cclosure_new (G_CALLBACK (callback), user_data, NULL); g_closure_set_marshal (closure, aw_cclosure_marshal_BOOLEAN__VOID); g_signal_connect_data (button, "clicked", G_CALLBACK (aw_popup_dialog_clicked_cb), closure, (GClosureNotify) g_closure_unref, 0); content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_container_add (GTK_CONTAINER (content_area), button); gtk_widget_show (button); return button; }
void motorway_list_handler(GHashTable *table, int *res, gpointer *data) { if (*res != NO_ASYNC) gdk_threads_enter(); GtkWidget *window = GTK_WIDGET( hildon_window_new() ); gtk_signal_connect(GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (wizard_delete_event), NULL); gtk_window_set_title(GTK_WINDOW(window), "Pick a motorway"); if (table == NULL) { moflow_error_dialog(*res, NULL, GTK_BUTTONS_OK); main_exit(1); } GtkWidget *hbox = gtk_hbox_new(FALSE, 2); GtkWidget *vbox = gtk_vbox_new(FALSE, 2); GtkWidget *selector = hildon_touch_selector_new_text(); GList *sortedList = g_list_sort(g_hash_table_get_keys(table), (GCompareFunc)motorwaycmp); for (GList *li = sortedList; li != NULL; li = g_list_next(li)) { gchar *key = (gchar*)li->data; hildon_touch_selector_append_text(HILDON_TOUCH_SELECTOR(selector), key); } g_list_free(sortedList); gtk_box_pack_start(GTK_BOX(vbox), selector, TRUE, TRUE, 2); GtkWidget *button = hildon_button_new_with_text(HILDON_SIZE_AUTO_WIDTH, HILDON_BUTTON_ARRANGEMENT_VERTICAL, "Go!", NULL); gtk_widget_set_sensitive(button, FALSE); g_signal_connect(G_OBJECT(selector), "changed", G_CALLBACK(selection_changed), button); g_object_set_data(G_OBJECT(button), "motorwayTable", table); g_object_set_data(G_OBJECT(button), "motorwaySelector", selector); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(motorway_select_cb), NULL); gtk_widget_set_size_request(button, -1, 70); gtk_box_pack_end(GTK_BOX(vbox), button, FALSE, FALSE, 2); gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 2); GtkWidget *logo = gtk_image_new_from_file("/usr/share/pixmaps/moflow/motorway.png"); gtk_box_pack_end(GTK_BOX(hbox), logo, FALSE, FALSE, 20); gtk_container_add(GTK_CONTAINER(window), hbox); gtk_widget_show_all(window); if (*res != NO_ASYNC) gdk_threads_leave(); }
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; }