JNIEXPORT void JNICALL Java_org_gnome_gtk_GtkIconView_gtk_1icon_1view_1set_1reorderable ( JNIEnv* env, jclass cls, jlong _self, jboolean _reorderable ) { GtkIconView* self; gboolean reorderable; // convert parameter self self = (GtkIconView*) _self; // convert parameter reorderable reorderable = (gboolean) _reorderable; // call function gtk_icon_view_set_reorderable(self, reorderable); // cleanup parameter self // cleanup parameter reorderable }
/* The main GUI function for saving multi-paged PDFs */ static gboolean gui_multi (void) { GtkWidget *window; GtkWidget *vbox; GtkWidget *file_label; GtkWidget *file_entry; GtkWidget *file_browse; GtkWidget *file_hbox; GtkWidget *vectorize_c; GtkWidget *ignore_hidden_c; GtkWidget *apply_c; GtkWidget *scroll; GtkWidget *page_view; GtkWidget *h_but_box; GtkWidget *del; GtkWidget *h_box; GtkWidget *img_combo; GtkWidget *add_image; gboolean run; const gchar *temp; gimp_ui_init (PLUG_IN_BINARY, FALSE); window = gimp_export_dialog_new ("PDF", PLUG_IN_ROLE, SAVE_MULTI_PROC); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 10); gtk_box_pack_start (GTK_BOX (gimp_export_dialog_get_content_area (window)), vbox, TRUE, TRUE, 0); gtk_container_set_border_width (GTK_CONTAINER (window), 12); file_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5); file_label = gtk_label_new (_("Save to:")); file_entry = gtk_entry_new (); if (file_name != NULL) gtk_entry_set_text (GTK_ENTRY (file_entry), file_name); file_browse = gtk_button_new_with_label (_("Browse...")); file_choose = gtk_file_chooser_dialog_new (_("Multipage PDF export"), GTK_WINDOW (window), GTK_FILE_CHOOSER_ACTION_SAVE, "gtk-save", GTK_RESPONSE_OK, "gtk-cancel", GTK_RESPONSE_CANCEL, NULL); gtk_box_pack_start (GTK_BOX (file_hbox), file_label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (file_hbox), file_entry, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (file_hbox), file_browse, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), file_hbox, TRUE, TRUE, 0); page_view = gtk_icon_view_new (); model = create_model (); gtk_icon_view_set_model (GTK_ICON_VIEW (page_view), model); gtk_icon_view_set_reorderable (GTK_ICON_VIEW (page_view), TRUE); gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (page_view), GTK_SELECTION_MULTIPLE); gtk_icon_view_set_pixbuf_column (GTK_ICON_VIEW (page_view), THUMB); gtk_icon_view_set_text_column (GTK_ICON_VIEW (page_view), PAGE_NUMBER); gtk_icon_view_set_tooltip_column (GTK_ICON_VIEW (page_view), IMAGE_NAME); scroll = gtk_scrolled_window_new (NULL, NULL); gtk_widget_set_size_request (scroll, -1, 300); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); gtk_container_add (GTK_CONTAINER (scroll), page_view); gtk_box_pack_start (GTK_BOX (vbox), scroll, TRUE, TRUE, 0); h_but_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout (GTK_BUTTON_BOX (h_but_box), GTK_BUTTONBOX_START); del = gtk_button_new_with_label (_("Remove the selected pages")); gtk_box_pack_start (GTK_BOX (h_but_box), del, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (vbox), h_but_box, FALSE, FALSE, 0); h_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5); img_combo = gimp_image_combo_box_new (NULL, NULL); gtk_box_pack_start (GTK_BOX (h_box), img_combo, FALSE, FALSE, 0); add_image = gtk_button_new_with_label (_("Add this image")); gtk_box_pack_start (GTK_BOX (h_box), add_image, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), h_box, FALSE, FALSE, 0); ignore_hidden_c = gtk_check_button_new_with_label (_("Omit hidden layers and layers with zero opacity")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ignore_hidden_c), optimize.ignore_hidden); gtk_box_pack_end (GTK_BOX (vbox), ignore_hidden_c, FALSE, FALSE, 0); vectorize_c = gtk_check_button_new_with_label (_("Convert bitmaps to vector graphics where possible")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (vectorize_c), optimize.vectorize); gtk_box_pack_end (GTK_BOX (vbox), vectorize_c, FALSE, FALSE, 0); apply_c = gtk_check_button_new_with_label (_("Apply layer masks before saving")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (apply_c), optimize.apply_masks); gtk_box_pack_end (GTK_BOX (vbox), apply_c, FALSE, FALSE, 0); gimp_help_set_help_data (apply_c, _("Keeping the masks will not change the output"), NULL); gtk_widget_show_all (window); g_signal_connect (G_OBJECT (file_browse), "clicked", G_CALLBACK (choose_file_call), G_OBJECT (file_entry)); g_signal_connect (G_OBJECT (add_image), "clicked", G_CALLBACK (add_image_call), G_OBJECT (img_combo)); g_signal_connect (G_OBJECT (del), "clicked", G_CALLBACK (del_image_call), G_OBJECT (page_view)); g_signal_connect (G_OBJECT (model), "row-deleted", G_CALLBACK (remove_call), NULL); run = gtk_dialog_run (GTK_DIALOG (window)) == GTK_RESPONSE_OK; run &= get_image_list (); temp = gtk_entry_get_text (GTK_ENTRY (file_entry)); g_stpcpy (file_name, temp); optimize.ignore_hidden = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (ignore_hidden_c)); optimize.vectorize = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (vectorize_c)); optimize.apply_masks = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (apply_c)); gtk_widget_destroy (window); return run; }
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; } }
GtkWidget * do_iconview_edit (GtkWidget *do_widget) { if (!window) { GtkWidget *icon_view; GtkListStore *store; GtkCellRenderer *renderer; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_screen (GTK_WINDOW (window), gtk_widget_get_screen (do_widget)); gtk_window_set_title (GTK_WINDOW (window), "Editing and Drag-and-Drop"); g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window); store = create_store (); fill_store (store); icon_view = gtk_icon_view_new_with_model (GTK_TREE_MODEL (store)); g_object_unref (store); gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (icon_view), GTK_SELECTION_SINGLE); gtk_icon_view_set_item_orientation (GTK_ICON_VIEW (icon_view), GTK_ORIENTATION_HORIZONTAL); gtk_icon_view_set_columns (GTK_ICON_VIEW (icon_view), 2); gtk_icon_view_set_reorderable (GTK_ICON_VIEW (icon_view), TRUE); renderer = gtk_cell_renderer_pixbuf_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (icon_view), renderer, TRUE); gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (icon_view), renderer, set_cell_color, NULL, NULL); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (icon_view), renderer, TRUE); g_object_set (renderer, "editable", TRUE, NULL); g_signal_connect (renderer, "edited", G_CALLBACK (edited), icon_view); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (icon_view), renderer, "text", COL_TEXT, NULL); gtk_container_add (GTK_CONTAINER (window), icon_view); } if (!gtk_widget_get_visible (window)) gtk_widget_show_all (window); else { gtk_widget_destroy (window); window = NULL; } return window; }
static gboolean remap_dialog (gint32 image_ID, guchar *map) { GtkWidget *dialog; GtkWidget *vbox; GtkWidget *box; GtkWidget *iconview; GtkListStore *store; GtkCellRenderer *renderer; GtkTreeIter iter; guchar *cmap; gint ncols, i; gboolean valid; gimp_ui_init (PLUG_IN_BINARY, FALSE); dialog = gimp_dialog_new (_("Rearrange Colormap"), PLUG_IN_ROLE, NULL, 0, gimp_standard_help_func, PLUG_IN_PROC_REMAP, GIMP_STOCK_RESET, RESPONSE_RESET, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), RESPONSE_RESET, GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1); gimp_window_set_transient (GTK_WINDOW (dialog)); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), vbox, TRUE, TRUE, 0); cmap = gimp_image_get_colormap (image_ID, &ncols); g_return_val_if_fail ((ncols > 0) && (ncols <= 256), FALSE); store = gtk_list_store_new (NUM_COLS, G_TYPE_INT, G_TYPE_STRING, GIMP_TYPE_RGB, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE); for (i = 0; i < ncols; i++) { GimpRGB rgb; GimpHSV hsv; gint index = map[i]; gchar *text = g_strdup_printf ("%d", index); gimp_rgb_set_uchar (&rgb, cmap[index * 3], cmap[index * 3 + 1], cmap[index * 3 + 2]); gimp_rgb_to_hsv (&rgb, &hsv); reverse_order[i] = ncols - i - 1; gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, COLOR_INDEX, index, COLOR_INDEX_TEXT, text, COLOR_RGB, &rgb, COLOR_H, hsv.h, COLOR_S, hsv.s, COLOR_V, hsv.v, -1); g_free (text); } g_free (cmap); remap_ui = remap_ui_manager_new (dialog, store); iconview = gtk_icon_view_new_with_model (GTK_TREE_MODEL (store)); g_object_unref (store); gtk_box_pack_start (GTK_BOX (vbox), iconview, TRUE, TRUE, 0); gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (iconview), GTK_SELECTION_SINGLE); gtk_icon_view_set_orientation (GTK_ICON_VIEW (iconview), GTK_ORIENTATION_VERTICAL); gtk_icon_view_set_columns (GTK_ICON_VIEW (iconview), 16); gtk_icon_view_set_row_spacing (GTK_ICON_VIEW (iconview), 0); gtk_icon_view_set_column_spacing (GTK_ICON_VIEW (iconview), 0); gtk_icon_view_set_reorderable (GTK_ICON_VIEW (iconview), TRUE); renderer = gimp_cell_renderer_color_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (iconview), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (iconview), renderer, "color", COLOR_RGB, NULL); g_object_set (renderer, "width", 24, NULL); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (iconview), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (iconview), renderer, "text", COLOR_INDEX_TEXT, NULL); g_object_set (renderer, "size-points", 6.0, "xalign", 0.5, "ypad", 0, NULL); g_signal_connect (iconview, "popup-menu", G_CALLBACK (remap_popup_menu), NULL); g_signal_connect (iconview, "button-press-event", G_CALLBACK (remap_button_press), NULL); box = gimp_hint_box_new (_("Drag and drop colors to rearrange the colormap. " "The numbers shown are the original indices. " "Right-click for a menu with sort options.")); gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, FALSE, 0); gtk_widget_show (box); g_signal_connect (dialog, "response", G_CALLBACK (remap_response), store); gtk_widget_show_all (dialog); gtk_main (); i = 0; for (valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter); valid; valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter)) { gint index; gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, COLOR_INDEX, &index, -1); map[i++] = index; } gtk_widget_destroy (dialog); return remap_run; }