Aggiunta gestione caratteri fincatura

git-svn-id: svn://10.65.10.50/trunk@2182 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1995-11-21 10:36:46 +00:00
parent 199ef85a71
commit 0a20a1932e
5 changed files with 270 additions and 4 deletions

View File

@ -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"

View File

@ -1,5 +1,157 @@
#include "baformed.h"
#include "ba2100.h"
#include "ba2100.h"
#include <colors.h>
// -----------------------------------------------------------------
// 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;

11
ba/ba21fn.h Executable file
View File

@ -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

82
ba/ba21fn.uml Executable file
View File

@ -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

View File

@ -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: