frmMain::frmMain()
  : wxFrame(NULL, wxID_ANY, L"CorsixTH Map Editor",
            wxDefaultPosition, wxSize(640, 480))
{
    m_sFrameCaption = wxFrame::GetTitle();
    _setFilename(wxEmptyString);

    m_pRibbon = new wxRibbonBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxRIBBON_BAR_FLOW_VERTICAL | wxRIBBON_BAR_SHOW_PAGE_LABELS);
    m_pRibbon->SetArtProvider(new wxRibbonMSWArtProvider);
    m_pRibbon->SetTabCtrlMargins(0, 0);
    m_pHomePage = new wxRibbonPage(m_pRibbon, wxID_ANY, L"Home");
    wxRibbonPage* pFloorPage = new wxRibbonPage(m_pRibbon, wxID_ANY, L"Floors");
    wxRibbonPanel* pFloorSimplePanel = new wxRibbonPanel(pFloorPage, wxID_ANY, L"Simple Tiles");
    m_pFloorGallery1 = new RibbonBlockGallery(pFloorSimplePanel, ID_GALLERY_FLOOR1);
    wxRibbonPanel* pFloorDecoratedPanel = new wxRibbonPanel(pFloorPage, wxID_ANY, L"Decorated Tiles");
    m_pFloorGallery2 = new RibbonBlockGallery(pFloorDecoratedPanel, ID_GALLERY_FLOOR2);
    wxRibbonPage* pWallPage = new wxRibbonPage(m_pRibbon, wxID_ANY, L"Walls");
    wxRibbonPanel* pWallWestPanel = new wxRibbonPanel(pWallPage, wxID_ANY, L"West");
    m_pWallGallery1 = new RibbonBlockGallery(pWallWestPanel, ID_GALLERY_WALL1);
    wxRibbonPanel* pWallNorthPanel = new wxRibbonPanel(pWallPage, wxID_ANY, L"North");
    m_pWallGallery2 = new RibbonBlockGallery(pWallNorthPanel, ID_GALLERY_WALL2);
    m_pRibbon->Realize();

    m_pGamePanel = new ScrollableGamePanel(this);
    m_pGamePanel->setExtraLuaInitFunction(_l_init, this);
    m_pGamePanel->setLogWindow(m_pLogWindow = new frmLog);
    wxPoint ptLogWindow = GetPosition();
    ptLogWindow.x += GetSize().GetWidth();
    m_pLogWindow->SetPosition(ptLogWindow);

    wxSizer *pTopSizer = new wxBoxSizer(wxHORIZONTAL);
    pTopSizer->Add(m_pRibbon, 0, wxEXPAND);
    pTopSizer->Add(m_pGamePanel, 1, wxEXPAND);
    SetSizer(pTopSizer);
}
void frmMain::_onOpen(wxRibbonButtonBarEvent& evt)
{
    wxString sDirectory = _getMapsDirectory();
    wxString sFilter = _getMapsFilter();
    wxFileDialog oOpenDialog(this, wxFileSelectorPromptStr, sDirectory,
        wxEmptyString, sFilter, wxFD_OPEN | wxFD_FILE_MUST_EXIST);
    oOpenDialog.SetFilterIndex(2);
    if(oOpenDialog.ShowModal() != wxID_OK)
        return;
    wxFile fFile;
    if(!fFile.Open(oOpenDialog.GetPath()))
        return;
    size_t iLength = static_cast<size_t>(fFile.Length());
    char* sData = new (std::nothrow) char[iLength];
    if(!sData)
        return;
    if(fFile.Read(sData, iLength) != iLength)
    {
        delete[] sData;
        return;
    }
    do_load_level_t oParams = {sData, iLength, this};
    lua_State* L = m_pGamePanel->getLua();
    if(lua_cpcall(L, _l_do_load, reinterpret_cast<void*>(&oParams)) != 0)
        lua_pop(L, 1);
    delete[] sData;
    _setFilename(oOpenDialog.GetPath());
    m_pGamePanel->Refresh();
}
Esempio n. 3
0
/* Caution! singelton. */
static iOTrace _inst ( tracelevel level, const char* file, Boolean toStdErr) {
  if( traceInst == NULL ) {
    iOTrace     trace = allocIDMem( sizeof( struct OTrace ), RocsTraceID );
    iOTraceData data  = allocIDMem( sizeof( struct OTraceData ), RocsTraceID );

    MemOp.basecpy( trace, &TraceOp, 0, sizeof( struct OTrace ), data );

    data->mux      = MutexOp.inst( NULL, True );
    data->ebcdic   = EbcdicOp.inst( CODEPAGE_1252, NULL );
    data->level    = level;
    data->toStdErr = toStdErr;
    data->dumpsize = TRC_DUMPSIZE;
    data->appID    = StrOp.dupID( "..", RocsTraceID );
    data->filesize = TRC_FILESIZE;
    data->nrfiles  = TRC_NRFILES;

    traceInst = trace;

    instCnt++;

    if( file != NULL )
      _setFilename( trace, file );

    mainThreadId = ThreadOp.id();
    return trace;
  }
  else
    return traceInst;
}
void frmMain::_onNew(wxRibbonButtonBarEvent& evt)
{
    do_load_level_t oParams = {NULL, 0, this};
    lua_State* L = m_pGamePanel->getLua();
    if(lua_cpcall(L, _l_do_load, reinterpret_cast<void*>(&oParams)) != 0)
        lua_pop(L, 1);
    _setFilename(wxEmptyString);
    m_pGamePanel->Refresh();
}
void frmMain::_onSaveMenuSaveAs(wxCommandEvent& evt)
{
    wxString sDirectory = _getMapsDirectory();
    wxString sFilter = _getMapsFilter();
    wxFileDialog oSaveDialog(this, wxFileSelectorPromptStr, sDirectory,
        m_sFilename, sFilter, wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
    oSaveDialog.SetFilterIndex(2);
    if(oSaveDialog.ShowModal() != wxID_OK)
        return;
    _setFilename(oSaveDialog.GetPath());
    _onSaveMenuSave(evt);
}