diff --git a/CHANGES.md b/CHANGES.md index 40e7e11f..73400588 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,6 +10,7 @@ Features: * Add Button to Center the loaded image in the Image Slice Window. * Add "Created At", "Last Modified At" columns to card list. * Add filter box to Game and Stylesheet selection. + * Add Clear button to console panel. ------------------------------------------------------------------------------ HEAD: new items added as changes are made diff --git a/data/en.mse-locale/locale b/data/en.mse-locale/locale index 20227ec2..cf3f8a41 100644 --- a/data/en.mse-locale/locale +++ b/data/en.mse-locale/locale @@ -80,7 +80,10 @@ menu: stack: &Stacked Bars 3 scatter: S&catter Plot 4 scatter pie: Sc&atter-Pie 5 - + + console: Console + clear console: &Clear Console Ctrl+L + window: &Window new window: &New Window cards tab: &Cards Alt+1 @@ -196,7 +199,10 @@ help: stack: A bar graph with stacked bars scatter: A scatter plot, the size indicates the number of cards scatter pie: A scatter plot where each item is a small pie graph - + + #console: + clear console: Clear the console + #window: new window: Creates another window to edit the same set cards tab: Edit the cards in the set @@ -351,7 +357,9 @@ tool: curve segment: Curve free point: Free smooth point: Smooth - symmetric point: Symmetric + symmetric point: Symmetric + + clear console: Clear Console ############################################################## Toolbar help text tooltip: @@ -426,7 +434,9 @@ tooltip: curve segment: To curve free point: Unlock point smooth point: Make point smooth - symmetric point: Make point symmetric + symmetric point: Make point symmetric + + clear console: Clear Console ############################################################## Labels in the GUI label: @@ -582,7 +592,8 @@ button: add custom pack: Add &Custom Pack... # Console panel - evaluate: &Evaluate + evaluate: &Evaluate + clear: &Clear # Welcome new set: New set diff --git a/resource/tool/clear_console.png b/resource/tool/clear_console.png new file mode 100644 index 00000000..e05eea8e Binary files /dev/null and b/resource/tool/clear_console.png differ diff --git a/resource/win32_res.rc b/resource/win32_res.rc index 2b2ef99b..ba78d16c 100644 --- a/resource/win32_res.rc +++ b/resource/win32_res.rc @@ -61,6 +61,8 @@ tool/graph_stack IMAGE "tool/graph_stack.png" tool/graph_scatter IMAGE "tool/graph_scatter.png" tool/graph_scatter_pie IMAGE "tool/graph_scatter_pie.png" +tool/clear_console IMAGE "tool/clear_console.png" + tool/window_cards IMAGE "tool/window_cards.png" tool/window_set_info IMAGE "tool/window_set_info.png" tool/window_style IMAGE "tool/window_style.png" diff --git a/src/gui/set/console_panel.cpp b/src/gui/set/console_panel.cpp index 566d6983..af9d7c31 100644 --- a/src/gui/set/console_panel.cpp +++ b/src/gui/set/console_panel.cpp @@ -79,6 +79,14 @@ public: } void add_message(MessageType type, String const& text, bool joined_to_previous = false) { add_message(make_intrusive(type,text,joined_to_previous)); + } + + void clear_console() { + messages.clear(); + layout_all(); + selection = messages.size(); + update_scrollbar(); + Refresh(false); } bool have_selection() const { @@ -455,6 +463,7 @@ END_EVENT_TABLE() ConsolePanel::ConsolePanel(Window* parent, int id) : SetWindowPanel(parent, id) + , menuConsole(nullptr) , messages(nullptr) , entry(nullptr) , is_active_window(false) @@ -466,11 +475,13 @@ ConsolePanel::ConsolePanel(Window* parent, int id) messages = new MessageCtrl(splitter, ID_MESSAGE_LIST); entry_panel = new wxPanel(splitter, wxID_ANY); entry = new HistoryTextCtrl(entry_panel, wxID_ANY); - wxButton* evaluate = new wxButton(entry_panel, ID_EVALUATE, _BUTTON_("evaluate")); + wxButton* evaluate = new wxButton(entry_panel, ID_EVALUATE, _BUTTON_("evaluate")); + wxButton* clear = new wxButton(entry_panel, ID_CLEAR_CONSOLE, _BUTTON_("clear")); // init sizer for entry_panel wxSizer* se = new wxBoxSizer(wxHORIZONTAL); se->Add(entry, 1, wxEXPAND, 2); - se->Add(evaluate, 0, wxEXPAND | wxLEFT, 2); + se->Add(evaluate, 0, wxEXPAND | wxLEFT, 2); + se->Add(clear, 0, wxEXPAND | wxLEFT, 2); entry_panel->SetSizer(se); // init splitter splitter->SetMinimumPaneSize(40); @@ -480,7 +491,15 @@ ConsolePanel::ConsolePanel(Window* parent, int id) wxSizer* s = new wxBoxSizer(wxVERTICAL); s->Add(splitter, 1, wxEXPAND); s->SetSizeHints(this); - SetSizer(s); + SetSizer(s); + + // init menus + menuConsole = new wxMenu(); + add_menu_item_tr(menuConsole, ID_CLEAR_CONSOLE, "clear_console", "clear console"); +} + +ConsolePanel::~ConsolePanel() { + delete menuConsole; } void ConsolePanel::onChangeSet() { @@ -500,13 +519,20 @@ void ConsolePanel::initUI(wxToolBar* tb, wxMenuBar* mb) { // stop blinker is_active_window = true; - stop_blinker(); + stop_blinker(); + + add_tool_tr(tb, ID_CLEAR_CONSOLE, "clear_console", "clear console"); + tb->Realize(); + + mb->Insert(2, menuConsole, _MENU_("console")); } void ConsolePanel::destroyUI(wxToolBar* tb, wxMenuBar* mb) { - // Toolbar - // Menus - + // Toolbar + tb->DeleteTool(ID_CLEAR_CONSOLE); + // Menus + mb->Remove(2); + // we are no longer active, allow blinker is_active_window = false; } @@ -524,6 +550,9 @@ void ConsolePanel::onCommand(int id) { if (id == ID_EVALUATE) { exec(entry->get_command_and_clear()); } + else if (id == ID_CLEAR_CONSOLE) { + messages->clear_console(); + } } void ConsolePanel::onIdle(wxIdleEvent&) { diff --git a/src/gui/set/console_panel.hpp b/src/gui/set/console_panel.hpp index 4289d0ae..be6322e1 100644 --- a/src/gui/set/console_panel.hpp +++ b/src/gui/set/console_panel.hpp @@ -19,7 +19,8 @@ class HistoryTextCtrl; class ConsolePanel : public SetWindowPanel { public: - ConsolePanel(Window* parent, int id); + ConsolePanel(Window* parent, int id); + ~ConsolePanel(); // --------------------------------------------------- : UI @@ -48,7 +49,9 @@ private: wxSplitterWindow* splitter; MessageCtrl* messages; wxPanel* entry_panel; - HistoryTextCtrl* entry; + HistoryTextCtrl* entry; + + wxMenu* menuConsole; void get_pending_errors(); void exec(String const& code); diff --git a/src/util/window_id.hpp b/src/util/window_id.hpp index 96b5cfcf..2ec455f4 100644 --- a/src/util/window_id.hpp +++ b/src/util/window_id.hpp @@ -208,7 +208,8 @@ enum ChildMenuID { ID_CUSTOM_PACK, // Console panel - ID_EVALUATE, + ID_EVALUATE, + ID_CLEAR_CONSOLE, // SymbolFont (Format menu) ID_INSERT_SYMBOL_MENU_MIN = 9001,