Patch level : 2.1 66
Files correlati : Ricompilazione Demo : [ ] Commento : Migliorate selezioni campi git-svn-id: svn://10.65.10.50/trunk@12179 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
da591c3a6e
commit
0126346ff7
144
ba/ba8301.cpp
144
ba/ba8301.cpp
@ -318,7 +318,7 @@ class TReport_window : public TField_window
|
|||||||
|
|
||||||
int _dragging;
|
int _dragging;
|
||||||
TPoint _pt_drag_start;
|
TPoint _pt_drag_start;
|
||||||
PNT _pt_drag_offset;
|
PNT _pt_click, _pt_drag_offset;
|
||||||
RCT _rct_drag;
|
RCT _rct_drag;
|
||||||
|
|
||||||
TArray _clipboard;
|
TArray _clipboard;
|
||||||
@ -337,7 +337,7 @@ protected:
|
|||||||
void draw_field(const TReport_field& rf);
|
void draw_field(const TReport_field& rf);
|
||||||
void draw_broken_paper(const TReport_field& rf);
|
void draw_broken_paper(const TReport_field& rf);
|
||||||
|
|
||||||
void popup_menu(EVENT* ep);
|
void popup_menu();
|
||||||
void popup_cut();
|
void popup_cut();
|
||||||
void popup_copy();
|
void popup_copy();
|
||||||
void popup_paste();
|
void popup_paste();
|
||||||
@ -377,7 +377,7 @@ bool TReport_window::pick(const TPoint& ptlog) const
|
|||||||
{
|
{
|
||||||
TReport_section& rs = curr_section();
|
TReport_section& rs = curr_section();
|
||||||
|
|
||||||
FOR_EACH_ARRAY_ITEM(rs, i, o)
|
FOR_EACH_ARRAY_ITEM_BACK(rs, i, o)
|
||||||
{
|
{
|
||||||
TReport_field& f = *(TReport_field*)o;
|
TReport_field& f = *(TReport_field*)o;
|
||||||
const TRectangle& rct = f.get_rect();
|
const TRectangle& rct = f.get_rect();
|
||||||
@ -505,48 +505,56 @@ void TReport_window::snap(TRectangle& rct, bool shift) const
|
|||||||
#define POPUP_PASTE 20885
|
#define POPUP_PASTE 20885
|
||||||
#define POPUP_DUP 20886
|
#define POPUP_DUP 20886
|
||||||
#define POPUP_CLEAR 20887
|
#define POPUP_CLEAR 20887
|
||||||
#define POPUP_PROPERTIES 20888
|
#define POPUP_ZOOMIN 20888
|
||||||
#define POPUP_NEWFIELD 20889
|
#define POPUP_ZOOMOUT 20889
|
||||||
|
#define POPUP_PROPERTIES 20890
|
||||||
|
#define POPUP_NEWFIELD 20891
|
||||||
|
|
||||||
bool TReport_window::on_key(KEY k)
|
bool TReport_window::on_key(KEY k)
|
||||||
{
|
{
|
||||||
switch (k)
|
switch (k)
|
||||||
{
|
{
|
||||||
case K_LEFT:
|
case K_LEFT:
|
||||||
offset_selection(TPoint(-100, 0));
|
offset_selection(TPoint(-50, 0));
|
||||||
force_update();
|
force_update();
|
||||||
return true;
|
return true;
|
||||||
case K_LEFT+K_SHIFT:
|
case K_LEFT+K_SHIFT:
|
||||||
resize_selection(TPoint(-100, 0));
|
resize_selection(TPoint(-50, 0));
|
||||||
force_update();
|
force_update();
|
||||||
return true;
|
return true;
|
||||||
case K_RIGHT:
|
case K_RIGHT:
|
||||||
offset_selection(TPoint(+100, 0));
|
offset_selection(TPoint(+50, 0));
|
||||||
force_update();
|
force_update();
|
||||||
return true;
|
return true;
|
||||||
case K_RIGHT+K_SHIFT:
|
case K_RIGHT+K_SHIFT:
|
||||||
resize_selection(TPoint(+100, 0));
|
resize_selection(TPoint(+50, 0));
|
||||||
force_update();
|
force_update();
|
||||||
return true;
|
return true;
|
||||||
case K_DOWN:
|
case K_DOWN:
|
||||||
offset_selection(TPoint(0, +50));
|
offset_selection(TPoint(0, +25));
|
||||||
force_update();
|
force_update();
|
||||||
return true;
|
return true;
|
||||||
case K_DOWN+K_SHIFT:
|
case K_DOWN+K_SHIFT:
|
||||||
resize_selection(TPoint(0, +100));
|
resize_selection(TPoint(0, +25));
|
||||||
force_update();
|
force_update();
|
||||||
return true;
|
return true;
|
||||||
case K_UP:
|
case K_UP:
|
||||||
offset_selection(TPoint(0, -50));
|
offset_selection(TPoint(0, -25));
|
||||||
force_update();
|
force_update();
|
||||||
return true;
|
return true;
|
||||||
case K_UP+K_SHIFT:
|
case K_UP+K_SHIFT:
|
||||||
resize_selection(TPoint(0, -100));
|
resize_selection(TPoint(0, -25));
|
||||||
force_update();
|
force_update();
|
||||||
return true;
|
return true;
|
||||||
case K_DEL:
|
case K_DEL:
|
||||||
dispatch_e_menu(win(), POPUP_CUT);
|
dispatch_e_menu(win(), POPUP_CUT);
|
||||||
return true;
|
return true;
|
||||||
|
case '+':
|
||||||
|
dispatch_e_menu(win(), POPUP_ZOOMIN);
|
||||||
|
return true;
|
||||||
|
case '-':
|
||||||
|
dispatch_e_menu(win(), POPUP_ZOOMOUT);
|
||||||
|
return true;
|
||||||
case K_ENTER:
|
case K_ENTER:
|
||||||
owner().mask().send_key(K_SPACE, F_FLD_PROPERTIES);
|
owner().mask().send_key(K_SPACE, F_FLD_PROPERTIES);
|
||||||
break;
|
break;
|
||||||
@ -568,7 +576,7 @@ bool TReport_window::on_key(KEY k)
|
|||||||
return TField_window::on_key(k);
|
return TField_window::on_key(k);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TReport_window::popup_menu(EVENT* ep)
|
void TReport_window::popup_menu()
|
||||||
{
|
{
|
||||||
MENU_ITEM menu[16]; // Stiamo larghi
|
MENU_ITEM menu[16]; // Stiamo larghi
|
||||||
memset(menu, 0, sizeof(menu));
|
memset(menu, 0, sizeof(menu));
|
||||||
@ -577,18 +585,20 @@ void TReport_window::popup_menu(EVENT* ep)
|
|||||||
const bool sel = get_selection_rect(rct) != 0;
|
const bool sel = get_selection_rect(rct) != 0;
|
||||||
const bool clp = _clipboard.items() > 0;
|
const bool clp = _clipboard.items() > 0;
|
||||||
|
|
||||||
menu[0].tag = POPUP_CUT; menu[0].text = "Taglia"; menu[0].enabled = sel;
|
menu[0].tag = POPUP_CUT; menu[0].text = (char*)TR("Taglia"); menu[0].enabled = sel;
|
||||||
menu[1].tag = POPUP_COPY; menu[1].text = "Copia"; menu[1].enabled = sel;
|
menu[1].tag = POPUP_COPY; menu[1].text = (char*)TR("Copia"); menu[1].enabled = sel;
|
||||||
menu[2].tag = POPUP_PASTE; menu[2].text = "Incolla"; menu[2].enabled = clp;
|
menu[2].tag = POPUP_PASTE; menu[2].text = (char*)TR("Incolla"); menu[2].enabled = clp;
|
||||||
menu[3].tag = POPUP_DUP; menu[3].text = "Duplica"; menu[3].enabled = sel;
|
menu[3].tag = POPUP_DUP; menu[3].text = (char*)TR("Duplica"); menu[3].enabled = sel;
|
||||||
menu[4].tag = POPUP_CLEAR; menu[4].text = "Cancella"; menu[4].enabled = sel;
|
menu[4].tag = POPUP_CLEAR; menu[4].text = (char*)TR("Cancella"); menu[4].enabled = sel;
|
||||||
menu[5].tag = -1; menu[5].separator = true;
|
menu[5].tag = -1; menu[5].separator = true;
|
||||||
menu[6].tag = POPUP_PROPERTIES; menu[6].text = "Proprieta'"; menu[6].enabled = true;
|
menu[6].tag = POPUP_ZOOMIN; menu[6].text = (char*)TR("Zoom +"); menu[6].enabled = _dpi.v < 300;
|
||||||
menu[7].tag = POPUP_NEWFIELD; menu[7].text = "Nuovo"; menu[7].enabled = true;
|
menu[7].tag = POPUP_ZOOMOUT; menu[7].text = (char*)TR("Zoom -"); menu[7].enabled = _dpi.v > 48;
|
||||||
|
menu[8].tag = -1; menu[8].separator = true;
|
||||||
|
menu[9].tag = POPUP_PROPERTIES; menu[9].text = "Proprieta'"; menu[9].enabled = true;
|
||||||
|
menu[10].tag = POPUP_NEWFIELD; menu[10].text = "Nuovo"; menu[10].enabled = true;
|
||||||
|
|
||||||
const PNT& p = ep->v.mouse.where;
|
_pt_drag_start = dev2log(_pt_click);
|
||||||
_pt_drag_start = dev2log(p);
|
xvt_menu_popup(menu, win(), _pt_click, XVT_POPUP_CENTER, 0);
|
||||||
xvt_menu_popup(menu, win(), p, XVT_POPUP_CENTER, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TReport_window::popup_cut()
|
void TReport_window::popup_cut()
|
||||||
@ -678,9 +688,10 @@ void TReport_window::handler(WINDOW win, EVENT* ep)
|
|||||||
switch (ep->type)
|
switch (ep->type)
|
||||||
{
|
{
|
||||||
case E_MOUSE_DOWN:
|
case E_MOUSE_DOWN:
|
||||||
|
_pt_click = ep->v.mouse.where;
|
||||||
if (ep->v.mouse.button == 0)
|
if (ep->v.mouse.button == 0)
|
||||||
{
|
{
|
||||||
const TPoint pt = dev2log(ep->v.mouse.where);
|
const TPoint pt = dev2log(_pt_click);
|
||||||
TRectangle rct;
|
TRectangle rct;
|
||||||
int full = get_selection_rect(rct);
|
int full = get_selection_rect(rct);
|
||||||
if (!full || !rct.contains(pt))
|
if (!full || !rct.contains(pt))
|
||||||
@ -723,7 +734,7 @@ void TReport_window::handler(WINDOW win, EVENT* ep)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
popup_menu(ep);
|
popup_menu();
|
||||||
}
|
}
|
||||||
owner().mask().notify_focus_field(owner().dlg());
|
owner().mask().notify_focus_field(owner().dlg());
|
||||||
break;
|
break;
|
||||||
@ -766,38 +777,41 @@ void TReport_window::handler(WINDOW win, EVENT* ep)
|
|||||||
draw_dragster();
|
draw_dragster();
|
||||||
PNT pt = ep->v.mouse.where;
|
PNT pt = ep->v.mouse.where;
|
||||||
|
|
||||||
switch (_dragging)
|
if (abs(pt.h-_pt_click.h) > 2 || abs(pt.v-_pt_click.v) > 2) // Mi sono veramente spostato?
|
||||||
{
|
{
|
||||||
case 1:
|
switch (_dragging)
|
||||||
{
|
{
|
||||||
_rct_drag.right = pt.h;
|
case 1:
|
||||||
_rct_drag.bottom = pt.v;
|
{
|
||||||
TRectangle rct; TWindow::dev2log(_rct_drag, rct);
|
_rct_drag.right = pt.h;
|
||||||
select(rct);
|
_rct_drag.bottom = pt.v;
|
||||||
|
TRectangle rct; TWindow::dev2log(_rct_drag, rct);
|
||||||
|
select(rct);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
pt.h -= _pt_drag_offset.h;
|
||||||
|
pt.v -= _pt_drag_offset.v;
|
||||||
|
TPoint offset = dev2log(pt);
|
||||||
|
snap(offset, ep->v.mouse.shift != 0);
|
||||||
|
offset.x -= _pt_drag_start.x;
|
||||||
|
offset.y -= _pt_drag_start.y;
|
||||||
|
offset_selection(offset);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
TReport_field* rf = first_selected();
|
||||||
|
TRectangle rct; TWindow::dev2log(_rct_drag, rct);
|
||||||
|
snap(rct, ep->v.mouse.shift != 0);
|
||||||
|
rf->set_pos(rct.x, rct.y);
|
||||||
|
rf->set_size(rct.width(), rct.height());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
pt.h -= _pt_drag_offset.h;
|
|
||||||
pt.v -= _pt_drag_offset.v;
|
|
||||||
TPoint offset = dev2log(pt);
|
|
||||||
snap(offset, ep->v.mouse.shift != 0);
|
|
||||||
offset.x -= _pt_drag_start.x;
|
|
||||||
offset.y -= _pt_drag_start.y;
|
|
||||||
offset_selection(offset);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
TReport_field* rf = first_selected();
|
|
||||||
TRectangle rct; TWindow::dev2log(_rct_drag, rct);
|
|
||||||
snap(rct, ep->v.mouse.shift != 0);
|
|
||||||
rf->set_pos(rct.x, rct.y);
|
|
||||||
rf->set_size(rct.width(), rct.height());
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
force_update();
|
force_update();
|
||||||
_dragging = 0;
|
_dragging = 0;
|
||||||
@ -825,6 +839,22 @@ void TReport_window::handler(WINDOW win, EVENT* ep)
|
|||||||
popup_copy();
|
popup_copy();
|
||||||
popup_paste();
|
popup_paste();
|
||||||
break;
|
break;
|
||||||
|
case POPUP_ZOOMIN:
|
||||||
|
if (_dpi.v < 300)
|
||||||
|
{
|
||||||
|
_dpi.h = _dpi.v = _dpi.v + 24;
|
||||||
|
curr_section().unmap_font();
|
||||||
|
force_update();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case POPUP_ZOOMOUT:
|
||||||
|
if (_dpi.v > 48)
|
||||||
|
{
|
||||||
|
_dpi.h = _dpi.v = _dpi.v - 24;
|
||||||
|
curr_section().unmap_font();
|
||||||
|
force_update();
|
||||||
|
}
|
||||||
|
break;
|
||||||
case POPUP_PROPERTIES:
|
case POPUP_PROPERTIES:
|
||||||
{
|
{
|
||||||
clear_selection();
|
clear_selection();
|
||||||
@ -1031,7 +1061,7 @@ void TReport_window::draw_field(const TReport_field& rf)
|
|||||||
}
|
}
|
||||||
if (rf.selected())
|
if (rf.selected())
|
||||||
{
|
{
|
||||||
advanced_set_draw_tools(*this, 0, COLOR_WHITE, COLOR_LTGRAY);
|
advanced_set_draw_tools(*this, 0, COLOR_WHITE, COLOR_GRAY);
|
||||||
const int k = 5;
|
const int k = 5;
|
||||||
RCT s = r; s.right = s.left+k; s.bottom = s.top+k;
|
RCT s = r; s.right = s.left+k; s.bottom = s.top+k;
|
||||||
xvt_dwin_draw_rect(win(), &s);
|
xvt_dwin_draw_rect(win(), &s);
|
||||||
|
@ -87,6 +87,7 @@
|
|||||||
DUP EMPTY= \ Controlla se e' vuoto
|
DUP EMPTY= \ Controlla se e' vuoto
|
||||||
IF
|
IF
|
||||||
DROP \ Scarta il valore nullo
|
DROP \ Scarta il valore nullo
|
||||||
|
DROP \ Scarta f1
|
||||||
ELSE
|
ELSE
|
||||||
" " \ Inserisco uno spazio
|
" " \ Inserisco uno spazio
|
||||||
+ \ Sommo uno spazio all'inizio della stringa
|
+ \ Sommo uno spazio all'inizio della stringa
|
||||||
|
Loading…
x
Reference in New Issue
Block a user