Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
stack.*    Aggiunto metodo destroy
strings.*  Aggiunti costruttori ed operator= per le TStingNN
tree.cpp   Aumentata spaziature righe della TTree_window
urldefid.h Aggiunto BMP_STOP
window.cpp Corretta TScroll_window::dev2log


git-svn-id: svn://10.65.10.50/trunk@6854 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1998-07-20 13:29:52 +00:00
parent 29cfcac9e8
commit 12227a589a
7 changed files with 78 additions and 13 deletions

View File

@ -25,6 +25,12 @@ TObject& TStack::peek(int depth) const
return _data[_sp-depth-1];
}
void TStack::destroy()
{
_data.destroy();
_sp = 0;
}
bool TStack::destroy_base()
{
if (_sp > 0) _sp--;

View File

@ -34,6 +34,8 @@ public:
TObject& pop();
// @cmember Ritorna l'oggetto ad una data profondita' nello stack
TObject& peek(int depth = 0) const;
// @cmember Distrugge l'intero stack
void destroy();
// @cmember Distrugge l'oggetto alla base dello stack
bool destroy_base();
// @cmember Costruttore. Chiama il costruttore di <c TArray>

View File

@ -118,7 +118,7 @@ void TString::resize(
else *s = '\0';
if (_str)
delete [] _str;
delete _str;
_str = s;
_size = size;
@ -193,7 +193,7 @@ TString::TString() : _str(NULL), _size(0)
TString::~TString()
{
if (_str)
delete [] _str;
delete _str;
}
char TString::shift(int n)

View File

@ -317,12 +317,18 @@ public:
// @cmember Costruttore
TString16(const TString& s) : TFixed_string(_str16, 17)
{ set(s); }
// @cmember Costruttore
TString16(const TString16& s) : TFixed_string(_str16, 17)
{ set(s); }
// @cmember Assegna una stringa
const TString& operator =(const char* s)
{ return set(s); }
// @cmember Assegna una stringa
const TString& operator =(const TString& s)
{ return set((const char*)s); }
// @cmember Assegna una stringa
const TString& operator =(const char* s)
{ return set(s); }
const TString& operator =(const TString16& s)
{ return set((const char*)s); }
// @comm Sono definite anche le classi <c TString80> e <c TString256> per le
// stringhe rispettivamente di 80 e 256 caratteri. I class member sono
@ -346,8 +352,10 @@ class TString80 : public TFixed_string
public:
TString80(const char* s = "") : TFixed_string(_str80, 81) { set(s); }
TString80(const TString& s) : TFixed_string(_str80, 81) { set(s); }
TString80(const TString80& s) : TFixed_string(_str80, 81) { set(s); }
const TString& operator =(const char* s) { return set(s); }
const TString& operator =(const TString& s) { return set((const char*)s); }
const TString& operator =(const TString80& s) { return set((const char*)s); }
};
// @doc EXTERNAL
@ -367,8 +375,10 @@ class TString256 : public TFixed_string
public:
TString256(const char* s = "") : TFixed_string(_str256, 257) { set(s); }
TString256(const TString& s) : TFixed_string(_str256, 257) { set(s); }
TString256(const TString256& s) : TFixed_string(_str256, 257) { set(s); }
const TString& operator =(const char* s) { return set(s); }
const TString& operator =(const TString& s) { return set((const char*)s); }
const TString& operator =(const TString256& s) { return set((const char*)s); }
};
// @doc EXTERNAL

View File

