static GtkWidget * create_scroll_widget (void) { GtkWidget *scroll; scroll = hildon_pannable_area_new (); return scroll; }
static void aw_window_add_tree_view (GtkContainer *container, GtkWidget *child) { GtkWidget *alignment, *pa; GSList *filters, *items; HildonAppMenu *menu; gtk_widget_push_composite_child (); alignment = gtk_alignment_new (0.5, 0.5, 1.0, 1.0); gtk_container_add (container, alignment); pa = hildon_pannable_area_new (); gtk_container_add (GTK_CONTAINER (alignment), pa); g_object_set (pa, "hscrollbar-policy", GTK_POLICY_NEVER, "vscrollbar-policy", GTK_POLICY_AUTOMATIC, "mov-mode", HILDON_MOVEMENT_MODE_VERT, NULL); g_signal_connect (hildon_pannable_area_get_vadjustment (HILDON_PANNABLE_AREA (pa)), "changed", G_CALLBACK (aw_window_vadjustment_changed_cb), alignment); gtk_widget_pop_composite_child (); gtk_container_add (GTK_CONTAINER (pa), child); filters = aw_tree_view_get_filters (AW_TREE_VIEW (child)); items = aw_tree_view_get_menu_items (AW_TREE_VIEW (child)); if (filters || items) { menu = HILDON_APP_MENU (hildon_app_menu_new ()); while (filters) { hildon_app_menu_add_filter (menu, filters->data); filters = filters->next; } while (items) { hildon_app_menu_append (menu, items->data); items = items->next; } hildon_window_set_app_menu (HILDON_WINDOW (container), menu); } }
ZLGtkOptionsDialog::ZLGtkOptionsDialog(const ZLResource &resource, shared_ptr<ZLRunnable> applyAction) : ZLOptionsDialog(resource, applyAction) { myDialog = createGtkDialog(caption()); gtk_widget_set_size_request(GTK_WIDGET(myDialog), 800, 800); std::string okString = gtkButtonName(ZLDialogManager::OK_BUTTON); std::string cancelString = gtkButtonName(ZLDialogManager::CANCEL_BUTTON); gtk_dialog_add_button(myDialog, okString.c_str(), GTK_RESPONSE_ACCEPT); gtk_dialog_add_button(myDialog, cancelString.c_str(), GTK_RESPONSE_REJECT); /* myNotebook = GTK_NOTEBOOK(gtk_notebook_new()); gtk_container_set_border_width(GTK_CONTAINER(myNotebook), 8); gtk_box_pack_start(GTK_BOX(myDialog->vbox), GTK_WIDGET(myNotebook), TRUE, TRUE, 0); */ GtkWidget *area = hildon_pannable_area_new(); myNotebook = gtk_vbox_new(false, 0); hildon_pannable_area_add_with_viewport(HILDON_PANNABLE_AREA(area), myNotebook); gtk_container_add(GTK_CONTAINER(myDialog->vbox), area); gtk_widget_show_all(GTK_WIDGET(area)); }
static void eom_detail_window_init(EomDetailWindow *self) { GtkWidget *panarea; GtkWidget *clabel, *rlabel; GtkWidget *vbox; add_menu(self); panarea = hildon_pannable_area_new(); g_object_set(G_OBJECT(panarea), "mov-mode", HILDON_MOVEMENT_MODE_VERT, NULL); gtk_container_add(GTK_CONTAINER(self), panarea); self->volsbox = gtk_hbox_new(TRUE, 5); hildon_pannable_area_add_with_viewport(HILDON_PANNABLE_AREA(panarea), self->volsbox); vbox = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(self->volsbox), vbox, TRUE, TRUE, 0); clabel = gtk_label_new("Collected:"); gtk_misc_set_alignment(GTK_MISC(clabel), 0.0, 0.5); gtk_box_pack_start(GTK_BOX(vbox), clabel, FALSE, FALSE, 0); self->ctable = gtk_table_new(0, 0, TRUE); gtk_box_pack_start(GTK_BOX(vbox), self->ctable, FALSE, FALSE, 0); vbox = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(self->volsbox), vbox, TRUE, TRUE, 0); rlabel = gtk_label_new("Read:"); gtk_misc_set_alignment(GTK_MISC(rlabel), 0.0, 0.5); gtk_box_pack_start(GTK_BOX(vbox), rlabel, FALSE, FALSE, 0); self->rtable = gtk_table_new(0, 0, TRUE); gtk_box_pack_start(GTK_BOX(vbox), self->rtable, FALSE, FALSE, 0); }
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; }