2 # This file is part of LyX, the document processor.
3 # Licence details can be found in the file COPYING.
7 # Full author contact details are available in file CREDITS
10 # sed -f fdfixc.sed < somefile.c > fixedfile.C
12 # It contains the instructions that sed requires to manipulate
13 # the .c files produced by fdesign into a form usable by LyX
15 # Pretty formatting; remove trailing whitespace.
19 # Delete blank lines and fdesign comments.
21 /generated with fdesign/d
25 # Remove '#include "forms.h"'. It is replace by a macro in fdfix.sh.
26 /^#include \"forms\.h\"/d
29 # Pretty formatting; replace all leading whitespace with a tab
33 # Rename struct "FD_form_xxx" as "FD_xxx"
34 s/FD_form_\(.*\)/FD_\1/
37 # Rename the function create_form_form_xxx(void) as build_xxx()
38 s/\(.*\) \*create_form_form_\(.*\)\([(]void[)]\)/\
40 \1 * build_\2(void * parent)/
44 s/FL_OBJECT \*obj;/FL_OBJECT * obj;\
47 # Insert a line before each new FL_OBJECT
57 # Rewrite "fdui->form_xxx" as "fdui->form"
58 # xxx is followed by ' ', '->' or ')', so use these to flag when xxx ends.
59 /fdui->form/s/\(fdui->form\)_[^ )-]*/\1/
62 # We use new/delete not malloc/free so change to suit.
63 s/\(\(FD_[^ ]*\) \*fdui =\).*sizeof(\*fdui))/\1 new \2/
66 # We need to store a pointer to the dialog in u_vdata so that the
67 # callbacks will work.
68 s/\( fdui->form\)\(.*bgn_form.*\)/\1\2\
69 \1->u_vdata = parent;/
72 # For all lines containing "bmtable",
73 # replace "fl_add_button" with "fl_add_bmtable"
74 /bmtable/ s/fl_add_button/fl_add_bmtable/
77 # For all lines containing "combox",
78 # replace "fl_add_choice" with "fl_add_combox"
79 # Note that only two combox types exist, whilst there are four choice types.
81 s/fl_add_choice/fl_add_combox/
88 # For all lines containing fl_add_choice,
89 # add a line that turns off the title. (These titles can contain meta-chars
90 # that just look nasty ;-)
92 fl_set_choice_notitle(obj, 1);
95 # For all lines containing "fl_" and a string _not_ containing |,
96 # replace the string with _(string).c_str()
97 /fl_/ s/".[^|]*"/_(&).c_str()/
100 # For all lines containing "_shortcut" and a string containing |,
101 # replace the string with scex(_(string)).c_str()
102 /_shortcut/ s/".*[|].*"/scex(_(&)).c_str()/
105 # For all lines containing "fl_add" and a string containing |
107 # fdui->counter_zoom = obj = fl_add_counter(...,"Zoom %|#Z");
109 # tmp_str = _("Zoom %|#Z");
110 # fdui->counter_zoom = obj = fl_add_counter(...,idex(tmp_str).c_str());
111 # fl_set_button_shortcut(obj,scex(tmp_str).c_str(),1);
113 /fl_add.*".*[|].*"/s/fdui\(.*\)"\(.*\)".*/tmp_str = _("\2");\
114 fdui\1idex(tmp_str).c_str());\
115 fl_set_button_shortcut(obj,scex(tmp_str).c_str(),1);/
118 # gettext will get confused if the string contains a "%" unless the line is
119 # preceeded immediately by "// xgettext:no-c-format"
121 // xgettext:no-c-format
124 # Someone got busy and put spaces in after commas but didn't allow for the
125 # autogeneration of the files so their pretty formatting got lost. Not anymore.
128 # Clean up one special case where a comma appears at the end of a string
129 # while ensuring "...", "..." isn't affected.
130 s/\("[^"]+,\) \("\)/\1\2/g