diff --git a/include/form.cpp b/include/form.cpp index 2748afec8..75a089a29 100755 --- a/include/form.cpp +++ b/include/form.cpp @@ -2159,6 +2159,10 @@ bool TForm::parse_general(TScanner &scanner) _fpx = scanner.integer(); } else scanner.push(); + + if (scanner.popkey() == "GR") // Carattere di posizionamento + _fink = scanner.string(); + else scanner.push(); extended_parse_general(scanner); // Parse non-standard parameters } @@ -2178,7 +2182,8 @@ void TForm::print_general(ostream& out) const out << " CARATTERE \"" << _char_to_pos << "\"\n" ; out << " INIZIO_POS " << _ipx << " " << _ipy << "\n"; out << " FINE_POS " << _fpx << "\n"; - } + } + out << " GRID \"" << (const char*)_fink << "\"\n"; out << "END\n" << endl; } @@ -2698,7 +2703,7 @@ TForm::TForm(const char* name, const char* code, int lev, const char* desc) : _name(name), _code(code), _relation(NULL), _cursor(NULL), _rel_desc(NULL), _isnew(FALSE), _editlevel(lev), _desc(desc), _fontname("Roman 17cpi"), _fontsize(12), _x(0), _y(0), _char_to_pos('\0'), _ipx(0), _ipy(0), _fpx(0), - _arrange(TRUE), _dirty(FALSE) + _arrange(TRUE), _fink("+,+,+,+,+,+,+,+,+,-,|",','), _dirty(FALSE) { main_app().begin_wait(); diff --git a/include/form.h b/include/form.h index 7d7d3900c..a12f8ccdc 100755 --- a/include/form.h +++ b/include/form.h @@ -118,12 +118,16 @@ class TForm : public TObject bool _arrange; // if TRUE perform arranging every time int _editlevel; // Edit permission TString _desc; // form description + TToken_string _fink; // finkatur characters TPrint_section* exist(char s, pagetype t, bool create = FALSE); // Can be NULL static void header_handler(TPrinter& p); static void footer_handler(TPrinter& p); + TToken_string& get_fincatura() { return _fink; } + void set_fincatura(const char* s) { _fink = s; } + protected: // H = Header, B = Body, F = Footer, R = Relation TPrint_section& section(char s = 'B', word page = 1); @@ -155,8 +159,14 @@ protected: virtual word set_footer(word p, bool u); public: + bool print(long from = 0L, long to = -1L); + TArray& body() { return _body; } + TArray& head() { return _head; } + TArray& foot() { return _foot; } + TArray& back() { return _back; } + const TString& name() const { return _name; } const TString& code() const { return _code; } @@ -181,6 +191,19 @@ public: bool dirty() const { return _dirty; } void set_dirty(bool d = TRUE) { _dirty = d; } void set_arrange(bool arng = TRUE) { _arrange = arng ; } + + // fincazione + char f_topleft() { return _fink.get_char(0); } + char f_topmiddle() { return _fink.get_char(1); } + char f_topright() { return _fink.get_char(2); } + char f_botleft() { return _fink.get_char(3); } + char f_botmiddle() { return _fink.get_char(4); } + char f_botright() { return _fink.get_char(5); } + char f_centerleft() { return _fink.get_char(6); } + char f_centermiddle() { return _fink.get_char(7); } + char f_centerright() { return _fink.get_char(8); } + char f_horizontal() { return _fink.get_char(9); } + char f_vertical() { return _fink.get_char(10); } // if code == NULL it's a base form // otherwise it's integrated by a file definition diff --git a/include/maskfld.cpp b/include/maskfld.cpp index fb18bf3c3..291cdf311 100755 --- a/include/maskfld.cpp +++ b/include/maskfld.cpp @@ -42,6 +42,7 @@ TMask_field::TField_Flags::TField_Flags() firm = ghost = FALSE; password = FALSE; trim = TRUE; + pipeallowed = FALSE; } // Certified 100% @@ -2167,8 +2168,11 @@ const char* TEdit_field::format(const char* d) const if (_flags.uppercase) fpark.upper(); - for (int p = 0; fpark[p]; p++) - if (fpark[p] == '|') fpark[p] = '/'; + if (!_flags.pipeallowed) + { + for (int p = 0; fpark[p]; p++) + if (fpark[p] == '|') fpark[p] = '/'; + } } return fpark; diff --git a/include/maskfld.h b/include/maskfld.h index c15fe6cc0..e5568cdd5 100755 --- a/include/maskfld.h +++ b/include/maskfld.h @@ -115,6 +115,7 @@ protected: bool uppercase : 1; bool exchange : 1; // Value exchange bool zerofilled : 1; + bool pipeallowed : 1; TField_Flags(); char update(const char*); @@ -204,6 +205,13 @@ public: bool right_justified() const { return _flags.rightjust; } + // @cmember Verifica la alloowance of the pipe + bool pipe_allowed() const + { return _flags.pipeallowed; } + + // @cmember Allowa la pippa + void allow_pipe(bool r = TRUE) + { _flags.pipeallowed = r; } // @cmember Ritorna il nome della classe virtual const char* class_name() const; diff --git a/include/window.cpp b/include/window.cpp index d661d4c7d..45f4028fd 100755 --- a/include/window.cpp +++ b/include/window.cpp @@ -930,8 +930,8 @@ void TWindow::line(short x0, short y0, short x1, short y1) if (t.v == 0) t.v = -CHARY; else t.v += CHARY>>1; #endif - xvt_dwin_draw_set_pos(_win, f); - xvt_dwin_draw_line(_win, t); + xvt_dwin_draw_set_pos(win(), f); + xvt_dwin_draw_line(win(), t); } void TWindow::icon(short x0, short y0, int iconid)