Changeset 5393
- Timestamp:
- 08/06/09 08:54:41 (4 years ago)
- Location:
- trunk/eda/fped
- Files:
-
- 11 edited
-
README (modified) (2 diffs)
-
TODO (modified) (3 diffs)
-
fpd.l (modified) (1 diff)
-
fpd.y (modified) (3 diffs)
-
gui.c (modified) (8 diffs)
-
gui_style.h (modified) (1 diff)
-
obj.c (modified) (1 diff)
-
obj.h (modified) (1 diff)
-
qfn.fpd (modified) (1 diff)
-
quad.fpd (modified) (1 diff)
-
tab.fpd (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/eda/fped/README
r5391 r5393 76 76 single line, e.g., in a macro, they can be separated with semicolons. 77 77 78 The file has the following structure: 79 80 frame definitions 81 ... 82 part name 83 objects 84 ... 85 78 86 79 87 Geometry model … … 213 221 b: vec @(1mm, 1mm) 214 222 meas a b 0.2 mm 223 224 225 Part name 226 - - - - - 227 228 The part name is a string of alphanumerical characters. Underscores are 229 allowed in the part name as well. 230 231 part "<name>" 232 233 Examples: 234 235 part "SSOP_48" 236 part "0603" 215 237 216 238 -
trunk/eda/fped/TODO
r5390 r5393 9 9 - add postscript output 10 10 - add option to include/omit helper vecs and frames (display and postscript) 11 - define part name12 11 13 12 Error detection: … … 17 16 - make column of entry field greedily consume all unallocated space 18 17 - status area looks awful 19 - status area bounces when something becomes editable20 18 - add button with GTK_STOCK_UNDELETE for "undelete" to menu bar 21 19 … … 55 53 same element in the old instance, and select it 56 54 - future: consider editing off-canvas items in place 55 - near future: treat part name as pattern -
trunk/eda/fped/fpd.l
r5386 r5393 73 73 <INITIAL>"loop" { BEGIN(NOKEYWORD); 74 74 return TOK_LOOP; } 75 <INITIAL>"part" { BEGIN(NOKEYWORD); 76 return TOK_PART; } 75 77 <INITIAL>"frame" { BEGIN(NOKEYWORD); 76 78 is_table = 0; -
trunk/eda/fped/fpd.y
r5391 r5393 143 143 144 144 %token START_FPD START_EXPR 145 %token TOK_SET TOK_LOOP TOK_ FRAME TOK_TABLE TOK_VEC145 %token TOK_SET TOK_LOOP TOK_PART TOK_FRAME TOK_TABLE TOK_VEC 146 146 %token TOK_PAD TOK_RECT TOK_LINE TOK_CIRC TOK_ARC TOK_MEAS 147 147 … … 173 173 set_frame(root_frame); 174 174 } 175 frame_defs frame_items175 frame_defs part_name frame_items 176 176 { 177 177 root_frame->prev = last_frame; … … 180 180 else 181 181 frames = root_frame; 182 } 183 ; 184 185 part_name: 186 TOK_PART STRING 187 { 188 const char *p; 189 190 if (!*p) { 191 yyerrorf("invalid part name"); 192 YYABORT; 193 } 194 for (p = $2; *p; *p++) 195 if (!is_id_char(*p, 0)) { 196 yyerrorf("invalid part name"); 197 YYABORT; 198 } 199 part_name = $2; 182 200 } 183 201 ; -
trunk/eda/fped/gui.c
r5390 r5393 24 24 #include "delete.h" 25 25 #include "unparse.h" 26 #include "dump.h" 26 27 #include "gui_util.h" 27 28 #include "gui_style.h" … … 40 41 41 42 43 static void menu_save(GtkWidget *widget, gpointer user) 44 { 45 dump(stdout); 46 } 47 48 42 49 static void make_menu_bar(GtkWidget *vbox) 43 50 { 44 51 GtkWidget *bar; 45 GtkWidget *file_menu, *file, *quit ;52 GtkWidget *file_menu, *file, *quit, *save; 46 53 47 54 bar = gtk_menu_bar_new(); … … 54 61 gtk_menu_shell_append(GTK_MENU_SHELL(bar), file); 55 62 63 save = gtk_menu_item_new_with_label("Save"); 64 gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), save); 65 g_signal_connect(G_OBJECT(save), "activate", 66 G_CALLBACK(menu_save), NULL); 67 56 68 quit = gtk_menu_item_new_with_label("Quit"); 57 69 gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), quit); 58 59 70 g_signal_connect(G_OBJECT(quit), "activate", 60 71 G_CALLBACK(gtk_main_quit), NULL); … … 461 472 462 473 474 /* ----- part name --------------------------------------------------------- */ 475 476 477 static int validate_part_name(const char *s, void *ctx) 478 { 479 if (!*s) 480 return 0; 481 while (*s) 482 if (!is_id_char(*s++, 0)) 483 return 0; 484 return 1; 485 } 486 487 static void unselect_part_name(void *data) 488 { 489 GtkWidget *widget = data; 490 491 label_in_box_bg(widget, COLOR_PART_NAME); 492 } 493 494 495 static gboolean part_name_edit_event(GtkWidget *widget, GdkEventButton *event, 496 gpointer data) 497 { 498 inst_select_outside(widget, unselect_part_name); 499 label_in_box_bg(widget, COLOR_PART_NAME_EDITING); 500 status_set_type_entry("part ="); 501 status_set_name("%s", part_name); 502 edit_name(&part_name, validate_part_name, NULL); 503 return TRUE; 504 } 505 506 507 static GtkWidget *build_part_name(void) 508 { 509 GtkWidget *label; 510 511 label = label_in_box_new(part_name); 512 gtk_misc_set_padding(GTK_MISC(label), 2, 2); 513 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); 514 515 label_in_box_bg(label, COLOR_PART_NAME); 516 517 g_signal_connect(G_OBJECT(box_of_label(label)), 518 "button_press_event", G_CALLBACK(part_name_edit_event), NULL); 519 520 return box_of_label(label); 521 } 522 523 463 524 /* ----- frame labels ------------------------------------------------------ */ 464 525 … … 571 632 { 572 633 GtkWidget *evbox, *image; 634 GtkWidget *align; 573 635 574 636 evbox = gtk_event_box_new(); … … 578 640 gtk_container_add(GTK_CONTAINER(evbox), image); 579 641 580 gtk_misc_set_padding(GTK_MISC(image), 2, 2); 581 gtk_misc_set_alignment(GTK_MISC(image), 0.3, 0); 642 align = gtk_alignment_new(0.3, 0, 0, 0); 643 gtk_container_add(GTK_CONTAINER(align), evbox); 644 gtk_alignment_set_padding(GTK_ALIGNMENT(align), 2, 0, 0, 0); 582 645 583 646 g_signal_connect(G_OBJECT(evbox), 584 647 "button_press_event", G_CALLBACK(frame_delete_event), frame); 585 return evbox; 648 649 return align; 586 650 } 587 651 … … 630 694 n++; 631 695 632 tab = gtk_table_new(n*2 , 2, FALSE);696 tab = gtk_table_new(n*2+1, 2, FALSE); 633 697 gtk_table_set_row_spacings(GTK_TABLE(tab), 1); 634 698 gtk_table_set_col_spacings(GTK_TABLE(tab), 1); 635 699 gtk_box_pack_start(GTK_BOX(vbox), tab, FALSE, FALSE, 0); 700 701 label = build_part_name(); 702 gtk_table_attach_defaults(GTK_TABLE(tab), label, 0, 1, 0, 1); 636 703 637 704 n = 0; … … 639 706 label = build_frame_label(frame); 640 707 gtk_table_attach_defaults(GTK_TABLE(tab), label, 641 0, 1, n*2 , n*2+1);708 0, 1, n*2+1, n*2+2); 642 709 643 710 delete = build_frame_delete(frame); 644 711 gtk_table_attach_defaults(GTK_TABLE(tab), delete, 645 0, 1, n*2+ 1, n*2+2);712 0, 1, n*2+2, n*2+3); 646 713 647 714 refs = build_frame_refs(frame); 648 715 gtk_table_attach_defaults(GTK_TABLE(tab), refs, 649 1, 2, n*2 , n*2+1);716 1, 2, n*2+1, n*2+2); 650 717 651 718 vars = build_vars(frame); 652 719 gtk_table_attach_defaults(GTK_TABLE(tab), vars, 653 1, 2, n*2+ 1, n*2+2);720 1, 2, n*2+2, n*2+3); 654 721 n++; 655 722 } -
trunk/eda/fped/gui_style.h
r5385 r5393 61 61 #define COLOR_EDITING "#ff00ff" 62 62 63 #define COLOR_PART_NAME "#ffa050" 64 #define COLOR_PART_NAME_EDITING COLOR_EDITING 65 63 66 #define COLOR_FRAME_UNSELECTED "#c0c0c0" 64 67 #define COLOR_FRAME_SELECTED "#fff0a0" -
trunk/eda/fped/obj.c
r5387 r5393 28 28 29 29 30 char *part_name = NULL; 30 31 struct frame *frames = NULL; 31 32 struct frame *root_frame = NULL; -
trunk/eda/fped/obj.h
r5392 r5393 172 172 173 173 174 extern char *part_name; 174 175 extern struct frame *frames; 175 176 extern struct frame *root_frame; -
trunk/eda/fped/qfn.fpd
r5374 r5393 24 24 25 25 } 26 27 28 part "qfn" 26 29 27 30 -
trunk/eda/fped/quad.fpd
r5377 r5393 3 3 circ . @ 4 4 } 5 6 part "quad" 5 7 6 8 vec @(-1mm, 1mm) -
trunk/eda/fped/tab.fpd
r5375 r5393 2 2 * row selection example 3 3 */ 4 5 part "tab" 4 6 5 7 table
Note: See TracChangeset
for help on using the changeset viewer.
