From 0a20a1932e5f4419ba6e6fb9826c19c642c60b4d Mon Sep 17 00:00:00 2001 From: villa Date: Tue, 21 Nov 1995 10:36:46 +0000 Subject: [PATCH] Aggiunta gestione caratteri fincatura git-svn-id: svn://10.65.10.50/trunk@2182 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ba/ba2.url | 4 +- ba/ba2100.cpp | 176 +++++++++++++++++++++++++++++++++++++++++++++++++- ba/ba21fn.h | 11 ++++ ba/ba21fn.uml | 82 +++++++++++++++++++++++ ba/baformed.h | 1 + 5 files changed, 270 insertions(+), 4 deletions(-) create mode 100755 ba/ba21fn.h create mode 100755 ba/ba21fn.uml diff --git a/ba/ba2.url b/ba/ba2.url index 2f18dd8cb..80ac815c1 100755 --- a/ba/ba2.url +++ b/ba/ba2.url @@ -28,7 +28,8 @@ SUBMENU BAR_ITEM(5) "~Sfondo" MENU BAR_ITEM(1) ITEM MENU_ITEM(11) "~Relazione" ITEM MENU_ITEM(12) "~Parametri" - ITEM MENU_ITEM(13) "~Cambia profilo..." + ITEM MENU_ITEM(13) "Caratteri ~fincatura" + ITEM MENU_ITEM(14) "~Cambia profilo" MENU BAR_ITEM(2) ITEM MENU_ITEM(21) "~Normale" @@ -84,6 +85,7 @@ MENU BAR_ITEM(1) MENU BAR_ITEM(1) ITEM MENU_ITEM(11) "~Relazione" ITEM MENU_ITEM(12) "~Parametri" + ITEM MENU_ITEM(13) "Caratteri ~fincatura" MENU BAR_ITEM(2) ITEM MENU_ITEM(21) "~Normale" diff --git a/ba/ba2100.cpp b/ba/ba2100.cpp index b245a6d57..144f73d38 100755 --- a/ba/ba2100.cpp +++ b/ba/ba2100.cpp @@ -1,5 +1,157 @@ #include "baformed.h" -#include "ba2100.h" +#include "ba2100.h" +#include +// ----------------------------------------------------------------- +// maschera per le finkature +// ----------------------------------------------------------------- + +#include "ba21fn.h" + +class TFink_mask : public TMask +{ + TToken_string _chars; + + enum pos { // posizioni scatoletta + xl = 1, + xm = 15, + xr = 29, + yt = 1, + ym = 5, + yb = 9, + ofs = 36 + }; + + protected: + + void paint_example(); + + virtual void handler(WINDOW win, EVENT* ep); + static bool char_handler(TMask_field& f, KEY k); + virtual void start_run(); + virtual bool stop_run(KEY k); + virtual PNT log2dev(long x, long y) const; + + public: + + TToken_string& get_chars() { return _chars; } + + TFink_mask(const char* def) : TMask("ba21fn"), _chars(def,',') + { + set_handler(C_TR, char_handler); + set_handler(C_TL, char_handler); + set_handler(C_TM, char_handler); + set_handler(C_BR, char_handler); + set_handler(C_BL, char_handler); + set_handler(C_BM, char_handler); + set_handler(C_CM, char_handler); + set_handler(C_CR, char_handler); + set_handler(C_CL, char_handler); + set_handler(C_HR, char_handler); + set_handler(C_VR, char_handler); + } + virtual ~TFink_mask() {} +}; + +PNT TFink_mask::log2dev(long x, long y) const +{ + PNT p; + p.h = ((short)x+1)*CHARX; + p.v = (short)y*ROWY; + return p; +} + +void TFink_mask::handler(WINDOW win, EVENT* ep) +{ + TMask::handler(win, ep); + if (ep->type == E_UPDATE) + { + // pittura le righette + rect(xl, yt, xr+1, yb+1); + line(xl, ym, xr, ym); + line(xm, yt, xm, yb); + paint_example(); + } +} + +void TFink_mask::paint_example() +{ + // pittura un'immaginetta finculata + // on the right of the mask + TString line(xr); + set_font(XVT_FFN_COURIER); + set_color(MASK_DARK_COLOR,MASK_BACK_COLOR); + set_opaque_text(TRUE); + + for (int i = yt; i <= yb; i++) + { + line.spaces(); + if (i == yt) + { + line.fill(_chars.get_char(9)); + line[xl-1] = _chars.get_char(0); + line[xm-1] = _chars.get_char(1); + line[xr-1] = _chars.get_char(2); + } + else if (i == ym) + { + line.fill(_chars.get_char(9)); + line[xl-1] = _chars.get_char(6); + line[xm-1] = _chars.get_char(7); + line[xr-1] = _chars.get_char(8); + } + else if (i == yb) + { + line.fill(_chars.get_char(9)); + line[xl-1] = _chars.get_char(3); + line[xm-1] = _chars.get_char(4); + line[xr-1] = _chars.get_char(5); + } + else + { + line[xl-1] = _chars.get_char(10); + line[xm-1] = _chars.get_char(10); + line[xr-1] = _chars.get_char(10); + } + stringat(ofs, i, line); + } +} + +void TFink_mask::start_run() +{ + TMask::start_run(); + for (int i = 101; i <= 111; i++) + { + field(i).allow_pipe(); // allowa la pipa, se no son cazzi + field(i).set(_chars.get(i - 101)); + } +} + +bool TFink_mask::stop_run(KEY k) +{ + if (k == K_ENTER) + { + for (int i = 101; i <= 111; i++) + _chars.add(field(i).get(), i-101); + } + return TMask::stop_run(k); +} + +bool TFink_mask::char_handler(TMask_field& f, KEY k) +{ + if (f.focusdirty() && k == K_TAB) + { + TFink_mask& m = (TFink_mask&)f.mask(); + TToken_string& ch = m.get_chars(); + ch.add(f.get(), f.dlg() - 101); + m.paint_example(); + } + return TRUE; +} + + +// ----------------------------------------------------------------- +// form editor +// ----------------------------------------------------------------- TForm_editor::TForm_editor() : _form(NULL), _extra(FALSE), _m(NULL) @@ -37,7 +189,7 @@ bool TForm_editor::create() if (!_extra) dispatch_e_menu(MENU_ITEM(13)); } else - dispatch_e_menu(MENU_ITEM(13)); + dispatch_e_menu(MENU_ITEM(14)); _m = new TMask("ba2100b"); if (form) @@ -70,8 +222,10 @@ bool TForm_editor::menu(MENU_TAG tag) case MENU_ITEM(11): sec = 'R'; pt = odd_page; break; case MENU_ITEM(12): - sec = 'D'; pt = odd_page; break; + sec = 'D'; pt = odd_page; break; case MENU_ITEM(13): + sec = 'K'; break; + case MENU_ITEM(14): quit = ask_profile(); sec = 'B'; pt = odd_page; break; case MENU_ITEM(21): @@ -153,6 +307,19 @@ bool TForm_editor::cod_handler(TMask_field& f, KEY k) return ok; } +bool TForm_editor::edit_fincatura() +{ + TFink_mask m(_form->get_fincatura()); + bool dirty = FALSE; + + if (m.run() == K_ENTER) + { + _form->set_fincatura(m.get_chars()); + dirty = TRUE; + } + return dirty; +} + bool TForm_editor::edit_relation() { TMask m("ba2100r"); @@ -228,6 +395,9 @@ bool TForm_editor::edit(char s, pagetype t) else if (s == 'D') form_config(); + else + if (s == 'K') + dirty = edit_fincatura(); else { TString80 caption; diff --git a/ba/ba21fn.h b/ba/ba21fn.h new file mode 100755 index 000000000..65c3ea345 --- /dev/null +++ b/ba/ba21fn.h @@ -0,0 +1,11 @@ +#define C_TL 101 +#define C_TM 102 +#define C_TR 103 +#define C_BL 104 +#define C_BM 105 +#define C_BR 106 +#define C_CL 107 +#define C_CM 108 +#define C_CR 109 +#define C_HR 110 +#define C_VR 111 \ No newline at end of file diff --git a/ba/ba21fn.uml b/ba/ba21fn.uml new file mode 100755 index 000000000..233612c4f --- /dev/null +++ b/ba/ba21fn.uml @@ -0,0 +1,82 @@ +#include "ba21fn.h" + +PAGE "Caratteri per fincatura" -1 -1 77 14 + +STRING C_TL 1 +BEGIN + PROMPT 1 1 "" + HELP "" +END + +STRING C_TM 1 +BEGIN + PROMPT 15 1 "" + HELP "" +END + +STRING C_TR 1 +BEGIN + PROMPT 29 1 "" + HELP "" +END + +STRING C_BL 1 +BEGIN + PROMPT 1 9 "" + HELP "" +END + +STRING C_BM 1 +BEGIN + PROMPT 15 9 "" + HELP "" +END + +STRING C_BR 1 +BEGIN + PROMPT 29 9 "" + HELP "" +END + +STRING C_CL 1 +BEGIN + PROMPT 1 5 "" + HELP "" +END + +STRING C_CM 1 +BEGIN + PROMPT 15 5 "" + HELP "" +END + +STRING C_CR 1 +BEGIN + PROMPT 29 5 "" + HELP "" +END + +STRING C_HR 1 +BEGIN + PROMPT 8 1 "" + HELP "" +END + +STRING C_VR 1 +BEGIN + PROMPT 1 3 "" + HELP "" +END + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE +ENDMASK \ No newline at end of file diff --git a/ba/baformed.h b/ba/baformed.h index ba823b688..636258bde 100755 --- a/ba/baformed.h +++ b/ba/baformed.h @@ -26,6 +26,7 @@ protected: void set_form(TForm * f) { _form = f; } bool ask_profile(); bool edit_relation(); + bool edit_fincatura(); bool edit(char s, pagetype p); bool form_config() const; public: