diff --git a/src/base/SFTP.h b/src/base/SFTP.h index 76b2e0a..ecf23cc 100644 --- a/src/base/SFTP.h +++ b/src/base/SFTP.h @@ -1,4 +1,4 @@ -/** +/** * File: SFTP.h * Author: twarren * @@ -7,7 +7,7 @@ #pragma once -#include "../common.h" +#include "src/common.h" // Socket includes #include diff --git a/src/widgets/MainFrame.cpp b/src/widgets/MainFrame.cpp index 8af2e27..548dd0a 100644 --- a/src/widgets/MainFrame.cpp +++ b/src/widgets/MainFrame.cpp @@ -15,7 +15,7 @@ static FilePane *filePane = nullptr; // Frame icon -#include "../../resources/xpm/tyro.xpm" +#include "resources/xpm/tyro.xpm" /** * Constructor @@ -25,42 +25,42 @@ MainFrame::MainFrame(wxFrame *frame, const wxString &title, const wxSize &size) { // Create the tab container notebook = new TabContainer(this); - + filePane = new FilePane(this); - + // Set the frame icon wxIcon app_icon(tyro_icon); this->SetIcon(app_icon); - + // Apply the menu bar to the current frame this->SetMenuBar(Glob_menu_bar); - + // Setup StatusBar Glob_status_bar = new wxStatusBar(this, wxID_ANY); Glob_status_bar->SetFieldsCount(3); - + this->DoLayout(); - + this->BindEvents(); } /** * Time to clean up! - */ -MainFrame::~MainFrame() + */ +MainFrame::~MainFrame() { wxLogDebug("Main Frame Destructor Called."); //delete notebook; //delete toolBar; //delete filePane; - + wxDELETE(this->findDlg); wxDELETE(this->findData); wxDELETE(this->replaceDlg); wxDELETE(this->findReplaceData); - + Glob_status_bar->Destroy(); - + manager->UnInit(); } @@ -68,12 +68,12 @@ MainFrame::~MainFrame() * Layout the widgets on the main frame * * @return void - */ + */ void MainFrame::DoLayout() -{ +{ this->manager = new wxAuiManager(this); this->SetupToolbar(); - + // Setup properties for each AUI pane wxAuiPaneInfo toolBarPaneInfo; toolBarPaneInfo @@ -83,7 +83,7 @@ void MainFrame::DoLayout() .DockFixed(true) .Resizable(true); this->manager->AddPane(toolBar, toolBarPaneInfo); - + wxAuiPaneInfo filePaneInfo; filePaneInfo.Left() .MinSize(225, 550) @@ -91,11 +91,11 @@ void MainFrame::DoLayout() .LeftDockable(true) .Resizable(true); this->manager->AddPane(filePane, filePaneInfo); - + wxAuiPaneInfo notebookPaneInfo; notebookPaneInfo.CenterPane(); this->manager->AddPane(notebook, notebookPaneInfo); - + wxAuiPaneInfo statusPaneInfo; statusPaneInfo.Bottom() .ToolbarPane() @@ -103,7 +103,7 @@ void MainFrame::DoLayout() .DockFixed(true) .Resizable(true); this->manager->AddPane(Glob_status_bar, statusPaneInfo); - + // Update everything this->EnableEditControls(false); } @@ -112,7 +112,7 @@ void MainFrame::DoLayout() * Create the status bar * * @return void - */ + */ void MainFrame::SetupStatusBar() { CreateStatusBar(3); @@ -120,19 +120,19 @@ void MainFrame::SetupStatusBar() /** * Create the main toolbar - * + * * @return void */ void MainFrame::SetupToolbar() { // Icon files #ifndef __WXGTK__ - #include "../../resources/xpm/32/new.xpm" - #include "../../resources/xpm/32/open.xpm" - #include "../../resources/xpm/32/save.xpm" - #include "../../resources/xpm/32/cut.xpm" - #include "../../resources/xpm/32/copy.xpm" - #include "../../resources/xpm/32/paste.xpm" + #include "resources/xpm/32/new.xpm" + #include "resources/xpm/32/open.xpm" + #include "resources/xpm/32/save.xpm" + #include "resources/xpm/32/cut.xpm" + #include "resources/xpm/32/copy.xpm" + #include "resources/xpm/32/paste.xpm" wxBitmap new_file_icon(new_file); wxBitmap open_file_icon(open); @@ -147,8 +147,8 @@ void MainFrame::SetupToolbar() wxBitmap copy_icon = wxArtProvider::GetBitmap(wxART_COPY, wxART_TOOLBAR); wxBitmap cut_icon = wxArtProvider::GetBitmap(wxART_CUT, wxART_TOOLBAR); wxBitmap paste_icon = wxArtProvider::GetBitmap(wxART_PASTE, wxART_TOOLBAR); -#endif - +#endif + toolBar = new wxAuiToolBar(this); toolBar->AddTool(wxID_NEW, "New", new_file_icon, "New file"); @@ -156,18 +156,18 @@ void MainFrame::SetupToolbar() toolBar->AddTool(wxID_SAVE, "Save", save_file_icon, "Save file"); toolBar->AddSeparator(); - + toolBar->AddTool(wxID_COPY, "Copy", copy_icon, "Copy"); toolBar->AddTool(wxID_CUT, "Cut", cut_icon, "Cut"); toolBar->AddTool(wxID_PASTE, "Paste", paste_icon, "Paste"); toolBar->AddStretchSpacer(); - + toolBar->Realize(); } /** * Bind event handlers - * + * * @return void */ void MainFrame::BindEvents() @@ -181,33 +181,33 @@ void MainFrame::BindEvents() this->Bind(wxEVT_MENU, &TabContainer::OnCloseAllButThis, notebook, myID_CLOSE_ALL_BUT_THIS); this->Bind(wxEVT_MENU, &TabContainer::OnCloseAll, notebook, myID_CLOSE_ALL); this->Bind(wxEVT_MENU, &MainFrame::OnQuit, this, wxID_EXIT); - + // Edit Menu Events this->Bind(wxEVT_MENU, [=](wxCommandEvent& event) { EditPane *editor = notebook->GetCurrentEditor(); - + switch(event.GetId()) { case wxID_CUT: editor->Cut(); break; - + case wxID_COPY: editor->Copy(); break; - + case wxID_PASTE: if (editor->CanPaste()) editor->Paste(); break; - + case wxID_SELECTALL: editor->SelectAll(); break; - + case wxID_UNDO: if (editor->CanUndo()) editor->Undo(); break; - + case wxID_REDO: if (editor->CanRedo()) editor->Redo(); break; @@ -216,21 +216,21 @@ void MainFrame::BindEvents() Glob_pref_pane->Show(this); break; #endif - + case wxID_FIND: this->OnEditFind(event); break; - + case wxID_REPLACE: this->OnEditReplace(event); break; - + default: event.Skip(true); break; } }); - + // View Menu Events this->Bind(wxEVT_MENU, &MainFrame::OnToggleWhitespace, this, myID_VIEW_WHITESPACE); this->Bind(wxEVT_MENU, &MainFrame::OnToggleLineWrap, this, myID_LINE_WRAP); @@ -245,24 +245,24 @@ void MainFrame::BindEvents() wxLogDebug("wxEVT_FIND_CLOSE"); event.GetDialog()->Hide(); }); - + // Language Selection this->Bind(wxEVT_MENU, &MainFrame::OnLangSelect, this, wxID_ANY); - + // Help Menu Events this->Bind(wxEVT_MENU, &MainFrame::OnAbout, this, wxID_ABOUT); } /** * Create a new document - * + * * @return void - */ + */ void MainFrame::OnNew(wxCommandEvent &WXUNUSED(event)) { this->EnableEditControls(); notebook->AddTab(); - + // Make sure the layout is updated immediately this->manager->Update(); } @@ -271,33 +271,33 @@ void MainFrame::OnNew(wxCommandEvent &WXUNUSED(event)) * Display a file open dialog, and open the selected files * * @return void - */ + */ void MainFrame::OnOpen(wxCommandEvent &WXUNUSED(event)) { wxArrayString filelist; - + wxFileDialog dlg(this, "Open file(s)", wxEmptyString, wxEmptyString, TYRO_FILE_OPEN_WILDCARDS, wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_CHANGE_DIR | wxFD_MULTIPLE); if (dlg.ShowModal() != wxID_OK) return; - + dlg.GetPaths(filelist); - + this->OpenFiles(filelist); } /** * Open tabs containing the files passed - * + * * @param wxArrayString& filelist * @return void */ void MainFrame::OpenFiles(wxArrayString filelist) { int listcount = filelist.GetCount(); - + if (listcount < 1) return; - + // Open a new tab for each file notebook->Freeze(); for (int i = 0; i < listcount; i++) @@ -305,27 +305,27 @@ void MainFrame::OpenFiles(wxArrayString filelist) notebook->AddTab(filelist[i]); } notebook->Thaw(); - + this->EnableEditControls(true); } /** * Close the current tab via the toolbar or menu - * + * * @return void - */ + */ void MainFrame::OnCloseTab(wxCommandEvent &WXUNUSED(event)) { int current_tab = notebook->GetSelection(); notebook->Freeze(); notebook->DeletePage(current_tab); - + if (notebook->GetPageCount() == 0) { this->EnableEditControls(false); } - + notebook->Thaw(); this->manager->Update(); } @@ -352,14 +352,14 @@ void MainFrame::OnCloseAll(wxCommandEvent &WXUNUSED(event)) void MainFrame::OnSave(wxCommandEvent &event) { EditPane *editor = notebook->GetCurrentEditor(); - + // Check if the filename is set for the current file if ( ! editor->fileName.IsOk()) { this->OnSaveAs(event); return; } - + editor->SaveFile(); } @@ -376,9 +376,9 @@ void MainFrame::OnSaveAs(wxCommandEvent &WXUNUSED(event)) if ( ! editor->IsModified()) return; wxFileDialog dlg( - this, - "Save as...", - wxEmptyString, + this, + "Save as...", + wxEmptyString, wxEmptyString, TYRO_FILE_SAVE_WILDCARDS, wxFD_SAVE | wxFD_OVERWRITE_PROMPT @@ -395,7 +395,7 @@ void MainFrame::OnSaveAs(wxCommandEvent &WXUNUSED(event)) wxFileName fileName(filePath); const wxString fullPath = filePath; const wxString caption= fileName.GetFullName(); - + // Update the name of the tab notebook->SetPageToolTip(notebook->GetSelection(), fullPath); notebook->SetPageText(notebook->GetSelection(), caption); @@ -403,16 +403,16 @@ void MainFrame::OnSaveAs(wxCommandEvent &WXUNUSED(event)) // Update the editor highlighting editor->Highlight(filePath); } - + // Update the main view this->manager->Update(); -} +} /** * Close Tyro * * @return void - */ + */ void MainFrame::OnQuit(wxCommandEvent &WXUNUSED(event)) { this->Destroy(); @@ -422,40 +422,40 @@ void MainFrame::OnQuit(wxCommandEvent &WXUNUSED(event)) * Create and show about dialog * * @return void - */ + */ void MainFrame::OnAbout(wxCommandEvent &WXUNUSED(event)) { wxAboutDialogInfo info; wxPlatformInfo plat_info; - + info.SetName(APP_NAME); info.SetVersion(APP_VERSION, APP_VERSION_MORE); - + info.AddDeveloper("Tim Warren"); info.AddArtist("Brian Smith: Main icon"); - + #ifndef __WXGTK__ info.AddArtist("http://dryicons.com: Other icons"); #endif - - wxString desc = "Tyro, a text editor for all development\n\n" + + wxString desc = "Tyro, a text editor for all development\n\n" "System info: \n"; - - desc += wxString::Format("Architecture: %s\n", + + desc += wxString::Format("Architecture: %s\n", wxPlatformInfo::GetArchName(plat_info.GetArchitecture())); - + desc += wxString::Format("Operating System:\n\t%s %i.%i\n", wxPlatformInfo::GetOperatingSystemIdName(plat_info.GetOperatingSystemId()), plat_info.GetOSMajorVersion(), plat_info.GetOSMinorVersion()); - + desc += wxString::Format("wxWidgets version: %s %i.%i.%i\n", plat_info.GetPortIdName(), wxMAJOR_VERSION, wxMINOR_VERSION, wxRELEASE_NUMBER ); - + #ifdef __WXGTK__ wxLinuxDistributionInfo dist_info = wxGetLinuxDistributionInfo(); wxString desk = plat_info.GetDesktopEnvironment(); @@ -463,122 +463,122 @@ void MainFrame::OnAbout(wxCommandEvent &WXUNUSED(event)) { desc += wxString::Format("Desktop Environment:%s\n", desk); } - + desc += "Distro: "; desc += dist_info.Description; - + if (dist_info.CodeName != "") { desc += " (" + dist_info.CodeName + ")\n"; } #endif - + info.SetDescription(desc); - + info.SetCopyright(" (C) 2015"); - + wxAboutBox(info); } /** * Toggle display of invisibles - * + * * @param wxCommandEvent& event * @return void */ void MainFrame::OnToggleWhitespace(wxCommandEvent& event) { EditPane *editor = notebook->GetCurrentEditor(); - int flag = (event.IsChecked()) - ? wxSTC_WS_VISIBLEALWAYS + int flag = (event.IsChecked()) + ? wxSTC_WS_VISIBLEALWAYS : wxSTC_WS_INVISIBLE; - + editor->SetViewWhiteSpace(flag); } /** * Show the find dialog - * + * * @return void - */ -void MainFrame::OnEditFind(wxCommandEvent &WXUNUSED(event)) + */ +void MainFrame::OnEditFind(wxCommandEvent &WXUNUSED(event)) { if (this->findDlg == nullptr) { this->findData = new wxFindReplaceData(wxFR_DOWN); this->findDlg = new wxFindReplaceDialog(this, this->findData, "Find"); } - + this->findDlg->Show(true); } /** * Show the find/replace dialog - * + * * @return void - */ -void MainFrame::OnEditReplace(wxCommandEvent &WXUNUSED(event)) + */ +void MainFrame::OnEditReplace(wxCommandEvent &WXUNUSED(event)) { if (this->replaceDlg == nullptr) { this->findReplaceData = new wxFindReplaceData(wxFR_DOWN); - this->replaceDlg = new wxFindReplaceDialog(this, this->findReplaceData, + this->replaceDlg = new wxFindReplaceDialog(this, this->findReplaceData, "Find and Replace", wxFR_REPLACEDIALOG); } - + this->replaceDlg->Show(true); } /** * Handles events coming from find dialog - * + * * @param wxFindDialogEvent& event - * @return void + * @return void */ void MainFrame::OnFindDialog(wxFindDialogEvent &event) { wxEventType type = event.GetEventType(); EditPane *editor = notebook->GetCurrentEditor(); - + // Parse flags int stc_flags = 0; int fr_flags = event.GetFlags(); - + if (fr_flags & wxFR_WHOLEWORD) stc_flags |= wxSTC_FIND_WHOLEWORD; if (fr_flags & wxFR_MATCHCASE) stc_flags |= wxSTC_FIND_MATCHCASE; - + // Position after search int new_pos = 0; - + // Send find flags to editor control editor->SetSearchFlags(stc_flags); if (type == wxEVT_FIND) { wxLogDebug("wxEVT_FIND"); - + if (editor->GetCurrentPos() < 0 || editor->GetCurrentPos() > editor->GetLastPosition()) { editor->GotoPos(1); } - + editor->SearchAnchor(); } - + if (type == wxEVT_FIND_NEXT || type == wxEVT_FIND) { if (type == wxEVT_FIND_NEXT) { wxLogDebug("wxEVT_FIND_NEXT"); } - + new_pos = ((fr_flags & wxFR_DOWN) != 0) ? editor->SearchNext(stc_flags, event.GetFindString()) : editor->SearchPrev(stc_flags, event.GetFindString()); - + int sel_start = editor->GetSelectionStart(); int sel_end = editor->GetSelectionEnd(); - + if (new_pos > 0) { if ((fr_flags & wxFR_DOWN) != 0) @@ -587,16 +587,16 @@ void MainFrame::OnFindDialog(wxFindDialogEvent &event) } else { - ((sel_start - 1) > 0) + ((sel_start - 1) > 0) ? editor->GotoPos(sel_start - 1) : editor->GotoPos(sel_start); } - + editor->SearchAnchor(); editor->SetSelectionStart(sel_start); editor->SetSelectionEnd(sel_end); } - + return; } else if (type == wxEVT_FIND_REPLACE) @@ -607,47 +607,47 @@ void MainFrame::OnFindDialog(wxFindDialogEvent &event) else if (type == wxEVT_FIND_REPLACE_ALL) { wxLogDebug("wxEVT_FIND_REPLACE_ALL"); - + // Freeze editor drawing until replacement is finished editor->Freeze(); - + editor->GotoPos(0); // Go to the start of the document editor->SearchAnchor(); - + editor->BeginUndoAction(); - + while (editor->SearchNext(stc_flags, event.GetFindString()) != -1) { editor->ReplaceSelection(event.GetReplaceString()); } - + editor->EndUndoAction(); - + editor->ScrollToEnd(); - + editor->Thaw(); } } /** * Toggle line wrap - * + * * @param wxCommandEvent& event * @return void - */ + */ void MainFrame::OnToggleLineWrap(wxCommandEvent &event) { EditPane *editor = notebook->GetCurrentEditor(); int flag = (event.IsChecked()) ? wxSTC_WRAP_WORD : wxSTC_WRAP_NONE; - + editor->SetWrapMode(flag); } /** * Toggle display of line ending characters - * + * * @param wxCommandEvent& event * @return void */ @@ -658,7 +658,7 @@ void MainFrame::OnToggleLineEndings(wxCommandEvent &event) /** * Toggle enable/disable of document-specific controls - * + * * @param bool enable * @return void */ @@ -666,21 +666,21 @@ void MainFrame::EnableEditControls(bool enable) { // Update menu items Glob_menu_bar->EnableEditControls(enable); - + // Toggle toolbar items this->toolBar->EnableTool(wxID_SAVE, enable); this->toolBar->EnableTool(wxID_CLOSE, enable); this->toolBar->EnableTool(wxID_COPY, enable); this->toolBar->EnableTool(wxID_CUT, enable); this->toolBar->EnableTool(wxID_PASTE, enable); - + // Make sure the toolbar is refreshed instantly this->manager->Update(); } /** * Handle selection of highlighting language - * + * * @param wxCommandEvent& event * @return void */ @@ -710,9 +710,9 @@ void MainFrame::OnLangSelect(wxCommandEvent &event) * @return void */ void MainFrame::OnPrefsChanged(wxCommandEvent &WXUNUSED(event)) -{ +{ EditPane *editor; - + notebook->Freeze(); for(size_t i = 0; i < notebook->GetPageCount(); i++) {