From 393bb405474866d3f3bf8e7bb7d3482deda84596 Mon Sep 17 00:00:00 2001 From: Alessandro Bonazzi Date: Fri, 7 Oct 2022 14:26:16 +0200 Subject: [PATCH] Patch level : 12.0 1204 Files correlati : cg2.exe ve0.exe xvaga.dll Commento: aggiunti campi per memorizzare documenti generici e documenti cartacei da archiviare Aggiunte xvt_toolbar_toggle_control xvt_toolbar_set_image --- src/xvaga/statbar.h | 2 ++ src/xvaga/xvtctl.cpp | 48 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/xvaga/statbar.h b/src/xvaga/statbar.h index 63ba0f7f0..a7d0a84b9 100755 --- a/src/xvaga/statbar.h +++ b/src/xvaga/statbar.h @@ -49,6 +49,8 @@ XVTDLL void xvt_toolbar_realize(WINDOW win); XVTDLL BOOLEAN xvt_toolbar_remove_control(WINDOW win, int cid); XVTDLL BOOLEAN xvt_toolbar_set_last_tool(WINDOW win, int cid); XVTDLL void xvt_toolbar_show_control(WINDOW win, int cid, BOOLEAN on); +XVTDLL BOOLEAN xvt_toolbar_toggle_control(WINDOW win, int cid, BOOLEAN on); +XVTDLL BOOLEAN xvt_toolbar_set_image(WINDOW win, int cid, int ico); #if defined(_cplusplus) || defined(__cplusplus) } /* extern "C" */ diff --git a/src/xvaga/xvtctl.cpp b/src/xvaga/xvtctl.cpp index cbd8d5852..4bb3148d2 100755 --- a/src/xvaga/xvtctl.cpp +++ b/src/xvaga/xvtctl.cpp @@ -2470,6 +2470,7 @@ public: int ico() const { return _ico; } void set_pos(short pos) { _pos = pos; } + void set_ico(short ico) { _ico = ico; } wxToolData(int ico, short pos = -1) : _pos(pos), _ico(ico) {} }; @@ -2615,7 +2616,7 @@ static TwxToolBar* Win2Bar(WINDOW win) return wxDynamicCast((wxObject*)win, TwxToolBar); } -BOOLEAN xvt_toolbar_add_control(WINDOW win, int cid, TOOL_TYPE type, const char *title, +BOOLEAN xvt_toolbar_add_control(WINDOW win, int cid, TOOL_TYPE type, const char *title, int ico, int WXUNUSED(cust_width), int idx) { BOOLEAN ok = false; @@ -2641,6 +2642,7 @@ BOOLEAN xvt_toolbar_add_control(WINDOW win, int cid, TOOL_TYPE type, const char const wxBitmap bmp = xvtart_GetToolResource(ico, tb.GetToolBitmapSize().y); wxString cap, tip; wxChar acc = 0; + for (const char* t = title; *t; t++) { if (*t == '~' || *t == '&') @@ -2876,10 +2878,54 @@ BOOLEAN xvt_toolbar_remove_control(WINDOW win, int cid) return ok; } +BOOLEAN xvt_toolbar_toggle_control(WINDOW win, int cid, BOOLEAN on) +{ + TwxToolBar* ptb = Win2Bar(win); + bool ok = ptb != nullptr; + + if (ok) + { + TwxToolBar& tb = *ptb; + int size = tb.GetToolBitmapSize().y; + int idx = tb.GetToolPos(cid); + + tb.ToggleTool(cid, on); + xvt_toolbar_realize(win); + tb.Refresh(); + } + return ok; +} + +BOOLEAN xvt_toolbar_set_image(WINDOW win, int cid, int ico) +{ + TwxToolBar* ptb = Win2Bar(win); + bool ok = ptb != nullptr; + + if (ok) // non si capisce perchè non debba aggiornare le bitmap + { + TwxToolBar& tb = *ptb; + int size = tb.GetToolBitmapSize().y; + int idx = ptb->GetToolPos(cid); + wxToolBarToolBase* tool = tb.RemoveTool(cid); + + ok = tool != nullptr; + if (ok) + { + wxString label = tool->GetLabel(); + + delete tool; + ok = xvt_toolbar_add_control(win, cid, TOOL_BUTTON, label.c_str(), ico, size, idx); + } + if (ok) + xvt_toolbar_realize(win); + } + return ok; +} void xvt_dwin_draw_tool(WINDOW win, int x, int y, int rid, int size) { const wxBitmap bmp = xvtart_GetToolResource(rid, size); + if (bmp.IsOk()) { wxDC& dc = GetTDCMapper().GetDC(win);