Skip to content

Commit

Permalink
Split wx app into optionally-compilable parts.
Browse files Browse the repository at this point in the history
  • Loading branch information
icculus committed Feb 19, 2007
1 parent 122a446 commit 733eb13
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 19 deletions.
37 changes: 30 additions & 7 deletions src/CMakeLists.txt
Expand Up @@ -63,15 +63,34 @@ ADD_DEFINITIONS(-D_longjmp=longjmp)

SET(TOBY_HAVE_GUI FALSE)

OPTION(TOBY_GUI_WXWIDGETS "Build wxWidgets GUI" TRUE)
OPTION(TOBY_GUI_WXWIDGETS "Build wxWidgets GUI(s)" TRUE)
IF(TOBY_GUI_WXWIDGETS)
SET(wxWidgets_USE_LIBS base core adv)
SET(wxWidgets_INCLUDE_DIRS_NO_SYSTEM 1)
FIND_PACKAGE(wxWidgets)
IF(wxWidgets_FOUND)
SET(TOBY_HAVE_GUI TRUE)
INCLUDE(${wxWidgets_USE_FILE})
ADD_DEFINITIONS(${wxWidgets_CXX_FLAGS})
SET(TOBY_HAVE_WX_GUI FALSE)

OPTION(TOBY_WX_STANDALONE "Build wxWidgets standalone GUI" TRUE)
IF(TOBY_WX_STANDALONE)
SET(TOBY_HAVE_WX_GUI TRUE)
ADD_DEFINITIONS(-DTOBY_WX_BUILD_STANDALONE=1)
ENDIF(TOBY_WX_STANDALONE)

OPTION(TOBY_WX_IDE "Build wxWidgets IDE GUI" TRUE)
IF(TOBY_WX_IDE)
SET(TOBY_HAVE_WX_GUI TRUE)
ADD_DEFINITIONS(-DTOBY_WX_BUILD_IDE=1)
ENDIF(TOBY_WX_IDE)

IF(NOT TOBY_HAVE_WX_GUI)
MESSAGE(STATUS "No wxWidgets GUIs enabled. Disabling wx app.")
SET(TOBY_GUI_WXWIDGETS FALSE)
ELSE(NOT TOBY_HAVE_WX_GUI)
SET(TOBY_HAVE_GUI TRUE)
INCLUDE(${wxWidgets_USE_FILE})
ADD_DEFINITIONS(${wxWidgets_CXX_FLAGS})
ENDIF(NOT TOBY_HAVE_WX_GUI)
ELSE(wxWidgets_FOUND)
MESSAGE(STATUS "wxWidgets not found. Support is disabled.")
SET(TOBY_GUI_WXWIDGETS FALSE)
Expand Down Expand Up @@ -141,14 +160,18 @@ ENDIF(TOBY_GUI_SDL)

MACRO(MESSAGE_BOOL_OPTION _NAME _VALUE)
IF(${_VALUE})
MESSAGE(STATUS " ${_NAME}: enabled")
MESSAGE(STATUS " ${_NAME}: enabled")
ELSE(${_VALUE})
MESSAGE(STATUS " ${_NAME}: disabled")
MESSAGE(STATUS " ${_NAME}: disabled")
ENDIF(${_VALUE})
ENDMACRO(MESSAGE_BOOL_OPTION)

MESSAGE(STATUS " Toby will build with the following options:")
MESSAGE(STATUS "Toby will build with the following options:")
MESSAGE_BOOL_OPTION("wxWidgets-based IDE application" TOBY_GUI_WXWIDGETS)
IF(TOBY_GUI_WXWIDGETS)
MESSAGE_BOOL_OPTION(" wxWidgets standalone support" TOBY_WX_STANDALONE)
MESSAGE_BOOL_OPTION(" wxWidgets IDE support" TOBY_WX_IDE)
ENDIF(TOBY_GUI_WXWIDGETS)
MESSAGE_BOOL_OPTION("SDL-based interpreter application" TOBY_GUI_SDL)