@ -797,10 +797,14 @@ class TTree_window : public TField_window
TNode_info_array _node_info;
TNode_info _curr_info; // Nodo attualmente selezionato
static int _row_height;
protected: // TWindow
virtual void update();
virtual bool on_key(KEY key);
virtual void handler(WINDOW win, EVENT* ep);
PNT log2dev(long x, long y) const;
TPoint dev2log(const PNT& p) const;
protected: // Internal use
static bool callback_draw_node(TTree& node, void* jolly, word);
@ -820,6 +824,10 @@ public:
virtual ~TTree_window() { }
};
int TTree_window::_row_height = CHARY+2;
const int TABX = 3;
struct TUpdate_info
{
TTree_window* _win;
@ -831,7 +839,40 @@ struct TUpdate_info
TNode_info* _curr_info;
};
const int TABX = 3;
PNT TTree_window::log2dev(long x, long y) const
{
if (autoscrolling())
{
if (_pixmap)
{
x -= origin().x * CHARX;
y -= origin().y * _row_height;
}
else
{
x -= origin().x;
y -= origin().y;
}
}
PNT pnt; pnt.h = (int)x; pnt.v = (int)y;
if (!_pixmap)
{
pnt.h *= CHARX;
pnt.v *= _row_height;
}
return pnt;
}
TPoint TTree_window::dev2log(const PNT& p) const
{
TPoint pnt(_pixmap ? p.h : p.h/CHARX, _pixmap ? p.v : p.v/_row_height);
return pnt;
}
bool TTree_window::callback_draw_node(TTree& node, void* jolly, word when)
{
@ -873,16 +914,16 @@ bool TTree_window::callback_draw_node(TTree& node, void* jolly, word when)
ui->_win->set_pen(DISABLED_COLOR);
PNT q;
q.h = p.h; q.v = p.v + CHARY/2;
q.h = p.h; q.v = p.v + _row_height/2;
xvt_dwin_draw_set_pos(win, q);
q.h -= TABX*CHARX - 3*CHARX/2;
xvt_dwin_draw_line(win, q);
q.v = (by+1)*CHARY;
q.v = (by+1)*_row_height;
xvt_dwin_draw_line(win, q);
TImage* bmp = node.image(is_selected);
if (bmp)
bmp->draw(win, p.h, p.v + (CHARY - bmp->height()) / 2);
bmp->draw(win, p.h, p.v + (_row_height - bmp->height()) / 2);
TNode_info& ni = (*ui->_node_info)[ry];
node.curr_id(ni._id);
@ -945,7 +986,7 @@ void TTree_window::draw_plus_minus()
WINDOW w = win();
PNT r = log2dev(ni._plusx, firsty + i);
r.v += CHARY/2;
r.v += _row_height/2;
r.h += CHARX/2;
RCT rct;
@ -1182,7 +1223,9 @@ void TTree_window::handler(WINDOW win, EVENT* ep)
if (_tree)
{
const int c = ep->v.mouse.where.h / CHARX;
const int r = ep->v.mouse.where.v / CHARY;
const int r = ep->v.mouse.where.v / _row_height;
dev2log(ep->v.mouse.where);
TNode_info ni;
bool ok = index2info(r, ni);
if (ok && (c == ni._plusx || (c >= ni._startx && c < ni._endx)) &&
@ -1220,8 +1263,10 @@ void TTree_window::handler(WINDOW win, EVENT* ep)
TTree_window::TTree_window(int x, int y, int dx, int dy,
WINDOW parent, TTree_field* owner)
: TField_window(x, y, dx, dy, parent, owner), _tree(NULL), _hide_leaves(FALSE)
: TField_window(x, y, dx, dy, parent, owner), _tree(NULL),
_hide_leaves(FALSE)
{
_row_height = CHARY+2;
}
///////////////////////////////////////////////////////////

View File

@ -81,6 +81,7 @@
#define BMP_DIR 167
#define BMP_DIRDN 168
#define BMP_FILE 169
#define BMP_STOP 170
#endif

View File

@ -744,7 +744,9 @@ TPoint TWindow::size() const
{
RCT r;
xvt_vobj_get_client_rect(win() ? win() : TASK_WIN, &r);
return TPoint(r.right / CHARX, r.bottom / CHARY);
// return TPoint(r.right / CHARX, r.bottom / CHARY);
PNT p; p.h = r.right; p.v = r.bottom;
return dev2log(p);
}
WINDOW TWindow::parent() const
@ -752,7 +754,6 @@ WINDOW TWindow::parent() const
return xvt_vobj_get_parent(win());
}
void TWindow::set_focus()
{
WINDOW w = win();