1
0
forked from cheng/wallet
wallet/samples/dialogs/app.cpp
Cheng d59729f396
Never really figured out why my code was breaking
fixed it by looking for funny things that deviated from
the sameples,  and doing various recommended safe things,
and found a few sql errors, and one by one the crashes
went away.

The new wxWidgets just seems less tolerant of little careless
stuff that is not right.
2023-10-18 20:23:56 +10:00

135 lines
3.4 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: dialogs.cpp
// Purpose: updating to make it more relevant to my code
// and more similar to my code.
//
// Leaving most of useless to me examples in place
// unless I am completely sure they are will never
// be useful.
//
// Some of the stuff here does not quite work
// Only half implemented. Eg, log message
// The primary child of Frame is a scrollable
// window "MyCanvas" to which nothing ever gets
// written after it is created. And the tip
// of the day dialog fails sould be under help)
//
// On the other hand, lots of cool bits of code
// that really deserve to be copied, like
// hooking the windows system menu of
// a window.
//
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
wxIMPLEMENT_APP(MyApp);
wxBEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow)
EVT_PAINT(MyCanvas::OnPaint)
wxEND_EVENT_TABLE()
#if wxUSE_CMDLINE_PARSER
static const char* PROGRESS_SWITCH = "progress";
void MyApp::OnInitCmdLine(wxCmdLineParser& parser)
{
wxApp::OnInitCmdLine(parser);
parser.AddOption("", PROGRESS_SWITCH,
"Style for the startup progress dialog (wxPD_XXX)",
wxCMD_LINE_VAL_NUMBER);
}
bool MyApp::OnCmdLineParsed(wxCmdLineParser& parser)
{
if (!wxApp::OnCmdLineParsed(parser))
return false;
parser.Found(PROGRESS_SWITCH, &m_startupProgressStyle);
return true;
}
#endif // wxUSE_CMDLINE_PARSER
// `Main program' equivalent, creating windows and returning main app frame
bool MyApp::OnInit()
{
if (!wxApp::OnInit())
return false;
#if wxUSE_PROGRESSDLG
if (m_startupProgressStyle != -1)
{
// Show a test progress dialog before the main event loop is started:
// it should still work.
const int PROGRESS_COUNT = 100;
wxProgressDialog dlg
(
"Progress in progress",
"Please wait, starting...",
PROGRESS_COUNT,
NULL,
m_startupProgressStyle|wxPD_AUTO_HIDE
);
for (int i = 0; i <= PROGRESS_COUNT; i++)
{
wxString msg;
switch (i)
{
case 15:
msg = "And the same dialog but with a very, very, very long"
" message, just to test how it appears in this case.";
break;
case 30:
msg = "Back to brevity";
break;
case 80:
msg = "Back and adjusted";
dlg.Fit();
break;
}
if (!dlg.Update(i, msg))
break;
wxMilliSleep(50);
}
}
#endif // wxUSE_PROGRESSDLG
#if wxUSE_IMAGE
wxInitAllImageHandlers();
#endif
const char* szUtf8Test = " 🙃tick ✔ Pi Π π ϖ π °";
// Create the main frame window
Frame* frame = new Frame(szUtf8Test);
frame->Show(true);
#if wxUSE_STARTUP_TIPS
if (frame->m_showTipsAtStartup) {
auto event = new wxCommandEvent(wxEVT_MENU, DIALOGS_TIP);
wxQueueEvent(frame, event);
}
#endif // wxUSE_STARTUP_TIPS
return true;
}
// ----------------------------------------------------------------------------
// MyCanvas
// ----------------------------------------------------------------------------
void MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event))
{
wxPaintDC dc(this);
dc.SetBackgroundMode(wxBRUSHSTYLE_TRANSPARENT);
const char* szUtf8Test = R"|(wxWidgets common dialogs “(✔
🙃 π ° ) test application)|";
dc.DrawText(szUtf8Test, 10, 10);
dc.DrawText("fred fred", 10, 40);
}