void info_window_new(const gchar *path, GList *list) { InfoData *id; GtkWidget *main_vbox; GtkWidget *paned; GtkWidget *hbox; GtkWidget *button; GtkWidget *label; GdkGeometry geometry; if (!path && !list) return; if (!list) { list = g_list_append(NULL, g_strdup(path)); } id = g_new0(InfoData, 1); id->list = list; id->path = (gchar *)id->list->data; id->updated = FALSE; id->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_type_hint(GTK_WINDOW(id->window), GDK_WINDOW_TYPE_HINT_DIALOG); window_set_icon(id->window, NULL, NULL); gtk_window_set_resizable(GTK_WINDOW(id->window), TRUE); gtk_window_set_title(GTK_WINDOW(id->window), _("Image properties - GQview")); gtk_window_set_wmclass(GTK_WINDOW(id->window), "properties", "GQview"); geometry.min_width = 32; geometry.min_height = 32; geometry.base_width = DEF_PROPERTY_WIDTH; geometry.base_height = DEF_PROPERTY_HEIGHT; gtk_window_set_geometry_hints(GTK_WINDOW(id->window), NULL, &geometry, GDK_HINT_MIN_SIZE | GDK_HINT_BASE_SIZE); gtk_window_set_default_size(GTK_WINDOW(id->window), info_window_last_width, info_window_last_height); gtk_container_set_border_width(GTK_CONTAINER(id->window), PREF_PAD_BORDER); g_signal_connect(G_OBJECT(id->window), "delete_event", G_CALLBACK(info_window_delete_cb), id); g_signal_connect(G_OBJECT(id->window), "destroy", G_CALLBACK(info_window_destroy_cb), id); paned = gtk_hpaned_new(); gtk_container_add(GTK_CONTAINER(id->window), paned); gtk_widget_show(paned); id->image = image_new(FALSE); image_set_update_func(id->image, info_window_image_update_cb, id); image_set_button_func(id->image, info_window_image_button_cb, id); image_set_scroll_func(id->image, info_window_image_scroll_cb, id); gtk_widget_set_size_request(id->image->widget, IMAGE_SIZE_W, IMAGE_SIZE_H); gtk_paned_pack1(GTK_PANED(paned), id->image->widget, FALSE, TRUE); gtk_widget_show(id->image->widget); main_vbox = gtk_vbox_new(FALSE, 0); gtk_paned_pack2(GTK_PANED(paned), main_vbox, TRUE, TRUE); gtk_widget_show(main_vbox); hbox = pref_box_new(main_vbox, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE); label = pref_label_new(hbox, _("Filename:")); pref_label_bold(label, TRUE, FALSE); id->name_entry = gtk_entry_new(); gtk_editable_set_editable(GTK_EDITABLE(id->name_entry), FALSE); gtk_box_pack_start(GTK_BOX(hbox), id->name_entry, TRUE, TRUE, 0); gtk_widget_show(id->name_entry); id->notebook = gtk_notebook_new(); gtk_notebook_set_tab_pos(GTK_NOTEBOOK(id->notebook), GTK_POS_TOP); gtk_box_pack_start(GTK_BOX(main_vbox), id->notebook, TRUE, TRUE, 5); gtk_widget_show(id->notebook); pref_spacer(main_vbox, PREF_PAD_GAP); hbox = pref_box_new(main_vbox, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_GAP); id->button_back = pref_button_new(hbox, GTK_STOCK_GO_BACK, NULL, TRUE, G_CALLBACK(info_window_back_cb), id); gtk_widget_set_sensitive(id->button_back, FALSE); id->button_next = pref_button_new(hbox, GTK_STOCK_GO_FORWARD, NULL, TRUE, G_CALLBACK(info_window_next_cb), id); gtk_widget_set_sensitive(id->button_next, (id->list->next != NULL)); if (id->list->next) { id->label_count = pref_label_new(hbox, ""); } button = pref_button_new(NULL, GTK_STOCK_CLOSE, NULL, FALSE, G_CALLBACK(info_window_close_cb), id); gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_widget_show(button); /* set up tabs */ info_tabs_init(id); /* fill it */ info_window_sync(id, id->path); /* finish */ info_window_dnd_init(id); gtk_widget_show(id->window); }
static void view_image_set_buttons(ViewWindow *vw, ImageWindow *imd) { image_set_button_func(imd, button_cb, vw); image_set_scroll_func(imd, scroll_cb, vw); }