win32: fix always on top inifile saving and add "lockdown" option to keep mouse from breaking the window during fast stylus action
This commit is contained in:
parent
16a06984bf
commit
8b89eb1ebe
|
@ -20,6 +20,7 @@ Windows:
|
|||
enh: add EPX and EPX1.5X resize filters
|
||||
enh: add a japanese translation which will soon be stale like the others
|
||||
enh: add fancy printscreen with emulator info on it
|
||||
enh: add "lockdown" window mode to keep window safe from fast stylus action
|
||||
|
||||
Linux/OSX:
|
||||
bug: fix building for nosse2 systems
|
||||
|
|
|
@ -24,20 +24,18 @@
|
|||
#include "rasterize.h"
|
||||
#include "gfx3d.h"
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define HAVE_WX
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_WX
|
||||
#include "wx/wxprec.h"
|
||||
#include "wx/wx.h"
|
||||
#include "wxdlg/wxdlg3dViewer.h"
|
||||
|
||||
const int kVewportWidth = 512;
|
||||
const int kViewportWidth = 256;
|
||||
const int kViewportHeight = 192;
|
||||
|
||||
static SoftRasterizerEngine engine;
|
||||
static Fragment _screen[kVewportWidth*384];
|
||||
static FragmentColor _screenColor[kVewportWidth*384];
|
||||
static Fragment _screen[kViewportWidth*kViewportHeight];
|
||||
static FragmentColor _screenColor[kViewportWidth*kViewportHeight];
|
||||
|
||||
extern void _HACK_Viewer_ExecUnit(SoftRasterizerEngine* engine);
|
||||
|
||||
|
@ -54,6 +52,24 @@ public:
|
|||
Update();
|
||||
}
|
||||
|
||||
void NewFrame()
|
||||
{
|
||||
listPolys->SetItemCount(viewer3d_state.polylist.count);
|
||||
labelUserPolycount->SetLabel(wxString::Format("%s: %d",_("User Polys"),viewer3d_state.polylist.count));
|
||||
labelFinalPolycount->SetLabel(wxString::Format("%s: %d",_("Final Polys"),viewer3d_state.polylist.count));
|
||||
tree->DeleteAllItems();
|
||||
wxTreeItemId root = tree->AddRoot("");
|
||||
for(int i=0;i<viewer3d_state.polylist.count;i++)
|
||||
{
|
||||
tree->AppendItem(root,"hai kirin");
|
||||
}
|
||||
}
|
||||
|
||||
virtual wxString OnGetItemText(const wxListCtrl* list, long item, long column) const
|
||||
{
|
||||
return "hi";
|
||||
}
|
||||
|
||||
void RedrawPanel(wxClientDC* dc)
|
||||
{
|
||||
//------------
|
||||
|
@ -63,16 +79,16 @@ public:
|
|||
engine.indexlist = &viewer3d_state.indexlist;
|
||||
engine.screen = _screen;
|
||||
engine.screenColor = _screenColor;
|
||||
engine.width = kVewportWidth;
|
||||
engine.height = 384;
|
||||
engine.width = kViewportWidth;
|
||||
engine.height = kViewportHeight;
|
||||
|
||||
engine.updateFogTable();
|
||||
|
||||
engine.initFramebuffer(kVewportWidth,384,gfx3d.state.enableClearImage);
|
||||
engine.initFramebuffer(kViewportWidth,kViewportHeight,gfx3d.state.enableClearImage);
|
||||
engine.updateToonTable();
|
||||
engine.updateFloatColors();
|
||||
engine.performClipping(checkMaterialInterpolate->IsChecked());
|
||||
engine.performViewportTransforms<true>(kVewportWidth,384);
|
||||
engine.performViewportTransforms<true>(kViewportWidth,kViewportHeight);
|
||||
engine.performBackfaceTests();
|
||||
engine.performCoordAdjustment(false);
|
||||
engine.setupTextures(false);
|
||||
|
@ -81,14 +97,14 @@ public:
|
|||
//------------
|
||||
|
||||
//dc.SetBackground(*wxGREEN_BRUSH); dc.Clear();
|
||||
u8 framebuffer[kVewportWidth*384*3];
|
||||
for(int y=0,i=0;y<384;y++)
|
||||
for(int x=0;x<kVewportWidth;x++,i++) {
|
||||
u8 framebuffer[kViewportWidth*kViewportHeight*3];
|
||||
for(int y=0,i=0;y<kViewportHeight;y++)
|
||||
for(int x=0;x<kViewportWidth;x++,i++) {
|
||||
framebuffer[i*3] = _screenColor[i].r<<2;
|
||||
framebuffer[i*3+1] = _screenColor[i].g<<2;
|
||||
framebuffer[i*3+2] = _screenColor[i].b<<2;
|
||||
}
|
||||
wxImage image(kVewportWidth,384,framebuffer,true);
|
||||
wxImage image(kViewportWidth,kViewportHeight,framebuffer,true);
|
||||
wxBitmap bitmap(image);
|
||||
dc->DrawBitmap(bitmap,0,0);
|
||||
}
|
||||
|
@ -135,6 +151,7 @@ public:
|
|||
return;
|
||||
}
|
||||
|
||||
viewer->NewFrame();
|
||||
viewer->RepaintPanel();
|
||||
}
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define HAVE_WX
|
||||
#define ENABLE_SSE
|
||||
#define ENABLE_SSE2
|
||||
#ifdef DEVELOPER
|
||||
|
|
|
@ -1564,10 +1564,6 @@
|
|||
RelativePath="..\wxdlg\wxdlg3dViewer.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\wxdlg\wxMain.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<File
|
||||
RelativePath="..\addons.cpp"
|
||||
|
|
|
@ -613,6 +613,35 @@ void ToDSScreenRelativeCoords(s32& x, s32& y, int whichScreen)
|
|||
|
||||
// END Rotation definitions
|
||||
|
||||
//-----window style handling----
|
||||
const u32 DWS_NORMAL = 0;
|
||||
const u32 DWS_ALWAYSONTOP = 1;
|
||||
const u32 DWS_LOCKDOWN = 2;
|
||||
|
||||
static u32 currWindowStyle = DWS_NORMAL;
|
||||
static void SetStyle(u32 dws)
|
||||
{
|
||||
//WS_CAPTION | WS_SYSMENU | WS_SIZEBOX | WS_MINIMIZEBOX | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
|
||||
|
||||
//pokefan's suggestion, there are a number of ways we could do this.
|
||||
//i sort of like this because it is very visually indicative of being locked down
|
||||
DWORD ws = GetWindowLong(MainWindow->getHWnd(),GWL_STYLE);
|
||||
ws &= ~(WS_CAPTION | WS_POPUP | WS_THICKFRAME | WS_DLGFRAME );
|
||||
if(dws & DWS_LOCKDOWN)
|
||||
ws |= WS_POPUP | WS_DLGFRAME ;
|
||||
else ws |= WS_CAPTION | WS_THICKFRAME;
|
||||
SetWindowLong(MainWindow->getHWnd(),GWL_STYLE, ws);
|
||||
|
||||
currWindowStyle = dws;
|
||||
HWND insertAfter = HWND_NOTOPMOST;
|
||||
if(dws & DWS_ALWAYSONTOP)
|
||||
insertAfter = HWND_TOPMOST;
|
||||
SetWindowPos(MainWindow->getHWnd(), insertAfter, 0,0,0,0, SWP_NOMOVE | SWP_NOSIZE | SWP_FRAMECHANGED);
|
||||
}
|
||||
|
||||
static u32 GetStyle() { return currWindowStyle; }
|
||||
//---------
|
||||
|
||||
void UpdateRecentRomsMenu()
|
||||
{
|
||||
//This function will be called to populate the Recent Menu
|
||||
|
@ -2157,9 +2186,10 @@ static void RefreshMicSettings()
|
|||
DWORD wmTimerRes;
|
||||
int _main()
|
||||
{
|
||||
//7zup initialization
|
||||
InitDecoder();
|
||||
|
||||
#ifdef WX_STUB
|
||||
#ifdef HAVE_WX
|
||||
wxInitialize();
|
||||
#endif
|
||||
|
||||
|
@ -2214,6 +2244,10 @@ int _main()
|
|||
exit(-1);
|
||||
}
|
||||
|
||||
u32 style = DWS_NORMAL;
|
||||
if(GetPrivateProfileBool("Video","Window Always On Top", false, IniName)) style |= DWS_ALWAYSONTOP;
|
||||
if(GetPrivateProfileBool("Video","Window Lockdown", false, IniName)) style |= DWS_LOCKDOWN;
|
||||
|
||||
windowSize = GetPrivateProfileInt("Video","Window Size", 0, IniName);
|
||||
video.rotation = GetPrivateProfileInt("Video","Window Rotate", 0, IniName);
|
||||
video.rotation_userset = GetPrivateProfileInt("Video","Window Rotate Set", video.rotation, IniName);
|
||||
|
@ -2288,7 +2322,7 @@ int _main()
|
|||
|
||||
MainWindow = new WINCLASS(CLASSNAME, hAppInst);
|
||||
if (!MainWindow->create((char*)EMU_DESMUME_NAME_AND_VERSION(), WndX, WndY, video.width,video.height+video.screengap,
|
||||
WS_CAPTION| WS_SYSMENU | WS_SIZEBOX | WS_MINIMIZEBOX | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
|
||||
WS_CAPTION | WS_SYSMENU | WS_SIZEBOX | WS_MINIMIZEBOX | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
|
||||
NULL))
|
||||
{
|
||||
MessageBox(NULL, "Error creating main window", "DeSmuME", MB_OK);
|
||||
|
@ -2296,6 +2330,8 @@ int _main()
|
|||
exit(-1);
|
||||
}
|
||||
|
||||
SetStyle(style);
|
||||
|
||||
gpu_SetRotateScreen(video.rotation);
|
||||
|
||||
//default the firmware settings, they may get changed later
|
||||
|
@ -2582,8 +2618,8 @@ int _main()
|
|||
MainWindow->Show(SW_NORMAL);
|
||||
|
||||
//DEBUG TEST HACK
|
||||
//driver->VIEW3D_Init();
|
||||
//driver->view3d->Launch();
|
||||
driver->VIEW3D_Init();
|
||||
driver->view3d->Launch();
|
||||
//---------
|
||||
|
||||
//------DO EVERYTHING
|
||||
|
@ -3550,6 +3586,7 @@ void FilterUpdate (HWND hwnd, bool user)
|
|||
WritePrivateProfileInt("Video", "Height", video.height, IniName);
|
||||
}
|
||||
|
||||
|
||||
void DesEnableMenuItem(HMENU hMenu, UINT uIDEnableItem, bool enable)
|
||||
{
|
||||
EnableMenuItem(hMenu, uIDEnableItem, MF_BYCOMMAND | (enable?MF_ENABLED:MF_GRAYED));
|
||||
|
@ -3646,6 +3683,8 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
|
|||
MainWindow->checkMenu(IDC_WINDOW2_5X, ((windowSize==65534)));
|
||||
MainWindow->checkMenu(IDC_WINDOW3X, ((windowSize==3)));
|
||||
MainWindow->checkMenu(IDC_WINDOW4X, ((windowSize==4)));
|
||||
MainWindow->checkMenu(IDM_ALWAYS_ON_TOP, (GetStyle()&DWS_ALWAYSONTOP)!=0);
|
||||
MainWindow->checkMenu(IDM_LOCKDOWN, (GetStyle()&DWS_LOCKDOWN)!=0);
|
||||
|
||||
//Screen Separation
|
||||
MainWindow->checkMenu(IDM_SCREENSEP_NONE, ((video.screengap==kGapNone)));
|
||||
|
@ -5090,23 +5129,16 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
|
|||
ScaleScreen(1);
|
||||
}
|
||||
break;
|
||||
case IDM_LOCKDOWN:
|
||||
{
|
||||
SetStyle(GetStyle()^DWS_LOCKDOWN);
|
||||
WritePrivateProfileBool("Video", "Window Lockdown", (GetStyle()&DWS_LOCKDOWN)!=0, IniName);
|
||||
}
|
||||
return 0;
|
||||
case IDM_ALWAYS_ON_TOP:
|
||||
{
|
||||
LONG exStyle = GetWindowLong(MainWindow->getHWnd(), GWL_EXSTYLE);
|
||||
UINT menuCheck = MF_BYCOMMAND;
|
||||
HWND insertAfter = HWND_TOPMOST;
|
||||
|
||||
|
||||
if(exStyle & WS_EX_TOPMOST)
|
||||
{
|
||||
menuCheck |= MF_UNCHECKED;
|
||||
insertAfter = HWND_NOTOPMOST;
|
||||
}
|
||||
else
|
||||
menuCheck |= MF_CHECKED;
|
||||
|
||||
CheckMenuItem(mainMenu, IDM_ALWAYS_ON_TOP, menuCheck);
|
||||
SetWindowPos(MainWindow->getHWnd(), insertAfter, 0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);
|
||||
SetStyle(GetStyle()^DWS_ALWAYSONTOP);
|
||||
WritePrivateProfileBool("Video", "Window Always On Top", (GetStyle()&DWS_ALWAYSONTOP)!=0, IniName);
|
||||
}
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -699,6 +699,7 @@
|
|||
#define IDM_CHEATS_SEARCH 40063
|
||||
#define ID_RAMSEARCH_CAPTIONTEXT 40064
|
||||
#define IDM_VIEW3D 40065
|
||||
#define IDM_LOCKDOWN 40066
|
||||
#define IDC_LABEL_UP 50000
|
||||
#define IDC_LABEL_RIGHT 50001
|
||||
#define IDC_LABEL_LEFT 50002
|
||||
|
@ -794,7 +795,7 @@
|
|||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 106
|
||||
#define _APS_NEXT_COMMAND_VALUE 40010
|
||||
#define _APS_NEXT_COMMAND_VALUE 40012
|
||||
#define _APS_NEXT_CONTROL_VALUE 1020
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -68,6 +68,8 @@ wxdlg3dViewer::wxdlg3dViewer( wxWindow* parent, wxWindowID id, const wxString& c
|
|||
{
|
||||
Init();
|
||||
Create(parent, id, caption, pos, size, style);
|
||||
listPolys->callbacks = this;
|
||||
listPolys->InsertColumn(0,"polys");
|
||||
}
|
||||
|
||||
|
||||
|
@ -112,6 +114,10 @@ void wxdlg3dViewer::Init()
|
|||
////@begin wxdlg3dViewer member initialisation
|
||||
checkMaterialInterpolate = NULL;
|
||||
panelViewport = NULL;
|
||||
labelUserPolycount = NULL;
|
||||
labelFinalPolycount = NULL;
|
||||
listPolys = NULL;
|
||||
tree = NULL;
|
||||
////@end wxdlg3dViewer member initialisation
|
||||
}
|
||||
|
||||
|
@ -123,8 +129,6 @@ void wxdlg3dViewer::Init()
|
|||
void wxdlg3dViewer::CreateControls()
|
||||
{
|
||||
////@begin wxdlg3dViewer content construction
|
||||
// Generated by DialogBlocks, 14/12/2009 20:51:53 (unregistered)
|
||||
|
||||
wxdlg3dViewer* itemDialog1 = this;
|
||||
|
||||
wxFlexGridSizer* itemFlexGridSizer2 = new wxFlexGridSizer(1, 0, 0, 0);
|
||||
|
@ -135,51 +139,75 @@ void wxdlg3dViewer::CreateControls()
|
|||
itemFlexGridSizer2->AddGrowableCol(4);
|
||||
itemDialog1->SetSizer(itemFlexGridSizer2);
|
||||
|
||||
wxStaticBox* itemStaticBoxSizer3Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Display optionsss"));
|
||||
wxStaticBoxSizer* itemStaticBoxSizer3 = new wxStaticBoxSizer(itemStaticBoxSizer3Static, wxVERTICAL);
|
||||
itemFlexGridSizer2->Add(itemStaticBoxSizer3, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
|
||||
itemFlexGridSizer2->Add(itemBoxSizer3, 0, wxGROW|wxALIGN_TOP|wxALL, 5);
|
||||
|
||||
wxStaticBox* itemStaticBoxSizer4Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Display optionsss"));
|
||||
wxStaticBoxSizer* itemStaticBoxSizer4 = new wxStaticBoxSizer(itemStaticBoxSizer4Static, wxVERTICAL);
|
||||
itemBoxSizer3->Add(itemStaticBoxSizer4, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
checkMaterialInterpolate = new wxCheckBox( itemDialog1, ID_MATERIALINTERPOLATE, _("Material clip interpolation"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
checkMaterialInterpolate->SetValue(false);
|
||||
itemStaticBoxSizer3->Add(checkMaterialInterpolate, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
itemStaticBoxSizer4->Add(checkMaterialInterpolate, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
wxCheckBox* itemCheckBox5 = new wxCheckBox( itemDialog1, ID_CHECKBOX1, _("Something else"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemCheckBox5->SetValue(false);
|
||||
itemStaticBoxSizer3->Add(itemCheckBox5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
wxCheckBox* itemCheckBox6 = new wxCheckBox( itemDialog1, ID_CHECKBOX1, _("Something else"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemCheckBox6->SetValue(false);
|
||||
itemStaticBoxSizer4->Add(itemCheckBox6, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
panelViewport = new wxPanel( itemDialog1, ID_PANEL, wxDefaultPosition, wxSize(512, 384), wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
|
||||
itemBoxSizer3->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
wxFlexGridSizer* itemFlexGridSizer8 = new wxFlexGridSizer(0, 2, 0, 0);
|
||||
itemBoxSizer3->Add(itemFlexGridSizer8, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
panelViewport = new wxWindow( itemDialog1, ID_VIEWPORT, wxDefaultPosition, wxSize(256, 192), wxSIMPLE_BORDER );
|
||||
itemFlexGridSizer2->Add(panelViewport, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
|
||||
wxStaticBox* itemStaticBoxSizer7Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Choose One"));
|
||||
wxStaticBoxSizer* itemStaticBoxSizer7 = new wxStaticBoxSizer(itemStaticBoxSizer7Static, wxVERTICAL);
|
||||
itemFlexGridSizer2->Add(itemStaticBoxSizer7, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_TOP|wxALL, 5);
|
||||
wxFlexGridSizer* itemFlexGridSizer10 = new wxFlexGridSizer(3, 1, 0, 0);
|
||||
itemFlexGridSizer10->AddGrowableRow(1);
|
||||
itemFlexGridSizer2->Add(itemFlexGridSizer10, 1, wxALIGN_CENTER_HORIZONTAL|wxGROW|wxALL, 5);
|
||||
|
||||
wxRadioButton* itemRadioButton8 = new wxRadioButton( itemDialog1, ID_RADIOBUTTON, _("Final Polylist"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemRadioButton8->SetValue(true);
|
||||
itemStaticBoxSizer7->Add(itemRadioButton8, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
wxStaticBox* itemStaticBoxSizer11Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Choose One"));
|
||||
wxStaticBoxSizer* itemStaticBoxSizer11 = new wxStaticBoxSizer(itemStaticBoxSizer11Static, wxVERTICAL);
|
||||
itemFlexGridSizer10->Add(itemStaticBoxSizer11, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_BOTTOM|wxALL, 5);
|
||||
|
||||
wxRadioButton* itemRadioButton9 = new wxRadioButton( itemDialog1, ID_RADIOBUTTON1, _("User Polylist"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemRadioButton9->SetValue(false);
|
||||
itemRadioButton9->Enable(false);
|
||||
itemStaticBoxSizer7->Add(itemRadioButton9, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
wxRadioButton* itemRadioButton12 = new wxRadioButton( itemDialog1, ID_RADIOBUTTON, _("Final Polylist"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemRadioButton12->SetValue(true);
|
||||
itemStaticBoxSizer11->Add(itemRadioButton12, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
wxRadioButton* itemRadioButton10 = new wxRadioButton( itemDialog1, ID_RADIOBUTTON2, _("Display List"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemRadioButton10->SetValue(false);
|
||||
itemRadioButton10->Enable(false);
|
||||
itemStaticBoxSizer7->Add(itemRadioButton10, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
wxRadioButton* itemRadioButton13 = new wxRadioButton( itemDialog1, ID_RADIOBUTTON1, _("User Polylist"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemRadioButton13->SetValue(false);
|
||||
itemRadioButton13->Enable(false);
|
||||
itemStaticBoxSizer11->Add(itemRadioButton13, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
wxStaticLine* itemStaticLine11 = new wxStaticLine( itemDialog1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
itemFlexGridSizer2->Add(itemStaticLine11, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW|wxALL, 5);
|
||||
wxRadioButton* itemRadioButton14 = new wxRadioButton( itemDialog1, ID_RADIOBUTTON2, _("Display List"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemRadioButton14->SetValue(false);
|
||||
itemRadioButton14->Enable(false);
|
||||
itemStaticBoxSizer11->Add(itemRadioButton14, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
wxListCtrl* itemListCtrl12 = new wxListCtrl( itemDialog1, ID_LISTCTRL, wxDefaultPosition, wxDefaultSize, wxLC_REPORT );
|
||||
itemFlexGridSizer2->Add(itemListCtrl12, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW|wxALL, 5);
|
||||
itemFlexGridSizer10->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
|
||||
wxTreeCtrl* itemTreeCtrl13 = new wxTreeCtrl( itemDialog1, ID_TREECTRL, wxDefaultPosition, wxSize(99, 99), wxTR_SINGLE );
|
||||
itemFlexGridSizer2->Add(itemTreeCtrl13, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW|wxALL, 5);
|
||||
wxStaticBox* itemStaticBoxSizer16Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Statistics"));
|
||||
wxStaticBoxSizer* itemStaticBoxSizer16 = new wxStaticBoxSizer(itemStaticBoxSizer16Static, wxVERTICAL);
|
||||
itemFlexGridSizer10->Add(itemStaticBoxSizer16, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5);
|
||||
|
||||
labelUserPolycount = new wxStaticText( itemDialog1, wxID_STATIC, _("User Polys"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemStaticBoxSizer16->Add(labelUserPolycount, 0, wxALIGN_LEFT|wxALL, 1);
|
||||
|
||||
labelFinalPolycount = new wxStaticText( itemDialog1, wxID_STATIC, _("Final Polys: "), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
itemStaticBoxSizer16->Add(labelFinalPolycount, 0, wxALIGN_LEFT|wxALL, 1);
|
||||
|
||||
wxStaticLine* itemStaticLine19 = new wxStaticLine( itemDialog1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
itemFlexGridSizer2->Add(itemStaticLine19, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW|wxALL, 5);
|
||||
|
||||
listPolys = new wxDesmumeListCtrl( itemDialog1, ID_DESMUMELISTCTRL1, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_VIRTUAL );
|
||||
itemFlexGridSizer2->Add(listPolys, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW|wxALL, 5);
|
||||
|
||||
tree = new wxTreeCtrl( itemDialog1, ID_TREECTRL, wxDefaultPosition, wxSize(99, 99), wxTR_HAS_BUTTONS |wxTR_HIDE_ROOT|wxTR_ROW_LINES|wxTR_SINGLE );
|
||||
itemFlexGridSizer2->Add(tree, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW|wxALL, 5);
|
||||
|
||||
// Connect events and objects
|
||||
panelViewport->Connect(ID_PANEL, wxEVT_PAINT, wxPaintEventHandler(wxdlg3dViewer::OnPanelPaint), NULL, this);
|
||||
panelViewport->Connect(ID_PANEL, wxEVT_ERASE_BACKGROUND, wxEraseEventHandler(wxdlg3dViewer::OnPanelEraseBackground), NULL, this);
|
||||
panelViewport->Connect(ID_VIEWPORT, wxEVT_PAINT, wxPaintEventHandler(wxdlg3dViewer::OnPanelPaint), NULL, this);
|
||||
panelViewport->Connect(ID_VIEWPORT, wxEVT_ERASE_BACKGROUND, wxEraseEventHandler(wxdlg3dViewer::OnPanelEraseBackground), NULL, this);
|
||||
////@end wxdlg3dViewer content construction
|
||||
}
|
||||
|
||||
|
@ -262,3 +290,87 @@ void wxdlg3dViewer::OnPanelEraseBackground( wxEraseEvent& event )
|
|||
//blank to block background clearing
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* wxDesmumeListCtrl type definition
|
||||
*/
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS( wxDesmumeListCtrl, wxListCtrl )
|
||||
|
||||
|
||||
/*
|
||||
* wxDesmumeListCtrl event table definition
|
||||
*/
|
||||
|
||||
BEGIN_EVENT_TABLE( wxDesmumeListCtrl, wxListCtrl )
|
||||
|
||||
////@begin wxDesmumeListCtrl event table entries
|
||||
////@end wxDesmumeListCtrl event table entries
|
||||
|
||||
END_EVENT_TABLE()
|
||||
|
||||
|
||||
/*
|
||||
* wxDesmumeListCtrl constructors
|
||||
*/
|
||||
|
||||
wxDesmumeListCtrl::wxDesmumeListCtrl()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
wxDesmumeListCtrl::wxDesmumeListCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator)
|
||||
{
|
||||
Init();
|
||||
Create(parent, id, pos, size, style, validator);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* wxDesmumeListCtrl creator
|
||||
*/
|
||||
|
||||
bool wxDesmumeListCtrl::Create(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator)
|
||||
{
|
||||
////@begin wxDesmumeListCtrl creation
|
||||
wxListCtrl::Create(parent, id, pos, size, style, validator);
|
||||
CreateControls();
|
||||
////@end wxDesmumeListCtrl creation
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* wxDesmumeListCtrl destructor
|
||||
*/
|
||||
|
||||
wxDesmumeListCtrl::~wxDesmumeListCtrl()
|
||||
{
|
||||
////@begin wxDesmumeListCtrl destruction
|
||||
////@end wxDesmumeListCtrl destruction
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Member initialisation
|
||||
*/
|
||||
|
||||
void wxDesmumeListCtrl::Init()
|
||||
{
|
||||
////@begin wxDesmumeListCtrl member initialisation
|
||||
////@end wxDesmumeListCtrl member initialisation
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Control creation for wxDesmumeListCtrl
|
||||
*/
|
||||
|
||||
void wxDesmumeListCtrl::CreateControls()
|
||||
{
|
||||
////@begin wxDesmumeListCtrl content construction
|
||||
////@end wxDesmumeListCtrl content construction
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -25,11 +25,21 @@
|
|||
#include "wx/treectrl.h"
|
||||
////@end includes
|
||||
|
||||
class IListCtrlCallbacks
|
||||
{
|
||||
public:
|
||||
virtual wxString OnGetItemText(const wxListCtrl* list, long item, long column) const = 0;
|
||||
};
|
||||
|
||||
|
||||
/*!
|
||||
* Forward declarations
|
||||
*/
|
||||
|
||||
////@begin forward declarations
|
||||
class wxWindow;
|
||||
class wxDesmumeListCtrl;
|
||||
class wxTreeCtrl;
|
||||
////@end forward declarations
|
||||
|
||||
/*!
|
||||
|
@ -40,17 +50,21 @@
|
|||
#define ID_X 10000
|
||||
#define ID_MATERIALINTERPOLATE 10004
|
||||
#define ID_CHECKBOX1 10008
|
||||
#define ID_PANEL 10001
|
||||
#define ID_VIEWPORT 10002
|
||||
#define ID_RADIOBUTTON 10005
|
||||
#define ID_RADIOBUTTON1 10006
|
||||
#define ID_RADIOBUTTON2 10007
|
||||
#define ID_LISTCTRL 10002
|
||||
#define ID_DESMUMELISTCTRL1 10009
|
||||
#define ID_TREECTRL 10003
|
||||
#define SYMBOL_WXDLG3DVIEWER_STYLE wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxDIALOG_NO_PARENT|wxCLOSE_BOX|wxTAB_TRAVERSAL
|
||||
#define SYMBOL_WXDLG3DVIEWER_TITLE _("3D Viewer")
|
||||
#define SYMBOL_WXDLG3DVIEWER_IDNAME ID_X
|
||||
#define SYMBOL_WXDLG3DVIEWER_SIZE wxSize(399, 299)
|
||||
#define SYMBOL_WXDLG3DVIEWER_SIZE wxSize(399, 300)
|
||||
#define SYMBOL_WXDLG3DVIEWER_POSITION wxDefaultPosition
|
||||
#define SYMBOL_WXDESMUMELISTCTRL_STYLE wxLC_REPORT|wxLC_VIRTUAL
|
||||
#define SYMBOL_WXDESMUMELISTCTRL_IDNAME ID_DESMUMELISTCTRL1
|
||||
#define SYMBOL_WXDESMUMELISTCTRL_SIZE wxDefaultSize
|
||||
#define SYMBOL_WXDESMUMELISTCTRL_POSITION wxDefaultPosition
|
||||
////@end control identifiers
|
||||
|
||||
|
||||
|
@ -58,7 +72,7 @@
|
|||
* wxdlg3dViewer class declaration
|
||||
*/
|
||||
|
||||
class wxdlg3dViewer: public wxDialog
|
||||
class wxdlg3dViewer: public wxDialog, public IListCtrlCallbacks
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS( wxdlg3dViewer )
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
@ -80,6 +94,9 @@ public:
|
|||
/// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
|
||||
virtual wxString OnGetItemText(const wxListCtrl* list, long item, long column) const {
|
||||
return "";
|
||||
}
|
||||
virtual void RepaintPanel() {}
|
||||
virtual void _OnPaintPanel( wxPaintEvent& event ) {};
|
||||
|
||||
|
@ -91,10 +108,10 @@ public:
|
|||
/// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_MATERIALINTERPOLATE
|
||||
void OnMaterialInterpolateClick( wxCommandEvent& event );
|
||||
|
||||
/// wxEVT_PAINT event handler for ID_PANEL
|
||||
/// wxEVT_PAINT event handler for ID_VIEWPORT
|
||||
void OnPanelPaint( wxPaintEvent& event );
|
||||
|
||||
/// wxEVT_ERASE_BACKGROUND event handler for ID_PANEL
|
||||
/// wxEVT_ERASE_BACKGROUND event handler for ID_VIEWPORT
|
||||
void OnPanelEraseBackground( wxEraseEvent& event );
|
||||
|
||||
////@end wxdlg3dViewer event handler declarations
|
||||
|
@ -113,9 +130,57 @@ public:
|
|||
|
||||
////@begin wxdlg3dViewer member variables
|
||||
wxCheckBox* checkMaterialInterpolate;
|
||||
wxPanel* panelViewport;
|
||||
wxWindow* panelViewport;
|
||||
wxStaticText* labelUserPolycount;
|
||||
wxStaticText* labelFinalPolycount;
|
||||
wxDesmumeListCtrl* listPolys;
|
||||
wxTreeCtrl* tree;
|
||||
////@end wxdlg3dViewer member variables
|
||||
};
|
||||
|
||||
/*!
|
||||
* wxDesmumeListCtrl class declaration
|
||||
*/
|
||||
|
||||
class wxDesmumeListCtrl: public wxListCtrl
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS( wxDesmumeListCtrl )
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
public:
|
||||
IListCtrlCallbacks* callbacks;
|
||||
|
||||
virtual wxString OnGetItemText(long item, long column) const {
|
||||
return callbacks->OnGetItemText(this,item,column);
|
||||
}
|
||||
|
||||
/// Constructors
|
||||
wxDesmumeListCtrl();
|
||||
wxDesmumeListCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator);
|
||||
|
||||
/// Creation
|
||||
bool Create(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator);
|
||||
|
||||
/// Destructor
|
||||
~wxDesmumeListCtrl();
|
||||
|
||||
/// Initialises member variables
|
||||
void Init();
|
||||
|
||||
/// Creates the controls and sizers
|
||||
void CreateControls();
|
||||
|
||||
////@begin wxDesmumeListCtrl event handler declarations
|
||||
|
||||
////@end wxDesmumeListCtrl event handler declarations
|
||||
|
||||
////@begin wxDesmumeListCtrl member function declarations
|
||||
|
||||
////@end wxDesmumeListCtrl member function declarations
|
||||
|
||||
////@begin wxDesmumeListCtrl member variables
|
||||
////@end wxDesmumeListCtrl member variables
|
||||
};
|
||||
|
||||
#endif
|
||||
// _X_H_
|
||||
|
|
Loading…
Reference in New Issue