Add basic preferences dialog, still needs to have functionality, see #6
This commit is contained in:
parent
0f09ced684
commit
f9509f8a13
3
Makefile
3
Makefile
@ -29,9 +29,10 @@ endif
|
|||||||
|
|
||||||
# Platform compiler flags
|
# Platform compiler flags
|
||||||
ifeq ($(OS),Darwin)
|
ifeq ($(OS),Darwin)
|
||||||
CXX = $(shell wx-config --cxx)
|
CXX = $(shell wx-config --cxx) -no-cpp-precomp -Xpreprocessor -Wno-missing-field-initializers
|
||||||
LDLIBS += /usr/local/lib/libssh2.a
|
LDLIBS += /usr/local/lib/libssh2.a
|
||||||
else
|
else
|
||||||
|
CXX += -Wno-missing-field-initializers
|
||||||
LDLIBS += -lssh2
|
LDLIBS += -lssh2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ wxConfigBase *Glob_config;
|
|||||||
TyroMenu *Glob_menu_bar;
|
TyroMenu *Glob_menu_bar;
|
||||||
MainFrame *Glob_main_frame;
|
MainFrame *Glob_main_frame;
|
||||||
StringConstMap Glob_lexer_map;
|
StringConstMap Glob_lexer_map;
|
||||||
|
PrefPane *Glob_pref_pane;
|
||||||
|
|
||||||
// Static app loading variables
|
// Static app loading variables
|
||||||
static wxArrayString files;
|
static wxArrayString files;
|
||||||
@ -41,6 +42,7 @@ public:
|
|||||||
Glob_config = wxConfigBase::Get();
|
Glob_config = wxConfigBase::Get();
|
||||||
Glob_menu_bar = new TyroMenu();
|
Glob_menu_bar = new TyroMenu();
|
||||||
Glob_main_frame = new MainFrame(0L, APP_NAME);
|
Glob_main_frame = new MainFrame(0L, APP_NAME);
|
||||||
|
Glob_pref_pane = new PrefPane();
|
||||||
|
|
||||||
// Setup Main Window
|
// Setup Main Window
|
||||||
Glob_main_frame->Layout();
|
Glob_main_frame->Layout();
|
||||||
|
@ -45,11 +45,17 @@ enum myMenuIds {
|
|||||||
|
|
||||||
// General Menu ids
|
// General Menu ids
|
||||||
enum myMenuItemIds {
|
enum myMenuItemIds {
|
||||||
|
// Menu options for immediate file
|
||||||
myID_VIEW_WHITESPACE = wxID_HIGHEST + 1,
|
myID_VIEW_WHITESPACE = wxID_HIGHEST + 1,
|
||||||
myID_VIEW_LINE_ENDINGS,
|
myID_VIEW_LINE_ENDINGS,
|
||||||
myID_CLOSE_ALL,
|
myID_CLOSE_ALL,
|
||||||
myID_CLOSE_ALL_BUT_THIS,
|
myID_CLOSE_ALL_BUT_THIS,
|
||||||
myID_LINE_WRAP
|
myID_LINE_WRAP,
|
||||||
|
|
||||||
|
// Preferences, to apply to all files
|
||||||
|
myID_PREFS_LINE_NUMBERS,
|
||||||
|
myID_PREFS_CODE_FOLDING,
|
||||||
|
myID_PREFS_IDENT_GUIDES
|
||||||
};
|
};
|
||||||
|
|
||||||
const wxString TYRO_FILE_OPEN_WILDCARDS =
|
const wxString TYRO_FILE_OPEN_WILDCARDS =
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
// Nasty globals
|
// Nasty globals
|
||||||
extern TyroMenu *Glob_menu_bar;
|
extern TyroMenu *Glob_menu_bar;
|
||||||
|
extern PrefPane *Glob_pref_pane;
|
||||||
static TabContainer *notebook;
|
static TabContainer *notebook;
|
||||||
|
|
||||||
// Frame icon
|
// Frame icon
|
||||||
@ -16,7 +17,7 @@ static TabContainer *notebook;
|
|||||||
MainFrame::MainFrame(wxFrame *frame, const wxString &title)
|
MainFrame::MainFrame(wxFrame *frame, const wxString &title)
|
||||||
: wxFrame(frame, -1, title)
|
: wxFrame(frame, -1, title)
|
||||||
{
|
{
|
||||||
findReplaceData = new wxFindReplaceData(wxFR_DOWN);
|
this->findReplaceData = new wxFindReplaceData(wxFR_DOWN);
|
||||||
|
|
||||||
// Create the tab container
|
// Create the tab container
|
||||||
notebook = new TabContainer(this);
|
notebook = new TabContainer(this);
|
||||||
@ -41,7 +42,7 @@ MainFrame::MainFrame(wxFrame *frame, const wxString &title)
|
|||||||
MainFrame::~MainFrame()
|
MainFrame::~MainFrame()
|
||||||
{
|
{
|
||||||
wxLogDebug("Main Frame Destructor Called.");
|
wxLogDebug("Main Frame Destructor Called.");
|
||||||
//delete notebook;
|
delete notebook;
|
||||||
delete toolBar;
|
delete toolBar;
|
||||||
manager->UnInit();
|
manager->UnInit();
|
||||||
}
|
}
|
||||||
@ -156,6 +157,7 @@ void MainFrame::BindEvents()
|
|||||||
Bind(wxEVT_MENU, &MainFrame::OnEditRedo, this, wxID_REDO);
|
Bind(wxEVT_MENU, &MainFrame::OnEditRedo, this, wxID_REDO);
|
||||||
Bind(wxEVT_MENU, &MainFrame::OnEditFind, this, wxID_FIND);
|
Bind(wxEVT_MENU, &MainFrame::OnEditFind, this, wxID_FIND);
|
||||||
Bind(wxEVT_MENU, &MainFrame::OnEditReplace, this, wxID_REPLACE);
|
Bind(wxEVT_MENU, &MainFrame::OnEditReplace, this, wxID_REPLACE);
|
||||||
|
Bind(wxEVT_MENU, &MainFrame::OnEditPreferences, this, wxID_PREFERENCES);
|
||||||
|
|
||||||
// View Menu Events
|
// View Menu Events
|
||||||
Bind(wxEVT_MENU, &MainFrame::OnToggleWhitespace, this, myID_VIEW_WHITESPACE);
|
Bind(wxEVT_MENU, &MainFrame::OnToggleWhitespace, this, myID_VIEW_WHITESPACE);
|
||||||
@ -461,7 +463,8 @@ void MainFrame::OnEditFind(wxCommandEvent &WXUNUSED(event))
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
findDlg = new wxFindReplaceDialog(this, findReplaceData, "Find");
|
this->findReplaceData = new wxFindReplaceData(wxFR_DOWN);
|
||||||
|
findDlg = new wxFindReplaceDialog(this, this->findReplaceData, "Find");
|
||||||
findDlg->Show(true);
|
findDlg->Show(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -479,7 +482,8 @@ void MainFrame::OnEditReplace(wxCommandEvent &WXUNUSED(event))
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
replaceDlg = new wxFindReplaceDialog(this, findReplaceData,
|
this->findReplaceData = new wxFindReplaceData(wxFR_DOWN);
|
||||||
|
replaceDlg = new wxFindReplaceDialog(this, this->findReplaceData,
|
||||||
"Find and Replace", wxFR_REPLACEDIALOG);
|
"Find and Replace", wxFR_REPLACEDIALOG);
|
||||||
|
|
||||||
replaceDlg->Show(true);
|
replaceDlg->Show(true);
|
||||||
@ -515,8 +519,12 @@ void MainFrame::OnFindDialog(wxFindDialogEvent &event)
|
|||||||
{
|
{
|
||||||
wxLogDebug("wxEVT_FIND");
|
wxLogDebug("wxEVT_FIND");
|
||||||
|
|
||||||
|
editor->SetAnchor(0);
|
||||||
editor->SearchAnchor();
|
editor->SearchAnchor();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type == wxEVT_FIND_NEXT || type == wxEVT_FIND)
|
||||||
|
{
|
||||||
if ((fr_flags & wxFR_DOWN) != 0)
|
if ((fr_flags & wxFR_DOWN) != 0)
|
||||||
{
|
{
|
||||||
new_pos = editor->SearchNext(stc_flags, event.GetFindString());
|
new_pos = editor->SearchNext(stc_flags, event.GetFindString());
|
||||||
@ -526,34 +534,20 @@ void MainFrame::OnFindDialog(wxFindDialogEvent &event)
|
|||||||
new_pos = editor->SearchPrev(stc_flags, event.GetFindString());
|
new_pos = editor->SearchPrev(stc_flags, event.GetFindString());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (new_pos >= 0)
|
if (new_pos > 0)
|
||||||
{
|
{
|
||||||
new_line = editor->LineFromPosition(new_pos);
|
new_line = editor->LineFromPosition(new_pos);
|
||||||
editor->ScrollToLine(new_line);
|
editor->ScrollToLine(new_line);
|
||||||
}
|
//editor->SetAnchor(new_pos);
|
||||||
}
|
editor->SearchAnchor();
|
||||||
else if (type == wxEVT_FIND_NEXT)
|
|
||||||
{
|
|
||||||
wxLogDebug("wxEVT_FIND_NEXT");
|
|
||||||
|
|
||||||
if ((fr_flags & wxFR_DOWN) != 0)
|
|
||||||
{
|
|
||||||
new_pos = editor->SearchNext(stc_flags, event.GetFindString());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
new_pos = editor->SearchPrev(stc_flags, event.GetFindString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (new_pos >= 0)
|
return;
|
||||||
{
|
|
||||||
new_line = editor->LineFromPosition(new_pos);
|
|
||||||
editor->ScrollToLine(new_line);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (type == wxEVT_FIND_REPLACE)
|
else if (type == wxEVT_FIND_REPLACE)
|
||||||
{
|
{
|
||||||
wxLogDebug("wxEVT_FIND_REPLACE");
|
wxLogDebug("wxEVT_FIND_REPLACE");
|
||||||
|
editor->ReplaceSelection(event.GetReplaceString());
|
||||||
}
|
}
|
||||||
else if (type == wxEVT_FIND_REPLACE_ALL)
|
else if (type == wxEVT_FIND_REPLACE_ALL)
|
||||||
{
|
{
|
||||||
@ -640,3 +634,8 @@ void MainFrame::OnLangSelect(wxCommandEvent &event)
|
|||||||
event.Skip(true);
|
event.Skip(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainFrame::OnEditPreferences(wxCommandEvent &WXUNUSED(event))
|
||||||
|
{
|
||||||
|
Glob_pref_pane->Show(this);
|
||||||
|
}
|
||||||
|
@ -39,6 +39,7 @@ class MainFrame: public wxFrame
|
|||||||
void OnEditSelectAll(wxCommandEvent &event);
|
void OnEditSelectAll(wxCommandEvent &event);
|
||||||
void OnEditUndo(wxCommandEvent &event);
|
void OnEditUndo(wxCommandEvent &event);
|
||||||
void OnEditRedo(wxCommandEvent &event);
|
void OnEditRedo(wxCommandEvent &event);
|
||||||
|
void OnEditPreferences(wxCommandEvent &event);
|
||||||
|
|
||||||
void OnEditFind(wxCommandEvent &event);
|
void OnEditFind(wxCommandEvent &event);
|
||||||
void OnEditReplace(wxCommandEvent &event);
|
void OnEditReplace(wxCommandEvent &event);
|
||||||
|
96
src/widgets/PrefPane.cpp
Normal file
96
src/widgets/PrefPane.cpp
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
#include "widget.h"
|
||||||
|
|
||||||
|
class GeneralPrefPanePage : public wxPanel {
|
||||||
|
public:
|
||||||
|
GeneralPrefPanePage(wxWindow *parent)
|
||||||
|
: wxPanel(parent)
|
||||||
|
{
|
||||||
|
showLineNumbers = new wxCheckBox(this, myID_PREFS_LINE_NUMBERS, "Show line numbers");
|
||||||
|
showIndentGuides = new wxCheckBox(this, myID_PREFS_IDENT_GUIDES, "Show indent guides");
|
||||||
|
showCodeFolding = new wxCheckBox(this, myID_PREFS_CODE_FOLDING, "Show code folding");
|
||||||
|
|
||||||
|
wxSizer *sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
|
sizer->Add(showLineNumbers, wxSizerFlags().Border());
|
||||||
|
sizer->Add(showIndentGuides, wxSizerFlags().Border());
|
||||||
|
sizer->Add(showCodeFolding, wxSizerFlags().Border());
|
||||||
|
|
||||||
|
this->SetSizerAndFit(sizer);
|
||||||
|
|
||||||
|
// Change settings on selection, rather than on apply button
|
||||||
|
// On supported platforms
|
||||||
|
if (wxPreferencesEditor::ShouldApplyChangesImmediately())
|
||||||
|
{
|
||||||
|
// @TODO add event handlers
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply current settings to the pref window
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
virtual bool TransferDataToWindow()
|
||||||
|
{
|
||||||
|
showLineNumbers->SetValue(true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called on platforms with modal preferences dialog to save
|
||||||
|
* and apply the changes
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
virtual bool TransferDataFromWindow()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
~GeneralPrefPanePage()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
wxCheckBox *showLineNumbers;
|
||||||
|
wxCheckBox *showIndentGuides;
|
||||||
|
wxCheckBox *showCodeFolding;
|
||||||
|
};
|
||||||
|
|
||||||
|
class GeneralPrefPane: public wxStockPreferencesPage {
|
||||||
|
public:
|
||||||
|
GeneralPrefPane() : wxStockPreferencesPage(Kind_General) {}
|
||||||
|
virtual wxWindow *CreateWindow(wxWindow *parent)
|
||||||
|
{
|
||||||
|
return new GeneralPrefPanePage(parent);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
// ! Implementation of PrefPane Class
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
PrefPane::PrefPane()
|
||||||
|
{
|
||||||
|
this->pref_window = new wxPreferencesEditor();
|
||||||
|
this->setupGeneral();
|
||||||
|
}
|
||||||
|
|
||||||
|
PrefPane::~PrefPane()
|
||||||
|
{
|
||||||
|
delete this->pref_window;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrefPane::Show(wxWindow *parent)
|
||||||
|
{
|
||||||
|
this->pref_window->Show(parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrefPane::setupGeneral()
|
||||||
|
{
|
||||||
|
//this->pref_window.reset(new wxPreferencesEditor);
|
||||||
|
this->pref_window->AddPage(new GeneralPrefPane());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
21
src/widgets/PrefPane.h
Normal file
21
src/widgets/PrefPane.h
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/**
|
||||||
|
* Preference Panes
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef TYRO_PREF_PANE_H
|
||||||
|
#define TYRO_PREF_PANE_H
|
||||||
|
|
||||||
|
class PrefPane {
|
||||||
|
public:
|
||||||
|
PrefPane();
|
||||||
|
~PrefPane();
|
||||||
|
void Show(wxWindow *parent);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
wxPreferencesEditor *pref_window;
|
||||||
|
private:
|
||||||
|
void setupGeneral();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* TYRO_PREF_PANE_H */
|
||||||
|
|
@ -61,11 +61,11 @@ void TyroMenu::SetupMainMenus()
|
|||||||
editMenu->Append(wxID_COPY, "&Copy\tCtrl+C", "Copy selected text");
|
editMenu->Append(wxID_COPY, "&Copy\tCtrl+C", "Copy selected text");
|
||||||
editMenu->Append(wxID_PASTE, "&Paste\tCtrl+V", "Paste contents of clipboard");
|
editMenu->Append(wxID_PASTE, "&Paste\tCtrl+V", "Paste contents of clipboard");
|
||||||
//editMenu->Append(wxID_DELETE, "&Delete\tDel");
|
//editMenu->Append(wxID_DELETE, "&Delete\tDel");
|
||||||
editMenu->AppendSeparator();
|
//editMenu->AppendSeparator();
|
||||||
//editMenu->Append(wxID_FIND, "&Find\tCtrl+F");
|
//editMenu->Append(wxID_FIND, "&Find\tCtrl+F");
|
||||||
//editMenu->Append(wxID_REPLACE, "&Replace\tCtrl+R");
|
//editMenu->Append(wxID_REPLACE, "&Replace\tCtrl+R");
|
||||||
//editMenu->AppendSeparator();
|
editMenu->AppendSeparator();
|
||||||
//editMenu->Append(wxID_PREFERENCES, "&Preferences\tCtrl+P");
|
editMenu->Append(wxID_PREFERENCES, "&Preferences\tCtrl+P");
|
||||||
//editMenu->AppendSeparator();
|
//editMenu->AppendSeparator();
|
||||||
editMenu->Append(wxID_SELECTALL, "Select All\tCtrl+A", "Select all the text in the current document");
|
editMenu->Append(wxID_SELECTALL, "Select All\tCtrl+A", "Select all the text in the current document");
|
||||||
|
|
||||||
@ -107,8 +107,14 @@ void TyroMenu::EnableEditControls(bool enable)
|
|||||||
this->fileMenu->Enable(wxID_CLOSE, enable);
|
this->fileMenu->Enable(wxID_CLOSE, enable);
|
||||||
this->fileMenu->Enable(myID_CLOSE_ALL, enable);
|
this->fileMenu->Enable(myID_CLOSE_ALL, enable);
|
||||||
|
|
||||||
|
this->editMenu->Enable(wxID_UNDO, enable);
|
||||||
|
this->editMenu->Enable(wxID_REDO, enable);
|
||||||
|
this->editMenu->Enable(wxID_CUT, enable);
|
||||||
|
this->editMenu->Enable(wxID_COPY, enable);
|
||||||
|
this->editMenu->Enable(wxID_PASTE, enable);
|
||||||
|
this->editMenu->Enable(wxID_SELECTALL, enable);
|
||||||
|
|
||||||
// Enable/disable top level menus
|
// Enable/disable top level menus
|
||||||
this->EnableEntireMenu(myEDIT_MENU, this->editMenu, enable);
|
|
||||||
this->EnableEntireMenu(myVIEW_MENU, this->viewMenu, enable);
|
this->EnableEntireMenu(myVIEW_MENU, this->viewMenu, enable);
|
||||||
this->EnableEntireMenu(myLANG_MENU, this->langMenu, enable);
|
this->EnableEntireMenu(myLANG_MENU, this->langMenu, enable);
|
||||||
}
|
}
|
||||||
|
@ -12,12 +12,14 @@
|
|||||||
#include <wx/fdrepdlg.h>
|
#include <wx/fdrepdlg.h>
|
||||||
#include <wx/aui/aui.h>
|
#include <wx/aui/aui.h>
|
||||||
#include <wx/stc/stc.h>
|
#include <wx/stc/stc.h>
|
||||||
|
#include <wx/preferences.h>
|
||||||
|
|
||||||
// Tyro includes
|
// Tyro includes
|
||||||
#include "TyroMenu.h"
|
#include "TyroMenu.h"
|
||||||
#include "EditPane.h"
|
#include "EditPane.h"
|
||||||
#include "TabContainer.h"
|
#include "TabContainer.h"
|
||||||
#include "MainFrame.h"
|
#include "MainFrame.h"
|
||||||
|
#include "PrefPane.h"
|
||||||
|
|
||||||
#endif /* TYRO_WIDGET_H */
|
#endif /* TYRO_WIDGET_H */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user