# end of CMakeLists.txt ...
Expand Down
51 changes: 39 additions & 12 deletions src/toby_wxwidgets.cpp
Expand Up @@ -19,9 +19,14 @@

#include "toby_app.h"


// !!! FIXME: Just building standalone for now...
#define TOBY_STANDALONE 1
// define something.
#if ((!TOBY_WX_BUILD_STANDALONE) && (!TOBY_WX_BUILD_IDE))
#error Nothing to build here.
#elif ((TOBY_WX_BUILD_STANDALONE) && (!TOBY_WX_BUILD_IDE))
#define TOBY_WX_STANDALONE_DEFAULT true
#else // Both IDE and standalone available, or just IDE.
#define TOBY_WX_STANDALONE_DEFAULT false
#endif


// Interfaces ...
Expand Down Expand Up @@ -184,6 +189,7 @@ BEGIN_EVENT_TABLE(TobyWindow, wxFrame)
END_EVENT_TABLE()


#if TOBY_WX_BUILD_STANDALONE
// This is a TobyWindow that only provides a TurtleSpace and no other UI.
class TobyStandaloneFrame : public TobyWindow
{
Expand All @@ -201,6 +207,7 @@ class TobyStandaloneFrame : public TobyWindow
BEGIN_EVENT_TABLE(TobyStandaloneFrame, TobyWindow)
EVT_MENU(MENUCMD_Quit, TobyStandaloneFrame::onMenuQuit)
END_EVENT_TABLE()
#endif


class TobyLicenseDialog : public wxDialog
Expand Down Expand Up @@ -1069,6 +1076,8 @@ void TobyWindow::onClose(wxCloseEvent &evt)
} // TobyWindow::onClose


#if TOBY_WX_BUILD_STANDALONE

// !!! FIXME: overflowing 80 chars here...
TobyStandaloneFrame::TobyStandaloneFrame()
{
Expand Down Expand Up @@ -1148,6 +1157,9 @@ void TobyStandaloneFrame::stopRunImpl()
mb->FindItem(MENUCMD_Cleanup)->Enable(true);
} // TobyStandaloneFrame::stopRunImpl

#endif // TOBY_WX_BUILD_STANDALONE



IMPLEMENT_APP(TobyWxApp)

Expand Down Expand Up @@ -1181,18 +1193,24 @@ static void tobyInitAllImageHandlers()

bool TobyWxApp::OnInit()
{
bool standalone = TOBY_WX_STANDALONE_DEFAULT;

// See if there are any interesting command line options to get started.
for (int i = 1; i < this->argc; i++)
{
const wxChar *arg = this->argv[i];
if (*arg == '-')
{
while (*(++arg) == '-') { /* no-op. */ }
if (wxString(arg) == wxT("buildver"))
if (wxString(arg) == wxT("standalone"))
standalone = true;
else if (wxString(arg) == wxT("ide"))
standalone = false;
else if (wxString(arg) == wxT("buildver"))
{
printf("%s\n", GBuildVer);
return false;
} // if
} // else if
else if (wxString(arg) == wxT("license"))
{
printf("%s\n", GLicense);
Expand All @@ -1219,17 +1237,26 @@ bool TobyWxApp::OnInit()

tobyInitAllImageHandlers();

#if TOBY_STANDALONE
if (standalone)
{
#if TOBY_WX_BUILD_STANDALONE
cfg->SetPath(wxT("/Standalone"));
this->mainWindow = new TobyStandaloneFrame;
#else
#error Write me.
#else
fprintf(stderr, "ERROR: No Standalone app support in this build.\n");
return false;
#endif
} // if
else
{
#if TOBY_WX_BUILD_IDE
cfg->SetPath(wxT("/IDE"));
this->mainWindow = new TobyWxGuiFrame;
#endif

if (this->mainWindow == NULL)
this->mainWindow = new TobyIDEFrame;
#else
fprintf(stderr, "ERROR: No IDE app support in this build.\n");
return false;
#endif
} // else

long mx = 0;
if ((wxConfig::Get()->Read(wxT("Maximized"), &mx, -1)) && (mx))
Expand Down

0 comments on commit 733eb13

Please sign in to comment.