Changeset 5393


Ignore:
Timestamp:
08/06/09 08:54:41 (4 years ago)
Author:
werner
Message:
  • added menu item "Save" to dump the footprint to stdout
  • added temporary solution for having a part name
  • added part name to FPD example files
  • reduced area in which the frame delete button responds
Location:
trunk/eda/fped
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/eda/fped/README

    r5391 r5393  
    7676single line, e.g., in a macro, they can be separated with semicolons. 
    7777 
     78The file has the following structure: 
     79 
     80frame definitions 
     81... 
     82part name 
     83objects 
     84... 
     85 
    7886 
    7987Geometry model 
     
    213221b: vec @(1mm, 1mm) 
    214222meas a b 0.2 mm 
     223 
     224 
     225Part name 
     226- - - - - 
     227 
     228The part name is a string of alphanumerical characters. Underscores are 
     229allowed in the part name as well. 
     230 
     231part "<name>" 
     232 
     233Examples: 
     234 
     235part "SSOP_48" 
     236part "0603" 
    215237 
    216238 
  • trunk/eda/fped/TODO

    r5390 r5393  
    99- add postscript output 
    1010- add option to include/omit helper vecs and frames (display and postscript) 
    11 - define part name 
    1211 
    1312Error detection: 
     
    1716- make column of entry field greedily consume all unallocated space 
    1817- status area looks awful 
    19 - status area bounces when something becomes editable 
    2018- add button with GTK_STOCK_UNDELETE for "undelete" to menu bar 
    2119 
     
    5553  same element in the old instance, and select it 
    5654- future: consider editing off-canvas items in place 
     55- near future: treat part name as pattern 
  • trunk/eda/fped/fpd.l

    r5386 r5393  
    7373<INITIAL>"loop"                 { BEGIN(NOKEYWORD); 
    7474                                  return TOK_LOOP; } 
     75<INITIAL>"part"                 { BEGIN(NOKEYWORD); 
     76                                  return TOK_PART; } 
    7577<INITIAL>"frame"                { BEGIN(NOKEYWORD); 
    7678                                  is_table = 0; 
  • trunk/eda/fped/fpd.y

    r5391 r5393  
    143143 
    144144%token          START_FPD START_EXPR 
    145 %token          TOK_SET TOK_LOOP TOK_FRAME TOK_TABLE TOK_VEC 
     145%token          TOK_SET TOK_LOOP TOK_PART TOK_FRAME TOK_TABLE TOK_VEC 
    146146%token          TOK_PAD TOK_RECT TOK_LINE TOK_CIRC TOK_ARC TOK_MEAS 
    147147 
     
    173173                        set_frame(root_frame); 
    174174                } 
    175         frame_defs frame_items 
     175        frame_defs part_name frame_items 
    176176                { 
    177177                        root_frame->prev = last_frame; 
     
    180180                        else 
    181181                                frames = root_frame; 
     182                } 
     183        ; 
     184 
     185part_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; 
    182200                } 
    183201        ; 
  • trunk/eda/fped/gui.c

    r5390 r5393  
    2424#include "delete.h" 
    2525#include "unparse.h" 
     26#include "dump.h" 
    2627#include "gui_util.h" 
    2728#include "gui_style.h" 
     
    4041 
    4142 
     43static void menu_save(GtkWidget *widget, gpointer user) 
     44{ 
     45        dump(stdout); 
     46} 
     47 
     48 
    4249static void make_menu_bar(GtkWidget *vbox) 
    4350{ 
    4451        GtkWidget *bar; 
    45         GtkWidget *file_menu, *file, *quit; 
     52        GtkWidget *file_menu, *file, *quit, *save; 
    4653 
    4754        bar = gtk_menu_bar_new(); 
     
    5461        gtk_menu_shell_append(GTK_MENU_SHELL(bar), file); 
    5562 
     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 
    5668        quit = gtk_menu_item_new_with_label("Quit"); 
    5769        gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), quit); 
    58  
    5970        g_signal_connect(G_OBJECT(quit), "activate", 
    6071            G_CALLBACK(gtk_main_quit), NULL); 
     
    461472 
    462473 
     474/* ----- part name --------------------------------------------------------- */ 
     475 
     476 
     477static 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 
     487static void unselect_part_name(void *data) 
     488{ 
     489        GtkWidget *widget = data; 
     490 
     491        label_in_box_bg(widget, COLOR_PART_NAME); 
     492} 
     493 
     494 
     495static 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 
     507static 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 
    463524/* ----- frame labels ------------------------------------------------------ */ 
    464525 
     
    571632{ 
    572633        GtkWidget *evbox, *image; 
     634        GtkWidget *align; 
    573635 
    574636        evbox = gtk_event_box_new(); 
     
    578640        gtk_container_add(GTK_CONTAINER(evbox), image); 
    579641 
    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); 
    582645 
    583646        g_signal_connect(G_OBJECT(evbox), 
    584647            "button_press_event", G_CALLBACK(frame_delete_event), frame); 
    585         return evbox; 
     648 
     649        return align; 
    586650} 
    587651 
     
    630694                n++; 
    631695 
    632         tab = gtk_table_new(n*2, 2, FALSE); 
     696        tab = gtk_table_new(n*2+1, 2, FALSE); 
    633697        gtk_table_set_row_spacings(GTK_TABLE(tab), 1); 
    634698        gtk_table_set_col_spacings(GTK_TABLE(tab), 1); 
    635699        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); 
    636703 
    637704        n = 0; 
     
    639706                label = build_frame_label(frame); 
    640707                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); 
    642709 
    643710                delete = build_frame_delete(frame); 
    644711                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); 
    646713 
    647714                refs = build_frame_refs(frame); 
    648715                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); 
    650717 
    651718                vars = build_vars(frame); 
    652719                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); 
    654721                n++; 
    655722        } 
  • trunk/eda/fped/gui_style.h

    r5385 r5393  
    6161#define COLOR_EDITING   "#ff00ff" 
    6262 
     63#define COLOR_PART_NAME         "#ffa050" 
     64#define COLOR_PART_NAME_EDITING COLOR_EDITING 
     65 
    6366#define COLOR_FRAME_UNSELECTED  "#c0c0c0" 
    6467#define COLOR_FRAME_SELECTED    "#fff0a0" 
  • trunk/eda/fped/obj.c

    r5387 r5393  
    2828 
    2929 
     30char *part_name = NULL; 
    3031struct frame *frames = NULL; 
    3132struct frame *root_frame = NULL; 
  • trunk/eda/fped/obj.h

    r5392 r5393  
    172172 
    173173 
     174extern char *part_name; 
    174175extern struct frame *frames; 
    175176extern struct frame *root_frame; 
  • trunk/eda/fped/qfn.fpd

    r5374 r5393  
    2424 
    2525} 
     26 
     27 
     28part "qfn" 
    2629 
    2730 
  • trunk/eda/fped/quad.fpd

    r5377 r5393  
    33        circ . @ 
    44} 
     5 
     6part "quad" 
    57 
    68vec @(-1mm, 1mm) 
  • trunk/eda/fped/tab.fpd

    r5375 r5393  
    22 * row selection example 
    33 */ 
     4 
     5part "tab" 
    46 
    57table 
Note: See TracChangeset for help on using the changeset viewer.