Tyro/src/widgets/MainFrame.cpp

155 lines
4.1 KiB
C++
Raw Normal View History

/**
* Main Application Frame
*/
2015-03-30 14:50:10 -04:00
#ifdef WX_PRECOMP
#include "wx_pch.h"
#endif
#include "MainFrame.h"
2015-03-30 14:50:10 -04:00
2015-04-02 11:01:21 -04:00
BEGIN_EVENT_TABLE(MainFrame, wxFrame)
EVT_CLOSE(MainFrame::OnClose)
EVT_MENU(wxID_NEW, MainFrame::OnMenuFileNew)
2015-04-06 15:42:05 -04:00
EVT_MENU(wxID_OPEN, EditPane::OnMenuFileOpen)
EVT_MENU(wxID_SAVE, EditPane::OnMenuFileSave)
2015-04-02 11:01:21 -04:00
EVT_MENU(wxID_EXIT, MainFrame::OnQuit)
EVT_MENU(wxID_ABOUT, MainFrame::OnAbout)
2015-03-30 14:50:10 -04:00
END_EVENT_TABLE()
2015-04-02 11:01:21 -04:00
MainFrame::MainFrame(wxFrame *frame, const wxString& title)
: wxFrame(frame, -1, title)
{
2015-04-01 15:15:29 -04:00
this->SetupMenu();
// create a status bar with some information about the used wxWidgets version
2015-04-02 14:20:35 -04:00
this->SetupStatusBar();
2015-04-01 15:15:29 -04:00
2015-04-02 14:20:35 -04:00
// create the main toolbar
this->SetupToolbar();
// Set up control layout
wxBoxSizer *base_sizer = new wxBoxSizer(wxVERTICAL);
2015-04-06 15:57:17 -04:00
notebook = this->CreateTabContainer();
base_sizer->Add(notebook, 1, wxEXPAND | wxALL, 5);
base_sizer->SetContainingWindow(this);
base_sizer->SetMinSize(800,600);
SetSizerAndFit(base_sizer);
}
2015-04-02 11:01:21 -04:00
MainFrame::~MainFrame() {}
2015-04-02 11:01:21 -04:00
void MainFrame::SetupStatusBar()
2015-04-01 15:15:29 -04:00
{
2015-04-02 11:01:21 -04:00
CreateStatusBar(2);
2015-04-01 15:15:29 -04:00
SetStatusText(_(""), 0);
SetStatusText(_(""), 1);
}
2015-04-02 11:01:21 -04:00
void MainFrame::SetupToolbar()
2015-04-01 15:15:29 -04:00
{
2015-04-02 14:20:35 -04:00
// Icon files
2015-04-06 15:57:17 -04:00
#ifndef __WXGTK__
#include "../../resources/xpm/48/file-empty.xpm"
#include "../../resources/xpm/48/folder.xpm"
#include "../../resources/xpm/48/floppy.xpm"
#include "../../resources/xpm/48/wrench-screwdriver.xpm"
2015-04-06 15:57:17 -04:00
#endif // __WXGTK__
#ifdef __WXGTK__
#include "../../resources/xpm/24/file-empty.xpm"
#include "../../resources/xpm/24/folder.xpm"
#include "../../resources/xpm/24/floppy.xpm"
2015-04-07 20:19:05 -04:00
#include "../../resources/xpm/24/wrench-screwdriver.xpm"
2015-04-06 15:57:17 -04:00
#endif
2015-04-02 11:01:21 -04:00
2015-04-02 14:20:35 -04:00
CreateToolBar(wxNO_BORDER | wxTB_FLAT | wxTB_HORIZONTAL);
wxToolBar *toolBar = GetToolBar();
wxBitmap bitmaps[4];
bitmaps[0] = wxBitmap(file_empty);
bitmaps[1] = wxBitmap(folder);
bitmaps[2] = wxBitmap(floppy);
bitmaps[3] = wxBitmap(wrench_screwdriver);
toolBar->AddTool(wxID_NEW, "New", bitmaps[0], "New file");
toolBar->AddTool(wxID_OPEN, "Open", bitmaps[1], "Open file");
toolBar->AddTool(wxID_SAVE, "Save", bitmaps[2], "Save file");
toolBar->AddSeparator();
toolBar->AddTool(wxID_ANY, "Settings", bitmaps[3], "Change Settings");
toolBar->Realize();
2015-04-01 15:15:29 -04:00
}
2015-04-02 11:01:21 -04:00
void MainFrame::SetupMenu()
2015-03-30 14:50:10 -04:00
{
// create a menu bar
wxMenuBar* mbar = new wxMenuBar();
// Create Base menus
wxMenu* fileMenu = new wxMenu(_T(""));
wxMenu* editMenu = new wxMenu(_T(""));
wxMenu* helpMenu = new wxMenu(_T(""));
// Add items to top-level menus
fileMenu->Append(wxID_NEW, _T("&New\tCtrl+N"), _T("Create a new file"));
fileMenu->AppendSeparator();
fileMenu->Append(wxID_OPEN, _T("&Open\tCtrl+O"), _T("Opens an existing file"));
fileMenu->Append(wxID_CLOSE, _T("&Close\tCtrl+W"), _T("Close the current document"));
fileMenu->Append(wxID_SAVE, _T("&Save\tCtrl+S"), _T("Save the content"));
fileMenu->AppendSeparator();
fileMenu->Append(wxID_EXIT, _T("&Quit\tCtrl+Q"), _T("Quit the application"));
editMenu->Append(wxID_UNDO, _T("&Undo\tCtrl+Z"), _T("Undo last action"));
editMenu->Append(wxID_REDO, _T("&Redo\tCtrl+Y"), _T("Redo last action"));
editMenu->AppendSeparator();
editMenu->Append(wxID_CUT, _T("Cu&t\tCtrl+X"), _T("Cut selected text"));
editMenu->Append(wxID_COPY, _T("&Copy\tCtrl+C"), _T("Copy selected text"));
editMenu->Append(wxID_PASTE, _T("&Paste\tCtrl+V"), _T("Paste contents of clipboard"));
helpMenu->Append(wxID_ABOUT, _T("&About...\tF1"), _T("Show info about this application"));
// Add the menus to the menubar
2015-04-06 15:42:05 -04:00
mbar->Append(fileMenu, _T("&File"));
mbar->Append(editMenu, _T("&Edit"));
mbar->Append(helpMenu, _T("&Help"));
2015-03-30 14:50:10 -04:00
2015-03-30 16:01:24 -04:00
#ifdef __WXMAC__
wxMenuBar::MacSetCommonMenuBar(mbar);
2015-03-30 16:01:24 -04:00
#endif // __WXMAC__
SetMenuBar(mbar);
2015-03-30 14:50:10 -04:00
}
TabContainer *MainFrame::CreateTabContainer()
2015-03-31 10:19:34 -04:00
{
TabContainer *notebook = new TabContainer(this);
2015-04-06 15:57:17 -04:00
return notebook;
2015-03-31 10:19:34 -04:00
}
2015-04-02 11:01:21 -04:00
void MainFrame::OnClose(wxCloseEvent &WXUNUSED(event))
2015-03-30 14:50:10 -04:00
{
Destroy();
}
void MainFrame::OnMenuFileNew(wxCommandEvent &WXUNUSED(event))
{
notebook->AddTab();
}
2015-04-02 11:01:21 -04:00
void MainFrame::OnQuit(wxCommandEvent &WXUNUSED(event))
2015-03-30 14:50:10 -04:00
{
Destroy();
2015-03-30 14:50:10 -04:00
}
2015-04-02 11:01:21 -04:00
void MainFrame::OnAbout(wxCommandEvent &WXUNUSED(event))
2015-03-30 14:50:10 -04:00
{
wxMessageBox(_T("Tyro, a text editor for all development\n Copyright 2015, Timothy J. Warren"), wxT("About Tyro"), wxOK| wxICON_INFORMATION, this);
2015-03-30 14:50:10 -04:00
}