static void scroll_fixture_setup (ScrollFixture *fixture, GtkTreeModel *model, gconstpointer test_data) { GtkWidget *sw; GtkCellRenderer *renderer; GtkTreeViewColumn *column; fixture->window = gtk_window_new (GTK_WINDOW_TOPLEVEL); sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); gtk_container_add (GTK_CONTAINER (fixture->window), sw); fixture->tree_view = gtk_tree_view_new_with_model (model); g_object_unref (model); gtk_scrolled_window_set_min_content_width (GTK_SCROLLED_WINDOW (sw), VIEW_WIDTH); gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (sw), VIEW_HEIGHT); gtk_widget_set_size_request (fixture->tree_view, VIEW_WIDTH, VIEW_HEIGHT); renderer = gtk_cell_renderer_text_new (); g_object_set (renderer, "editable", TRUE, NULL); column = gtk_tree_view_column_new_with_attributes ("Title", renderer, "text", 0, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (fixture->tree_view), column); gtk_container_add (GTK_CONTAINER (sw), fixture->tree_view); }
static void content_width_changed (GtkSpinButton *spin_button, gpointer data) { GtkScrolledWindow *swindow = data; gdouble value; value = gtk_spin_button_get_value (spin_button); gtk_scrolled_window_set_min_content_width (swindow, (gint)value); }
static GtkWidget * test_chase (void) { GtkWidget *win; GtkWidget *overlay; GtkWidget *sw; GtkWidget *text; GtkWidget *child; GtkTextBuffer *buffer; gchar *contents; gsize len; win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (win), "Chase"); overlay = gtk_overlay_new (); gtk_widget_set_events (overlay, GDK_ENTER_NOTIFY_MASK|GDK_LEAVE_NOTIFY_MASK); gtk_container_add (GTK_CONTAINER (win), overlay); sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_min_content_width (GTK_SCROLLED_WINDOW (sw), 200); gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (sw), 200); gtk_container_add (GTK_CONTAINER (overlay), sw); text = gtk_text_view_new (); buffer = gtk_text_buffer_new (NULL); if (!g_file_get_contents ("testoverlay.c", &contents, &len, NULL)) { contents = g_strdup ("Text should go here..."); len = strlen (contents); } gtk_text_buffer_set_text (buffer, contents, len); g_free (contents); gtk_text_view_set_buffer (GTK_TEXT_VIEW (text), buffer); gtk_widget_set_hexpand (text, TRUE); gtk_widget_set_vexpand (text, TRUE); gtk_container_add (GTK_CONTAINER (sw), text); child = gtk_label_new ("Try to enter"); gtk_widget_set_halign (child, GTK_ALIGN_START); gtk_widget_set_valign (child, GTK_ALIGN_END); gtk_overlay_add_overlay (GTK_OVERLAY (overlay), child); g_object_set (child, "margin", 4, NULL); g_signal_connect (overlay, "enter-notify-event", G_CALLBACK (on_enter), child); return win; }
static void cb_realize_treeview (GtkWidget *list, GtkWidget *sw) { GtkRequisition req; GdkRectangle rect; GtkTreePath *clip = g_object_get_data (G_OBJECT (list), "clip"); gtk_widget_get_preferred_size (GTK_WIDGET (list), &req, NULL); gtk_tree_view_get_background_area (GTK_TREE_VIEW (list), clip, NULL, &rect); gtk_scrolled_window_set_min_content_width (GTK_SCROLLED_WINDOW (sw), req.width); gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (sw), rect.y); }
/* test that scrolling works as expected */ static GtkWidget * test_scrolling (void) { GtkWidget *win; GtkWidget *overlay; GtkWidget *sw; GtkWidget *text; GtkWidget *child; GtkTextBuffer *buffer; gchar *contents; gsize len; win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (win), "Scrolling"); overlay = gtk_overlay_new (); gtk_container_add (GTK_CONTAINER (win), overlay); sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_min_content_width (GTK_SCROLLED_WINDOW (sw), 200); gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (sw), 200); gtk_container_add (GTK_CONTAINER (overlay), sw); text = gtk_text_view_new (); buffer = gtk_text_buffer_new (NULL); if (!g_file_get_contents ("testoverlay.c", &contents, &len, NULL)) { contents = g_strdup ("Text should go here..."); len = strlen (contents); } gtk_text_buffer_set_text (buffer, contents, len); g_free (contents); gtk_text_view_set_buffer (GTK_TEXT_VIEW (text), buffer); gtk_widget_set_hexpand (text, TRUE); gtk_widget_set_vexpand (text, TRUE); gtk_container_add (GTK_CONTAINER (sw), text); child = gtk_label_new ("This should be visible"); gtk_widget_set_halign (child, GTK_ALIGN_CENTER); gtk_widget_set_valign (child, GTK_ALIGN_END); gtk_overlay_add_overlay (GTK_OVERLAY (overlay), child); g_object_set (child, "margin", 4, NULL); return win; }
int main(int argc, char ** argv) { GtkWidget * vbox; GtkWidget * hpaned; GtkWidget * sc_win, * sc_buffer; GtkWidget * menu_bar; GtkWidget * file_menu, * file_item, * open_item, * save_item, * quit_item, * exp_img_item, * save_raw_data_item; GtkWidget * generate_menu, * generate_item, * mandelbrot_item, * julia_item, * palette_item, * random_noise_item, * from_clipboard_item; GtkWidget * settings_menu, * settings_item; GtkWidget * zoom_box, * zoom_button; //init general colors = (color_t *)malloc(56 * sizeof(color_t)); memset(mdata, 0, BUFFER_COUNT * sizeof(unsigned char *)); memset(icons, 0, BUFFER_COUNT * sizeof(GtkWidget *)); memset(icon_event_boxes, 0, BUFFER_COUNT * sizeof(GtkWidget *)); mdata[current_buffer] = (unsigned char *)malloc(128 * 128); char * templine = malloc(13); FILE * fcolors = fopen("colors", "r"); int i, r, g, b; for(i = 0; fgets(templine, 13, fcolors) == templine; i++) { sscanf(templine, "%i,%i,%i", &r, &g, &b); color_t color = {r, g, b}; colors[i] = color; } free(templine); fclose(fcolors); save_colors(colors, "colors.bin"); //load_colors(colors, "colors.bin"); srand(time(NULL)); config = config_new(); //init gtk gtk_init(&argc, &argv); //window window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "ImageToMap X v" VERSION_NUMBER); g_signal_connect(window, "delete_event", G_CALLBACK(kill_window), NULL); //vbox #ifdef GTK2 vbox = gtk_vbox_new(FALSE, 0); #else vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); #endif gtk_container_add(GTK_CONTAINER (window), vbox); gtk_widget_show(vbox); //////menu_bar menu_bar = gtk_menu_bar_new(); gtk_box_pack_start(GTK_BOX(vbox), menu_bar, FALSE, TRUE, 0); gtk_widget_show(menu_bar); ////////file_menu file_menu = gtk_menu_new(); //////////open_item open_item = gtk_menu_item_new_with_label("Open"); gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), open_item); gtk_widget_show(open_item); g_signal_connect_swapped (open_item, "activate", G_CALLBACK (button_click), (gpointer) "button.open"); //////////save_item save_item = gtk_menu_item_new_with_label("Save"); gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), save_item); gtk_widget_show(save_item); g_signal_connect_swapped (save_item, "activate", G_CALLBACK (button_click), (gpointer) "button.save"); //////////save_raw_data_item save_raw_data_item = gtk_menu_item_new_with_label("Save Raw Map"); gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), save_raw_data_item); gtk_widget_show(save_raw_data_item); g_signal_connect_swapped (save_raw_data_item, "activate", G_CALLBACK (button_click), (gpointer) "button.save_rm"); //////////exp_img_item exp_img_item = gtk_menu_item_new_with_label("Export Image"); gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), exp_img_item); gtk_widget_show(exp_img_item); g_signal_connect_swapped(exp_img_item, "activate", G_CALLBACK (button_click), (gpointer) "button.exp_img"); //////////quit_item quit_item = gtk_menu_item_new_with_label("Quit"); gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), quit_item); gtk_widget_show(quit_item); g_signal_connect_swapped (quit_item, "activate", G_CALLBACK(kill_window), (gpointer)"button.quit"); /////////file_item file_item = gtk_menu_item_new_with_label("File"); gtk_widget_show(file_item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(file_item), file_menu); gtk_menu_shell_append((GtkMenuShell *)menu_bar, file_item); ////////generate_menu generate_menu = gtk_menu_new(); //////////mandelbrot_item mandelbrot_item = gtk_menu_item_new_with_label("Mandelbrot"); gtk_menu_shell_append(GTK_MENU_SHELL(generate_menu), mandelbrot_item); gtk_widget_show(mandelbrot_item); g_signal_connect_swapped(mandelbrot_item, "activate", G_CALLBACK(button_click), (gpointer) "button.mandelbrot"); //////////julia_item julia_item = gtk_menu_item_new_with_label("Julia"); gtk_menu_shell_append(GTK_MENU_SHELL(generate_menu), julia_item); gtk_widget_show(julia_item); g_signal_connect_swapped(julia_item, "activate", G_CALLBACK (button_click), (gpointer) "button.julia"); //////////palette_item palette_item = gtk_menu_item_new_with_label("Palette"); gtk_menu_shell_append(GTK_MENU_SHELL(generate_menu), palette_item); gtk_widget_show(palette_item); g_signal_connect_swapped(palette_item, "activate", G_CALLBACK(button_click), (gpointer)"button.palette"); //////////random_noise_item random_noise_item = gtk_menu_item_new_with_label("Random Noise"); gtk_menu_shell_append(GTK_MENU_SHELL(generate_menu), random_noise_item); gtk_widget_show(random_noise_item); g_signal_connect_swapped(random_noise_item, "activate", G_CALLBACK(button_click), (gpointer)"button.random_noise"); //////////from_clipboard_item from_clipboard_item = gtk_menu_item_new_with_label("From Clipboard"); gtk_menu_shell_append(GTK_MENU_SHELL(generate_menu), from_clipboard_item); gtk_widget_show(from_clipboard_item); g_signal_connect_swapped(from_clipboard_item, "activate", G_CALLBACK(button_click), (gpointer)"button.from_clipboard"); /////////generate_item generate_item = gtk_menu_item_new_with_label("Generate"); gtk_widget_show(generate_item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(generate_item), generate_menu); gtk_menu_shell_append((GtkMenuShell *)menu_bar, generate_item); ////////settings_menu settings_menu = gtk_menu_new(); ////////settings_item settings_item = gtk_menu_item_new_with_label("Settings"); gtk_widget_show(settings_item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(settings_item), settings_menu); gtk_menu_shell_append((GtkMenuShell *)menu_bar, settings_item); //////////FSD_checkbox FSD_checkbox = gtk_check_menu_item_new_with_label("Floyd–Steinberg dithering"); gtk_menu_shell_append(GTK_MENU_SHELL(settings_menu), FSD_checkbox); gtk_widget_show(FSD_checkbox); //drop_down_menu init_drop_down_menu(); //hpaned #ifdef GTK2 hpaned = gtk_hpaned_new(); #else hpaned = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL); #endif gtk_widget_set_size_request (hpaned, 220, -1); gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0); gtk_widget_show(hpaned); ////sc_buffer sc_buffer = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sc_buffer), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); #ifdef GTK2 gtk_widget_set_size_request(sc_buffer, 128 + 32, 512); #else gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(sc_buffer), 128 + 32); gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(sc_buffer), 512); #endif gtk_paned_pack2(GTK_PANED(hpaned), sc_buffer, FALSE, FALSE); gtk_widget_show(sc_buffer); //////list_vbox #ifdef GTK2 list_vbox = gtk_vbox_new(FALSE, 0); #else list_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); #endif gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sc_buffer), list_vbox); gtk_widget_show(list_vbox); ////sc_win sc_win = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sc_win), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); #ifdef GTK2 gtk_widget_set_size_request(sc_win, 128 * 4, 128 * 4); gtk_window_resize(GTK_WINDOW(window), 128 * 4 + 200, 128 * 4 + 70); #else gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(sc_win), 128 * 4); gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(sc_win), 128 * 4); #endif gtk_paned_pack1(GTK_PANED(hpaned), sc_win, TRUE, FALSE); gtk_widget_show(sc_win); //////image dimage = gdk_pixbuf_new_from_file("start.png", NULL); image = gtk_image_new(); gtk_image_set_from_pixbuf(GTK_IMAGE(image), dimage); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sc_win), image); gtk_widget_show(image); ////zoom_box #ifdef GTK2 zoom_box = gtk_hbox_new(FALSE, 0); #else zoom_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); #endif gtk_box_pack_start(GTK_BOX(vbox), zoom_box, FALSE, FALSE, 0); gtk_widget_show(zoom_box); //////zoom_button (+) zoom_button = gtk_button_new_with_label("+"); gtk_box_pack_start(GTK_BOX(zoom_box), zoom_button, TRUE, TRUE, 2); g_signal_connect(zoom_button, "clicked", G_CALLBACK(button_click2), "button.zoomp"); gtk_widget_show(zoom_button); //////zoom_button (|) zoom_button = gtk_button_new_with_label("|"); gtk_box_pack_start(GTK_BOX(zoom_box), zoom_button, TRUE, TRUE, 2); g_signal_connect(zoom_button, "clicked", G_CALLBACK(button_click2), "button.zoome"); gtk_widget_show(zoom_button); //////zoom_button (-) zoom_button = gtk_button_new_with_label("-"); gtk_box_pack_start(GTK_BOX(zoom_box), zoom_button, TRUE, TRUE, 2); g_signal_connect(zoom_button, "clicked", G_CALLBACK(button_click2), "button.zoomm"); gtk_widget_show(zoom_button); //icon gtk_window_set_icon(GTK_WINDOW(window), create_pixbuf("imagetomap.ico")); //display window gtk_widget_show (window); gtk_main(); //clean up free(colors); for(i = 0; i < BUFFER_COUNT; i++) free(mdata[i]); config_free(config); return 0; }
gint main (gint argc, gchar **argv) { GtkWidget *window, *main_box, *container, *child; GtkWidget *box, *toolbar; GtkStyleProvider *provider; GtkTextBuffer *css; gtk_init (&argc, &argv); css = gtk_text_buffer_new (NULL); gtk_text_buffer_create_tag (css, "warning", "background", "rgba(255,255,0,0.3)", NULL); gtk_text_buffer_create_tag (css, "error", "background", "rgba(255,0,0,0.3)", NULL); provider = GTK_STYLE_PROVIDER (gtk_css_provider_new ()); gtk_style_context_add_provider_for_screen (gdk_screen_get_default (), provider, GTK_STYLE_PROVIDER_PRIORITY_FORCE); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (window, "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect (window, "delete_event", G_CALLBACK (gtk_main_quit), NULL); main_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_add (GTK_CONTAINER (window), main_box); toolbar = gtk_toolbar_new (); gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_TEXT); gtk_box_pack_start (GTK_BOX (main_box), toolbar, FALSE, TRUE, 0); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start (GTK_BOX (main_box), box, FALSE, TRUE, 0); container = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_min_content_width (GTK_SCROLLED_WINDOW (container), 200); gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (container), 200); gtk_box_pack_start (GTK_BOX (main_box), container, TRUE, TRUE, 0); child = gtk_text_view_new_with_buffer (css); gtk_container_add (GTK_CONTAINER (container), child); g_signal_connect (css, "changed", G_CALLBACK (css_text_changed), provider); gtk_text_buffer_set_text (css, DEFAULT_CSS, -1); g_signal_connect (provider, "parsing-error", G_CALLBACK (show_parsing_error), gtk_text_view_get_buffer (GTK_TEXT_VIEW (child))); container = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start (GTK_BOX (main_box), container, FALSE, TRUE, 0); child = gtk_switch_new (); gtk_switch_set_active (GTK_SWITCH (child), gtk_widget_get_default_direction () == GTK_TEXT_DIR_LTR); g_signal_connect (child, "notify::active", G_CALLBACK (set_orientation), NULL); gtk_box_pack_start (GTK_BOX (container), child, FALSE, FALSE, 0); child = gtk_label_new ("left-to-right"); gtk_box_pack_start (GTK_BOX (container), child, FALSE, FALSE, 0); child = gtk_button_new_with_label ("Add button"); g_signal_connect_swapped (child, "clicked", G_CALLBACK (add_button), box); gtk_box_pack_end (GTK_BOX (container), child, FALSE, FALSE, 0); child = gtk_button_new_with_label ("Add toolbutton"); g_signal_connect_swapped (child, "clicked", G_CALLBACK (add_toolbutton), toolbar); gtk_box_pack_end (GTK_BOX (container), child, FALSE, FALSE, 0); add_toolbutton (GTK_TOOLBAR (toolbar)); add_toolbutton (GTK_TOOLBAR (toolbar)); add_toolbutton (GTK_TOOLBAR (toolbar)); add_toolbutton (GTK_TOOLBAR (toolbar)); add_button (GTK_BOX (box)); add_button (GTK_BOX (box)); add_button (GTK_BOX (box)); add_button (GTK_BOX (box)); gtk_widget_show_all (window); gtk_main (); return 0; }
int main (int argc,char *argv[]) { Persona p; Familia f; open_file(&p,&f); make_tree(&f); set_position(&f); GtkWidget *window; GtkWidget *paned_container_horizontal; GtkWidget *paned_container_vertical; GtkWidget *fixed_container; GtkWidget *list_container; GtkWidget *drawing_area; GtkWidget *scroll_draw_zone; GtkWidget *scroll_tree_zone; GtkWidget *scroll_list_zone; GtkWidget *memberTextArea; GtkWidget *tree_box; GtkWidget *list_box; gtk_init (&argc, &argv); // Configuracion de Ventana main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); window = main_window; config_window(GTK_WINDOW(window),WIDTH,HEIGHT,"Arbol Genealogico",TRUE); // Configuracion de ventana que muestra los datos de las familias // Configuracion de Container paned_container_horizontal = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL); paned_container_vertical = gtk_paned_new (GTK_ORIENTATION_VERTICAL); gtk_container_set_border_width (GTK_CONTAINER (window), 0); gtk_container_add (GTK_CONTAINER (window), paned_container_horizontal); fixed_container = gtk_fixed_new(); list_container = gtk_fixed_new(); drawing_area = gtk_drawing_area_new(); gtk_widget_set_size_request (GTK_WIDGET(drawing_area), 2000, 2000); scroll_draw_zone = gtk_scrolled_window_new(NULL, NULL); scroll_list_zone = gtk_scrolled_window_new(NULL, NULL); scroll_tree_zone = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_min_content_width (GTK_SCROLLED_WINDOW(scroll_draw_zone),800); gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW(scroll_draw_zone),600 - 50); gtk_fixed_put(GTK_FIXED(fixed_container), GTK_WIDGET(scroll_draw_zone), 0, 20); gtk_fixed_put(GTK_FIXED(list_container), GTK_WIDGET(scroll_draw_zone), 0, 0); // Se configura la caja que contiene a las familias tree_box = setup_tree("FAMILIAS"); add_family_to_list(tree_box,&f); // Se configura la caja que muestr a las personas list_box = setup_tree("PERSONAS"); add_member_to_list(list_box,&p); gtk_container_add(GTK_CONTAINER(scroll_draw_zone), GTK_WIDGET(drawing_area)); gtk_container_add(GTK_CONTAINER(scroll_tree_zone), GTK_WIDGET(tree_box)); gtk_container_add(GTK_CONTAINER(scroll_list_zone), GTK_WIDGET(list_box)); // Se agregan los elementos a la ventana gtk_paned_add1(GTK_PANED(paned_container_vertical),scroll_tree_zone); gtk_paned_add2(GTK_PANED(paned_container_vertical),scroll_list_zone); gtk_paned_add1(GTK_PANED(paned_container_horizontal),paned_container_vertical); gtk_paned_add2(GTK_PANED(paned_container_horizontal),fixed_container); // se conecta la senial "destroy" con la funcion gtk_main_quit g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(G_OBJECT(drawing_area), "draw", G_CALLBACK(draw_tree), &f); g_signal_connect(G_OBJECT(tree_box), "row-activated", G_CALLBACK(show_family_info),GTK_WINDOW(window)); g_signal_connect(G_OBJECT(list_box), "row-activated", G_CALLBACK(show_member_info),NULL); // los widget GTK estan escondidos por defecto, con esto los volvemos visibles gtk_widget_show_all (window); gtk_main (); return 0; }
int music_build_element_widgets () { int i = 0; for (i = 0; i < 9; i++) { label_music_info[i] = gtk_label_new(NULL); gtk_label_set_width_chars(GTK_LABEL(label_music_info[i]), 15); gtk_label_set_max_width_chars(GTK_LABEL(label_music_info[i]), 150); gtk_label_set_line_wrap(GTK_LABEL(label_music_info[i]), TRUE); } separator_music_info = gtk_separator_new(GTK_ORIENTATION_VERTICAL); for (i = 0; i < 9; i++) { label_music_lyric[i] = gtk_label_new(NULL); gtk_label_set_max_width_chars(GTK_LABEL(label_music_lyric[i]), 305); // gtk_label_set_line_wrap(GTK_LABEL(label_music_lyric[i]), TRUE); } gtk_label_set_selectable(GTK_LABEL(label_music_lyric[4]), TRUE); gtk_label_set_use_underline (GTK_LABEL(label_music_lyric[4]), TRUE); gtk_label_set_use_markup (GTK_LABEL(label_music_lyric[4]), TRUE); gtk_label_set_pattern (GTK_LABEL(label_music_lyric[4]), "________"); separator_music_lyric1 = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL); separator_music_lyric2 = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL); button_music_start_server = gtk_button_new_with_label("启动服务器"); // set_button_music_start_server(button_music_start_server); button_music_exit_server = gtk_button_new_with_label("关闭服务器"); // set_button_music_exit_server(button_music_exit_server); button_music_play = gtk_button_new(); // box_music_play = button_with_image("/usr/share/raspi_remote_control/ui_images/ui_images_music/play.png"); // box_music_pause = button_with_image("/usr/share/raspi_remote_control/ui_images/ui_images_music/pause.png"); image_music_play = gtk_image_new_from_file("/usr/share/raspi_remote_control/ui_images/ui_images_music/play.png"); image_music_play_light = gtk_image_new_from_file("/usr/share/raspi_remote_control/ui_images/ui_images_music/play_light.png"); image_music_pause = gtk_image_new_from_file ("/usr/share/raspi_remote_control/ui_images/ui_images_music/pause.png"); image_music_pause_light = gtk_image_new_from_file ("/usr/share/raspi_remote_control/ui_images/ui_images_music/pause_light.png"); gtk_button_set_relief(GTK_BUTTON(button_music_play), GTK_RELIEF_NONE); set_button_music_play(button_music_play); button_music_pause = gtk_button_new_with_label("暂停"); // set_button_music_pause(button_music_pause); button_music_unpause = gtk_button_new_with_label("取消暂停"); // set_button_music_unpause(button_music_unpause); // button_music_stop = gtk_button_new_with_label("停止"); button_music_stop = gtk_button_new(); image_music_stop = gtk_image_new_from_file ("/usr/share/raspi_remote_control/ui_images/ui_images_music/stop.png"); image_music_stop_light = gtk_image_new_from_file ("/usr/share/raspi_remote_control/ui_images/ui_images_music/stop_light.png"); gtk_button_set_image(GTK_BUTTON(button_music_stop), image_music_stop); gtk_button_set_relief(GTK_BUTTON(button_music_stop), GTK_RELIEF_NONE); set_button_music_stop(button_music_stop); // button_music_next = gtk_button_new_with_label("下一首"); button_music_next = gtk_button_new(); image_music_next = gtk_image_new_from_file("/usr/share/raspi_remote_control/ui_images/ui_images_music/next.png"); image_music_next_light = gtk_image_new_from_file("/usr/share/raspi_remote_control/ui_images/ui_images_music/next_light.png"); gtk_button_set_image(GTK_BUTTON(button_music_next), image_music_next); gtk_button_set_relief(GTK_BUTTON(button_music_next), GTK_RELIEF_NONE); set_button_music_next(button_music_next); // button_music_pre = gtk_button_new_with_label("上一首"); button_music_pre = gtk_button_new(); image_music_pre = gtk_image_new_from_file("/usr/share/raspi_remote_control/ui_images/ui_images_music/pre.png"); image_music_pre_light = gtk_image_new_from_file("/usr/share/raspi_remote_control/ui_images/ui_images_music/pre_light.png"); gtk_button_set_image (GTK_BUTTON(button_music_pre), image_music_pre); gtk_button_set_relief(GTK_BUTTON(button_music_pre), GTK_RELIEF_NONE); set_button_music_pre(button_music_pre); // button_music_volume_up = gtk_button_new_with_label("音量+"); // set_button_music_volume_up(button_music_volume_up); // button_music_volume_silence = gtk_button_new_with_label("静音"); button_music_silence = gtk_button_new(); image_music_silence = gtk_image_new_from_file("/usr/share/raspi_remote_control/ui_images/ui_images_music/silence.png"); image_music_silence_light = gtk_image_new_from_file("/usr/share/raspi_remote_control/ui_images/ui_images_music/silence_light.png"); image_music_unsilence = gtk_image_new_from_file("/usr/share/raspi_remote_control/ui_images/ui_images_music/unsilence.png"); image_music_unsilence_light = gtk_image_new_from_file("/usr/share/raspi_remote_control/ui_images/ui_images_music/unsilence_light.png"); gtk_button_set_image (GTK_BUTTON(button_music_silence), image_music_silence); gtk_button_set_relief(GTK_BUTTON(button_music_silence), GTK_RELIEF_NONE); set_button_music_silence(button_music_silence); button_music_volume = gtk_volume_button_new(); set_button_music_volume( button_music_volume); button_music_reset_list = gtk_button_new_with_label("重设列表"); set_button_music_reset_list(button_music_reset_list); // button_music_choose_path = gtk_button_new_with_label("添加路径"); // set_button_music_choose_path(button_music_choose_path); // music_path_dialog = gtk_file_chooser_widget_new(GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); music_path_dialog = gtk_file_chooser_dialog_new ("test_title", NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, "test_button_text", NULL); button_music_choose_path = gtk_file_chooser_button_new_with_dialog (music_path_dialog); gtk_file_chooser_button_set_title (GTK_FILE_CHOOSER_BUTTON(button_music_choose_path), "添加路径"); // gtk_file_chooser_set_select_multiple (music_path_dialog, TRUE); button_music_delete_path = gtk_button_new_with_label("删除当前路径"); set_button_music_delete_path(button_music_delete_path); scale_music_process = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 0, 100, 1); set_scale_music_process(scale_music_process); label_music_cur_time = gtk_label_new ("--:--:--"); label_music_total_time = gtk_label_new ("--:--:--"); switch_music_autonext = gtk_switch_new (); set_switch_music_autonext (); label_music_autonext = gtk_label_new ("AutoNext: "); switch_music_repeat = gtk_switch_new (); set_switch_music_repeat (); label_music_repeat = gtk_label_new ("Repeat: "); switch_music_shuffle = gtk_switch_new (); set_switch_music_shuffle (); label_music_shuffle = gtk_label_new ("Shuffle: "); radio_button_music_mode_shuffle = gtk_radio_button_new (NULL); label_music_mode_shuffle = gtk_label_new ("随机:"); radio_button_music_mode_loop_list = gtk_radio_button_new_from_widget (GTK_RADIO_BUTTON (radio_button_music_mode_shuffle)); label_music_mode_loop_list = gtk_label_new ("列表循环:"); radio_button_music_mode_play_list = gtk_radio_button_new_from_widget (GTK_RADIO_BUTTON (radio_button_music_mode_shuffle)); label_music_mode_play_list = gtk_label_new ("播放列表:"); radio_button_music_mode_loop_one = gtk_radio_button_new_from_widget (GTK_RADIO_BUTTON (radio_button_music_mode_shuffle)); label_music_mode_loop_one = gtk_label_new ("单曲:"); spinner_music_mode_changing = gtk_spinner_new (); set_radio_button_music_mode (); store_music_dir_list = gtk_tree_store_new(dir_n_columns, G_TYPE_STRING); tree_view_music_dir_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL(store_music_dir_list)); text_renderer_music_dir_list = gtk_cell_renderer_text_new (); column_music_dir_list = gtk_tree_view_column_new_with_attributes (NULL, text_renderer_music_dir_list, "text", dir_name, NULL); gtk_tree_view_column_set_fixed_width(column_music_dir_list, 100); gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view_music_dir_list), column_music_dir_list); music_dir_list_sw_adj_h = gtk_adjustment_new(100, 0, 100, 1, 1, 50); music_dir_list_sw = gtk_scrolled_window_new(NULL, music_dir_list_sw_adj_h); gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(music_dir_list_sw), 330); gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(music_dir_list_sw), 100); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(music_dir_list_sw), GTK_SHADOW_NONE); // gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(music_dir_list_sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(music_dir_list_sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(music_dir_list_sw), tree_view_music_dir_list); selection_music_dir_list = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view_music_dir_list)); set_tree_view_music_dir_list (); store_music_list = gtk_tree_store_new(list_n_columns, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); // char file_index[BUFSIZ]; // printf("music_list_num is: %s\n", music_list_num); // while (i < music_list_num) { // // printf("%d: %s\n", i, music_list[i]); // sprintf(file_index, "%d", i + 1); // gtk_tree_store_append(store_music_list, &iter_music_list, NULL); // gtk_tree_store_set (store_music_list, &iter_music_list, list_index, file_index, list_title, music_list[i], list_total_sec, "03:00", -1); // i++; // } // tree_view_music_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL(store_music_list)); text_renderer_music_list = gtk_cell_renderer_text_new (); column_music_list = gtk_tree_view_column_new_with_attributes (NULL, text_renderer_music_list, "text", list_index, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view_music_list), column_music_list); gtk_tree_view_column_set_title(column_music_list, "序号"); text_renderer_music_list = gtk_cell_renderer_text_new (); column_music_list = gtk_tree_view_column_new_with_attributes (NULL, text_renderer_music_list, "text", list_title, NULL); gtk_tree_view_column_set_fixed_width(column_music_list, 100); gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view_music_list), column_music_list); // text_renderer_music_list = gtk_cell_renderer_text_new (); // column_music_list = gtk_tree_view_column_new_with_attributes (NULL, text_renderer_music_list, "text", list_total_sec, NULL); // gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view_music_list), column_music_list); music_list_sw_adj_h = gtk_adjustment_new(100, 0, 100, 1, 1, 50); music_list_sw = gtk_scrolled_window_new(NULL, music_list_sw_adj_h); gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(music_list_sw), 370); gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(music_list_sw), 200); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(music_list_sw), GTK_SHADOW_NONE); // gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(music_list_sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(music_list_sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(music_list_sw), tree_view_music_list); selection_music_list = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view_music_list)); set_tree_view_music_list (); return 1; }
void toolbar2___::with__(window___* w, void*shangji,void*ce,deque<string>* p, int addr_fmt, char*buf) { toolbar2_item___* item; if((*p)[1] == toolbar2_tag2_) { init__(w->box2__(), left_icon_item_); item = left_icon_item_; } else if((*p)[1] == toolbar2_tag3_) { init__(w->box2__(), tree_item_); item = tree_item_; } else if((*p)[1] == toolbar2_tag4_) { init__(w->box3__(), right_icon_item_); item = right_icon_item_; } else if((*p)[1] == toolbar2_tag5_) { init__(w->box4__(), bottom_icon_item_); item = bottom_icon_item_; } else if((*p)[1] == toolbar2_tag6_) { init__(w->box3__(), right_tree_item_); item = right_tree_item_; } else { init__(w->box__(), icon_item_); item = icon_item_; } for(size_t i2=2;i2<p->size();i2++){ const string& p2=(*p)[i2]; if(p2 == "选择") { GtkTreeModel *m = item->model__(); GtkTreeIter i; GtkTreePath *path; for(size_t i3 = i2;i3 < p->size() - 1;) { int id2 = 0; if(!set__(i3, p, id2)) return; if(!iter_by_id__(m, id2, &i)) { buzhichi__(i3, p); return; } switch(item->tag_) { case 'i': path = gtk_tree_model_get_path (m, &i); gtk_icon_view_select_path (item->icon_view__(), path); gtk_tree_path_free (path); break; } } return; } if(p2 == "遍历") { if(buzu__(++i2, p)) return; item->for__((*p)[i2], ce, shangji); continue; } if(p2 == "设") { int id = 0; if(!set__(i2, p, id)) return; callback_item___* cbi = callback_item__(id); if(!cbi) { wufa__(p->size(), p); return; } GtkTreeModel *m = item->model__(); GtkTreeIter i; for(i2++; i2 < p->size(); i2++) { const string& p3 = (*p)[i2]; if(p3 == "名") { if(set__(i2, p, cbi->title_)) { if(!iter_by_id__(m, cbi->id_, &i)) { buzhichi__(i2, p); return; } switch(item->tag_) { case 'i': gtk_list_store_set(((icon_item___*)item)->store_, &i, TITLE_COLUMN, cbi->title_.c_str(), -1); continue; } } return; } if(p3 == "提示") {if(set__(i2, p, cbi->tooltip_)) continue; return;} if(p3 == "图标") { string name; if(!set__(i2, p, name)) return; GdkPixbuf *pixbuf = item->get_icon__(name); switch(item->tag_) { case 'i': gtk_list_store_set(((icon_item___*)item)->store_, &i, PIXBUF_COLUMN, pixbuf, -1); break; } g_object_unref (pixbuf); continue; } buzhichi__(i2, p); } break; } if(p2 == "获取") { string code3; if(!set__(i2, p, code3)) return; switch(item->tag_) { case 'i': icon_view_select__(item->icon_view__(), code3.c_str(), shangji, ce); break; } continue; } #ifdef ver_gtk3_ if(p2 == "宽") { if(buzu__(++i2, p)) return; gtk_scrolled_window_set_min_content_width(item->scrolled__(), s2i__((*p)[i2])); continue; } if(p2 == "高") { if(buzu__(++i2, p)) return; gtk_scrolled_window_set_min_content_height(item->scrolled__(), s2i__((*p)[i2])); continue; } #endif if(p2 == "名") { if(buzu__(++i2, p)) return; if(item->label_) { gtk_label_set_markup(GTK_LABEL(item->label_), (*p)[i2].c_str()); } continue; } if(p2 == "钮宽") {if(set__(i2, p, item->btn_width_)) continue; return;} if(p2 == "钮高") {if(set__(i2, p, item->btn_height_)) continue; return;} if(p2 == "名提示") {item->title_tooltip_ = true; continue;} if(p2 == "可拖动") { switch(item->tag_) { case 'i': gtk_icon_view_set_reorderable(item->icon_view__(), true); break; case 't': gtk_tree_view_set_reorderable(item->tree_view__(), true); break; } continue; } if(p2 == "可选择") { int i; if(!set__(i2, p, i)) return; switch(item->tag_) { case 'i': gtk_icon_view_set_selection_mode(item->icon_view__(), (GtkSelectionMode)i); break; } continue; } if(p2 == "无标题") { if(item->tag_ == 'i') { //gtk_icon_view_set_text_column (item->icon_view__(), -1); gtk_icon_view_set_markup_column (item->icon_view__(), -1); continue; } buzhichi__(i2, p); return; } //gtk_icon_view_set_selection_mode (iconview__(), GTK_SELECTION_MULTIPLE); if(p2 == "列头") { if(buzu__(++i2, p)) return; if(item->tag_ == 't') { tree_item___* ti = (tree_item___*)item; gtk_tree_view_column_set_title(ti->col_, (*p)[i2].c_str()); continue; } buzhichi__(i2, p); return; } if(p2 == "删钮") { GtkTreeModel *m = item->model__(); GtkTreeIter i; for(size_t i3 = i2;i3 < p->size() - 1;) { int id2 = 0; if(!set__(i3, p, id2)) return; if(!iter_by_id__(m, id2, &i)) { buzhichi__(i3, p); return; } item->store_del__(&i); } break; } if(p2 == "加钮") { string title, tooltip, code, arg, code2, arg2, code3_2; string set_up; int posi = -1; for(i2++;i2<p->size();i2++){ const string& p3=(*p)[i2]; if(p3 == "名") {if(set__(i2, p, title)) continue; return;} if(p3 == "提示") {if(set__(i2, p, tooltip)) continue; return;} if(p3 == "代码") {if(set__(i2, p, code)) continue; return;} if(p3 == "附") {if(set__(i2, p, arg)) continue; return;} if(p3 == "位置") {if(set__(i2, p, posi)) continue; return;} if(p3 == "缺省代码") {if(set__(i2, p, item->def_code_)) continue; return;} if(p3 == "缺省附") {if(set__(i2, p, item->def_arg_)) continue; return;} if(p3 == "双击代码") {if(set__(i2, p, code2)) continue; return;} if(p3 == "双击附") {if(set__(i2, p, arg2)) continue; return;} if(p3 == "缺省双击代码") {if(set__(i2, p, item->def_code2_)) continue; return;} if(p3 == "缺省双击附") {if(set__(i2, p, item->def_arg2_)) continue; return;} if(p3 == "右击代码") {if(set__(i2, p, code3_2)) continue; return;} if(p3 == "缺省右击代码") {if(set__(i2, p, item->def_code3_2_)) continue; return;} if(p3 == "设置上") {if(set__(i2, p, set_up)) continue; return;} if(p3 == "恢复上") { if(item->tag_ == 't') { string restore_up; if(set__(i2, p, restore_up)) { int err; const char* ret = call4__(ce, restore_up, shangji, 0, NULL, &err); if(err) return; ((tree_item___*)item)->up_ = ret; } } else { buzhichi__(i2, p); } return; } if(p3 == "大小") { if(buzu__(++i2, p)) return; item->btn_width_ = item->btn_height_ = s2i__((*p)[i2]) * 8; continue; } if(p3 == "-") continue; GdkPixbuf *pixbuf = item->get_icon__(p3); callback_item___* si = new callback_item___(title, !code.empty() ? code : item->def_code_, !arg.empty() ? arg : item->def_arg_, tooltip.empty() && item->title_tooltip_ ? title : tooltip); si->add_code__(!code2.empty() ? code2 : item->def_code2_); si->add_arg__(!arg2.empty() ? arg2 : item->def_arg2_); si->add_code__(!code3_2.empty() ? code3_2 : item->def_code3_2_); item->store_add__(si, pixbuf, posi); g_object_unref (pixbuf); if(!set_up.empty()) { if(item->tag_ == 't') { tree_item___* ti = (tree_item___*)item; const char* argv[] = {ti->up_.c_str()}; int err; call4__(ce, set_up, shangji, 1, argv, &err); if(err) return; ti->up_ = ti->last_; } else { buzhichi__(i2, p); return; } set_up.clear(); } code.clear(); arg.clear(); tooltip.clear(); code2.clear(); arg2.clear(); code3_2.clear(); posi = -1; } break; } if(p2 == "清空") { switch(item->tag_) { case 'i': gtk_list_store_clear (((icon_item___*)item)->store_); continue; } } if(p2 == "地址") { if(addr_fmt == 16) l2x__((long)item->scrolled_, buf); else l2s__((long)item->scrolled_, buf); continue; } buzhichi__(i2, p); return; } }
static void setup_main_window (UmUserPanelPrivate *d) { GtkWidget *userlist; GtkTreeModel *model; GtkListStore *store; GtkTreeViewColumn *column; GtkCellRenderer *cell; GtkTreeSelection *selection; GtkWidget *button; GtkTreeIter iter; gint expander_size; gchar *title; GIcon *icon; gchar *names[3]; userlist = get_widget (d, "list-treeview"); store = gtk_list_store_new (NUM_USER_LIST_COLS, UM_TYPE_USER, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_INT, G_TYPE_BOOLEAN); model = (GtkTreeModel *)store; gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (model), sort_users, NULL, NULL); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (model), GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_SORT_ASCENDING); gtk_tree_view_set_model (GTK_TREE_VIEW (userlist), model); gtk_tree_view_set_search_column (GTK_TREE_VIEW (userlist), USER_COL); gtk_tree_view_set_search_equal_func (GTK_TREE_VIEW (userlist), match_user, NULL, NULL); g_object_unref (model); g_signal_connect (d->um, "users-loaded", G_CALLBACK (users_loaded), d); gtk_widget_style_get (userlist, "expander-size", &expander_size, NULL); gtk_tree_view_set_level_indentation (GTK_TREE_VIEW (userlist), - (expander_size + 6)); title = g_strdup_printf ("<small><span foreground=\"#555555\">%s</span></small>", _("My Account")); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, TITLE_COL, title, HEADING_ROW_COL, TRUE, SORT_KEY_COL, 0, AUTOLOGIN_COL, FALSE, -1); g_free (title); title = g_strdup_printf ("<small><span foreground=\"#555555\">%s</span></small>", _("Other Accounts")); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, TITLE_COL, title, HEADING_ROW_COL, TRUE, SORT_KEY_COL, 2, AUTOLOGIN_COL, FALSE, -1); g_free (title); column = gtk_tree_view_column_new (); cell = gtk_cell_renderer_pixbuf_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (column), cell, FALSE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), cell, "pixbuf", FACE_COL); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), cell, "visible", USER_ROW_COL); cell = gtk_cell_renderer_text_new (); g_object_set (cell, "ellipsize", PANGO_ELLIPSIZE_END, NULL); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (column), cell, TRUE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), cell, "markup", NAME_COL); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), cell, "visible", USER_ROW_COL); cell = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (column), cell, TRUE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), cell, "markup", TITLE_COL); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), cell, "visible", HEADING_ROW_COL); cell = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_column_pack_start (column, cell, FALSE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (column), cell, "visible", USER_ROW_COL); gtk_tree_view_column_set_cell_data_func (column, cell, (GtkTreeCellDataFunc) autologin_cell_data_func, d, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (userlist), column); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (userlist)); gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE); g_signal_connect (selection, "changed", G_CALLBACK (selected_user_changed), d); gtk_tree_selection_set_select_function (selection, dont_select_headings, NULL, NULL); gtk_scrolled_window_set_min_content_width (GTK_SCROLLED_WINDOW (get_widget (d, "list-scrolledwindow")), 300); gtk_widget_set_size_request (get_widget (d, "list-scrolledwindow"), 200, -1); button = get_widget (d, "add-user-toolbutton"); g_signal_connect (button, "clicked", G_CALLBACK (add_user), d); button = get_widget (d, "remove-user-toolbutton"); g_signal_connect (button, "clicked", G_CALLBACK (delete_user), d); button = get_widget (d, "user-icon-nonbutton"); add_unlock_tooltip (button); button = get_widget (d, "full-name-entry"); g_signal_connect (button, "editing-done", G_CALLBACK (change_name_done), d); button = get_widget (d, "account-type-combo"); g_signal_connect (button, "editing-done", G_CALLBACK (account_type_changed), d); button = get_widget (d, "account-password-button"); g_signal_connect (button, "start-editing", G_CALLBACK (change_password), d); button = get_widget (d, "account-language-combo"); g_signal_connect (button, "editing-done", G_CALLBACK (language_changed), d); button = get_widget (d, "autologin-switch"); g_signal_connect (button, "notify::active", G_CALLBACK (autologin_changed), d); button = get_widget (d, "account-fingerprint-button"); g_signal_connect (button, "clicked", G_CALLBACK (change_fingerprint), d); d->permission = (GPermission *)polkit_permission_new_sync ("org.freedesktop.accounts.user-administration", NULL, NULL, NULL); g_signal_connect (d->permission, "notify", G_CALLBACK (on_permission_changed), d); on_permission_changed (d->permission, NULL, d); button = get_widget (d, "add-user-toolbutton"); names[0] = "changes-allow-symbolic"; names[1] = "changes-allow"; names[2] = NULL; icon = (GIcon *)g_themed_icon_new_from_names (names, -1); setup_tooltip_with_embedded_icon (button, _("To create a user account,\nclick the * icon first"), "*", icon); button = get_widget (d, "remove-user-toolbutton"); setup_tooltip_with_embedded_icon (button, _("To delete the selected user account,\nclick the * icon first"), "*", icon); g_object_unref (icon); }
int main(int argc, char ** argv) { GtkWidget * vbox; GtkWidget * hpaned; GtkWidget * sc_win, * sc_buffer; GtkWidget * menu_bar; GtkWidget * file_menu, * file_item; GtkWidget * generate_menu, * generate_item; GtkWidget * settings_menu, * settings_item; GtkWidget * zoom_box, * zoom_button; int i; //init general colors = (color_t *)malloc(NUM_COLORS * sizeof(color_t)); oldcolors = (color_t *)malloc(OLD_NUM_COLORS * sizeof(color_t)); memset(mdata, 0, BUFFER_COUNT * sizeof(unsigned char *)); memset(icons, 0, BUFFER_COUNT * sizeof(GtkWidget *)); memset(icon_event_boxes, 0, BUFFER_COUNT * sizeof(GtkWidget *)); mdata[current_buffer] = (unsigned char *)malloc(128 * 128); load_colors_plain(colors, "colors"); load_colors_plain(oldcolors, "oldcolors"); newcolors = colors; //save_colors(colors, "colors.bin"); //load_colors(colors, "colors.bin"); srand(time(NULL)); config = config_new(); //init gtk gtk_init(&argc, &argv); //window window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "ImageToMap X v" VERSION_NUMBER); g_signal_connect(window, "delete_event", G_CALLBACK(kill_window), NULL); //vbox #ifdef GTK2 vbox = gtk_vbox_new(FALSE, 0); #else vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); #endif gtk_frame_set_shadow_type(GTK_FRAME(vbox), GTK_SHADOW_IN); gtk_container_add(GTK_CONTAINER (window), vbox); gtk_widget_show(vbox); //////menu_bar menu_bar = gtk_menu_bar_new(); gtk_box_pack_start(GTK_BOX(vbox), menu_bar, FALSE, TRUE, 0); gtk_widget_show(menu_bar); ////////file_menu file_menu = gtk_menu_new(); //////////file_menu items construct_tool_bar_add(file_menu, "Open", ITEM_SIGNAL_OPEN); construct_tool_bar_add(file_menu, "Open Grid Image", ITEM_SIGNAL_OPEN_GRID_IMAGE); construct_tool_bar_add(file_menu, "Save", ITEM_SIGNAL_SAVE); construct_tool_bar_add(file_menu, "Save Increment", ITEM_SIGNAL_SAVE_INCREMENT); construct_tool_bar_add(file_menu, "Save All", ITEM_SIGNAL_SAVE_ALL); construct_tool_bar_add(file_menu, "Save Raw Map", ITEM_SIGNAL_SAVE_RM); construct_tool_bar_add(file_menu, "Export Image", ITEM_SIGNAL_EXPORT_IMAGE); /* construct_tool_bar_add_deactivate(file_menu, "Render World", ITEM_SIGNAL_WORLD_RENDER_ITEM); */ construct_tool_bar_add(file_menu, "Render World", ITEM_SIGNAL_WORLD_RENDER_ITEM); construct_tool_bar_add(file_menu, "Clean Buffer List", ITEM_SIGNAL_CLEAN); construct_tool_bar_add(file_menu, "Quit", ITEM_SIGNAL_QUIT); /////////file_item file_item = gtk_menu_item_new_with_label("File"); gtk_widget_show(file_item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(file_item), file_menu); gtk_menu_shell_append((GtkMenuShell *)menu_bar, file_item); ////////generate_menu generate_menu = gtk_menu_new(); //////////generate_menu items construct_tool_bar_add(generate_menu, "Mandelbrot", ITEM_SIGNAL_GENERATE_MANDELBROT); construct_tool_bar_add(generate_menu, "Julia", ITEM_SIGNAL_GENERATE_JULIA); construct_tool_bar_add(generate_menu, "Palette", ITEM_SIGNAL_GENERATE_PALETTE); construct_tool_bar_add(generate_menu, "Random Noise", ITEM_SIGNAL_GENERATE_RANDOM_NOISE); construct_tool_bar_add(generate_menu, "From Clipboard", ITEM_SIGNAL_GENERATE_FROM_CLIPBOARD); /////////generate_item generate_item = gtk_menu_item_new_with_label("Generate"); gtk_widget_show(generate_item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(generate_item), generate_menu); gtk_menu_shell_append((GtkMenuShell *)menu_bar, generate_item); ////////settings_menu settings_menu = gtk_menu_new(); ////////settings_item settings_item = gtk_menu_item_new_with_label("Settings"); gtk_widget_show(settings_item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(settings_item), settings_menu); gtk_menu_shell_append((GtkMenuShell *)menu_bar, settings_item); //////////FSD_checkbox FSD_checkbox = gtk_check_menu_item_new_with_label("Floyd–Steinberg dithering"); gtk_menu_shell_append(GTK_MENU_SHELL(settings_menu), FSD_checkbox); gtk_widget_show(FSD_checkbox); //////////YUV_checkbox YUV_checkbox = gtk_check_menu_item_new_with_label("YUV color conversion"); gtk_menu_shell_append(GTK_MENU_SHELL(settings_menu), YUV_checkbox); gtk_widget_show(YUV_checkbox); //////////old_colors_checkbox old_colors_checkbox = gtk_check_menu_item_new_with_label("Old Colors"); gtk_menu_shell_append(GTK_MENU_SHELL(settings_menu), old_colors_checkbox); gtk_widget_show(old_colors_checkbox); g_signal_connect_swapped(old_colors_checkbox, "toggled", G_CALLBACK(old_colors_checkbox_toggle), 0); //drop_down_menu init_drop_down_menu(); //hpaned #ifdef GTK2 hpaned = gtk_hpaned_new(); #else hpaned = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL); #endif gtk_widget_set_size_request (hpaned, 220, -1); gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0); gtk_widget_show(hpaned); ////sc_buffer sc_buffer = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sc_buffer), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); #ifdef GTK2 gtk_widget_set_size_request(sc_buffer, 128 + 32, 512); #else gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(sc_buffer), 128 + 32); gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(sc_buffer), 512); #endif gtk_paned_pack2(GTK_PANED(hpaned), sc_buffer, FALSE, FALSE); gtk_widget_show(sc_buffer); //////list_vbox #ifdef GTK2 list_vbox = gtk_vbox_new(FALSE, 0); #else list_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); #endif #ifdef GTK2 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sc_buffer), list_vbox); #else gtk_container_add(GTK_CONTAINER(sc_buffer), list_vbox); #endif gtk_widget_show(list_vbox); ////sc_win sc_win = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sc_win), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); #ifdef GTK2 gtk_widget_set_size_request(sc_win, 128 * 4, 128 * 4); gtk_window_resize(GTK_WINDOW(window), 128 * 4 + 200, 128 * 4 + 70); #else gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(sc_win), 128 * 4); gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(sc_win), 128 * 4); #endif gtk_paned_pack1(GTK_PANED(hpaned), sc_win, TRUE, FALSE); gtk_widget_show(sc_win); //////image dimage = gdk_pixbuf_new_from_file("start.png", NULL); image = gtk_image_new(); gtk_image_set_from_pixbuf(GTK_IMAGE(image), dimage); #ifdef GTK2 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sc_win), image); #else gtk_container_add(GTK_CONTAINER(sc_win), image); #endif gtk_widget_show(image); ////zoom_box #ifdef GTK2 zoom_box = gtk_hbox_new(FALSE, 0); #else zoom_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); #endif gtk_box_pack_start(GTK_BOX(vbox), zoom_box, FALSE, FALSE, 0); gtk_widget_show(zoom_box); //////zoom_button (+) zoom_button = gtk_button_new_with_label("+"); gtk_box_pack_start(GTK_BOX(zoom_box), zoom_button, TRUE, TRUE, 2); g_signal_connect(zoom_button, "clicked", G_CALLBACK(button_click2), "button.zoomp"); gtk_widget_show(zoom_button); //////zoom_button (|) zoom_button = gtk_button_new_with_label("|"); gtk_box_pack_start(GTK_BOX(zoom_box), zoom_button, TRUE, TRUE, 2); g_signal_connect(zoom_button, "clicked", G_CALLBACK(button_click2), "button.zoome"); gtk_widget_show(zoom_button); //////zoom_button (-) zoom_button = gtk_button_new_with_label("-"); gtk_box_pack_start(GTK_BOX(zoom_box), zoom_button, TRUE, TRUE, 2); g_signal_connect(zoom_button, "clicked", G_CALLBACK(button_click2), "button.zoomm"); gtk_widget_show(zoom_button); //icon gtk_window_set_icon(GTK_WINDOW(window), create_pixbuf("imagetomap.ico")); //Drag and drop gtk_drag_dest_set(window, GTK_DEST_DEFAULT_ALL, targets, sizeof(targets)/sizeof(*targets), GDK_ACTION_COPY); gtk_drag_dest_add_uri_targets(window); g_signal_connect(window, "drag-drop", G_CALLBACK(drag_drop), NULL); g_signal_connect(window, "drag-motion", G_CALLBACK(drag_motion), NULL); g_signal_connect(window, "drag-data-received", G_CALLBACK(drag_received), NULL); g_signal_connect(window, "drag-leave", G_CALLBACK(drag_leave), NULL); //display window gtk_widget_show (window); gtk_main(); //clean up free(colors); for(i = 0; i < BUFFER_COUNT; i++) free(mdata[i]); config_free(config); return 0; }