static void gimp_container_grid_view_clear_items (GimpContainerView *view) { GimpContainerGridView *grid_view = GIMP_CONTAINER_GRID_VIEW (view); grid_view->selected_item = NULL; while (GTK_WRAP_BOX (grid_view->wrap_box)->children) gtk_container_remove (GTK_CONTAINER (grid_view->wrap_box), GTK_WRAP_BOX (grid_view->wrap_box)->children->widget); parent_view_iface->clear_items (view); }
static gpointer gimp_container_grid_view_insert_item (GimpContainerView *container_view, GimpViewable *viewable, gpointer parent_insert_data, gint index) { GimpContainerGridView *grid_view = GIMP_CONTAINER_GRID_VIEW (container_view); GtkWidget *view; gint view_size; view_size = gimp_container_view_get_view_size (container_view, NULL); view = gimp_view_new_full (gimp_container_view_get_context (container_view), viewable, view_size, view_size, 1, FALSE, TRUE, TRUE); gimp_view_renderer_set_border_type (GIMP_VIEW (view)->renderer, GIMP_VIEW_BORDER_WHITE); gimp_view_renderer_remove_idle (GIMP_VIEW (view)->renderer); gtk_wrap_box_pack (GTK_WRAP_BOX (grid_view->wrap_box), view, FALSE, FALSE, FALSE, FALSE); if (index != -1) gtk_wrap_box_reorder_child (GTK_WRAP_BOX (grid_view->wrap_box), view, index); gtk_widget_show (view); g_signal_connect (view, "button-press-event", G_CALLBACK (gimp_container_grid_view_item_selected), container_view); g_signal_connect (view, "double-clicked", G_CALLBACK (gimp_container_grid_view_item_activated), container_view); g_signal_connect (view, "context", G_CALLBACK (gimp_container_grid_view_item_context), container_view); return (gpointer) view; }
static void gimp_container_grid_view_reorder_item (GimpContainerView *container_view, GimpViewable *viewable, gint new_index, gpointer insert_data) { GimpContainerGridView *grid_view = GIMP_CONTAINER_GRID_VIEW (container_view); GtkWidget *view = GTK_WIDGET (insert_data); gtk_wrap_box_reorder_child (GTK_WRAP_BOX (grid_view->wrap_box), view, new_index); }
static void gimp_container_grid_view_set_context (GimpContainerView *view, GimpContext *context) { GimpContainerGridView *grid_view = GIMP_CONTAINER_GRID_VIEW (view); GtkWrapBoxChild *child; parent_view_iface->set_context (view, context); for (child = GTK_WRAP_BOX (grid_view->wrap_box)->children; child; child = child->next) { GimpView *view = GIMP_VIEW (child->widget); gimp_view_renderer_set_context (view->renderer, context); } }
static void gimp_container_grid_view_set_view_size (GimpContainerView *view) { GimpContainerGridView *grid_view = GIMP_CONTAINER_GRID_VIEW (view); GtkWrapBoxChild *child; gint view_size; view_size = gimp_container_view_get_view_size (view, NULL); for (child = GTK_WRAP_BOX (grid_view->wrap_box)->children; child; child = child->next) { GimpView *view = GIMP_VIEW (child->widget); gimp_view_renderer_set_size (view->renderer, view_size, view->renderer->border_width); } gtk_widget_queue_resize (grid_view->wrap_box); }
gboolean sheets_dialog_create(void) { GList *plugin_list; GSList *sheets_list; GtkWidget *option_menu; GtkWidget *sw; GtkWidget *wrapbox; gchar *sheet_left; gchar *sheet_right; if (sheets_mods_list) { /* not sure if I understood the data structure * but simply leaking isn't acceptable ... --hb */ g_slist_foreach(sheets_mods_list, (GFunc)g_free, NULL); g_slist_free(sheets_mods_list); } sheets_mods_list = NULL; if (sheets_dialog == NULL) { sheets_dialog = create_sheets_main_dialog(); if (!sheets_dialog) { /* don not let a broken builder file crash Dia */ g_warning("SheetDialog creation failed"); return FALSE; } /* Make sure to null our pointer when destroyed */ g_signal_connect (G_OBJECT (sheets_dialog), "destroy", G_CALLBACK (gtk_widget_destroyed), &sheets_dialog); sheet_left = NULL; sheet_right = NULL; } else { option_menu = lookup_widget(sheets_dialog, "optionmenu_left"); sheet_left = g_object_get_data(G_OBJECT(option_menu), "active_sheet_name"); option_menu = lookup_widget(sheets_dialog, "optionmenu_right"); sheet_right = g_object_get_data(G_OBJECT(option_menu), "active_sheet_name"); wrapbox = lookup_widget(sheets_dialog, "wrapbox_left"); if (wrapbox) gtk_widget_destroy(wrapbox); wrapbox = lookup_widget(sheets_dialog, "wrapbox_right"); if (wrapbox) gtk_widget_destroy(wrapbox); } if (custom_type_symbol == NULL) { /* This little bit identifies a custom object symbol so we can tell the difference later between a SVG shape and a Programmed shape */ custom_type_symbol = NULL; for (plugin_list = dia_list_plugins(); plugin_list != NULL; plugin_list = g_list_next(plugin_list)) { PluginInfo *info = plugin_list->data; custom_type_symbol = (gpointer)dia_plugin_get_symbol (info, "custom_type"); if (custom_type_symbol) break; } } if (!custom_type_symbol) { message_warning (_("Can't get symbol 'custom_type' from any module.\n" "Editing shapes is disabled.")); return FALSE; } for (sheets_list = get_sheets_list(); sheets_list; sheets_list = g_slist_next(sheets_list)) sheets_append_sheet_mods(sheets_list->data); sw = lookup_widget(sheets_dialog, "scrolledwindow_right"); /* In case glade already add a child to scrolledwindow */ wrapbox = gtk_bin_get_child (GTK_BIN(sw)); if (wrapbox) gtk_container_remove(GTK_CONTAINER(sw), wrapbox); wrapbox = gtk_hwrap_box_new(FALSE); g_object_ref(wrapbox); g_object_set_data(G_OBJECT(sheets_dialog), "wrapbox_right", wrapbox); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), wrapbox); gtk_wrap_box_set_justify(GTK_WRAP_BOX(wrapbox), GTK_JUSTIFY_TOP); gtk_wrap_box_set_line_justify(GTK_WRAP_BOX(wrapbox), GTK_JUSTIFY_LEFT); gtk_widget_show(wrapbox); g_object_set_data(G_OBJECT(wrapbox), "is_left", FALSE); option_menu = lookup_widget(sheets_dialog, "optionmenu_right"); sheets_optionmenu_create(option_menu, wrapbox, sheet_right); sw = lookup_widget(sheets_dialog, "scrolledwindow_left"); /* In case glade already add a child to scrolledwindow */ wrapbox = gtk_bin_get_child (GTK_BIN(sw)); if (wrapbox) gtk_container_remove(GTK_CONTAINER(sw), wrapbox); wrapbox = gtk_hwrap_box_new(FALSE); g_object_ref(wrapbox); g_object_set_data(G_OBJECT(sheets_dialog), "wrapbox_left", wrapbox); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), wrapbox); gtk_wrap_box_set_justify(GTK_WRAP_BOX(wrapbox), GTK_JUSTIFY_TOP); gtk_wrap_box_set_line_justify(GTK_WRAP_BOX(wrapbox), GTK_JUSTIFY_LEFT); gtk_widget_show(wrapbox); g_object_set_data(G_OBJECT(wrapbox), "is_left", (gpointer)TRUE); option_menu = lookup_widget(sheets_dialog, "optionmenu_left"); sheets_optionmenu_create(option_menu, wrapbox, sheet_left); return TRUE; }