Commit 9dc4c95d authored by twanvl's avatar twanvl

added TextCtrl control for things like card.notes and keyword stuff

parent 95949ef8
...@@ -42,8 +42,6 @@ void NativeLookEditor::drawViewer(RotatedDC& dc, ValueViewer& v) { ...@@ -42,8 +42,6 @@ void NativeLookEditor::drawViewer(RotatedDC& dc, ValueViewer& v) {
draw_control_border(this, dc.getDC(), wxRect(s.left - 1, s.top - 1, s.width + 2, s.height + 2)); draw_control_border(this, dc.getDC(), wxRect(s.left - 1, s.top - 1, s.width + 2, s.height + 2));
// draw viewer // draw viewer
v.draw(dc); v.draw(dc);
ValueEditor* e = v.getEditor();
if (e) e->drawSelection(dc);
} }
void NativeLookEditor::resizeViewers() { void NativeLookEditor::resizeViewers() {
...@@ -66,7 +64,7 @@ void NativeLookEditor::resizeViewers() { ...@@ -66,7 +64,7 @@ void NativeLookEditor::resizeViewers() {
} }
void NativeLookEditor::onInit() { void NativeLookEditor::onInit() {
// Give fieldEditors a chance to show/hide controls (scrollbar) when selecting other editors // Give viewers a chance to show/hide controls (scrollbar) when selecting other editors
FOR_EACH_EDITOR { FOR_EACH_EDITOR {
e->onShow(true); e->onShow(true);
} }
......
...@@ -9,9 +9,11 @@ ...@@ -9,9 +9,11 @@
#include <gui/set/cards_panel.hpp> #include <gui/set/cards_panel.hpp>
#include <gui/control/card_list.hpp> #include <gui/control/card_list.hpp>
#include <gui/control/card_editor.hpp> #include <gui/control/card_editor.hpp>
#include <gui/control/text_ctrl.hpp>
#include <gui/icon_menu.hpp> #include <gui/icon_menu.hpp>
#include <gui/util.hpp> #include <gui/util.hpp>
#include <data/set.hpp> #include <data/set.hpp>
#include <data/card.hpp>
#include <data/action/set.hpp> #include <data/action/set.hpp>
#include <data/settings.hpp> #include <data/settings.hpp>
#include <util/window_id.hpp> #include <util/window_id.hpp>
...@@ -23,25 +25,27 @@ CardsPanel::CardsPanel(Window* parent, int id) ...@@ -23,25 +25,27 @@ CardsPanel::CardsPanel(Window* parent, int id)
: SetWindowPanel(parent, id, false) : SetWindowPanel(parent, id, false)
{ {
// init controls // init controls
// Panel* notesP wxPanel* notesP;
wxSplitterWindow* splitter;
editor = new CardEditor(this, ID_EDITOR); editor = new CardEditor(this, ID_EDITOR);
// splitter = new SplitterWindow(&this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0); splitter = new wxSplitterWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0);
// card_list = new EditCardList(splitter, ID_CARD_LIST); // card_list = new EditCardList(splitter, ID_CARD_LIST);
card_list = new CardListBase(this, ID_CARD_LIST); card_list = new CardListBase(splitter, ID_CARD_LIST);
notesP = new Panel(splitter, wxID_ANY);
notes = new TextCtrl(notesP, ID_NOTES);
// init sizer for notes panel
wxSizer* sn = new wxBoxSizer(wxVERTICAL);
sn->Add(new wxStaticText(notesP, wxID_ANY, _("Card notes:")), 0, wxEXPAND, 2);
sn->Add(notes, 1, wxEXPAND | wxTOP, 2);
notesP->SetSizer(sn);
// init splitter // init splitter
// splitter->minimumPaneSize = 14; splitter->SetMinimumPaneSize(14);
// splitter->sashGravity = 1.0; splitter->SetSashGravity(1.0);
// splitter->splitHorizontally(cardList, notesP, -40); splitter->SplitHorizontally(card_list, notesP, -40);
// init sizer // init sizer
/* Sizer* s = new wxBoxSizer(wxHORIZONTAL);
s->Add(editor, 0, wxRIGHT, 2);
s->Add(splitter, 1, wxEXPAND);
s->SetSizeHints(this);
SetSizer(s);
*/
wxSizer* s = new wxBoxSizer(wxHORIZONTAL); wxSizer* s = new wxBoxSizer(wxHORIZONTAL);
s->Add(editor, 0, wxRIGHT, 2); s->Add(editor, 0, wxRIGHT, 2);
s->Add(card_list, 1, wxEXPAND); s->Add(splitter, 1, wxEXPAND);
s->SetSizeHints(this); s->SetSizeHints(this);
SetSizer(s); SetSizer(s);
} }
...@@ -52,6 +56,7 @@ CardsPanel::~CardsPanel() { ...@@ -52,6 +56,7 @@ CardsPanel::~CardsPanel() {
void CardsPanel::onChangeSet() { void CardsPanel::onChangeSet() {
editor->setSet(set); editor->setSet(set);
notes->setSet(set);
card_list->setSet(set); card_list->setSet(set);
/* // resize editor /* // resize editor
Sizer* s = sizer; Sizer* s = sizer;
...@@ -230,4 +235,5 @@ CardP CardsPanel::selectedCard() const { ...@@ -230,4 +235,5 @@ CardP CardsPanel::selectedCard() const {
void CardsPanel::selectCard(const CardP& card) { void CardsPanel::selectCard(const CardP& card) {
card_list->setCard(card); card_list->setCard(card);
editor->setCard(card); editor->setCard(card);
notes->setValue(card ? &card->notes : nullptr);
} }
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
class wxSplitterWindow; class wxSplitterWindow;
class CardListBase; class CardListBase;
class DataEditor; class DataEditor;
class TextCtrl;
// ----------------------------------------------------------------------------- : CardsPanel // ----------------------------------------------------------------------------- : CardsPanel
...@@ -93,7 +94,7 @@ class CardsPanel : public SetWindowPanel { ...@@ -93,7 +94,7 @@ class CardsPanel : public SetWindowPanel {
wxSplitterWindow* splitter; wxSplitterWindow* splitter;
DataEditor* editor; DataEditor* editor;
CardListBase* card_list; CardListBase* card_list;
// DataTextCtrl* notes; TextCtrl* notes;
// --------------------------------------------------- : Menus & tools // --------------------------------------------------- : Menus & tools
wxMenu* cardMenu, formatMenu; wxMenu* cardMenu, formatMenu;
......
...@@ -7,9 +7,25 @@ ...@@ -7,9 +7,25 @@
// ----------------------------------------------------------------------------- : Includes // ----------------------------------------------------------------------------- : Includes
#include <gui/set/keywords_panel.hpp> #include <gui/set/keywords_panel.hpp>
#include <data/keyword.hpp>
#include <wx/listctrl.h>
// ----------------------------------------------------------------------------- : KeywordsList // ----------------------------------------------------------------------------- : KeywordsList
/// A control that lists the keywords in a set or game
class KeywordList : public wxListView {
public:
KeywordList(Window* parent, int id);
/// Set the list of keywords to show
void setData(vector<KeywordP>& dat);
bool canSelectPrevious() const;
bool canSelectNext() const;
void selectPrevious();
void selectNext();
};
// ----------------------------------------------------------------------------- : KeywordsPanel // ----------------------------------------------------------------------------- : KeywordsPanel
KeywordsPanel::KeywordsPanel(Window* parent, int id) KeywordsPanel::KeywordsPanel(Window* parent, int id)
......
...@@ -102,7 +102,8 @@ void ChoiceValueEditor::onLoseFocus() { ...@@ -102,7 +102,8 @@ void ChoiceValueEditor::onLoseFocus() {
drop_down->hide(false); drop_down->hide(false);
} }
void ChoiceValueEditor::drawSelection(RotatedDC& dc) { void ChoiceValueEditor::draw(RotatedDC& dc) {
ChoiceValueViewer::draw(dc);
if (nativeLook()) { if (nativeLook()) {
draw_drop_down_arrow(&editor(), dc.getDC(), style().getRect().grow(1), drop_down->IsShown()); draw_drop_down_arrow(&editor(), dc.getDC(), style().getRect().grow(1), drop_down->IsShown());
} }
......
...@@ -28,7 +28,7 @@ class ChoiceValueEditor : public ChoiceValueViewer, public ValueEditor { ...@@ -28,7 +28,7 @@ class ChoiceValueEditor : public ChoiceValueViewer, public ValueEditor {
virtual void onChar(wxKeyEvent& ev); virtual void onChar(wxKeyEvent& ev);
virtual void onLoseFocus(); virtual void onLoseFocus();
virtual void drawSelection(RotatedDC& dc); virtual void draw(RotatedDC& dc);
virtual void determineSize(); virtual void determineSize();
private: private:
......
...@@ -138,7 +138,8 @@ void ColorValueEditor::onLoseFocus() { ...@@ -138,7 +138,8 @@ void ColorValueEditor::onLoseFocus() {
drop_down->hide(false); drop_down->hide(false);
} }
void ColorValueEditor::drawSelection(RotatedDC& dc) { void ColorValueEditor::draw(RotatedDC& dc) {
ColorValueViewer::draw(dc);
if (nativeLook()) { if (nativeLook()) {
draw_drop_down_arrow(&editor(), dc.getDC(), style().getRect().grow(1), drop_down->IsShown()); draw_drop_down_arrow(&editor(), dc.getDC(), style().getRect().grow(1), drop_down->IsShown());
} }
......
...@@ -27,7 +27,7 @@ class ColorValueEditor : public ColorValueViewer, public ValueEditor { ...@@ -27,7 +27,7 @@ class ColorValueEditor : public ColorValueViewer, public ValueEditor {
virtual void onChar(wxKeyEvent& ev); virtual void onChar(wxKeyEvent& ev);
virtual void onLoseFocus(); virtual void onLoseFocus();
virtual void drawSelection(RotatedDC& dc); virtual void draw(RotatedDC& dc);
virtual void determineSize(); virtual void determineSize();
private: private:
......
...@@ -99,11 +99,6 @@ class ValueEditor { ...@@ -99,11 +99,6 @@ class ValueEditor {
virtual void determineSize() {} virtual void determineSize() {}
/// The editor is shown or hidden /// The editor is shown or hidden
virtual void onShow(bool) {} virtual void onShow(bool) {}
/// Draw selection indicators
/** note: the drawing of the value is done by the viewer, only a selection indicator is drawn here
*/
virtual void drawSelection(RotatedDC& dc) {}
}; };
// ----------------------------------------------------------------------------- : Utility // ----------------------------------------------------------------------------- : Utility
......
...@@ -585,6 +585,12 @@ ...@@ -585,6 +585,12 @@
<File <File
RelativePath=".\gui\control\package_list.hpp"> RelativePath=".\gui\control\package_list.hpp">
</File> </File>
<File
RelativePath=".\gui\control\text_ctrl.cpp">
</File>
<File
RelativePath=".\gui\control\text_ctrl.hpp">
</File>
</Filter> </Filter>
<Filter <Filter
Name="symbol" Name="symbol"
......
...@@ -53,6 +53,12 @@ class IndexMap : private vector<Value> { ...@@ -53,6 +53,12 @@ class IndexMap : private vector<Value> {
init_object(key, (*this)[key->index]); init_object(key, (*this)[key->index]);
} }
} }
/// Change this map by adding an additional key and value
void add(const Key& key, const Value& value) {
assert(get_key(value) == key);
if (key->index >= this->size()) this->resize(key->index + 1);
(*this)[key->index] = value;
}
/// Retrieve a value given its key /// Retrieve a value given its key
inline Value operator [] (const Key& key) { inline Value operator [] (const Key& key) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment