Patch level : 10.0
Files correlati : xvaga Ricompilazione Demo : [ ] Commento : Un ciclone in biblioteca git-svn-id: svn://10.65.10.50/trunk@16746 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
b50bf4e4ca
commit
3ba205c2bd
@ -550,7 +550,7 @@ void OsWin32_PlaceProcessInWindow(unsigned int instance, const char* name, unsig
|
|||||||
|
|
||||||
for (int i = 0; w._hwnd == NULL && i < 20; i++)
|
for (int i = 0; w._hwnd == NULL && i < 20; i++)
|
||||||
{
|
{
|
||||||
wxThread::Sleep(500);
|
::wxMilliSleep(500);
|
||||||
::EnumWindows(EnumWindowsProc, LPARAM(&w));
|
::EnumWindows(EnumWindowsProc, LPARAM(&w));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include <wx/filefn.h>
|
#include <wx/filefn.h>
|
||||||
#include <wx/snglinst.h>
|
#include <wx/snglinst.h>
|
||||||
#include <wx/statline.h>
|
#include <wx/statline.h>
|
||||||
|
#include <wx/sysopt.h>
|
||||||
#include <wx/thread.h>
|
#include <wx/thread.h>
|
||||||
#include <wx/tokenzr.h>
|
#include <wx/tokenzr.h>
|
||||||
|
|
||||||
@ -403,16 +404,26 @@ void xvt_app_allow_quit(void)
|
|||||||
wxTheApp->ExitMainLoop(); // Già lo fa la destroy
|
wxTheApp->ExitMainLoop(); // Già lo fa la destroy
|
||||||
}
|
}
|
||||||
|
|
||||||
void xvt_app_create(int argc, char **argv, unsigned long flags,
|
XVTDLL void xvt_app_pre_create(void)
|
||||||
EVENT_HANDLER eh, XVT_CONFIG *config)
|
|
||||||
{
|
{
|
||||||
xvt_fsys_get_default_dir(NULL); // Init Startup Directory
|
xvt_fsys_get_default_dir(NULL); // Init Startup Directory
|
||||||
|
|
||||||
|
wxLocale locale;
|
||||||
|
locale.Init(wxLocale::GetSystemLanguage()); // wxLANGUAGE_ITALIAN
|
||||||
|
|
||||||
::wxInitAllImageHandlers();
|
::wxInitAllImageHandlers();
|
||||||
|
|
||||||
|
if (wxTheApp->GetComCtl32Version() >= 600 && ::wxDisplayDepth() >= 32)
|
||||||
|
wxSystemOptions::SetOption(wxT("msw.remap"), 2);
|
||||||
|
|
||||||
#ifdef SPEECH_API
|
#ifdef SPEECH_API
|
||||||
xvt_dm_enable_speech(0xFF);
|
xvt_dm_enable_speech(0xFF);
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void xvt_app_create(int argc, char **argv, unsigned long flags,
|
||||||
|
EVENT_HANDLER eh, XVT_CONFIG *config)
|
||||||
|
{
|
||||||
_task_win_handler = eh;
|
_task_win_handler = eh;
|
||||||
_appl_name = config->appl_name;
|
_appl_name = config->appl_name;
|
||||||
|
|
||||||
@ -559,8 +570,8 @@ void xvt_app_process_pending_events(void)
|
|||||||
{
|
{
|
||||||
while (a->Pending())
|
while (a->Pending())
|
||||||
a->Dispatch();
|
a->Dispatch();
|
||||||
//a->ProcessIdle(); // Necessario per wxAUI
|
a->ProcessIdle(); // Necessario per wxAUI
|
||||||
//a->Yield(true);
|
//a->Yield(true); // Non so se serva veramente
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2349,8 +2360,7 @@ XVT_IMAGE xvt_image_capture(WINDOW win, const RCT* src)
|
|||||||
wxBitmap bmp(r.GetWidth(), r.GetHeight());
|
wxBitmap bmp(r.GetWidth(), r.GetHeight());
|
||||||
CAST_DC(win, wdc);
|
CAST_DC(win, wdc);
|
||||||
|
|
||||||
wxMemoryDC mdc;
|
wxMemoryDC mdc(bmp);
|
||||||
mdc.SelectObject(bmp);
|
|
||||||
mdc.Blit(wxPoint(0,0), r.GetSize(), &wdc, r.GetPosition());
|
mdc.Blit(wxPoint(0,0), r.GetSize(), &wdc, r.GetPosition());
|
||||||
|
|
||||||
TXVT_IMAGE* i = new TXVT_IMAGE;
|
TXVT_IMAGE* i = new TXVT_IMAGE;
|
||||||
@ -2368,7 +2378,8 @@ XVT_IMAGE xvt_image_create(XVT_IMAGE_FORMAT format, short width, short height, l
|
|||||||
|
|
||||||
void xvt_image_destroy(XVT_IMAGE image)
|
void xvt_image_destroy(XVT_IMAGE image)
|
||||||
{
|
{
|
||||||
delete (TXVT_IMAGE*)image;
|
if (image != NULL)
|
||||||
|
delete (TXVT_IMAGE*)image;
|
||||||
}
|
}
|
||||||
|
|
||||||
COLOR xvt_image_get_clut(XVT_IMAGE image, short index)
|
COLOR xvt_image_get_clut(XVT_IMAGE image, short index)
|
||||||
@ -3487,7 +3498,7 @@ public:
|
|||||||
|
|
||||||
wxThread::ExitCode TIconizeTaskThread::Entry()
|
wxThread::ExitCode TIconizeTaskThread::Entry()
|
||||||
{
|
{
|
||||||
Sleep(500);
|
::wxMilliSleep(500);
|
||||||
if (__bChildRunning) // Il programma e' ancora attivo
|
if (__bChildRunning) // Il programma e' ancora attivo
|
||||||
{
|
{
|
||||||
wxFrame* frame = (wxFrame*)_task_win;
|
wxFrame* frame = (wxFrame*)_task_win;
|
||||||
@ -3765,7 +3776,7 @@ int xvt_sys_get_os_version()
|
|||||||
|
|
||||||
void xvt_sys_sleep(unsigned long msec)
|
void xvt_sys_sleep(unsigned long msec)
|
||||||
{
|
{
|
||||||
wxThread::Sleep(msec);
|
::wxMilliSleep(msec);
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -3886,11 +3897,12 @@ void xvt_vobj_destroy(WINDOW win)
|
|||||||
wxWindow* w = (wxWindow*)_nice_windows.Get(win);
|
wxWindow* w = (wxWindow*)_nice_windows.Get(win);
|
||||||
if (w != NULL)
|
if (w != NULL)
|
||||||
{
|
{
|
||||||
delete w;
|
wxASSERT((wxWindow*)win == w);
|
||||||
_nice_windows.Delete(win);
|
w->Destroy(); // formerly delete w;
|
||||||
|
_nice_windows.Delete(win); // Elimina dalla lista delle finestre attive
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GetTDCMapper().DestroyTDC(win);
|
GetTDCMapper().DestroyTDC(win); // Elimina dalla lista dei display context
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
#include "../xvaga/wxinc.h"
|
#include "../xvaga/wxinc.h"
|
||||||
|
|
||||||
|
#include "xvt.h"
|
||||||
|
|
||||||
#include <wx/filename.h>
|
#include <wx/filename.h>
|
||||||
#include <wx/snglinst.h>
|
#include <wx/snglinst.h>
|
||||||
#include <wx/sysopt.h>
|
|
||||||
|
|
||||||
extern int xvt_main(int argc, char** argv);
|
extern int xvt_main(int argc, char** argv);
|
||||||
|
|
||||||
class TMainApp : public wxApp
|
class TMainApp : public wxApp
|
||||||
{
|
{
|
||||||
wxLocale m_Locale;
|
|
||||||
wxSingleInstanceChecker* m_sic;
|
wxSingleInstanceChecker* m_sic;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -22,7 +22,6 @@ protected:
|
|||||||
|
|
||||||
IMPLEMENT_DYNAMIC_CLASS(TMainApp, wxApp)
|
IMPLEMENT_DYNAMIC_CLASS(TMainApp, wxApp)
|
||||||
|
|
||||||
//DECLARE_APP(TMainApp)
|
|
||||||
IMPLEMENT_APP(TMainApp)
|
IMPLEMENT_APP(TMainApp)
|
||||||
|
|
||||||
#define TIMER_ID 883
|
#define TIMER_ID 883
|
||||||
@ -33,6 +32,7 @@ END_EVENT_TABLE()
|
|||||||
|
|
||||||
void TMainApp::OnTimer(wxTimerEvent& event)
|
void TMainApp::OnTimer(wxTimerEvent& event)
|
||||||
{
|
{
|
||||||
|
xvt_app_pre_create();
|
||||||
xvt_main(argc, argv);
|
xvt_main(argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,11 +42,6 @@ bool TMainApp::OnInit()
|
|||||||
const wxString strApp = strWrk.GetName().Lower();
|
const wxString strApp = strWrk.GetName().Lower();
|
||||||
m_sic = new wxSingleInstanceChecker(strApp);
|
m_sic = new wxSingleInstanceChecker(strApp);
|
||||||
|
|
||||||
m_Locale.Init(wxLocale::GetSystemLanguage()); // wxLANGUAGE_ITALIAN
|
|
||||||
|
|
||||||
if (GetComCtl32Version() >= 600 && ::wxDisplayDepth() >= 32)
|
|
||||||
wxSystemOptions::SetOption(wxT("msw.remap"), 2);
|
|
||||||
|
|
||||||
wxTimerEvent evt(TIMER_ID);
|
wxTimerEvent evt(TIMER_ID);
|
||||||
AddPendingEvent(evt);
|
AddPendingEvent(evt);
|
||||||
return true;
|
return true;
|
||||||
|
@ -43,6 +43,7 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
XVTDLL void xvt_app_allow_quit(void);
|
XVTDLL void xvt_app_allow_quit(void);
|
||||||
|
XVTDLL void xvt_app_pre_create(void);
|
||||||
XVTDLL void xvt_app_create(int argc, char **argv, unsigned long flags, EVENT_HANDLER eh, XVT_CONFIG *config);
|
XVTDLL void xvt_app_create(int argc, char **argv, unsigned long flags, EVENT_HANDLER eh, XVT_CONFIG *config);
|
||||||
XVTDLL void xvt_app_destroy(void);
|
XVTDLL void xvt_app_destroy(void);
|
||||||
XVTDLL BOOLEAN xvt_app_escape(int esc_code, PRINT_RCD*, long* ph, long* pw, long* pvr, long* phr);
|
XVTDLL BOOLEAN xvt_app_escape(int esc_code, PRINT_RCD*, long* ph, long* pw, long* pvr, long* phr);
|
||||||
@ -234,6 +235,8 @@ XVTDLL short xvt_notebk_add_page(WINDOW notebk, WINDOW page, const char* title,
|
|||||||
XVTDLL WINDOW xvt_notebk_get_page(WINDOW notebk, short page_no);
|
XVTDLL WINDOW xvt_notebk_get_page(WINDOW notebk, short page_no);
|
||||||
XVTDLL short xvt_notebk_get_num_tabs(WINDOW notebk);
|
XVTDLL short xvt_notebk_get_num_tabs(WINDOW notebk);
|
||||||
XVTDLL void xvt_notebk_set_front_page(WINDOW notebk, short page_no);
|
XVTDLL void xvt_notebk_set_front_page(WINDOW notebk, short page_no);
|
||||||
|
XVTDLL void xvt_notebk_set_tab_icon(WINDOW notebk, short page_no, int rid);
|
||||||
|
XVTDLL void xvt_notebk_set_tab_image(WINDOW notebk, short page_no, XVT_IMAGE img);
|
||||||
XVTDLL void xvt_notebk_set_tab_title(WINDOW notebk, short page_no, const char* title);
|
XVTDLL void xvt_notebk_set_tab_title(WINDOW notebk, short page_no, const char* title);
|
||||||
XVTDLL void xvt_notebk_set_page_title(WINDOW notebk, short page_no, const char* title);
|
XVTDLL void xvt_notebk_set_page_title(WINDOW notebk, short page_no, const char* title);
|
||||||
XVTDLL char* xvt_notebk_get_tab_title(WINDOW notebk, short page_no, char* title, int sz_title);
|
XVTDLL char* xvt_notebk_get_tab_title(WINDOW notebk, short page_no, char* title, int sz_title);
|
||||||
|
157
xvaga/xvtctl.cpp
157
xvaga/xvtctl.cpp
@ -3,11 +3,11 @@
|
|||||||
#include "xvtwin.h"
|
#include "xvtwin.h"
|
||||||
#include "statbar.h"
|
#include "statbar.h"
|
||||||
|
|
||||||
#include <wx/aui/aui.h>
|
|
||||||
#include <wx/filename.h>
|
#include <wx/filename.h>
|
||||||
#include <wx/notebook.h>
|
#include <wx/notebook.h>
|
||||||
#include <wx/treectrl.h>
|
#include <wx/treectrl.h>
|
||||||
#include <wx/vlbox.h>
|
#include <wx/vlbox.h>
|
||||||
|
#include <wx/aui/aui.h>
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// Utility functions
|
// Utility functions
|
||||||
@ -88,27 +88,30 @@ public:
|
|||||||
{ Create(parent, id, pos, size, style); }
|
{ Create(parent, id, pos, size, style); }
|
||||||
};
|
};
|
||||||
|
|
||||||
class TwxNoteBook : public wxNotebook
|
class TwxNoteBook : public wxAuiNotebook
|
||||||
{
|
{
|
||||||
|
enum { BOOK_ICO_SIZE = 16 };
|
||||||
|
bool m_bSuspended;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
void OnPageChanged(wxNotebookEvent& e);
|
void OnPageChanged(wxNotebookEvent& e);
|
||||||
|
long Flags2Style(long flags) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
short AddTab(wxWindow* pPage, const wxString text, wxBitmap* bmp = NULL, short idx = -1);
|
int ChangeSelection(size_t tab_no); // wxNotebook had it!
|
||||||
|
void SetTabImage(size_t tab_no, XVT_IMAGE img);
|
||||||
|
|
||||||
|
short AddTab(wxWindow* pPage, const wxString text, XVT_IMAGE img = NULL, short idx = -1);
|
||||||
TwxNoteBook(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style);
|
TwxNoteBook(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style);
|
||||||
~TwxNoteBook();
|
~TwxNoteBook();
|
||||||
};
|
};
|
||||||
|
|
||||||
class TwxTreeCtrl : public wxTreeCtrl
|
class TwxTreeCtrl : public wxTreeCtrl
|
||||||
{
|
{
|
||||||
#if wxCHECK_VERSION(2,8,7)
|
|
||||||
WX_DECLARE_VOIDPTR_HASH_MAP(int, XVT_IMAGE_Map);
|
WX_DECLARE_VOIDPTR_HASH_MAP(int, XVT_IMAGE_Map);
|
||||||
XVT_IMAGE_Map m_img;
|
XVT_IMAGE_Map m_img;
|
||||||
#else
|
|
||||||
wxHashTable m_img;
|
|
||||||
#endif
|
|
||||||
wxFont m_font;
|
wxFont m_font;
|
||||||
int m_nFrozen;
|
int m_nFrozen;
|
||||||
|
|
||||||
@ -126,11 +129,7 @@ protected:
|
|||||||
public:
|
public:
|
||||||
void SetNodeImages(const wxTreeItemId& id, XVT_IMAGE item_image,
|
void SetNodeImages(const wxTreeItemId& id, XVT_IMAGE item_image,
|
||||||
XVT_IMAGE collapsed_image, XVT_IMAGE expanded_image);
|
XVT_IMAGE collapsed_image, XVT_IMAGE expanded_image);
|
||||||
#if wxCHECK_VERSION(2,8,7)
|
|
||||||
virtual bool SetFont(const wxFont& font) { m_font = font; return font.IsOk(); }
|
virtual bool SetFont(const wxFont& font) { m_font = font; return font.IsOk(); }
|
||||||
#else
|
|
||||||
virtual bool SetFont(const wxFont& font) { m_font = font; return true; }
|
|
||||||
#endif
|
|
||||||
virtual wxFont GetFont() const;
|
virtual wxFont GetFont() const;
|
||||||
|
|
||||||
void Suspend();
|
void Suspend();
|
||||||
@ -151,6 +150,7 @@ class TwxOutlookBar : public wxVListBox
|
|||||||
TwxOutlookItem m_item[MAX_ITEMS];
|
TwxOutlookItem m_item[MAX_ITEMS];
|
||||||
bool m_bCaptured;
|
bool m_bCaptured;
|
||||||
int m_nHovering;
|
int m_nHovering;
|
||||||
|
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -234,12 +234,7 @@ WINDOW xvt_ctl_create_def(WIN_DEF *win_def_p, WINDOW parent_win, long app_data)
|
|||||||
break;
|
break;
|
||||||
case WC_NOTEBK:
|
case WC_NOTEBK:
|
||||||
{
|
{
|
||||||
const long flags = win_def_p->v.ctl.flags;
|
TwxNoteBook* nb = new TwxNoteBook(pParent, id, rct.GetPosition(), rct.GetSize(), win_def_p->v.ctl.flags);
|
||||||
long style = 0;
|
|
||||||
if (flags & CTL_FLAG_LEFT_JUST) style |= wxNB_LEFT;
|
|
||||||
if (flags & CTL_FLAG_RIGHT_JUST) style |= wxNB_RIGHT;
|
|
||||||
if (flags & CTL_FLAG_CENTER_JUST) style |= wxNB_BOTTOM;
|
|
||||||
TwxNoteBook* nb = new TwxNoteBook(pParent, id, rct.GetPosition(), rct.GetSize(), style);
|
|
||||||
win = (WINDOW)nb;
|
win = (WINDOW)nb;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -413,55 +408,103 @@ XVTDLL BOOLEAN xvt_pane_detach(WINDOW win)
|
|||||||
inline bool VALID_NOTEBOOK(WINDOW notebk, short page_no)
|
inline bool VALID_NOTEBOOK(WINDOW notebk, short page_no)
|
||||||
{ return notebk != NULL_WIN && page_no >= 0; }
|
{ return notebk != NULL_WIN && page_no >= 0; }
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(TwxNoteBook, wxNotebook)
|
BEGIN_EVENT_TABLE(TwxNoteBook, wxAuiNotebook)
|
||||||
EVT_NOTEBOOK_PAGE_CHANGED(wxID_ANY, TwxNoteBook::OnPageChanged)
|
EVT_NOTEBOOK_PAGE_CHANGED(wxID_ANY, TwxNoteBook::OnPageChanged)
|
||||||
END_EVENT_TABLE();
|
END_EVENT_TABLE();
|
||||||
|
|
||||||
void TwxNoteBook::OnPageChanged(wxNotebookEvent& evt)
|
void TwxNoteBook::OnPageChanged(wxNotebookEvent& evt)
|
||||||
{
|
{
|
||||||
EVENT e; memset(&e, 0, sizeof(EVENT));
|
if (!m_bSuspended)
|
||||||
e.type = E_CONTROL;
|
{
|
||||||
e.v.ctl.id = evt.GetId();
|
m_bSuspended = true;
|
||||||
e.v.ctl.ci.type = WC_NOTEBK;
|
EVENT e; memset(&e, 0, sizeof(EVENT));
|
||||||
e.v.ctl.ci.win = WINDOW(this);
|
e.type = E_CONTROL;
|
||||||
e.v.ctl.ci.v.notebk.face = (WINDOW)GetPage(evt.GetSelection());
|
e.v.ctl.id = evt.GetId();
|
||||||
e.v.ctl.ci.v.notebk.tab_no = evt.GetSelection();
|
e.v.ctl.ci.type = WC_NOTEBK;
|
||||||
e.v.ctl.ci.v.notebk.page_no = evt.GetOldSelection();
|
e.v.ctl.ci.win = WINDOW(this);
|
||||||
|
e.v.ctl.ci.v.notebk.face = (WINDOW)GetPage(evt.GetSelection());
|
||||||
|
e.v.ctl.ci.v.notebk.tab_no = evt.GetSelection();
|
||||||
|
e.v.ctl.ci.v.notebk.page_no = evt.GetOldSelection();
|
||||||
|
|
||||||
TwxWindow* win = (TwxWindow*)GetParent();
|
TwxWindow* win = (TwxWindow*)GetParent();
|
||||||
win->DoXvtEvent(e);
|
win->DoXvtEvent(e);
|
||||||
|
m_bSuspended = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
short TwxNoteBook::AddTab(wxWindow* pPage, const wxString text, wxBitmap* bmp, short idx)
|
short TwxNoteBook::AddTab(wxWindow* pPage, const wxString text, XVT_IMAGE xvt_img, short idx)
|
||||||
{
|
{
|
||||||
int imageId = -1;
|
wxBitmap bmp;
|
||||||
if (bmp != NULL)
|
if (xvt_img != NULL)
|
||||||
{
|
{
|
||||||
wxImageList* il = GetImageList();
|
wxImage& img = *(wxImage*)xvt_img;
|
||||||
if (il == NULL)
|
img.Rescale(BOOK_ICO_SIZE, BOOK_ICO_SIZE, wxIMAGE_QUALITY_HIGH);
|
||||||
AssignImageList(il = new wxImageList(bmp->GetWidth(), bmp->GetHeight()));
|
bmp = Image2Bitmap(xvt_img, true);
|
||||||
imageId = il->Add(*bmp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pPage->GetParent() != this)
|
if (pPage->GetParent() != this)
|
||||||
pPage->Reparent(this);
|
pPage->Reparent(this);
|
||||||
if (idx < 0 || idx >= (int)GetPageCount())
|
if (idx < 0 || idx >= (int)GetPageCount())
|
||||||
{
|
{
|
||||||
AddPage(pPage, text, false, imageId);
|
AddPage(pPage, text, false, bmp);
|
||||||
idx = GetPageCount()-1;
|
idx = GetPageCount()-1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
InsertPage(idx, pPage, text, false, imageId);
|
InsertPage(idx, pPage, text, false, bmp);
|
||||||
|
|
||||||
return idx;
|
return idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TwxNoteBook::SetTabImage(size_t idx, XVT_IMAGE img)
|
||||||
|
{
|
||||||
|
if (img != NULL)
|
||||||
|
{
|
||||||
|
wxImage ico(*(wxImage*)img);
|
||||||
|
ico.Rescale(BOOK_ICO_SIZE, BOOK_ICO_SIZE, wxIMAGE_QUALITY_HIGH);
|
||||||
|
const wxBitmap bmp(ico);
|
||||||
|
SetPageBitmap(idx, bmp);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
SetPageBitmap(idx, wxNullBitmap);
|
||||||
|
}
|
||||||
|
|
||||||
|
int TwxNoteBook::ChangeSelection(size_t tab_no)
|
||||||
|
{
|
||||||
|
const size_t nSel = GetSelection();
|
||||||
|
if (!m_bSuspended && tab_no != nSel)
|
||||||
|
{
|
||||||
|
m_bSuspended = true;
|
||||||
|
SetSelection(tab_no);
|
||||||
|
m_bSuspended = false;
|
||||||
|
}
|
||||||
|
return nSel;
|
||||||
|
}
|
||||||
|
|
||||||
|
long TwxNoteBook::Flags2Style(long flags) const
|
||||||
|
{
|
||||||
|
long style = wxAUI_NB_TAB_MOVE | wxAUI_NB_SCROLL_BUTTONS;
|
||||||
|
if (flags & CTL_FLAG_CENTER_JUST)
|
||||||
|
style |= wxAUI_NB_BOTTOM;
|
||||||
|
else
|
||||||
|
style |= wxAUI_NB_TOP;
|
||||||
|
return style;
|
||||||
|
}
|
||||||
|
|
||||||
TwxNoteBook::TwxNoteBook(wxWindow *parent, wxWindowID id,
|
TwxNoteBook::TwxNoteBook(wxWindow *parent, wxWindowID id,
|
||||||
const wxPoint& pos, const wxSize& size, long style)
|
const wxPoint& pos, const wxSize& size, long flags)
|
||||||
: wxNotebook(parent, id, pos, size, style)
|
: wxAuiNotebook(parent, id, pos, size, Flags2Style(flags)), m_bSuspended(false)
|
||||||
{ _nice_windows.Put((WINDOW)this, this); }
|
{ _nice_windows.Put((WINDOW)this, this); }
|
||||||
|
|
||||||
TwxNoteBook::~TwxNoteBook()
|
TwxNoteBook::~TwxNoteBook()
|
||||||
{
|
{
|
||||||
|
// Il wxAuiNotebook non gradisce le pagine doppie, per cui ... le ammazzo io.
|
||||||
|
for (int i = GetPageCount()-1; i > 0; i--)
|
||||||
|
{
|
||||||
|
wxWindow* page = GetPage(i); // Pagina corrente a partire dall'ultima
|
||||||
|
if (GetPageIndex(page) < i) // C'e' anche prima ...
|
||||||
|
RemovePage(i); // ... allora la rimuovo (senza delete!)
|
||||||
|
}
|
||||||
|
|
||||||
_nice_windows.Delete((WINDOW)this);
|
_nice_windows.Delete((WINDOW)this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -471,11 +514,10 @@ short xvt_notebk_add_page(WINDOW notebk, WINDOW page, const char* title, XVT_IMA
|
|||||||
if (notebk != NULL_WIN)
|
if (notebk != NULL_WIN)
|
||||||
{
|
{
|
||||||
CAST_NOTEBOOK(notebk, nb);
|
CAST_NOTEBOOK(notebk, nb);
|
||||||
wxBitmap* bmp = NULL;
|
|
||||||
wxString strTitle = title;
|
wxString strTitle = title;
|
||||||
if (strTitle.IsEmpty() && page != NULL_WIN)
|
if (strTitle.IsEmpty() && page != NULL_WIN)
|
||||||
strTitle = ((wxWindow*)page)->GetLabel();
|
strTitle = ((wxWindow*)page)->GetLabel();
|
||||||
idx = nb.AddTab((wxWindow*)page, strTitle, bmp, tab_no);
|
idx = nb.AddTab((wxWindow*)page, strTitle, image, tab_no);
|
||||||
}
|
}
|
||||||
return idx;
|
return idx;
|
||||||
}
|
}
|
||||||
@ -529,7 +571,7 @@ void xvt_notebk_set_front_page(WINDOW notebk, short tab_no)
|
|||||||
wxWindow* w = nb.GetPage(tab_no);
|
wxWindow* w = nb.GetPage(tab_no);
|
||||||
if (w != NULL)
|
if (w != NULL)
|
||||||
{
|
{
|
||||||
nb.ChangeSelection(tab_no); // Non generare eventi di cambio pagina!
|
nb.ChangeSelection(tab_no); // Non genera evento di cambio pagina!
|
||||||
if (!w->IsShown()) // A volte succede che la prima pagina sia nascosta!
|
if (!w->IsShown()) // A volte succede che la prima pagina sia nascosta!
|
||||||
w->Show(true);
|
w->Show(true);
|
||||||
}
|
}
|
||||||
@ -556,6 +598,23 @@ void xvt_notebk_set_page_title(WINDOW notebk, short tab_no, const char* title)
|
|||||||
xvt_vobj_set_title(win, title);
|
xvt_vobj_set_title(win, title);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void xvt_notebk_set_tab_image(WINDOW notebk, short tab_no, XVT_IMAGE img)
|
||||||
|
{
|
||||||
|
if (notebk != NULL_WIN && tab_no >= 0)
|
||||||
|
{
|
||||||
|
CAST_NOTEBOOK(notebk, nb);
|
||||||
|
nb.SetTabImage(tab_no, img); // Se img=NULL toglie l'immagine
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void xvt_notebk_set_tab_icon(WINDOW notebk, short tab_no, int rid)
|
||||||
|
{
|
||||||
|
const wxString strName = _GetResourceName("Icon", rid);
|
||||||
|
XVT_IMAGE img = xvt_image_read(strName);
|
||||||
|
xvt_notebk_set_tab_image(notebk, tab_no, img);
|
||||||
|
xvt_image_destroy(img);
|
||||||
|
}
|
||||||
|
|
||||||
void xvt_notebk_set_tab_title(WINDOW notebk, short tab_no, const char* title)
|
void xvt_notebk_set_tab_title(WINDOW notebk, short tab_no, const char* title)
|
||||||
{
|
{
|
||||||
if (notebk != NULL_WIN && tab_no >= 0)
|
if (notebk != NULL_WIN && tab_no >= 0)
|
||||||
@ -1263,26 +1322,28 @@ BOOLEAN xvt_toolbar_add_control(WINDOW win, int cid, TOOL_TYPE type, const char
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
WINDOW xvt_toolbar_create(int cid, int left, int top, int right, int bottom, long nStyle, WINDOW parent)
|
WINDOW xvt_toolbar_create(int cid, int left, int top, int right, int bottom, long nFlags, WINDOW parent)
|
||||||
{
|
{
|
||||||
|
long nStyle = wxNO_BORDER | wxTB_NODIVIDER;
|
||||||
|
if (nFlags & CTL_FLAG_PASSWORD)
|
||||||
|
nStyle |= wxTB_TEXT | wxTB_FLAT;
|
||||||
|
|
||||||
const wxPoint ptPos(left, top);
|
const wxPoint ptPos(left, top);
|
||||||
wxSize szSize(right-left, bottom-top);
|
wxSize szSize(right-left, bottom-top);
|
||||||
nStyle |= wxNO_BORDER | wxTB_NODIVIDER; // wxTB_FLAT non disegna il bordo!
|
|
||||||
int nIcoSize = 24;
|
int nIcoSize = 24;
|
||||||
if (bottom > 0)
|
if (bottom > 0)
|
||||||
{
|
{
|
||||||
nStyle |= wxTB_HORIZONTAL;
|
nStyle |= wxTB_HORIZONTAL;
|
||||||
nIcoSize = RoundToIcon(szSize.y);
|
nIcoSize = RoundToIcon(szSize.y);
|
||||||
szSize.y = nIcoSize;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
nStyle |= wxTB_VERTICAL;
|
nStyle |= wxTB_VERTICAL;
|
||||||
nIcoSize = RoundToIcon(szSize.x);
|
nIcoSize = RoundToIcon(szSize.x);
|
||||||
szSize.x = nIcoSize;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TwxToolBar* tb = new TwxToolBar((wxWindow*)parent, cid, ptPos, szSize, nStyle);
|
TwxToolBar* tb = new TwxToolBar((wxWindow*)parent, cid, ptPos, wxDefaultSize, nStyle);
|
||||||
tb->SetToolBitmapSize(wxSize(nIcoSize, nIcoSize));
|
tb->SetToolBitmapSize(wxSize(nIcoSize, nIcoSize));
|
||||||
return (WINDOW)tb;
|
return (WINDOW)tb;
|
||||||
}
|
}
|
||||||
|
@ -245,8 +245,8 @@ wxDC& TDC::GetDC(bool bPaint)
|
|||||||
if (bPaint)
|
if (bPaint)
|
||||||
{
|
{
|
||||||
KillDC();
|
KillDC();
|
||||||
//_dc = new wxPaintDC(_owner);
|
//_dc = new wxAutoBufferedPaintDC(_owner); // Funziona ma si vedono cose strane temporanee
|
||||||
_dc = new wxAutoBufferedPaintDC(_owner);
|
_dc = new wxPaintDC(_owner);
|
||||||
_dirty = -1;
|
_dirty = -1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -933,10 +933,10 @@ TwxWindow::~TwxWindow()
|
|||||||
e.type = E_DESTROY;
|
e.type = E_DESTROY;
|
||||||
DoXvtEvent(e);
|
DoXvtEvent(e);
|
||||||
|
|
||||||
if (_timer)
|
if (_timer != NULL)
|
||||||
delete _timer;
|
delete _timer;
|
||||||
|
|
||||||
if (m_pManager)
|
if (m_pManager != NULL)
|
||||||
{
|
{
|
||||||
m_pManager->UnInit(); // Obbligatorio ma, chissa' perche', non gestito dal distruttore!
|
m_pManager->UnInit(); // Obbligatorio ma, chissa' perche', non gestito dal distruttore!
|
||||||
delete m_pManager;
|
delete m_pManager;
|
||||||
@ -947,6 +947,7 @@ TwxWindow::~TwxWindow()
|
|||||||
xvt_res_free_menu_tree(m_menu);
|
xvt_res_free_menu_tree(m_menu);
|
||||||
((TTaskWin*)_task_win)->PopMenuTree();
|
((TTaskWin*)_task_win)->PopMenuTree();
|
||||||
}
|
}
|
||||||
|
|
||||||
_nice_windows.Delete((WINDOW)this);
|
_nice_windows.Delete((WINDOW)this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user