From e43ccaf9a3e8607a69b83804d2e9652bba6b6d1f Mon Sep 17 00:00:00 2001 From: Timothy Warren Date: Thu, 13 Jun 2019 12:14:48 -0400 Subject: [PATCH] Reduce use of globals, tweak about dialog --- src/TyroApp.cpp | 9 +++++++-- src/widgets/FilePane.cpp | 7 ++++--- src/widgets/MainFrame.cpp | 31 ++++++++++++++++++++----------- src/widgets/TabContainer.cpp | 15 +++++---------- src/widgets/TabContainer.h | 1 + 5 files changed, 37 insertions(+), 26 deletions(-) diff --git a/src/TyroApp.cpp b/src/TyroApp.cpp index f0a5a02..3a699f9 100644 --- a/src/TyroApp.cpp +++ b/src/TyroApp.cpp @@ -138,7 +138,12 @@ private: Glob_lexer_map["properties"] = wxSTC_LEX_PROPERTIES; Glob_lexer_map["python"] = wxSTC_LEX_PYTHON; Glob_lexer_map["ruby"] = wxSTC_LEX_RUBY; + #ifdef wxSTC_LEX_RUST + Glob_lexer_map["rust"] = wxSTC_LEX_RUST; + #endif + #ifndef wxSTC_LEX_RUST Glob_lexer_map["rust"] = wxSTC_LEX_CPP; + #endif Glob_lexer_map["scheme"] = wxSTC_LEX_LISP; Glob_lexer_map["shell"] = wxSTC_LEX_BASH; Glob_lexer_map["sql"] = wxSTC_LEX_SQL; @@ -155,8 +160,8 @@ private: wxSystemOptions::SetOption("osx.openfiledialog.always-show-types", 1); #endif - #ifdef __WXMSW_ - wxSystemOptions::SetOption("msw.remap", 0);_ + #ifdef __WXMSW__ + wxSystemOptions::SetOption("msw.remap", 0); wxSystemOptions::SetOption("msw.display.directdraw", 1); #endif } diff --git a/src/widgets/FilePane.cpp b/src/widgets/FilePane.cpp index 78fb97d..915c679 100644 --- a/src/widgets/FilePane.cpp +++ b/src/widgets/FilePane.cpp @@ -3,8 +3,6 @@ #include "src/widgets/FilePane.h" #include "src/widgets/MainFrame.h" -extern MainFrame *Glob_main_frame; - auto DIR_SEP = wxFileName::GetPathSeparator(); enum @@ -253,7 +251,10 @@ void FilePane::OpenFileInEditor(wxTreeListEvent& event) wxString path_arr [1] = { path }; auto files = wxArrayString(1, *path_arr); - Glob_main_frame->OpenFiles(files); + + // Use the parent accessor to get the main frame + auto parent = (MainFrame *)this->GetParent(); + parent->OpenFiles(files); } /** diff --git a/src/widgets/MainFrame.cpp b/src/widgets/MainFrame.cpp index 3329018..c30079f 100644 --- a/src/widgets/MainFrame.cpp +++ b/src/widgets/MainFrame.cpp @@ -12,7 +12,7 @@ static FilePane *filePane = nullptr; extern PrefPane *Glob_pref_pane; -// Frame icon +// Frame icon (const static char *tyro_icon[]) #include "resources/xpm/tyro.xpm" /** @@ -48,9 +48,6 @@ MainFrame::MainFrame(wxFrame *frame, const wxString &title, const wxSize &size) MainFrame::~MainFrame() { wxLogDebug("Main Frame Destructor Called."); - //delete notebook; - //delete toolBar; - //delete filePane; wxDELETE(this->findDlg); wxDELETE(this->findData); @@ -311,6 +308,7 @@ void MainFrame::OnOpenFolder(wxCommandEvent &event) */ void MainFrame::OpenFiles(wxArrayString filelist) { + // @TODO skip duplicated files int listcount = filelist.GetCount(); if (listcount < 1) return; @@ -447,7 +445,7 @@ void MainFrame::OnAbout(wxCommandEvent &WXUNUSED(event)) info.SetName(APP_NAME); info.SetVersion(APP_VERSION, APP_VERSION_MORE); - info.AddDeveloper("Tim Warren"); + info.AddDeveloper("Timothy J. Warren"); info.AddArtist("Brian Smith: Main icon"); #ifndef __WXGTK__ @@ -457,15 +455,15 @@ void MainFrame::OnAbout(wxCommandEvent &WXUNUSED(event)) wxString desc = "Tyro, a text editor for all development\n\n" "System info: \n"; - desc += wxString::Format("\tArchitecture: %s\n", + desc += wxString::Format("%s\n", wxPlatformInfo::GetArchName(plat_info.GetArchitecture())); - desc += wxString::Format("\tOperating System:\n\t\t%s %i.%i\n", + desc += wxString::Format("%s %i.%i\n", wxPlatformInfo::GetOperatingSystemIdName(plat_info.GetOperatingSystemId()), plat_info.GetOSMajorVersion(), plat_info.GetOSMinorVersion()); - desc += wxString::Format("\nwxWidgets version: %s %i.%i.%i\n", + desc += wxString::Format("%s %i.%i.%i\n", plat_info.GetPortIdName(), wxMAJOR_VERSION, wxMINOR_VERSION, @@ -477,10 +475,9 @@ void MainFrame::OnAbout(wxCommandEvent &WXUNUSED(event)) wxString desk = plat_info.GetDesktopEnvironment(); if (desk != "") { - desc += wxString::Format("\tDesktop Environment:%s\n", desk); + desc += wxString::Format("%s\n", desk); } - desc += "\tDistro: "; desc += dist_info.Description; if (dist_info.CodeName != "") @@ -489,6 +486,12 @@ void MainFrame::OnAbout(wxCommandEvent &WXUNUSED(event)) } #endif + if ( ! info.HasIcon()) + { + wxIcon appIcon = wxIcon(tyro_icon); + info.SetIcon(appIcon); + } + info.SetDescription(desc); info.SetCopyright(" (C) 2015-2019"); @@ -704,7 +707,13 @@ void MainFrame::OnLangSelect(wxCommandEvent &event) { auto *selectedMenu = (wxMenu *) event.GetEventObject(); auto *langMenu = Glob_menu_bar->GetMenu(myLANG_MENU); - if (langMenu == nullptr) wxLogDebug("Couldn't get lang menu"); + if (langMenu == nullptr) + { + wxLogDebug("Couldn't get lang menu"); + // Go to the more specific event handlers + event.Skip(true); + return; + } if (selectedMenu == langMenu) { diff --git a/src/widgets/TabContainer.cpp b/src/widgets/TabContainer.cpp index c33b798..75fcbda 100644 --- a/src/widgets/TabContainer.cpp +++ b/src/widgets/TabContainer.cpp @@ -8,11 +8,6 @@ extern TyroMenu *Glob_menu_bar; extern wxStatusBar *Glob_status_bar; -static MainFrame *parentFrame = nullptr; - -static vector editors; -static unsigned long untitled_document_count = 0; - /** * Constructor * @@ -30,8 +25,6 @@ TabContainer::TabContainer( long style ) : wxAuiNotebook(parent, id, pos, size, style) { - parentFrame = (MainFrame *) parent; - this->Bind(wxEVT_AUINOTEBOOK_PAGE_CLOSE, &TabContainer::OnClose, this, wxID_ANY); this->Bind(wxEVT_AUINOTEBOOK_PAGE_CLOSED, &TabContainer::OnClosed, this, wxID_ANY); this->Bind(wxEVT_AUINOTEBOOK_TAB_RIGHT_DOWN, &TabContainer::OnTabContextMenu, this, wxID_ANY); @@ -63,11 +56,11 @@ EditPane* TabContainer::NewEditor() */ void TabContainer::AddTab() { - untitled_document_count++; + this->untitled_document_count++; wxString caption; - caption.Printf("Untitled %lu", untitled_document_count); + caption.Printf("Untitled %lu", this->untitled_document_count); this->AddPage(this->NewEditor(), caption, true); } @@ -176,6 +169,7 @@ void TabContainer::OnClosed(wxAuiNotebookEvent &WXUNUSED(event)) { if (this->GetPageCount() == 0) { + auto parentFrame = (MainFrame *)this->GetParent(); parentFrame->EnableEditControls(false); Glob_status_bar->SetStatusText("", STATUS_CURSOR_LOCATION); Glob_status_bar->SetStatusText("", STATUS_CURRENT_LANGUAGE); @@ -206,6 +200,7 @@ void TabContainer::OnTabContextMenu(wxAuiNotebookEvent &WXUNUSED(event)) void TabContainer::OnCloseAll(wxCommandEvent &WXUNUSED(event)) { this->DeleteAllPages(); + auto parentFrame = (MainFrame *)this->GetParent(); parentFrame->EnableEditControls(false); } @@ -263,4 +258,4 @@ void TabContainer::OnTabSwitch(wxAuiNotebookEvent &event) // Update status bar Glob_status_bar->SetStatusText(editor->GetCurrentLang(), STATUS_CURRENT_LANGUAGE); -} \ No newline at end of file +} diff --git a/src/widgets/TabContainer.h b/src/widgets/TabContainer.h index e02aae0..ff4b122 100644 --- a/src/widgets/TabContainer.h +++ b/src/widgets/TabContainer.h @@ -28,6 +28,7 @@ public: void OnCloseAll(wxCommandEvent &event); void OnCloseAllButThis(wxCommandEvent &event); private: + unsigned long untitled_document_count = 0; EditPane *NewEditor(); void OnTabSwitch(wxAuiNotebookEvent &event); void OnClose(wxAuiNotebookEvent &event);