37 #include <sys/types.h>
44 #include <gdk/gdkkeysyms.h>
61 #define WIN_TITLE N_("Gerbv -- gEDA's Gerber Viewer")
63 #define dprintf if(DEBUG) printf
67 rename_main_window(
char const* filename, GtkWidget *main_win)
69 GString *win_title=g_string_new(NULL);
70 static GtkWidget *win=NULL;
72 if( main_win != NULL )
75 g_assert(win != NULL);
77 g_string_printf (win_title, _(
"%s version %s: %s"), _(WIN_TITLE), VERSION, filename);
78 gtk_window_set_title(GTK_WINDOW(win), win_title->str);
79 g_string_free(win_title,TRUE);
84 set_window_icon (GtkWidget * this_window)
89 pixmap = gdk_pixmap_create_from_xpm_d (this_window->window, &mask,
90 &this_window->style->bg[GTK_STATE_NORMAL], gerbv_icon_xpm);
91 gdk_window_set_icon (this_window->window, NULL, pixmap, mask);
98 interface_load_accels (
void)
100 gchar *accel_map_filename = g_build_filename (g_get_home_dir(), GERBV_ACCELS_RELPATH, NULL);
101 if (accel_map_filename) {
102 gtk_accel_map_load (accel_map_filename);
103 g_free (accel_map_filename);
109 interface_save_accels (
void)
111 gchar *accel_map_filename = g_build_filename (g_get_home_dir(), GERBV_ACCELS_RELPATH, NULL);
112 if (accel_map_filename) {
113 gtk_accel_map_save (accel_map_filename);
114 g_free (accel_map_filename);
120 interface_create_gui (
int req_width,
int req_height)
124 GtkWidget *mainWindow;
128 GtkWidget *menuitem_file;
129 GtkWidget *menuitem_file_menu;
131 GtkWidget *open_project;
132 GtkWidget *open_layer;
136 GtkWidget *save_layer;
137 GtkWidget *save_as_layer;
138 GtkWidget *separatormenuitem1;
139 GtkWidget *menuitem_file_export;
140 GtkWidget *menuitem_file_export_menu;
144 GtkWidget *postscript;
145 GtkWidget *rs274x,*drill,*rs274xm,*drillm;
147 GtkWidget *separator1;
148 #if GTK_CHECK_VERSION(2,10,0)
150 GtkWidget *separator2;
154 GtkWidget *menuitem_edit;
155 GtkWidget *menuitem_edit_menu;
156 GtkWidget *properties_selected;
157 GtkWidget *delete_selected;
158 GtkWidget *menuitem_view;
159 GtkWidget *menuitem_view_menu;
160 GtkWidget *view_fullscreen;
161 GtkWidget *show_toolbar;
162 GtkWidget *show_sidepane;
163 GtkWidget *separator3;
164 GtkWidget *toggle_layer_visibility_item1;
165 GtkWidget *toggle_layer_visibility_item2;
166 GtkWidget *toggle_layer_visibility_item3;
167 GtkWidget *toggle_layer_visibility_item4;
168 GtkWidget *toggle_layer_visibility_item5;
169 GtkWidget *toggle_layer_visibility_item6;
170 GtkWidget *toggle_layer_visibility_item7;
171 GtkWidget *toggle_layer_visibility_item8;
172 GtkWidget *toggle_layer_visibility_item9;
173 GtkWidget *toggle_layer_visibility_item10;
174 GtkWidget *separator4;
177 GtkWidget *fit_to_window;
178 GtkWidget *separator5;
179 GtkWidget *backgroundColor;
180 GtkWidget *menuitem_view_render, *menuitem_view_render_menu;
181 GSList *menu_view_render_group;
182 GtkWidget *render_fast, *render_fast_xor, *render_normal, *render_hq;
183 GtkWidget *menuitem_view_unit, *menuitem_view_unit_menu;
184 GSList *menu_view_unit_group;
185 GtkWidget *unit_mil, *unit_mm, *unit_in;
186 GtkWidget *menuitem_layer;
187 GtkWidget *menuitem_layer_menu;
188 GtkWidget *layer_visibility;
189 GtkWidget *layer_visibility_all_on;
190 GtkWidget *layer_visibility_all_off;
191 GtkWidget *layer_invert;
192 GtkWidget *layer_color;
193 GtkWidget *layer_reload;
194 GtkWidget *separator6;
195 GtkWidget *layer_edit;
196 GtkWidget *layer_format;
197 GtkWidget *separator7;
199 GtkWidget *layer_down;
200 GtkWidget *layer_remove;
201 GtkWidget *menuitem_analyze;
202 GtkWidget *menuitem_analyze_menu;
203 GtkWidget *analyze_active_gerbers;
204 GtkWidget *analyze_active_drill;
205 GtkWidget *analyze_benchmark;
207 GtkWidget *menuitem_tools;
208 GtkWidget *menuitem_tools_menu;
209 GtkWidget *toggletoolbutton_pointer;
210 GtkWidget *pointer_tool;
211 GdkPixbuf *pointerpixbuf;
212 GtkWidget *pointerimage;
214 GtkWidget *zoom_tool;
215 GtkWidget *measure_tool;
216 GtkWidget *menuitem_help;
217 GtkWidget *layer_visibility_menu;
218 GtkWidget *layer_visibility_main_menu;
219 GtkWidget *menuitem_help_menu;
222 GtkWidget *bugs_menuitem;
224 GtkWidget *toolbar_hbox;
225 GtkWidget *handlebox;
226 GtkWidget *button_toolbar;
228 GtkWidget *toolbutton_new;
229 GtkWidget *toolbutton_open;
230 GtkWidget *toolbutton_revert;
231 GtkWidget *toolbutton_save;
232 GtkWidget *separatortoolitem1;
233 #if GTK_CHECK_VERSION(2,10,0)
234 GtkWidget *toolbutton_print;
235 GtkWidget *separatortoolitem2;
237 GtkWidget *toolbutton_zoom_in;
238 GtkWidget *toolbutton_zoom_out;
239 GtkWidget *toolbutton_zoom_fit;
245 GtkWidget *separatortoolitem4;
246 GtkWidget *toggletoolbutton_pan;
247 GtkWidget *toggletoolbutton_zoom;
248 GtkWidget *toggletoolbutton_measure;
250 GtkWidget *sidepane_vbox;
251 GtkWidget *sidepane_notebook;
255 GtkWidget *render_combobox;
256 GtkWidget *scrolledwindow1;
266 GtkWidget *Layer_label;
268 GtkWidget *messages_scrolledwindow;
269 GtkWidget *message_textview;
270 GtkWidget *clear_messages_button;
271 GtkWidget *Message_label;
273 GtkWidget *main_view_table;
277 GtkWidget *statusbar_label_left;
278 GtkWidget *statusUnitComboBox;
279 GtkWidget *statusbar_label_right;
280 GtkWidget *drawingarea, *hAdjustment, *vAdjustment, *hScrollbar, *vScrollbar;
282 GtkAccelGroup *accel_group;
283 GtkTooltips *tooltips;
286 GdkPixbuf *zoompixbuf;
287 GtkWidget *zoomimage;
288 GdkPixbuf *measurepixbuf;
289 GtkWidget *measureimage;
290 GdkPixbuf *movepixbuf;
291 GtkWidget *moveimage;
293 GtkWidget *tempImage;
295 pointerpixbuf = gdk_pixbuf_new_from_inline(-1, pointer, FALSE, NULL);
296 movepixbuf = gdk_pixbuf_new_from_inline(-1, move, FALSE, NULL);
297 zoompixbuf = gdk_pixbuf_new_from_inline(-1, lzoom, FALSE, NULL);
298 measurepixbuf = gdk_pixbuf_new_from_inline(-1, ruler, FALSE, NULL);
300 tooltips = gtk_tooltips_new();
301 accel_group = gtk_accel_group_new ();
303 mainWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
304 gtk_window_set_title (GTK_WINDOW (mainWindow), _(WIN_TITLE));
306 vbox1 = gtk_vbox_new (FALSE, 0);
307 gtk_container_add (GTK_CONTAINER (mainWindow), vbox1);
309 menubar1 = gtk_menu_bar_new ();
310 gtk_box_pack_start (GTK_BOX (vbox1), menubar1, FALSE, FALSE, 0);
313 menuitem_file = gtk_menu_item_new_with_mnemonic (_(
"_File"));
314 gtk_container_add (GTK_CONTAINER (menubar1), menuitem_file);
317 menuitem_file_menu = gtk_menu_new ();
318 gtk_menu_set_accel_group (GTK_MENU(menuitem_file_menu), accel_group);
319 gtk_menu_set_accel_path (GTK_MENU(menuitem_file_menu), ACCEL_FILE);
320 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem_file), menuitem_file_menu);
322 new = gtk_image_menu_item_new_from_stock (GTK_STOCK_NEW, NULL);
323 SET_ACCELS_FROM_STOCK (
new, GTK_STOCK_NEW, ACCEL_FILE_NEW);
324 gtk_tooltips_set_tip (tooltips,
new, _(
"Close all layers and start a new project"), NULL);
325 gtk_container_add (GTK_CONTAINER (menuitem_file_menu),
new);
327 open_project = gtk_image_menu_item_new_with_mnemonic (_(
"_Open project..."));
328 gtk_container_add (GTK_CONTAINER (menuitem_file_menu), open_project);
329 gtk_tooltips_set_tip (tooltips, open_project, _(
"Open an existing Gerbv project"), NULL);
330 tempImage = gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU);
331 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (open_project), tempImage);
333 save = gtk_image_menu_item_new_with_mnemonic (_(
"Save project"));
334 screen.win.curFileMenuItem1 = save;
335 gtk_tooltips_set_tip (tooltips, save, _(
"Save the current project"), NULL);
336 tempImage = gtk_image_new_from_stock (GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU);
337 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (save), tempImage);
338 gtk_container_add (GTK_CONTAINER (menuitem_file_menu), save);
340 save_as = gtk_image_menu_item_new_with_mnemonic (_(
"Save project as..."));
341 screen.win.curFileMenuItem2 = save_as;
342 gtk_tooltips_set_tip (tooltips, save_as, _(
"Save the current project to a new file"), NULL);
343 tempImage = gtk_image_new_from_stock (GTK_STOCK_SAVE_AS, GTK_ICON_SIZE_MENU);
344 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (save_as), tempImage);
345 gtk_container_add (GTK_CONTAINER (menuitem_file_menu), save_as);
347 revert = gtk_image_menu_item_new_from_stock (GTK_STOCK_REVERT_TO_SAVED, NULL);
348 screen.win.curFileMenuItem3 = revert;
349 SET_ACCELS_FROM_STOCK (revert, GTK_STOCK_REVERT_TO_SAVED, ACCEL_FILE_REVERT);
350 gtk_tooltips_set_tip (tooltips, revert, _(
"Reload all layers"), NULL);
351 gtk_container_add (GTK_CONTAINER (menuitem_file_menu), revert);
354 separator1 = gtk_separator_menu_item_new ();
355 gtk_container_add (GTK_CONTAINER (menuitem_file_menu), separator1);
356 gtk_widget_set_sensitive (separator1, FALSE);
358 open_layer = gtk_menu_item_new_with_mnemonic (_(
"Open _layer(s)..."));
359 SET_ACCELS (open_layer, ACCEL_FILE_OPEN_LAYER);
360 gtk_container_add (GTK_CONTAINER (menuitem_file_menu), open_layer);
361 gtk_tooltips_set_tip (tooltips, open_layer, _(
"Open Gerber, drill, or pick and place file(s)"), NULL);
363 save_layer = gtk_menu_item_new_with_mnemonic (_(
"_Save active layer"));
364 screen.win.curFileMenuItem4 = save_layer;
365 gtk_tooltips_set_tip (tooltips, save_layer, _(
"Save the active layer"), NULL);
366 SET_ACCELS (save_layer, ACCEL_FILE_SAVE_LAYER);
367 gtk_container_add (GTK_CONTAINER (menuitem_file_menu), save_layer);
369 save_as_layer = gtk_menu_item_new_with_mnemonic (_(
"Save active layer _as..."));
370 screen.win.curFileMenuItem5 = save_as_layer;
371 gtk_tooltips_set_tip (tooltips, save_as_layer, _(
"Save the active layer to a new file"), NULL);
372 SET_ACCELS (save_as_layer, ACCEL_FILE_SAVE_LAYER_AS);
373 gtk_container_add (GTK_CONTAINER (menuitem_file_menu), save_as_layer);
376 separatormenuitem1 = gtk_separator_menu_item_new ();
377 gtk_container_add (GTK_CONTAINER (menuitem_file_menu), separatormenuitem1);
378 gtk_widget_set_sensitive (separatormenuitem1, FALSE);
380 menuitem_file_export = gtk_menu_item_new_with_mnemonic (_(
"_Export"));
381 screen.win.curFileMenuItem6 = menuitem_file_export;
382 gtk_tooltips_set_tip (tooltips, menuitem_file_export, _(
"Export all visible layers to a new format"), NULL);
383 gtk_container_add (GTK_CONTAINER (menuitem_file_menu), menuitem_file_export);
385 menuitem_file_export_menu = gtk_menu_new ();
386 gtk_menu_set_accel_group (GTK_MENU(menuitem_file_export_menu), accel_group);
387 gtk_menu_set_accel_path (GTK_MENU(menuitem_file_export_menu), ACCEL_FILE_EXPORT);
388 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem_file_export), menuitem_file_export_menu);
390 png = gtk_menu_item_new_with_mnemonic (_(
"P_NG..."));
391 gtk_container_add (GTK_CONTAINER (menuitem_file_export_menu), png);
392 gtk_tooltips_set_tip (tooltips, png, _(
"Export project to a PNG file..."), NULL);
394 pdf = gtk_menu_item_new_with_mnemonic (_(
"P_DF..."));
395 gtk_container_add (GTK_CONTAINER (menuitem_file_export_menu), pdf);
396 gtk_tooltips_set_tip (tooltips, pdf, _(
"Export project to a PDF file..."), NULL);
398 svg = gtk_menu_item_new_with_mnemonic (_(
"_SVG..."));
399 gtk_container_add (GTK_CONTAINER (menuitem_file_export_menu), svg);
400 gtk_tooltips_set_tip (tooltips, svg, _(
"Export project to a SVG file"), NULL);
402 postscript = gtk_menu_item_new_with_mnemonic (_(
"_PostScript..."));
403 gtk_container_add (GTK_CONTAINER (menuitem_file_export_menu), postscript);
404 gtk_tooltips_set_tip (tooltips, postscript, _(
"Export project to a PostScript file"), NULL);
406 rs274x = gtk_menu_item_new_with_mnemonic (_(
"RS-274X (_Gerber)..."));
407 gtk_container_add (GTK_CONTAINER (menuitem_file_export_menu), rs274x);
408 gtk_tooltips_set_tip (tooltips, rs274x, _(
"Export layer to a RS-274X (Gerber) file"), NULL);
410 drill = gtk_menu_item_new_with_mnemonic (_(
"_Excellon drill..."));
411 gtk_container_add (GTK_CONTAINER (menuitem_file_export_menu), drill);
412 gtk_tooltips_set_tip (tooltips, drill, _(
"Export layer to an Excellon drill file"), NULL);
414 rs274xm = gtk_menu_item_new_with_mnemonic (_(
"RS-274X Merge (Gerber)..."));
415 gtk_container_add (GTK_CONTAINER (menuitem_file_export_menu), rs274xm);
416 gtk_tooltips_set_tip (tooltips, rs274xm, _(
"Export (merge visible gerber layers) to a RS-274X (Gerber) file"), NULL);
418 drillm = gtk_menu_item_new_with_mnemonic (_(
"Excellon drill Merge..."));
419 gtk_container_add (GTK_CONTAINER (menuitem_file_export_menu), drillm);
420 gtk_tooltips_set_tip (tooltips, drillm, _(
"Export (merge visible drill layers) to an Excellon drill file"), NULL);
423 separator1 = gtk_separator_menu_item_new ();
424 gtk_container_add (GTK_CONTAINER (menuitem_file_menu), separator1);
425 gtk_widget_set_sensitive (separator1, FALSE);
427 #if GTK_CHECK_VERSION(2,10,0)
428 if (gtk_stock_lookup(GTK_STOCK_PRINT, &stock)) {
429 gchar
new[] = N_(
"_Print...");
430 stock.label = _(
new);
431 gtk_stock_add(&stock, 1);
434 print = gtk_image_menu_item_new_from_stock (GTK_STOCK_PRINT, NULL);
435 screen.win.curFileMenuItem7 = print;
436 SET_ACCELS_FROM_STOCK (print, GTK_STOCK_PRINT, ACCEL_FILE_PRINT);
437 gtk_tooltips_set_tip (tooltips, print, _(
"Print the visible layers"), NULL);
438 gtk_container_add (GTK_CONTAINER (menuitem_file_menu), print);
440 separator2 = gtk_separator_menu_item_new ();
441 gtk_container_add (GTK_CONTAINER (menuitem_file_menu), separator2);
442 gtk_widget_set_sensitive (separator2, FALSE);
444 quit = gtk_image_menu_item_new_from_stock (GTK_STOCK_QUIT, NULL);
445 SET_ACCELS_FROM_STOCK (quit, GTK_STOCK_QUIT, ACCEL_FILE_QUIT);
446 gtk_tooltips_set_tip (tooltips, quit, _(
"Quit Gerbv"), NULL);
447 gtk_container_add (GTK_CONTAINER (menuitem_file_menu), quit);
450 menuitem_edit = gtk_menu_item_new_with_mnemonic (_(
"_Edit"));
451 screen.win.curEditMenuItem = menuitem_edit;
452 gtk_container_add (GTK_CONTAINER (menubar1), menuitem_edit);
454 menuitem_edit_menu = gtk_menu_new ();
455 gtk_menu_set_accel_group (GTK_MENU(menuitem_edit_menu), accel_group);
456 gtk_menu_set_accel_path (GTK_MENU(menuitem_edit_menu), ACCEL_EDIT);
457 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem_edit), menuitem_edit_menu);
459 properties_selected = gtk_image_menu_item_new_with_mnemonic (_(
"Display _properties of selected object(s)"));
460 SET_ACCELS_FROM_STOCK (properties_selected, GTK_STOCK_PROPERTIES, ACCEL_EDIT_PROPERTIES);
461 gtk_tooltips_set_tip (tooltips, properties_selected, _(
"Examine the properties of the selected object"), NULL);
462 tempImage = gtk_image_new_from_stock (GTK_STOCK_PROPERTIES, GTK_ICON_SIZE_MENU);
463 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (properties_selected), tempImage);
464 gtk_container_add (GTK_CONTAINER (menuitem_edit_menu), properties_selected);
466 delete_selected = gtk_image_menu_item_new_with_mnemonic (_(
"_Delete selected object(s)"));
467 SET_ACCELS_FROM_STOCK (delete_selected, GTK_STOCK_REMOVE, ACCEL_EDIT_DELETE);
468 gtk_tooltips_set_tip (tooltips, delete_selected, _(
"Delete selected objects"), NULL);
469 tempImage = gtk_image_new_from_stock (GTK_STOCK_DELETE, GTK_ICON_SIZE_MENU);
470 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (delete_selected), tempImage);
471 gtk_container_add (GTK_CONTAINER (menuitem_edit_menu), delete_selected);
475 tempMenuItem = gtk_image_menu_item_new_with_label (_(
"Edit object properties"));
476 gtk_menu_shell_append ((GtkMenuShell *)
screen.win.drawWindowPopupMenu, tempMenuItem);
477 gtk_tooltips_set_tip (tooltips, tempMenuItem, _(
"Edit the properties of the selected object"), NULL);
478 g_signal_connect ((gpointer) tempMenuItem,
"activate",
479 G_CALLBACK (callbacks_edit_object_properties_clicked), NULL);
481 tempMenuItem = gtk_image_menu_item_new_with_label (_(
"Move object(s)"));
482 gtk_menu_shell_append ((GtkMenuShell *)
screen.win.drawWindowPopupMenu, tempMenuItem);
483 gtk_tooltips_set_tip (tooltips, tempMenuItem, _(
"Move the selected object(s)"),NULL);
484 g_signal_connect ((gpointer) tempMenuItem,
"activate",
485 G_CALLBACK (callbacks_move_objects_clicked), NULL);
487 tempMenuItem = gtk_image_menu_item_new_with_label (_(
"Reduce area"));
488 gtk_menu_shell_append ((GtkMenuShell *)
screen.win.drawWindowPopupMenu, tempMenuItem);
489 gtk_tooltips_set_tip (tooltips, tempMenuItem, _(
"Reduce the area of the object (e.g. to prevent component floating)"),NULL);
490 g_signal_connect ((gpointer) tempMenuItem,
"activate",
491 G_CALLBACK (callbacks_reduce_object_area_clicked), NULL);
495 screen.win.drawWindowPopupMenu = menuitem_edit_menu;
498 menuitem_view = gtk_menu_item_new_with_mnemonic (_(
"_View"));
499 gtk_container_add (GTK_CONTAINER (menubar1), menuitem_view);
501 menuitem_view_menu = gtk_menu_new ();
502 gtk_menu_set_accel_group (GTK_MENU(menuitem_view_menu), accel_group);
503 gtk_menu_set_accel_path (GTK_MENU(menuitem_view_menu), ACCEL_VIEW);
504 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem_view), menuitem_view_menu);
506 view_fullscreen = gtk_check_menu_item_new_with_mnemonic (_(
"Fullscr_een"));
507 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (view_fullscreen), FALSE);
508 gtk_tooltips_set_tip (tooltips, view_fullscreen, _(
"Toggle between fullscreen and normal view"), NULL);
509 SET_ACCELS (view_fullscreen, ACCEL_VIEW_FULLSCREEN);
510 gtk_container_add (GTK_CONTAINER (menuitem_view_menu), view_fullscreen);
512 show_toolbar = gtk_check_menu_item_new_with_mnemonic (_(
"Show _Toolbar"));
513 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (show_toolbar), TRUE);
514 gtk_tooltips_set_tip (tooltips, show_toolbar, _(
"Toggle visibility of the toolbar"), NULL);
515 SET_ACCELS (show_toolbar, ACCEL_VIEW_TOOLBAR);
516 gtk_container_add (GTK_CONTAINER (menuitem_view_menu), show_toolbar);
518 show_sidepane = gtk_check_menu_item_new_with_mnemonic (_(
"Show _Sidepane"));
519 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (show_sidepane), TRUE);
520 gtk_tooltips_set_tip (tooltips, show_sidepane, _(
"Toggle visibility of the sidepane"), NULL);
521 SET_ACCELS (show_sidepane, ACCEL_VIEW_SIDEPANE);
522 gtk_container_add (GTK_CONTAINER (menuitem_view_menu), show_sidepane);
524 separator3 = gtk_separator_menu_item_new ();
525 gtk_widget_set_sensitive (separator3, FALSE);
526 gtk_container_add (GTK_CONTAINER (menuitem_view_menu), separator3);
528 layer_visibility_main_menu = gtk_menu_item_new_with_mnemonic (_(
"Toggle layer _visibility"));
529 gtk_container_add (GTK_CONTAINER (menuitem_view_menu), layer_visibility_main_menu);
531 layer_visibility_menu = gtk_menu_new ();
532 gtk_menu_set_accel_group (GTK_MENU(layer_visibility_menu), accel_group);
533 gtk_menu_set_accel_path (GTK_MENU(layer_visibility_menu), ACCEL_VIEW_VIS);
534 gtk_menu_item_set_submenu (GTK_MENU_ITEM (layer_visibility_main_menu), layer_visibility_menu);
536 toggle_layer_visibility_item1 = gtk_menu_item_new_with_label (_(
"Toggle visibility of layer 1"));
537 SET_ACCELS (toggle_layer_visibility_item1, ACCEL_VIEW_VIS_LAYER1);
538 gtk_container_add (GTK_CONTAINER (layer_visibility_menu), toggle_layer_visibility_item1);
540 toggle_layer_visibility_item2 = gtk_menu_item_new_with_label (_(
"Toggle visibility of layer 2"));
541 SET_ACCELS (toggle_layer_visibility_item2, ACCEL_VIEW_VIS_LAYER2);
542 gtk_container_add (GTK_CONTAINER (layer_visibility_menu), toggle_layer_visibility_item2);
544 toggle_layer_visibility_item3 = gtk_menu_item_new_with_label (_(
"Toggle visibility of layer 3"));
545 SET_ACCELS (toggle_layer_visibility_item3, ACCEL_VIEW_VIS_LAYER3);
546 gtk_container_add (GTK_CONTAINER (layer_visibility_menu), toggle_layer_visibility_item3);
548 toggle_layer_visibility_item4 = gtk_menu_item_new_with_label (_(
"Toggle visibility of layer 4"));
549 SET_ACCELS (toggle_layer_visibility_item4, ACCEL_VIEW_VIS_LAYER4);
550 gtk_container_add (GTK_CONTAINER (layer_visibility_menu), toggle_layer_visibility_item4);
552 toggle_layer_visibility_item5 = gtk_menu_item_new_with_label (_(
"Toggle visibility of layer 5"));
553 SET_ACCELS (toggle_layer_visibility_item5, ACCEL_VIEW_VIS_LAYER5);
554 gtk_container_add (GTK_CONTAINER (layer_visibility_menu), toggle_layer_visibility_item5);
556 toggle_layer_visibility_item6 = gtk_menu_item_new_with_label (_(
"Toggle visibility of layer 6"));
557 SET_ACCELS (toggle_layer_visibility_item6, ACCEL_VIEW_VIS_LAYER6);
558 gtk_container_add (GTK_CONTAINER (layer_visibility_menu), toggle_layer_visibility_item6);
560 toggle_layer_visibility_item7 = gtk_menu_item_new_with_label (_(
"Toggle visibility of layer 7"));
561 SET_ACCELS (toggle_layer_visibility_item7, ACCEL_VIEW_VIS_LAYER7);
562 gtk_container_add (GTK_CONTAINER (layer_visibility_menu), toggle_layer_visibility_item7);
564 toggle_layer_visibility_item8 = gtk_menu_item_new_with_label (_(
"Toggle visibility of layer 8"));
565 SET_ACCELS (toggle_layer_visibility_item8, ACCEL_VIEW_VIS_LAYER8);
566 gtk_container_add (GTK_CONTAINER (layer_visibility_menu), toggle_layer_visibility_item8);
568 toggle_layer_visibility_item9 = gtk_menu_item_new_with_label (_(
"Toggle visibility of layer 9"));
569 SET_ACCELS (toggle_layer_visibility_item9, ACCEL_VIEW_VIS_LAYER9);
570 gtk_container_add (GTK_CONTAINER (layer_visibility_menu), toggle_layer_visibility_item9);
572 toggle_layer_visibility_item10 = gtk_menu_item_new_with_label (_(
"Toggle visibility of layer 10"));
573 SET_ACCELS (toggle_layer_visibility_item10, ACCEL_VIEW_VIS_LAYER10);
574 gtk_container_add (GTK_CONTAINER (layer_visibility_menu), toggle_layer_visibility_item10);
576 separator4 = gtk_separator_menu_item_new ();
577 gtk_widget_set_sensitive (separator4, FALSE);
578 gtk_container_add (GTK_CONTAINER (menuitem_view_menu), separator4);
580 zoom_in = gtk_image_menu_item_new_from_stock (GTK_STOCK_ZOOM_IN, NULL);
581 SET_ACCELS_FROM_STOCK (zoom_in, GTK_STOCK_ZOOM_IN, ACCEL_VIEW_ZOOM_IN);
582 gtk_tooltips_set_tip (tooltips, zoom_in, _(
"Zoom in"), NULL);
583 gtk_container_add (GTK_CONTAINER (menuitem_view_menu), zoom_in);
585 zoom_out = gtk_image_menu_item_new_from_stock (GTK_STOCK_ZOOM_OUT, NULL);
586 SET_ACCELS_FROM_STOCK (zoom_out, GTK_STOCK_ZOOM_OUT, ACCEL_VIEW_ZOOM_OUT);
587 gtk_tooltips_set_tip (tooltips, zoom_out, _(
"Zoom out"), NULL);
588 gtk_container_add (GTK_CONTAINER (menuitem_view_menu), zoom_out);
590 fit_to_window = gtk_image_menu_item_new_from_stock (GTK_STOCK_ZOOM_FIT, NULL);
591 gtk_tooltips_set_tip (tooltips, fit_to_window, _(
"Zoom to fit all visible layers in the window"), NULL);
592 SET_ACCELS_FROM_STOCK (fit_to_window, GTK_STOCK_ZOOM_FIT, ACCEL_VIEW_ZOOM_FIT);
593 gtk_container_add (GTK_CONTAINER (menuitem_view_menu), fit_to_window);
595 separator5 = gtk_separator_menu_item_new ();
596 gtk_container_add (GTK_CONTAINER (menuitem_view_menu), separator5);
597 gtk_widget_set_sensitive (separator5, FALSE);
599 backgroundColor = gtk_image_menu_item_new_with_mnemonic (_(
"Change background color"));
600 gtk_tooltips_set_tip (tooltips, backgroundColor, _(
"Change the background color"), NULL);
601 tempImage = gtk_image_new_from_stock (GTK_STOCK_SELECT_COLOR, GTK_ICON_SIZE_MENU);
602 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (backgroundColor), tempImage);
603 gtk_container_add (GTK_CONTAINER (menuitem_view_menu), backgroundColor);
606 menuitem_view_render = gtk_menu_item_new_with_mnemonic (_(
"_Rendering"));
607 gtk_container_add (GTK_CONTAINER (menuitem_view_menu), menuitem_view_render);
609 menuitem_view_render_menu = gtk_menu_new ();
610 gtk_menu_set_accel_group (GTK_MENU(menuitem_view_render_menu), accel_group);
611 gtk_menu_set_accel_path (GTK_MENU(menuitem_view_render_menu), ACCEL_VIEW_RENDER);
612 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem_view_render), menuitem_view_render_menu);
614 menu_view_render_group = NULL;
616 render_fast = gtk_radio_menu_item_new_with_mnemonic (menu_view_render_group, _(
"_Fast"));
617 menu_view_render_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (render_fast));
618 gtk_container_add (GTK_CONTAINER (menuitem_view_render_menu), render_fast);
620 render_fast_xor = gtk_radio_menu_item_new_with_mnemonic (menu_view_render_group, _(
"Fast (_XOR)"));
621 menu_view_render_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (render_fast_xor));
622 gtk_container_add (GTK_CONTAINER (menuitem_view_render_menu), render_fast_xor);
624 render_normal = gtk_radio_menu_item_new_with_mnemonic (menu_view_render_group, _(
"_Normal"));
625 menu_view_render_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (render_normal));
626 gtk_container_add (GTK_CONTAINER (menuitem_view_render_menu), render_normal);
628 render_hq = gtk_radio_menu_item_new_with_mnemonic (menu_view_render_group, _(
"High _Quality"));
629 menu_view_render_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (render_hq));
630 gtk_container_add (GTK_CONTAINER (menuitem_view_render_menu), render_hq);
632 screen.win.menu_view_render_group = malloc(4*
sizeof(GtkWidget *));
633 if(
screen.win.menu_view_render_group == NULL)
634 GERB_FATAL_ERROR(_(
"malloc for rendering type synchronization failed.\n"));
643 gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (render_fast), TRUE);
645 menuitem_view_unit = gtk_menu_item_new_with_mnemonic (_(
"U_nits"));
646 gtk_container_add (GTK_CONTAINER (menuitem_view_menu), menuitem_view_unit);
648 menuitem_view_unit_menu = gtk_menu_new ();
649 gtk_menu_set_accel_group (GTK_MENU(menuitem_view_unit_menu), accel_group);
650 gtk_menu_set_accel_path (GTK_MENU(menuitem_view_unit_menu), ACCEL_VIEW_UNITS);
651 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem_view_unit), menuitem_view_unit_menu);
653 menu_view_unit_group = NULL;
655 unit_mil = gtk_radio_menu_item_new_with_mnemonic (menu_view_unit_group, _(
"mi_l"));
656 menu_view_unit_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (unit_mil));
657 gtk_container_add (GTK_CONTAINER (menuitem_view_unit_menu), unit_mil);
659 unit_mm = gtk_radio_menu_item_new_with_mnemonic (menu_view_unit_group, _(
"_mm"));
660 menu_view_unit_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (unit_mm));
661 gtk_container_add (GTK_CONTAINER (menuitem_view_unit_menu), unit_mm);
663 unit_in = gtk_radio_menu_item_new_with_mnemonic (menu_view_unit_group, _(
"_in"));
664 menu_view_unit_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (unit_in));
665 gtk_container_add (GTK_CONTAINER (menuitem_view_unit_menu), unit_in);
667 screen.win.menu_view_unit_group = malloc(3*
sizeof(GtkWidget *));
668 if(
screen.win.menu_view_unit_group == NULL)
669 GERB_FATAL_ERROR(_(
"malloc for display unit synchronization failed.\n"));
671 screen.win.menu_view_unit_group[GERBV_MILS] = GTK_CHECK_MENU_ITEM(unit_mil);
672 screen.win.menu_view_unit_group[GERBV_MMS] = GTK_CHECK_MENU_ITEM(unit_mm);
673 screen.win.menu_view_unit_group[GERBV_INS] = GTK_CHECK_MENU_ITEM(unit_in);
677 menuitem_layer = gtk_menu_item_new_with_mnemonic (_(
"_Layer"));
678 gtk_container_add (GTK_CONTAINER (menubar1), menuitem_layer);
680 menuitem_layer_menu = gtk_menu_new ();
681 gtk_menu_set_accel_group (GTK_MENU (menuitem_layer_menu), accel_group);
682 gtk_menu_set_accel_path (GTK_MENU (menuitem_layer_menu), ACCEL_LAYER);
683 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem_layer), menuitem_layer_menu);
685 layer_visibility = gtk_menu_item_new_with_mnemonic (_(
"Toggle _visibility"));
686 gtk_tooltips_set_tip (tooltips, layer_visibility, _(
"Toggles the visibility of the layer currently selected in the sidepane"), NULL);
687 gtk_container_add (GTK_CONTAINER (menuitem_layer_menu), layer_visibility);
689 layer_visibility_all_on = gtk_image_menu_item_new_with_mnemonic (_(
"All o_n"));
690 gtk_tooltips_set_tip (tooltips, layer_visibility_all_on, _(
"Turn on visibility of all layers"), NULL);
691 tempImage = gtk_image_new_from_stock (GTK_STOCK_YES, GTK_ICON_SIZE_MENU);
692 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (layer_visibility_all_on), tempImage);
693 gtk_container_add (GTK_CONTAINER (menuitem_layer_menu), layer_visibility_all_on);
695 layer_visibility_all_off = gtk_image_menu_item_new_with_mnemonic (_(
"All _off"));
696 gtk_tooltips_set_tip (tooltips, layer_visibility_all_off, _(
"Turn off visibility of all layers"), NULL);
697 tempImage = gtk_image_new_from_stock (GTK_STOCK_NO, GTK_ICON_SIZE_MENU);
698 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (layer_visibility_all_off), tempImage);
699 gtk_container_add (GTK_CONTAINER (menuitem_layer_menu), layer_visibility_all_off);
701 layer_invert = gtk_menu_item_new_with_mnemonic (_(
"_Invert color"));
702 gtk_tooltips_set_tip (tooltips, layer_invert, _(
"Invert the display polarity of the layer currently selected in the sidepane"), NULL);
703 gtk_container_add (GTK_CONTAINER (menuitem_layer_menu), layer_invert);
705 layer_color = gtk_image_menu_item_new_with_mnemonic (_(
"_Change color"));
706 SET_ACCELS (layer_color, ACCEL_LAYER_COLOR);
707 gtk_tooltips_set_tip (tooltips, layer_color, _(
"Change the display color of the layer currently selected in the sidepane"), NULL);
708 tempImage = gtk_image_new_from_stock (GTK_STOCK_SELECT_COLOR, GTK_ICON_SIZE_MENU);
709 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (layer_color), tempImage);
710 gtk_container_add (GTK_CONTAINER (menuitem_layer_menu), layer_color);
712 separator6 = gtk_separator_menu_item_new ();
713 gtk_container_add (GTK_CONTAINER (menuitem_layer_menu), separator6);
715 layer_reload = gtk_image_menu_item_new_with_mnemonic (_(
"_Reload layer"));
716 gtk_tooltips_set_tip (tooltips, layer_reload, _(
"Reload the layer from disk"), NULL);
717 tempImage = gtk_image_new_from_stock (GTK_STOCK_REVERT_TO_SAVED, GTK_ICON_SIZE_MENU);
718 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (layer_reload), tempImage);
719 gtk_container_add (GTK_CONTAINER (menuitem_layer_menu), layer_reload);
721 layer_edit = gtk_image_menu_item_new_with_mnemonic (_(
"_Edit layer"));
722 gtk_container_add (GTK_CONTAINER (menuitem_layer_menu), layer_edit);
723 gtk_tooltips_set_tip (tooltips, layer_edit, _(
"Translate, scale, rotate, or mirror the layer currently selected in the sidepane"), NULL);
724 tempImage = gtk_image_new_from_stock (GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU);
725 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (layer_edit), tempImage);
727 layer_format = gtk_image_menu_item_new_with_mnemonic (_(
"Edit file _format"));
728 gtk_tooltips_set_tip (tooltips, layer_format, _(
"View and edit the numerical format used to parse this layer currently selected in the sidepane"), NULL);
729 tempImage = gtk_image_new_from_stock (GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_MENU);
730 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (layer_format), tempImage);
731 gtk_container_add (GTK_CONTAINER (menuitem_layer_menu), layer_format);
733 separator7 = gtk_separator_menu_item_new ();
734 gtk_container_add (GTK_CONTAINER (menuitem_layer_menu), separator7);
736 layer_up = gtk_image_menu_item_new_with_mnemonic (_(
"Move u_p"));
737 gtk_tooltips_set_tip (tooltips, layer_up, _(
"Move the layer currently selected in the sidepane one step up"), NULL);
738 tempImage = gtk_image_new_from_stock (GTK_STOCK_GO_UP, GTK_ICON_SIZE_MENU);
739 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (layer_up), tempImage);
740 SET_ACCELS (layer_up, ACCEL_LAYER_UP);
741 gtk_container_add (GTK_CONTAINER (menuitem_layer_menu), layer_up);
743 layer_down = gtk_image_menu_item_new_with_mnemonic (_(
"Move dow_n"));
744 gtk_tooltips_set_tip (tooltips, layer_down, _(
"Move the layer currently selected in the sidepane one step down"), NULL);
745 tempImage = gtk_image_new_from_stock (GTK_STOCK_GO_DOWN, GTK_ICON_SIZE_MENU);
746 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (layer_down), tempImage);
747 SET_ACCELS (layer_down, ACCEL_LAYER_DOWN);
748 gtk_container_add (GTK_CONTAINER (menuitem_layer_menu), layer_down);
750 layer_remove = gtk_image_menu_item_new_with_mnemonic (_(
"_Delete"));
751 gtk_container_add (GTK_CONTAINER (menuitem_layer_menu), layer_remove);
752 gtk_tooltips_set_tip (tooltips, layer_remove, _(
"Remove the layer currently selected in the sidepane"), NULL);
753 tempImage = gtk_image_new_from_stock (GTK_STOCK_REMOVE, GTK_ICON_SIZE_MENU);
754 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (layer_remove), tempImage);
757 screen.win.curLayerMenuItem = menuitem_layer;
760 screen.win.layerTreePopupMenu = menuitem_layer_menu;
763 menuitem_analyze = gtk_menu_item_new_with_mnemonic (_(
"_Analyze"));
764 screen.win.curAnalyzeMenuItem = menuitem_analyze;
765 gtk_container_add (GTK_CONTAINER (menubar1), menuitem_analyze);
767 menuitem_analyze_menu = gtk_menu_new ();
768 gtk_menu_set_accel_group (GTK_MENU(menuitem_analyze_menu), accel_group);
769 gtk_menu_set_accel_path (GTK_MENU(menuitem_analyze_menu), ACCEL_ANAL);
770 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem_analyze), menuitem_analyze_menu);
772 analyze_active_gerbers = gtk_menu_item_new_with_mnemonic (_(
"Analyze visible _Gerber layers"));
773 gtk_tooltips_set_tip (tooltips, analyze_active_gerbers,
774 _(
"Examine a detailed anaylsis of the contents of all visible Gerber layers"), NULL);
775 gtk_container_add (GTK_CONTAINER (menuitem_analyze_menu), analyze_active_gerbers);
777 analyze_active_drill = gtk_menu_item_new_with_mnemonic (_(
"Analyze visible _drill layers"));
778 gtk_tooltips_set_tip (tooltips, analyze_active_drill,
779 _(
"Examine a detailed anaylsis of the contents of all visible drill layers"), NULL);
780 gtk_container_add (GTK_CONTAINER (menuitem_analyze_menu), analyze_active_drill);
782 analyze_benchmark = gtk_menu_item_new_with_mnemonic (_(
"_Benchmark (1 min)"));
783 gtk_tooltips_set_tip (tooltips, analyze_benchmark,
784 _(
"Benchmark different rendering methods. Will make the application unresponsive for 1 minute!"), NULL);
785 gtk_container_add (GTK_CONTAINER (menuitem_analyze_menu), analyze_benchmark);
793 menuitem_tools = gtk_menu_item_new_with_mnemonic (_(
"_Tools"));
794 gtk_container_add (GTK_CONTAINER (menubar1), menuitem_tools);
796 menuitem_tools_menu = gtk_menu_new ();
797 gtk_menu_set_accel_group (GTK_MENU(menuitem_tools_menu), accel_group);
798 gtk_menu_set_accel_path (GTK_MENU(menuitem_tools_menu), ACCEL_TOOLS);
799 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem_tools), menuitem_tools_menu);
800 pointer_tool = gtk_image_menu_item_new_with_mnemonic (_(
"_Pointer Tool"));
801 tempImage = gtk_image_new_from_pixbuf (pointerpixbuf);
802 gtk_image_menu_item_set_image ((GtkImageMenuItem *)pointer_tool, tempImage);
803 SET_ACCELS (pointer_tool, ACCEL_TOOLS_POINTER);
804 gtk_container_add (GTK_CONTAINER (menuitem_tools_menu), pointer_tool);
805 gtk_tooltips_set_tip (tooltips, pointer_tool, _(
"Select objects on the screen"), NULL);
806 pan_tool = gtk_image_menu_item_new_with_mnemonic (_(
"Pa_n Tool"));
807 tempImage = gtk_image_new_from_pixbuf (movepixbuf);
808 gtk_image_menu_item_set_image ((GtkImageMenuItem *)pan_tool, tempImage);
809 SET_ACCELS (pan_tool, ACCEL_TOOLS_PAN);
810 gtk_container_add (GTK_CONTAINER (menuitem_tools_menu), pan_tool);
811 gtk_tooltips_set_tip (tooltips, pan_tool, _(
"Pan by left clicking and dragging"), NULL);
813 zoom_tool = gtk_image_menu_item_new_with_mnemonic (_(
"_Zoom Tool"));
814 tempImage = gtk_image_new_from_pixbuf (zoompixbuf);
815 gtk_image_menu_item_set_image ((GtkImageMenuItem *)zoom_tool, tempImage);
816 SET_ACCELS (zoom_tool, ACCEL_TOOLS_ZOOM);
817 gtk_container_add (GTK_CONTAINER (menuitem_tools_menu), zoom_tool);
818 gtk_tooltips_set_tip (tooltips, zoom_tool, _(
"Zoom by left clicking or dragging"), NULL);
820 measure_tool = gtk_image_menu_item_new_with_mnemonic (_(
"_Measure Tool"));
821 tempImage = gtk_image_new_from_pixbuf (measurepixbuf);
822 gtk_image_menu_item_set_image ((GtkImageMenuItem *)measure_tool, tempImage);
823 SET_ACCELS (measure_tool, ACCEL_TOOLS_MEASURE);
824 gtk_container_add (GTK_CONTAINER (menuitem_tools_menu), measure_tool);
825 gtk_tooltips_set_tip (tooltips, measure_tool, _(
"Measure distances on the screen"), NULL);
827 menuitem_help = gtk_menu_item_new_with_mnemonic (_(
"_Help"));
828 gtk_container_add (GTK_CONTAINER (menubar1), menuitem_help);
830 menuitem_help_menu = gtk_menu_new ();
831 gtk_menu_set_accel_group (GTK_MENU(menuitem_help_menu), accel_group);
832 gtk_menu_set_accel_path (GTK_MENU(menuitem_help_menu), ACCEL_HELP);
833 gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem_help), menuitem_help_menu);
841 about = gtk_image_menu_item_new_with_mnemonic (_(
"_About Gerbv..."));
842 gtk_container_add (GTK_CONTAINER (menuitem_help_menu), about);
843 gtk_tooltips_set_tip (tooltips, about, _(
"View information about gerbv"), NULL);
844 image34 = gtk_image_new_from_stock (GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_MENU);
845 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (about), image34);
847 bugs_menuitem = gtk_image_menu_item_new_with_mnemonic (_(
"Known _bugs in this version..."));
848 tempImage = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_MENU);
849 gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (bugs_menuitem), tempImage);
850 gtk_tooltips_set_tip (tooltips, bugs_menuitem, _(
"View list of known gerbv bugs"), NULL);
851 gtk_container_add (GTK_CONTAINER (menuitem_help_menu), bugs_menuitem);
854 toolbar_hbox = gtk_hbox_new (FALSE, 0);
855 gtk_box_pack_start (GTK_BOX (vbox1), toolbar_hbox, FALSE, FALSE, 0);
857 handlebox = gtk_handle_box_new ();
859 gtk_box_pack_start (GTK_BOX (toolbar_hbox), handlebox, TRUE, TRUE, 0);
861 button_toolbar = gtk_toolbar_new ();
862 gtk_widget_set_size_request (button_toolbar, 500, -1);
863 gtk_container_add (GTK_CONTAINER (handlebox), button_toolbar);
864 gtk_toolbar_set_style (GTK_TOOLBAR (button_toolbar), GTK_TOOLBAR_ICONS);
867 toolbutton_new = (GtkWidget*) gtk_tool_button_new_from_stock (GTK_STOCK_NEW);
868 gtk_tooltips_set_tip (tooltips, toolbutton_new, _(
"Close all layers and start a new project"), NULL);
869 gtk_container_add (GTK_CONTAINER (button_toolbar), toolbutton_new);
871 toolbutton_open = (GtkWidget*) gtk_tool_button_new_from_stock (GTK_STOCK_OPEN);
872 gtk_tooltips_set_tip (tooltips, toolbutton_open, _(
"Open a previously saved gerbv project"), NULL);
873 gtk_container_add (GTK_CONTAINER (button_toolbar), toolbutton_open);
875 toolbutton_revert = (GtkWidget*) gtk_tool_button_new_from_stock (GTK_STOCK_REVERT_TO_SAVED);
876 gtk_tooltips_set_tip (tooltips, toolbutton_revert, _(
"Reload all layers in project"), NULL);
877 gtk_container_add (GTK_CONTAINER (button_toolbar), toolbutton_revert);
879 toolbutton_save = (GtkWidget*) gtk_tool_button_new_from_stock (GTK_STOCK_SAVE);
880 gtk_tooltips_set_tip (tooltips, toolbutton_save, _(
"Save the current project"), NULL);
881 gtk_container_add (GTK_CONTAINER (button_toolbar), toolbutton_save);
883 separatortoolitem1 = (GtkWidget*) gtk_separator_tool_item_new ();
884 gtk_container_add (GTK_CONTAINER (button_toolbar), separatortoolitem1);
885 #if GTK_CHECK_VERSION(2,10,0)
886 toolbutton_print = (GtkWidget*) gtk_tool_button_new_from_stock (GTK_STOCK_PRINT);
887 gtk_tooltips_set_tip (tooltips, toolbutton_print, _(
"Print the visible layers"), NULL);
888 gtk_container_add (GTK_CONTAINER (button_toolbar), toolbutton_print);
890 separatortoolitem2 = (GtkWidget*) gtk_separator_tool_item_new ();
891 gtk_container_add (GTK_CONTAINER (button_toolbar), separatortoolitem2);
893 toolbutton_zoom_in = (GtkWidget*) gtk_tool_button_new_from_stock (GTK_STOCK_ZOOM_IN);
894 gtk_tooltips_set_tip (tooltips, toolbutton_zoom_in, _(
"Zoom in"), NULL);
895 gtk_container_add (GTK_CONTAINER (button_toolbar), toolbutton_zoom_in);
897 toolbutton_zoom_out = (GtkWidget*) gtk_tool_button_new_from_stock (GTK_STOCK_ZOOM_OUT);
898 gtk_tooltips_set_tip (tooltips, toolbutton_zoom_out, _(
"Zoom out"), NULL);
899 gtk_container_add (GTK_CONTAINER (button_toolbar), toolbutton_zoom_out);
901 toolbutton_zoom_fit = (GtkWidget*) gtk_tool_button_new_from_stock (GTK_STOCK_ZOOM_FIT);
902 gtk_tooltips_set_tip (tooltips, toolbutton_zoom_fit, _(
"Zoom to fit all visible layers in the window"), NULL);
903 gtk_container_add (GTK_CONTAINER (button_toolbar), toolbutton_zoom_fit);
920 separatortoolitem4 = (GtkWidget*) gtk_separator_tool_item_new ();
921 gtk_container_add (GTK_CONTAINER (button_toolbar), separatortoolitem4);
922 toggletoolbutton_pointer = (GtkWidget*) gtk_toggle_tool_button_new();
923 pointerimage = gtk_image_new_from_pixbuf(pointerpixbuf);
924 gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toggletoolbutton_pointer),
926 gtk_tooltips_set_tip (tooltips, toggletoolbutton_pointer, _(
"Select objects on the screen"), NULL);
927 gtk_container_add (GTK_CONTAINER (button_toolbar), toggletoolbutton_pointer);
928 toggletoolbutton_pan = (GtkWidget*) gtk_toggle_tool_button_new();
929 moveimage = gtk_image_new_from_pixbuf(movepixbuf);
930 gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toggletoolbutton_pan),
932 gtk_tooltips_set_tip (tooltips, toggletoolbutton_pan, _(
"Pan by left clicking and dragging"), NULL);
933 gtk_container_add (GTK_CONTAINER (button_toolbar), toggletoolbutton_pan);
936 toggletoolbutton_zoom = (GtkWidget*) gtk_toggle_tool_button_new();
937 zoomimage = gtk_image_new_from_pixbuf(zoompixbuf);
938 gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toggletoolbutton_zoom),
940 gtk_tooltips_set_tip (tooltips, toggletoolbutton_zoom, _(
"Zoom by left clicking or dragging"), NULL);
941 gtk_container_add (GTK_CONTAINER (button_toolbar), toggletoolbutton_zoom);
943 toggletoolbutton_measure = (GtkWidget*) gtk_toggle_tool_button_new();
944 measureimage = gtk_image_new_from_pixbuf(measurepixbuf);
945 gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(toggletoolbutton_measure),
947 gtk_tooltips_set_tip (tooltips, toggletoolbutton_measure, _(
"Measure distances on the screen"), NULL);
948 gtk_container_add (GTK_CONTAINER (button_toolbar), toggletoolbutton_measure);
950 hpaned1 = gtk_hpaned_new ();
951 gtk_box_pack_start (GTK_BOX (vbox1), hpaned1, TRUE, TRUE, 0);
952 gtk_paned_set_position (GTK_PANED (hpaned1), 225);
954 sidepane_vbox = gtk_vbox_new (FALSE, 0);
955 gtk_widget_set_size_request (sidepane_vbox, 150, -1);
957 gtk_paned_pack1 (GTK_PANED (hpaned1), sidepane_vbox, TRUE, FALSE);
958 gtk_container_set_border_width (GTK_CONTAINER (sidepane_vbox), 5);
960 sidepane_notebook = gtk_notebook_new ();
961 gtk_widget_set_size_request (sidepane_notebook, 100, -1);
962 gtk_box_pack_start (GTK_BOX (sidepane_vbox), sidepane_notebook, TRUE, TRUE, 0);
964 vbox10 = gtk_vbox_new (FALSE, 3);
965 gtk_container_add (GTK_CONTAINER (sidepane_notebook), vbox10);
966 gtk_widget_set_size_request (vbox10, 82, -1);
967 gtk_container_set_border_width (GTK_CONTAINER (vbox10), 4);
969 hbox4 = gtk_hbox_new (FALSE, 0);
970 gtk_box_pack_start (GTK_BOX (vbox10), hbox4, FALSE, FALSE, 0);
972 label1 = gtk_label_new (_(
"Rendering: "));
973 gtk_box_pack_start (GTK_BOX (hbox4), label1, FALSE, FALSE, 0);
975 render_combobox = gtk_combo_box_new_text ();
976 gtk_box_pack_start (GTK_BOX (hbox4), render_combobox, TRUE, TRUE, 0);
978 gtk_combo_box_append_text (GTK_COMBO_BOX (render_combobox), _(
"Fast"));
979 gtk_combo_box_append_text (GTK_COMBO_BOX (render_combobox), _(
"Fast, with XOR"));
980 gtk_combo_box_append_text (GTK_COMBO_BOX (render_combobox), _(
"Normal"));
981 gtk_combo_box_append_text (GTK_COMBO_BOX (render_combobox), _(
"High quality"));
983 gtk_combo_box_set_active (GTK_COMBO_BOX (render_combobox), screenRenderInfo.
renderType);
985 scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
986 gtk_box_pack_start (GTK_BOX (vbox10), scrolledwindow1, TRUE, TRUE, 0);
987 gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow1), 2);
988 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1),
989 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
990 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow1),
993 hbox1 = gtk_hbox_new (TRUE, 0);
994 gtk_box_pack_start (GTK_BOX (vbox10), hbox1, FALSE, FALSE, 0);
996 button4 = gtk_button_new ();
997 gtk_box_pack_start (GTK_BOX (hbox1), button4, FALSE, TRUE, 0);
999 image8 = gtk_image_new_from_stock (GTK_STOCK_ADD, GTK_ICON_SIZE_BUTTON);
1000 gtk_container_add (GTK_CONTAINER (button4), image8);
1001 gtk_tooltips_set_tip (tooltips, button4, _(
"Open Gerber, drill, or pick and place file(s)"), NULL);
1003 button5 = gtk_button_new ();
1004 gtk_box_pack_start (GTK_BOX (hbox1), button5, FALSE, TRUE, 0);
1006 image9 = gtk_image_new_from_stock (GTK_STOCK_GO_DOWN, GTK_ICON_SIZE_BUTTON);
1007 gtk_container_add (GTK_CONTAINER (button5), image9);
1008 gtk_tooltips_set_tip (tooltips, button5, _(
"Move the layer currently selected in the sidepane one step down"), NULL);
1010 button6 = gtk_button_new ();
1011 gtk_box_pack_start (GTK_BOX (hbox1), button6, FALSE, TRUE, 0);
1013 image10 = gtk_image_new_from_stock (GTK_STOCK_GO_UP, GTK_ICON_SIZE_BUTTON);
1014 gtk_container_add (GTK_CONTAINER (button6), image10);
1015 gtk_tooltips_set_tip (tooltips, button6, _(
"Move the layer currently selected in the sidepane one step up"), NULL);
1017 button7 = gtk_button_new ();
1018 gtk_box_pack_start (GTK_BOX (hbox1), button7, FALSE, TRUE, 0);
1020 image11 = gtk_image_new_from_stock (GTK_STOCK_REMOVE, GTK_ICON_SIZE_BUTTON);
1021 gtk_container_add (GTK_CONTAINER (button7), image11);
1022 gtk_tooltips_set_tip (tooltips, button7, _(
"Remove the layer currently selected in the sidepane"), NULL);
1024 Layer_label = gtk_label_new (_(
"Layers"));
1025 gtk_notebook_set_tab_label (GTK_NOTEBOOK (sidepane_notebook),
1026 gtk_notebook_get_nth_page (GTK_NOTEBOOK (sidepane_notebook), 0),
1029 vbox11 = gtk_vbox_new (FALSE, 2);
1030 gtk_container_add (GTK_CONTAINER (sidepane_notebook), vbox11);
1031 gtk_container_set_border_width (GTK_CONTAINER (vbox11), 3);
1033 messages_scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
1034 gtk_box_pack_start (GTK_BOX (vbox11), messages_scrolledwindow, TRUE, TRUE, 0);
1035 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (messages_scrolledwindow),
1036 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
1038 message_textview = gtk_text_view_new ();
1039 gtk_container_add (GTK_CONTAINER (messages_scrolledwindow), message_textview);
1040 gtk_text_view_set_editable (GTK_TEXT_VIEW (message_textview), FALSE);
1041 gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (message_textview), GTK_WRAP_WORD);
1042 gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (message_textview), FALSE);
1044 clear_messages_button = gtk_button_new_from_stock (GTK_STOCK_CLEAR);
1045 gtk_tooltips_set_tip (tooltips, clear_messages_button,
1046 _(
"Clear all messages and accumulated sum"), NULL);
1047 gtk_box_pack_start (GTK_BOX (vbox11), clear_messages_button, FALSE, FALSE, 0);
1049 Message_label = gtk_label_new (_(
"Messages"));
1050 gtk_notebook_set_tab_label (GTK_NOTEBOOK (sidepane_notebook),
1051 gtk_notebook_get_nth_page (GTK_NOTEBOOK (sidepane_notebook), 1),
1054 vbox2 = gtk_vbox_new (FALSE, 4);
1055 gtk_paned_pack2 (GTK_PANED (hpaned1), vbox2, TRUE, FALSE);
1056 gtk_container_set_border_width (GTK_CONTAINER (vbox2), 4);
1058 main_view_table = gtk_table_new (3, 3, FALSE);
1059 gtk_box_pack_start (GTK_BOX (vbox2), main_view_table, TRUE, TRUE, 0);
1061 hRuler = gtk_hruler_new ();
1062 gtk_table_attach (GTK_TABLE (main_view_table), hRuler, 1, 2, 0, 1,
1063 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
1064 (GtkAttachOptions) (GTK_FILL), 0, 0);
1065 gtk_ruler_set_range (GTK_RULER (hRuler), 0, 100, 8.56051, 1000);
1067 vRuler = gtk_vruler_new ();
1068 gtk_table_attach (GTK_TABLE (main_view_table), vRuler, 0, 1, 1, 2,
1069 (GtkAttachOptions) (GTK_FILL),
1070 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
1071 gtk_ruler_set_range (GTK_RULER (vRuler), 0, 100, 8.37341, 1000);
1073 drawingarea = gtk_drawing_area_new();
1074 gtk_table_attach (GTK_TABLE (main_view_table), drawingarea, 1, 2, 1, 2,
1075 (GtkAttachOptions) (GTK_FILL),
1076 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), 0, 0);
1078 hAdjustment = (GtkWidget *) gtk_adjustment_new (0.0, -1000.0, 1000.0, 1000.0, 1000.0, 500.0);
1079 vAdjustment = (GtkWidget *) gtk_adjustment_new (0.0, -1000.0, 1000.0, 1000.0, 1000.0, 500.0);
1081 hScrollbar = gtk_hscrollbar_new (GTK_ADJUSTMENT (hAdjustment));
1082 gtk_table_attach (GTK_TABLE (main_view_table), hScrollbar, 1, 2, 2, 3,
1083 (GtkAttachOptions) (GTK_FILL),
1084 (GtkAttachOptions) (GTK_FILL), 0, 0);
1086 vScrollbar = gtk_vscrollbar_new (GTK_ADJUSTMENT (vAdjustment));
1087 gtk_table_attach (GTK_TABLE (main_view_table), vScrollbar, 2, 3, 1, 2,
1088 (GtkAttachOptions) (GTK_FILL),
1089 (GtkAttachOptions) (GTK_FILL), 0, 0);
1091 hbox5 = gtk_hbox_new (FALSE, 10);
1092 gtk_box_pack_start (GTK_BOX (vbox2), hbox5, FALSE, FALSE, 0);
1094 statusbar_label_left = gtk_label_new (
"( 0.0, 0.0 )");
1095 gtk_box_pack_start (GTK_BOX (hbox5), statusbar_label_left, FALSE, FALSE, 0);
1096 gtk_widget_set_size_request (statusbar_label_left, 130, -1);
1097 gtk_label_set_justify ((GtkLabel *) statusbar_label_left, GTK_JUSTIFY_RIGHT);
1099 statusUnitComboBox = gtk_combo_box_new_text ();
1100 gtk_box_pack_start (GTK_BOX (hbox5), statusUnitComboBox, FALSE, FALSE, 0);
1101 gtk_combo_box_append_text (GTK_COMBO_BOX (statusUnitComboBox), _(
"mil"));
1102 gtk_combo_box_append_text (GTK_COMBO_BOX (statusUnitComboBox), _(
"mm"));
1103 gtk_combo_box_append_text (GTK_COMBO_BOX (statusUnitComboBox), _(
"in"));
1105 statusbar_label_right = gtk_label_new (
"");
1106 gtk_box_pack_start (GTK_BOX (hbox5), statusbar_label_right, TRUE, TRUE, 0);
1107 gtk_label_set_ellipsize ((GtkLabel *)statusbar_label_right, PANGO_ELLIPSIZE_END);
1108 gtk_misc_set_alignment (GTK_MISC (statusbar_label_right), 0, 0.5);
1117 g_signal_connect ((gpointer)
new,
"activate",
1120 g_signal_connect ((gpointer) open_project,
"activate",
1123 g_signal_connect ((gpointer) open_layer,
"activate",
1126 g_signal_connect ((gpointer) revert,
"activate",
1127 G_CALLBACK (callbacks_revert_activate),
1129 g_signal_connect ((gpointer) save_layer,
"activate",
1130 G_CALLBACK (callbacks_save_layer_activate),
1132 g_signal_connect ((gpointer) save_as_layer,
"activate",
1133 G_CALLBACK (callbacks_generic_save_activate),
1134 (gpointer) CALLBACKS_SAVE_LAYER_AS);
1135 g_signal_connect ((gpointer) save,
"activate",
1136 G_CALLBACK (callbacks_save_project_activate),
1138 g_signal_connect ((gpointer) save_as,
"activate",
1139 G_CALLBACK (callbacks_generic_save_activate),
1140 (gpointer) CALLBACKS_SAVE_PROJECT_AS);
1141 g_signal_connect ((gpointer) png,
"activate",
1142 G_CALLBACK (callbacks_generic_save_activate),
1143 (gpointer) CALLBACKS_SAVE_FILE_PNG);
1145 g_signal_connect ((gpointer) pdf,
"activate",
1146 G_CALLBACK (callbacks_generic_save_activate),
1147 (gpointer) CALLBACKS_SAVE_FILE_PDF);
1148 g_signal_connect ((gpointer) svg,
"activate",
1149 G_CALLBACK (callbacks_generic_save_activate),
1150 (gpointer) CALLBACKS_SAVE_FILE_SVG);
1151 g_signal_connect ((gpointer) postscript,
"activate",
1152 G_CALLBACK (callbacks_generic_save_activate),
1153 (gpointer) CALLBACKS_SAVE_FILE_PS);
1154 g_signal_connect ((gpointer) rs274x,
"activate",
1155 G_CALLBACK (callbacks_generic_save_activate),
1156 (gpointer) CALLBACKS_SAVE_FILE_RS274X);
1157 g_signal_connect ((gpointer) drill,
"activate",
1158 G_CALLBACK (callbacks_generic_save_activate),
1159 (gpointer) CALLBACKS_SAVE_FILE_DRILL);
1160 g_signal_connect ((gpointer) rs274xm,
"activate",
1161 G_CALLBACK (callbacks_generic_save_activate),
1162 (gpointer) CALLBACKS_SAVE_FILE_RS274XM);
1163 g_signal_connect ((gpointer) drillm,
"activate",
1164 G_CALLBACK (callbacks_generic_save_activate),
1165 (gpointer) CALLBACKS_SAVE_FILE_DRILLM);
1167 #if GTK_CHECK_VERSION(2,10,0)
1168 g_signal_connect ((gpointer) print,
"activate",
1169 G_CALLBACK (callbacks_print_activate),
1172 g_signal_connect ((gpointer) quit,
"activate",
1177 g_signal_connect ((gpointer) delete_selected,
"activate",
1178 G_CALLBACK (callbacks_delete_objects_clicked),
1180 g_signal_connect ((gpointer) properties_selected,
"activate",
1181 G_CALLBACK (callbacks_display_object_properties_clicked),
1185 g_signal_connect ((gpointer) view_fullscreen,
"activate",
1186 G_CALLBACK (callbacks_fullscreen_toggled),
1187 GINT_TO_POINTER(0));
1188 g_signal_connect ((gpointer) show_toolbar,
"toggled",
1189 G_CALLBACK (callbacks_show_toolbar_toggled),
1191 g_signal_connect ((gpointer) show_sidepane,
"toggled",
1192 G_CALLBACK (callbacks_show_sidepane_toggled),
1194 g_signal_connect ((gpointer) toggle_layer_visibility_item1,
"activate",
1196 GINT_TO_POINTER(0));
1197 g_signal_connect ((gpointer) toggle_layer_visibility_item2,
"activate",
1199 GINT_TO_POINTER(1));
1200 g_signal_connect ((gpointer) toggle_layer_visibility_item3,
"activate",
1202 GINT_TO_POINTER(2));
1203 g_signal_connect ((gpointer) toggle_layer_visibility_item4,
"activate",
1205 GINT_TO_POINTER(3));
1206 g_signal_connect ((gpointer) toggle_layer_visibility_item5,
"activate",
1208 GINT_TO_POINTER(4));
1209 g_signal_connect ((gpointer) toggle_layer_visibility_item6,
"activate",
1211 GINT_TO_POINTER(5));
1212 g_signal_connect ((gpointer) toggle_layer_visibility_item7,
"activate",
1214 GINT_TO_POINTER(6));
1215 g_signal_connect ((gpointer) toggle_layer_visibility_item8,
"activate",
1217 GINT_TO_POINTER(7));
1218 g_signal_connect ((gpointer) toggle_layer_visibility_item9,
"activate",
1220 GINT_TO_POINTER(8));
1221 g_signal_connect ((gpointer) toggle_layer_visibility_item10,
"activate",
1223 GINT_TO_POINTER(9));
1224 g_signal_connect ((gpointer) zoom_in,
"activate",
1225 G_CALLBACK (callbacks_zoom_in_activate),
1227 g_signal_connect ((gpointer) zoom_out,
"activate",
1228 G_CALLBACK (callbacks_zoom_out_activate),
1230 g_signal_connect ((gpointer) fit_to_window,
"activate",
1231 G_CALLBACK (callbacks_fit_to_window_activate),
1233 g_signal_connect ((gpointer) backgroundColor,
"activate",
1234 G_CALLBACK (callbacks_change_background_color_clicked),
1236 g_signal_connect ((gpointer) unit_mil,
"activate",
1237 G_CALLBACK (callbacks_viewmenu_units_changed),
1238 GINT_TO_POINTER(GERBV_MILS));
1239 g_signal_connect ((gpointer) unit_mm,
"activate",
1240 G_CALLBACK (callbacks_viewmenu_units_changed),
1241 GINT_TO_POINTER(GERBV_MMS));
1242 g_signal_connect ((gpointer) unit_in,
"activate",
1243 G_CALLBACK (callbacks_viewmenu_units_changed),
1244 GINT_TO_POINTER(GERBV_INS));
1247 g_signal_connect ((gpointer) layer_visibility,
"activate",
1249 GINT_TO_POINTER (LAYER_SELECTED));
1250 g_signal_connect ((gpointer) layer_visibility_all_on,
"activate",
1252 GINT_TO_POINTER (LAYER_ALL_ON));
1253 g_signal_connect ((gpointer) layer_visibility_all_off,
"activate",
1255 GINT_TO_POINTER (LAYER_ALL_OFF));
1256 g_signal_connect ((gpointer) layer_invert,
"activate", G_CALLBACK (callbacks_invert_layer_clicked), NULL);
1257 g_signal_connect ((gpointer) layer_color,
"activate", G_CALLBACK (callbacks_change_layer_color_clicked), NULL);
1258 g_signal_connect ((gpointer) layer_reload,
"activate", G_CALLBACK (callbacks_reload_layer_clicked), NULL);
1259 g_signal_connect ((gpointer) layer_edit,
"activate", G_CALLBACK (callbacks_change_layer_edit_clicked), NULL);
1260 g_signal_connect ((gpointer) layer_format,
"activate", G_CALLBACK (callbacks_change_layer_format_clicked), NULL);
1261 g_signal_connect ((gpointer) layer_remove,
"activate", G_CALLBACK (callbacks_remove_layer_button_clicked), NULL);
1262 g_signal_connect ((gpointer) layer_up,
"activate", G_CALLBACK (callbacks_move_layer_up_menu_activate), NULL);
1263 g_signal_connect ((gpointer) layer_down,
"activate", G_CALLBACK (callbacks_move_layer_down_menu_activate), NULL);
1266 g_signal_connect ((gpointer) analyze_active_gerbers,
"activate",
1269 g_signal_connect ((gpointer) analyze_active_drill,
"activate",
1272 g_signal_connect ((gpointer) analyze_benchmark,
"activate",
1273 G_CALLBACK (callbacks_benchmark_clicked),
1284 g_signal_connect ((gpointer) pointer_tool,
"activate",
1285 G_CALLBACK (callbacks_change_tool), (gpointer) 0);
1286 g_signal_connect ((gpointer) pan_tool,
"activate",
1287 G_CALLBACK (callbacks_change_tool), (gpointer) 1);
1288 g_signal_connect ((gpointer) zoom_tool,
"activate",
1289 G_CALLBACK (callbacks_change_tool), (gpointer) 2);
1290 g_signal_connect ((gpointer) measure_tool,
"activate",
1291 G_CALLBACK (callbacks_change_tool), (gpointer) 3);
1299 g_signal_connect ((gpointer) about,
"activate",
1303 g_signal_connect ((gpointer) bugs_menuitem,
"activate",
1308 g_signal_connect ((gpointer) toolbutton_new,
"clicked",
1311 g_signal_connect ((gpointer) toolbutton_save,
"clicked",
1312 G_CALLBACK (callbacks_save_project_activate),
1314 g_signal_connect ((gpointer) toolbutton_open,
"clicked",
1317 g_signal_connect ((gpointer) toolbutton_revert,
"clicked",
1318 G_CALLBACK (callbacks_revert_activate),
1320 g_signal_connect ((gpointer) clear_messages_button,
"clicked",
1321 G_CALLBACK (callbacks_clear_messages_button_clicked),
1323 #if GTK_CHECK_VERSION(2,10,0)
1324 g_signal_connect ((gpointer) toolbutton_print,
"clicked",
1325 G_CALLBACK (callbacks_print_activate),
1328 g_signal_connect ((gpointer) toolbutton_zoom_in,
"clicked",
1329 G_CALLBACK (callbacks_zoom_in_activate),
1331 g_signal_connect ((gpointer) toolbutton_zoom_out,
"clicked",
1332 G_CALLBACK (callbacks_zoom_out_activate),
1334 g_signal_connect ((gpointer) toolbutton_zoom_fit,
"clicked",
1335 G_CALLBACK (callbacks_fit_to_window_activate),
1337 g_signal_connect ((gpointer) toggletoolbutton_pointer,
"clicked",
1338 G_CALLBACK (callbacks_change_tool), (gpointer) 0);
1339 g_signal_connect ((gpointer) toggletoolbutton_pan,
"clicked",
1340 G_CALLBACK (callbacks_change_tool), (gpointer) 1);
1341 g_signal_connect ((gpointer) toggletoolbutton_zoom,
"clicked",
1342 G_CALLBACK (callbacks_change_tool), (gpointer) 2);
1343 g_signal_connect ((gpointer) toggletoolbutton_measure,
"clicked",
1344 G_CALLBACK (callbacks_change_tool), (gpointer) 3);
1346 g_signal_connect ((gpointer) statusUnitComboBox,
"changed",
1347 G_CALLBACK (callbacks_statusbar_unit_combo_box_changed),
1350 g_signal_connect ((gpointer) button4,
"clicked",
1351 G_CALLBACK (callbacks_add_layer_button_clicked), NULL);
1352 g_signal_connect ((gpointer) button7,
"clicked",
1353 G_CALLBACK (callbacks_remove_layer_button_clicked), NULL);
1354 g_signal_connect ((gpointer) button5,
"clicked",
1355 G_CALLBACK (callbacks_move_layer_down_button_clicked), NULL);
1356 g_signal_connect ((gpointer) button6,
"clicked",
1357 G_CALLBACK (callbacks_move_layer_up_button_clicked), NULL);
1359 g_signal_connect ((gpointer) hAdjustment,
"value-changed",
1360 G_CALLBACK (callbacks_hadjustment_value_changed), NULL);
1361 g_signal_connect ((gpointer) vAdjustment,
"value-changed",
1362 G_CALLBACK (callbacks_vadjustment_value_changed), NULL);
1363 g_signal_connect ((gpointer) hScrollbar,
"button-press-event",
1364 G_CALLBACK (callbacks_scrollbar_button_pressed), NULL);
1365 g_signal_connect ((gpointer) hScrollbar,
"button-release-event",
1366 G_CALLBACK (callbacks_scrollbar_button_released), NULL);
1367 g_signal_connect ((gpointer) vScrollbar,
"button-press-event",
1368 G_CALLBACK (callbacks_scrollbar_button_pressed), NULL);
1369 g_signal_connect ((gpointer) vScrollbar,
"button-release-event",
1370 G_CALLBACK (callbacks_scrollbar_button_released), NULL);
1373 if (
screen.unit == GERBV_MILS)
1374 gtk_combo_box_set_active (GTK_COMBO_BOX (statusUnitComboBox), 0);
1375 else if (
screen.unit == GERBV_MMS)
1376 gtk_combo_box_set_active (GTK_COMBO_BOX (statusUnitComboBox), 1);
1378 gtk_combo_box_set_active (GTK_COMBO_BOX (statusUnitComboBox), 2);
1382 gtk_window_add_accel_group (GTK_WINDOW (mainWindow), accel_group);
1384 GtkListStore *list_store;
1386 list_store = gtk_list_store_new (4, G_TYPE_BOOLEAN,
1387 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
1391 tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store));
1392 GtkCellRenderer *renderer;
1393 GtkTreeViewColumn *column;
1395 renderer = gtk_cell_renderer_toggle_new ();
1396 column = gtk_tree_view_column_new_with_attributes (
"Visible",
1400 gtk_tree_view_column_set_min_width ((GtkTreeViewColumn *)column,25);
1401 gtk_signal_connect(GTK_OBJECT(renderer),
"toggled",
1402 GTK_SIGNAL_FUNC(callbacks_layer_tree_visibility_button_toggled), NULL);
1403 gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
1405 renderer = gtk_cell_renderer_pixbuf_new ();
1406 column = gtk_tree_view_column_new_with_attributes (
"Color",
1409 gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
1411 renderer = gtk_cell_renderer_text_new ();
1412 g_object_set (G_OBJECT (renderer),
"foreground",
"red",
"xalign", 0.5,
1413 "family",
"Times",
"size-points", 12.0, NULL);
1414 column = gtk_tree_view_column_new_with_attributes (
"Modified",
1418 gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
1419 gtk_tree_view_column_set_min_width ((GtkTreeViewColumn *)column,20);
1421 renderer = gtk_cell_renderer_text_new ();
1422 column = gtk_tree_view_column_new_with_attributes (
"Name",
1426 gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
1428 gtk_tree_view_set_headers_visible ((GtkTreeView *)tree, FALSE);
1429 gtk_signal_connect(GTK_OBJECT(tree),
"key-press-event",
1430 GTK_SIGNAL_FUNC(callbacks_layer_tree_key_press), NULL);
1431 gtk_signal_connect(GTK_OBJECT(tree),
"button-press-event",
1432 GTK_SIGNAL_FUNC(callbacks_layer_tree_button_press), NULL);
1433 gtk_container_add (GTK_CONTAINER (scrolledwindow1), tree);
1435 GtkTreeSelection *selection;
1436 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
1437 gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
1438 gtk_tree_view_set_enable_search (GTK_TREE_VIEW (tree), FALSE);
1439 gtk_tree_view_set_reorderable (GTK_TREE_VIEW (tree), TRUE);
1441 g_signal_connect (G_OBJECT(list_store),
"row-inserted",
1442 G_CALLBACK (callbacks_layer_tree_row_inserted), NULL);
1444 gtk_widget_grab_focus (tree);
1448 gtk_signal_connect(GTK_OBJECT(drawingarea),
"expose_event",
1449 GTK_SIGNAL_FUNC(callbacks_drawingarea_expose_event), NULL);
1450 gtk_signal_connect(GTK_OBJECT(drawingarea),
"configure_event",
1451 GTK_SIGNAL_FUNC(callbacks_drawingarea_configure_event), NULL);
1452 gtk_signal_connect(GTK_OBJECT(drawingarea),
"motion_notify_event",
1453 GTK_SIGNAL_FUNC(callbacks_drawingarea_motion_notify_event), NULL);
1454 gtk_signal_connect(GTK_OBJECT(drawingarea),
"button_press_event",
1455 GTK_SIGNAL_FUNC(callbacks_drawingarea_button_press_event), NULL);
1456 gtk_signal_connect(GTK_OBJECT(drawingarea),
"button_release_event",
1457 GTK_SIGNAL_FUNC(callbacks_drawingarea_button_release_event), NULL);
1458 gtk_signal_connect_after(GTK_OBJECT(mainWindow),
"key_press_event",
1459 GTK_SIGNAL_FUNC(callbacks_window_key_press_event), NULL);
1460 gtk_signal_connect_after(GTK_OBJECT(mainWindow),
"key_release_event",
1461 GTK_SIGNAL_FUNC(callbacks_window_key_release_event), NULL);
1462 gtk_signal_connect_after(GTK_OBJECT(mainWindow),
"scroll_event",
1463 GTK_SIGNAL_FUNC(callbacks_window_scroll_event), NULL);
1464 gtk_signal_connect_after(GTK_OBJECT(mainWindow),
"delete_event",
1467 gtk_widget_set_events(drawingarea, GDK_EXPOSURE_MASK
1468 | GDK_LEAVE_NOTIFY_MASK
1469 | GDK_ENTER_NOTIFY_MASK
1470 | GDK_BUTTON_PRESS_MASK
1471 | GDK_BUTTON_RELEASE_MASK
1472 | GDK_KEY_PRESS_MASK
1473 | GDK_KEY_RELEASE_MASK
1474 | GDK_POINTER_MOTION_MASK
1475 | GDK_POINTER_MOTION_HINT_MASK
1483 GdkColor zoom_outline_color = {0, 50000, 50000, 50000};
1484 GdkColor dist_measure_color = {0, 60000, 30000, 65000};
1485 GdkColor selection_color = {0, 65000, 65000, 65000};
1487 screen.zoom_outline_color = zoom_outline_color;
1488 screen.dist_measure_color = dist_measure_color;
1489 screen.selection_color = selection_color;
1493 screen.drawing_area = drawingarea;
1494 screen.win.hAdjustment = hAdjustment;
1495 screen.win.vAdjustment = vAdjustment;
1496 screen.win.hRuler = hRuler;
1497 screen.win.vRuler = vRuler;
1498 screen.win.sidepane_notebook = sidepane_notebook;
1499 screen.win.sidepaneRenderComboBox = GTK_COMBO_BOX(render_combobox);
1500 screen.win.toolButtonPointer = toggletoolbutton_pointer;
1501 screen.win.toolButtonPan = toggletoolbutton_pan;
1502 screen.win.toolButtonZoom = toggletoolbutton_zoom;
1503 screen.win.toolButtonMeasure = toggletoolbutton_measure;
1506 gtk_tooltips_enable (tooltips);
1510 if ((req_width != -1) && (req_height != -1)) {
1512 height = req_height;
1518 screen = gdk_screen_get_default();
1519 nmonitors = gdk_screen_get_n_monitors(screen);
1521 width = gdk_screen_get_width(screen) * 3/4 / nmonitors;
1522 height = gdk_screen_get_height(screen) * 3/4 / nmonitors;
1525 gtk_window_set_default_size((GtkWindow *)mainWindow, width, height);
1527 GtkSettings* gtksettings = gtk_settings_get_default ();
1528 g_object_set (G_OBJECT(gtksettings),
"gtk-can-change-accels", TRUE, NULL);
1529 interface_load_accels ();
1530 gtk_widget_show_all (mainWindow);
1531 screen.win.topLevelWindow = mainWindow;
1532 screen.win.messageTextView = message_textview;
1533 screen.win.statusMessageLeft = statusbar_label_left;
1534 screen.win.statusMessageRight = statusbar_label_right;
1535 screen.win.statusUnitComboBox = statusUnitComboBox;
1536 screen.win.layerTree = tree;
1537 screen.win.treeIsUpdating = FALSE;
1539 screen.selectionInfo.selectedNodeArray = g_array_new (FALSE,
1540 FALSE,
sizeof(gerbv_selection_item_t));
1541 callbacks_change_tool (NULL, (gpointer) 0);
1542 rename_main_window(
"",mainWindow);
1544 set_window_icon (mainWindow);
1545 callbacks_update_layer_tree ();
1548 g_log_set_handler (NULL,
1549 G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION | G_LOG_LEVEL_MASK,
1550 callbacks_handle_log_messages, NULL);
1553 extern GArray *log_array_tmp;
1554 struct log_struct log_item;
1557 for (i = 0; i < log_array_tmp->len; i++) {
1558 log_item = g_array_index (log_array_tmp,
struct log_struct, i);
1559 callbacks_handle_log_messages (log_item.domain, log_item.level,
1560 log_item.message, NULL);
1561 g_free(log_item.domain);
1562 g_free(log_item.message);
1564 g_array_free (log_array_tmp, TRUE);
1568 g_signal_connect ((gpointer) render_fast,
"activate",
1569 G_CALLBACK (callbacks_viewmenu_rendertype_changed),
1571 g_signal_connect ((gpointer) render_fast_xor,
"activate",
1572 G_CALLBACK (callbacks_viewmenu_rendertype_changed),
1574 g_signal_connect ((gpointer) render_normal,
"activate",
1575 G_CALLBACK (callbacks_viewmenu_rendertype_changed),
1577 g_signal_connect ((gpointer) render_hq,
"activate",
1578 G_CALLBACK (callbacks_viewmenu_rendertype_changed),
1580 g_signal_connect ((gpointer) render_combobox,
"changed",
1581 G_CALLBACK (callbacks_sidepane_render_type_combo_box_changed),
1584 interface_save_accels ();
1589 interface_set_render_type (
int t)
1599 if (!
screen.win.sidepaneRenderComboBox)
1602 gtk_combo_box_set_active (GTK_COMBO_BOX (
screen.win.sidepaneRenderComboBox), t);
1603 gtk_check_menu_item_set_active (
screen.win.menu_view_render_group[t], TRUE);
1617 gboolean show_checkbox, gboolean *ask_to_show_again )
1624 GtkWidget *dialog_vbox1;
1628 GtkWidget *checkbox=NULL;
1629 GtkWidget *dialog_action_area1;
1630 GtkWidget *cancelbutton1;
1631 GtkWidget *okbutton1;
1632 gboolean returnVal = FALSE;
1634 dialog1 = gtk_dialog_new ();
1635 gtk_container_set_border_width (GTK_CONTAINER (dialog1), 6);
1636 gtk_window_set_resizable (GTK_WINDOW (dialog1), FALSE);
1637 gtk_window_set_type_hint (GTK_WINDOW (dialog1), GDK_WINDOW_TYPE_HINT_DIALOG);
1638 gtk_dialog_set_has_separator (GTK_DIALOG (dialog1), FALSE);
1640 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1642 hbox1 = gtk_hbox_new (FALSE, 12);
1643 gtk_box_pack_start (GTK_BOX (dialog_vbox1), hbox1, TRUE, TRUE, 0);
1644 gtk_container_set_border_width (GTK_CONTAINER (hbox1), 6);
1646 image1 = gtk_image_new_from_icon_name (GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DIALOG);
1647 gtk_box_pack_start (GTK_BOX (hbox1), image1, TRUE, TRUE, 0);
1648 gtk_misc_set_alignment (GTK_MISC (image1), 0.5, 0);
1650 gchar *labelMessage = g_strconcat (
"<span weight=\"bold\" size=\"larger\">", _(primaryText),
1651 "</span>\n<span/>\n", _(secondaryText), NULL);
1652 label1 = gtk_label_new (labelMessage);
1653 g_free (labelMessage);
1654 GtkWidget *vbox9 = gtk_vbox_new (FALSE, 0);
1655 gtk_box_pack_start (GTK_BOX (vbox9), label1, FALSE, FALSE, 0);
1656 gtk_box_pack_start (GTK_BOX (hbox1), vbox9, FALSE, FALSE, 0);
1657 gtk_label_set_use_markup (GTK_LABEL (label1), TRUE);
1658 gtk_label_set_line_wrap (GTK_LABEL (label1), TRUE);
1662 GtkWidget *hbox2 = gtk_hbox_new (FALSE, 12);
1663 if (show_checkbox) {
1664 GtkWidget *label3 = gtk_label_new (
" ");
1666 checkbox = gtk_check_button_new_with_label(_(
"Do not show this dialog again."));
1667 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(checkbox), FALSE);
1668 gtk_box_pack_start (GTK_BOX (hbox2), label3, FALSE, FALSE, 0);
1669 gtk_box_pack_start (GTK_BOX (hbox2), checkbox, FALSE, FALSE, 0);
1671 gtk_box_pack_start (GTK_BOX (vbox9), hbox2, FALSE, FALSE, 12);
1673 dialog_action_area1 = GTK_DIALOG (dialog1)->action_area;
1674 gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END);
1676 cancelbutton1 = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
1677 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1), cancelbutton1, GTK_RESPONSE_CANCEL);
1678 GTK_WIDGET_SET_FLAGS (cancelbutton1, GTK_CAN_DEFAULT);
1679 gtk_widget_grab_default (cancelbutton1);
1680 gtk_widget_grab_focus (cancelbutton1);
1682 okbutton1 = gtk_button_new_from_stock (GTK_STOCK_OK);
1683 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1), okbutton1, GTK_RESPONSE_OK);
1684 GTK_WIDGET_SET_FLAGS (okbutton1, GTK_CAN_DEFAULT);
1686 gtk_widget_show_all (dialog1);
1688 if (gtk_dialog_run ((GtkDialog*)dialog1) == GTK_RESPONSE_OK) {
1690 if ((show_checkbox == TRUE) &&
1691 (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox)) == TRUE) &&
1692 (ask_to_show_again != NULL) ) {
1695 *ask_to_show_again = FALSE;
1699 gtk_widget_destroy (dialog1);
1714 gboolean show_checkbox, gboolean *ask_to_show_again )
1720 GtkWidget *dialog_vbox1;
1724 GtkWidget *checkbox=NULL;
1725 GtkWidget *dialog_action_area1;
1726 GtkWidget *okbutton1;
1728 dialog1 = gtk_dialog_new ();
1729 gtk_container_set_border_width (GTK_CONTAINER (dialog1), 6);
1730 gtk_window_set_resizable (GTK_WINDOW (dialog1), FALSE);
1731 gtk_window_set_type_hint (GTK_WINDOW (dialog1), GDK_WINDOW_TYPE_HINT_DIALOG);
1732 gtk_dialog_set_has_separator (GTK_DIALOG (dialog1), FALSE);
1734 dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
1736 hbox1 = gtk_hbox_new (FALSE, 12);
1737 gtk_box_pack_start (GTK_BOX (dialog_vbox1), hbox1, TRUE, TRUE, 0);
1738 gtk_container_set_border_width (GTK_CONTAINER (hbox1), 6);
1740 image1 = gtk_image_new_from_icon_name (GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DIALOG);
1741 gtk_box_pack_start (GTK_BOX (hbox1), image1, TRUE, TRUE, 0);
1742 gtk_misc_set_alignment (GTK_MISC (image1), 0.5, 0);
1744 gchar *labelMessage = g_strconcat (
"<span weight=\"bold\" size=\"larger\">", _(primaryText),
1745 "</span>\n<span/>\n", _(secondaryText), NULL);
1746 label1 = gtk_label_new (labelMessage);
1747 g_free (labelMessage);
1749 GtkWidget *vbox9 = gtk_vbox_new (FALSE, 0);
1750 gtk_box_pack_start (GTK_BOX (vbox9), label1, FALSE, FALSE, 0);
1751 gtk_label_set_use_markup (GTK_LABEL (label1), TRUE);
1752 gtk_label_set_line_wrap (GTK_LABEL (label1), TRUE);
1753 gtk_box_pack_start (GTK_BOX (hbox1), vbox9, FALSE, FALSE, 0);
1755 GtkWidget *hbox2 = gtk_hbox_new (FALSE, 12);
1756 if (show_checkbox) {
1757 GtkWidget *label3 = gtk_label_new (
" ");
1759 checkbox = gtk_check_button_new_with_label(_(
"Do not show this dialog again."));
1760 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(checkbox), FALSE);
1761 gtk_box_pack_start (GTK_BOX (hbox2), label3, FALSE, FALSE, 0);
1762 gtk_box_pack_start (GTK_BOX (hbox2), checkbox, FALSE, FALSE, 0);
1764 gtk_box_pack_start (GTK_BOX (vbox9), hbox2, FALSE, FALSE, 12);
1766 dialog_action_area1 = GTK_DIALOG (dialog1)->action_area;
1767 gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END);
1769 okbutton1 = gtk_button_new_from_stock (GTK_STOCK_OK);
1770 gtk_dialog_add_action_widget (GTK_DIALOG (dialog1), okbutton1, GTK_RESPONSE_OK);
1771 GTK_WIDGET_SET_FLAGS (okbutton1, GTK_CAN_DEFAULT);
1773 gtk_widget_show_all (dialog1);
1776 if ((show_checkbox == TRUE) &&
1777 (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox)) == TRUE) &&
1778 (ask_to_show_again != NULL) ) {
1781 *ask_to_show_again = FALSE;
1784 gtk_dialog_run (GTK_DIALOG(dialog1));
1785 gtk_widget_destroy (dialog1);
1790 static int focused_widget_num = 0;
1793 focus_in_event_callback (
int *widget_num)
1795 focused_widget_num = *widget_num;
1802 GtkWidget *check1,*check2,*tempWidget,*tempWidget2,*tableWidget;
1803 GtkWidget *spin1,*spin2,*spin3,*spin4,*spin5;
1806 GtkWidget **focus_widgets[] = {&spin1, &spin2, &spin3, &spin4, &spin5, &check1, &check2, NULL};
1807 int focus_nums[G_N_ELEMENTS(focus_widgets)];
1810 dialog = gtk_dialog_new_with_buttons (_(
"Edit layer"),
1811 GTK_WINDOW (
screen.win.topLevelWindow), GTK_DIALOG_DESTROY_WITH_PARENT,
1812 GTK_STOCK_CANCEL, GTK_RESPONSE_NONE, GTK_STOCK_OK, GTK_RESPONSE_OK,
1813 GTK_STOCK_APPLY, GTK_RESPONSE_APPLY,
1816 gtk_container_set_border_width (GTK_CONTAINER (dialog), 6);
1817 gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
1818 gtk_window_set_type_hint (GTK_WINDOW (dialog), GDK_WINDOW_TYPE_HINT_DIALOG);
1819 gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
1821 tableWidget = gtk_table_new (16,3,FALSE);
1822 gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), tableWidget, FALSE, FALSE, 0);
1824 tempWidget = gtk_label_new (NULL);
1825 gtk_label_set_markup (GTK_LABEL (tempWidget), _(
"<span weight=\"bold\">Translation</span>"));
1826 gtk_misc_set_alignment (GTK_MISC (tempWidget), 0.0, 0.5);
1827 gtk_table_attach ((GtkTable *) tableWidget, tempWidget,0,2,0,1,GTK_EXPAND|GTK_FILL,0,0,5);
1829 tempWidget = gtk_label_new (
" ");
1830 gtk_table_attach ((GtkTable *) tableWidget, tempWidget,0,1,1,2,0,0,0,0);
1831 gdouble translateX, translateY;
1834 tempWidget = gtk_label_new (_(
"X (mils):"));
1835 tempWidget2 = gtk_label_new (_(
"Y (mils):"));
1839 else if (
screen.unit == (gerbv_gui_unit_t) GERBV_MMS) {
1840 tempWidget = gtk_label_new (_(
"X (mms):"));
1841 tempWidget2 = gtk_label_new (_(
"Y (mms):"));
1846 tempWidget = gtk_label_new (_(
"X (inches):"));
1847 tempWidget2 = gtk_label_new (_(
"Y (inches):"));
1852 gtk_misc_set_alignment (GTK_MISC (tempWidget), 0.0, 0.5);
1853 gtk_table_attach ((GtkTable *) tableWidget, tempWidget,1,2,1,2,GTK_EXPAND|GTK_FILL,0,0,0);
1854 gtk_misc_set_alignment (GTK_MISC (tempWidget2), 0.0, 0.5);
1855 gtk_table_attach ((GtkTable *) tableWidget, tempWidget2,1,2,2,3,GTK_EXPAND|GTK_FILL,0,0,0);
1856 adj = (GtkAdjustment *) gtk_adjustment_new (translateX, -1000000, 1000000, 1, 10, 0.0);
1857 spin1 = (GtkWidget *) gtk_spin_button_new (adj, 0.1, 4);
1858 gtk_table_attach ((GtkTable *) tableWidget, spin1,2,3,1,2,GTK_FILL,0,0,0);
1859 adj = (GtkAdjustment *) gtk_adjustment_new (translateY, -1000000, 1000000, 1, 10, 0.0);
1860 spin2 = (GtkWidget *) gtk_spin_button_new (adj, 0.1, 4);
1861 gtk_table_attach ((GtkTable *) tableWidget, spin2,2,3,2,3,GTK_FILL,0,0,0);
1863 gtk_table_set_row_spacing ((GtkTable *) tableWidget, 3, 8);
1864 tempWidget = gtk_label_new (NULL);
1865 gtk_label_set_markup (GTK_LABEL (tempWidget), _(
"<span weight=\"bold\">Scale</span>"));
1866 gtk_misc_set_alignment (GTK_MISC (tempWidget), 0.0, 0.5);
1867 gtk_table_attach ((GtkTable *) tableWidget, tempWidget,0,2,4,5,GTK_EXPAND|GTK_FILL,0,0,5);
1869 tempWidget = gtk_label_new (_(
"X direction:"));
1870 gtk_misc_set_alignment (GTK_MISC (tempWidget), 0.0, 0.5);
1871 gtk_table_attach ((GtkTable *) tableWidget, tempWidget,1,2,5,6,GTK_EXPAND|GTK_FILL,0,0,0);
1872 tempWidget = gtk_label_new (_(
"Y direction:"));
1873 gtk_misc_set_alignment (GTK_MISC (tempWidget), 0.0, 0.5);
1874 gtk_table_attach ((GtkTable *) tableWidget, tempWidget,1,2,6,7,GTK_EXPAND|GTK_FILL,0,0,0);
1875 adj = (GtkAdjustment *) gtk_adjustment_new (transform->
scaleX, -1000000, 1000000, 1, 10, 0.0);
1876 spin3 = (GtkWidget *) gtk_spin_button_new (adj, 1, 3);
1877 gtk_table_attach ((GtkTable *) tableWidget, spin3,2,3,5,6,GTK_FILL,0,0,0);
1878 adj = (GtkAdjustment *) gtk_adjustment_new (transform->
scaleY, -1000000, 1000000, 1, 10, 0.0);
1879 spin4 = (GtkWidget *) gtk_spin_button_new (adj, 1, 3);
1880 gtk_table_attach ((GtkTable *) tableWidget, spin4,2,3,6,7,GTK_FILL,0,0,0);
1882 gtk_table_set_row_spacing ((GtkTable *) tableWidget, 7, 8);
1884 tempWidget = gtk_label_new (NULL);
1885 gtk_label_set_markup (GTK_LABEL (tempWidget), _(
"<span weight=\"bold\">Rotation</span>"));
1886 gtk_misc_set_alignment (GTK_MISC (tempWidget), 0.0, 0.5);
1887 gtk_table_attach ((GtkTable *) tableWidget, tempWidget,0,2,8,9,GTK_EXPAND|GTK_FILL,0,0,5);
1889 tempWidget = gtk_label_new (_(
"Rotation (degrees): "));
1890 gtk_misc_set_alignment (GTK_MISC (tempWidget), 0.0, 0.5);
1891 gtk_table_attach ((GtkTable *) tableWidget, tempWidget,1,2,9,10,GTK_EXPAND|GTK_FILL,0,0,0);
1892 spin5 = gtk_combo_box_new_text();
1893 gtk_combo_box_append_text ((GtkComboBox *)spin5, _(
"None"));
1894 gtk_combo_box_append_text ((GtkComboBox *)spin5, _(
"90 deg CCW"));
1895 gtk_combo_box_append_text ((GtkComboBox *)spin5, _(
"180 deg CCW"));
1896 gtk_combo_box_append_text ((GtkComboBox *)spin5, _(
"270 deg CCW"));
1897 gdouble degreeRotation = transform->
rotation/M_PI*180;
1898 if ((degreeRotation < 135)&&(degreeRotation >= 45))
1899 gtk_combo_box_set_active ((GtkComboBox *)spin5, 1);
1900 else if ((degreeRotation < 225)&&(degreeRotation >= 135))
1901 gtk_combo_box_set_active ((GtkComboBox *)spin5, 2);
1902 else if ((degreeRotation < 315)&&(degreeRotation >= 225))
1903 gtk_combo_box_set_active ((GtkComboBox *)spin5, 3);
1905 gtk_combo_box_set_active ((GtkComboBox *)spin5, 0);
1911 gtk_table_attach ((GtkTable *) tableWidget, spin5,2,3,9,10,GTK_FILL,0,0,0);
1914 gtk_table_set_row_spacing ((GtkTable *) tableWidget, 10, 8);
1915 tempWidget = gtk_label_new (NULL);
1916 gtk_label_set_markup (GTK_LABEL (tempWidget), _(
"<span weight=\"bold\">Mirroring</span>"));
1917 gtk_misc_set_alignment (GTK_MISC (tempWidget), 0.0, 0.5);
1918 gtk_table_attach ((GtkTable *) tableWidget, tempWidget,0,2,11,12,GTK_EXPAND|GTK_FILL,0,0,5);
1920 tempWidget = gtk_label_new (_(
"About X axis:"));
1921 gtk_misc_set_alignment (GTK_MISC (tempWidget), 0.0, 0.5);
1922 gtk_table_attach ((GtkTable *) tableWidget, tempWidget,1,2,12,13,GTK_EXPAND|GTK_FILL,0,0,0);
1923 check1 = (GtkWidget *) gtk_check_button_new ();
1924 gtk_toggle_button_set_active ((GtkToggleButton *) check1, transform->
mirrorAroundX);
1925 gtk_table_attach ((GtkTable *) tableWidget, check1,2,3,12,13,0,0,0,2);
1927 tempWidget = gtk_label_new (_(
"About Y axis:"));
1928 gtk_misc_set_alignment (GTK_MISC (tempWidget), 0.0, 0.5);
1929 gtk_table_attach ((GtkTable *) tableWidget, tempWidget,1,2,13,14,GTK_EXPAND|GTK_FILL,0,0,0);
1930 check2 = (GtkWidget *) gtk_check_button_new ();
1931 gtk_toggle_button_set_active ((GtkToggleButton *) check2, transform->
mirrorAroundY);
1932 gtk_table_attach ((GtkTable *) tableWidget, check2,2,3,13,14,0,0,0,2);
1934 for (i = 0; focus_widgets[i] != NULL; i++) {
1936 if (i == focused_widget_num) {
1937 gtk_widget_grab_focus (*focus_widgets[i]);
1942 g_signal_connect_swapped ((gpointer)(*focus_widgets[i]),
"focus-in-event",
1943 G_CALLBACK (focus_in_event_callback), (gpointer)(focus_nums + i));
1946 gtk_table_set_row_spacing ((GtkTable *) tableWidget, 14, 8);
1947 gtk_widget_show_all (dialog);
1948 gint result = GTK_RESPONSE_APPLY;
1951 while (result == GTK_RESPONSE_APPLY) {
1952 result = gtk_dialog_run (GTK_DIALOG(dialog));
1953 if (result != GTK_RESPONSE_NONE) {
1956 transform->
translateX = gtk_spin_button_get_value ((GtkSpinButton *) spin1)/
1958 transform->
translateY = gtk_spin_button_get_value ((GtkSpinButton *) spin2)/
1961 else if (
screen.unit == (gerbv_gui_unit_t) GERBV_MMS) {
1962 transform->
translateX = gtk_spin_button_get_value ((GtkSpinButton *) spin1)/
1964 transform->
translateY = gtk_spin_button_get_value ((GtkSpinButton *) spin2)/
1968 transform->
translateX = gtk_spin_button_get_value ((GtkSpinButton *) spin1);
1969 transform->
translateY = gtk_spin_button_get_value ((GtkSpinButton *) spin2);
1971 transform->
scaleX = gtk_spin_button_get_value ((GtkSpinButton *)spin3);
1972 transform->
scaleY = gtk_spin_button_get_value ((GtkSpinButton *)spin4);
1973 gint rotationIndex = gtk_combo_box_get_active ((GtkComboBox *)spin5);
1974 if (rotationIndex == 0)
1976 else if (rotationIndex == 1)
1977 transform->
rotation = 90.0/180*M_PI;
1978 else if (rotationIndex == 2)
1979 transform->
rotation = 180.0/180*M_PI;
1980 else if (rotationIndex == 3)
1981 transform->
rotation = 270.0/180*M_PI;
1982 transform->
mirrorAroundX = gtk_toggle_button_get_active ((GtkToggleButton *) check1);
1983 transform->
mirrorAroundY = gtk_toggle_button_get_active ((GtkToggleButton *) check2);
1985 render_refresh_rendered_image_on_screen ();
1986 callbacks_update_layer_tree ();
1989 if (result == GTK_RESPONSE_NONE) {
1991 *transform = startTransform;
1995 for (i = 0; focus_widgets[i] != NULL; i++) {
1996 g_object_get (*focus_widgets[i],
"has-focus", &has_focus, NULL);
1998 focus_widget_num = i;
2004 gtk_widget_destroy (dialog);