mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-11 05:07:00 -04:00
Fixed Actions for TextCtrl, actions used to apply to the wrong value.
Changed some TABs to spaces in macros, that should end the conflicts because we use different tab sizes (4 vs 8) git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@234 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
@@ -10,6 +10,8 @@
|
||||
#include <data/set.hpp>
|
||||
#include <data/game.hpp>
|
||||
#include <data/keyword.hpp>
|
||||
#include <util/tagged_string.hpp>
|
||||
#include <gfx/gfx.hpp>
|
||||
|
||||
DECLARE_TYPEOF_COLLECTION(KeywordP);
|
||||
|
||||
@@ -23,7 +25,7 @@ KeywordList::KeywordList(Window* parent, int id, long additional_style)
|
||||
: ItemList(parent, id, additional_style)
|
||||
{
|
||||
// Add columns
|
||||
InsertColumn(0, _LABEL_("keyword"), wxLIST_FORMAT_LEFT, 100);
|
||||
InsertColumn(0, _LABEL_("keyword"), wxLIST_FORMAT_LEFT, 0);
|
||||
InsertColumn(1, _LABEL_("match"), wxLIST_FORMAT_LEFT, 200);
|
||||
InsertColumn(2, _LABEL_("mode"), wxLIST_FORMAT_LEFT, 100);
|
||||
InsertColumn(3, _LABEL_("uses"), wxLIST_FORMAT_RIGHT, 80);
|
||||
@@ -51,11 +53,21 @@ void KeywordList::onAction(const Action& action, bool undone) {
|
||||
|
||||
// ----------------------------------------------------------------------------- : KeywordListBase : for ItemList
|
||||
|
||||
String match_string(const Keyword& a) {
|
||||
return untag(replace_all(replace_all(
|
||||
a.match,
|
||||
_("<param>"), _("‹")),
|
||||
_("</param>"), _("›"))
|
||||
);
|
||||
}
|
||||
|
||||
void KeywordList::getItems(vector<VoidP>& out) const {
|
||||
FOR_EACH(k, set->keywords) {
|
||||
k->fixed = false;
|
||||
out.push_back(k);
|
||||
}
|
||||
FOR_EACH(k, set->game->keywords) {
|
||||
k->fixed = true;
|
||||
out.push_back(k);
|
||||
}
|
||||
}
|
||||
@@ -83,7 +95,7 @@ String KeywordList::OnGetItemText (long pos, long col) const {
|
||||
const Keyword& kw = *getKeyword(pos);
|
||||
switch(col) {
|
||||
case 0: return kw.keyword;
|
||||
case 1: return kw.match;
|
||||
case 1: return match_string(kw);
|
||||
case 2: return kw.mode;
|
||||
case 3: return _("TODO");
|
||||
case 4: return _("TODO");
|
||||
@@ -93,3 +105,11 @@ String KeywordList::OnGetItemText (long pos, long col) const {
|
||||
int KeywordList::OnGetItemImage(long pos) const {
|
||||
return -1;
|
||||
}
|
||||
|
||||
wxListItemAttr* KeywordList::OnGetItemAttr(long pos) const {
|
||||
// black for set keywords, grey for game keywords (uneditable)
|
||||
const Keyword& kw = *getKeyword(pos);
|
||||
if (!kw.fixed) return nullptr;
|
||||
item_attr.SetTextColour(lerp(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW),wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT),0.5));
|
||||
return &item_attr;
|
||||
}
|
||||
|
||||
@@ -68,9 +68,13 @@ class KeywordList : public ItemList, public SetView {
|
||||
/// Get the image of an item, by default no image is used
|
||||
/** Overrides a function from wxListCtrl */
|
||||
virtual int OnGetItemImage(long pos) const;
|
||||
/// Get the color for an item
|
||||
virtual wxListItemAttr* OnGetItemAttr(long pos) const;
|
||||
|
||||
private:
|
||||
void storeColumns();
|
||||
|
||||
mutable wxListItemAttr item_attr; // for OnGetItemAttr
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------- : EOF
|
||||
|
||||
@@ -37,7 +37,7 @@ void TextCtrl::setValue(String* value) {
|
||||
// create a field, style and value
|
||||
TextFieldP field(new TextField);
|
||||
TextStyleP style(new TextStyle(field));
|
||||
TextValueP value(new TextValue(field));
|
||||
TextValueP value(new FakeTextValue(field, this->value));
|
||||
// set stuff
|
||||
field->index = 0;
|
||||
field->multi_line = true;
|
||||
@@ -57,6 +57,11 @@ void TextCtrl::setValue(String* value) {
|
||||
viewers.front()->getEditor()->determineSize(true);
|
||||
// We don't wan to change the window size
|
||||
//SetMinSize(RealSize(style->width + 6, style->height + 6));
|
||||
} else if (value) {
|
||||
// create a new value, for a different underlying actual value
|
||||
ValueViewer& viewer = *viewers.front();
|
||||
TextValueP new_value(new FakeTextValue(static_pointer_cast<TextField>(viewer.getField()), this->value));
|
||||
viewer.setValue(new_value);
|
||||
}
|
||||
valueChanged();
|
||||
}
|
||||
@@ -70,13 +75,15 @@ void TextCtrl::valueChanged() {
|
||||
}
|
||||
void TextCtrl::onAction(const Action& action, bool undone) {
|
||||
DataEditor::onAction(action, undone);
|
||||
/*
|
||||
TYPE_CASE(action, TextValueAction) {
|
||||
TextValue& tv = static_cast<TextValue&>(*viewers.front()->getValue());
|
||||
if (&tv == action.valueP.get()) {
|
||||
FakeTextValue& tv = static_cast<FakeTextValue&>(*viewers.front()->getValue());
|
||||
if (tv.equals(action.valueP.get())) {
|
||||
// the value has changed
|
||||
if (value) *value = tv.value();
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
void TextCtrl::onChangeSet() {
|
||||
DataEditor::onChangeSet();
|
||||
|
||||
@@ -8,8 +8,10 @@
|
||||
|
||||
#include <gui/set/keywords_panel.hpp>
|
||||
#include <gui/control/keyword_list.hpp>
|
||||
#include <gui/control/text_ctrl.hpp>
|
||||
#include <data/keyword.hpp>
|
||||
#include <wx/listctrl.h>
|
||||
#include <wx/splitter.h>
|
||||
|
||||
// ----------------------------------------------------------------------------- : KeywordsPanel
|
||||
|
||||
@@ -17,18 +19,44 @@ KeywordsPanel::KeywordsPanel(Window* parent, int id)
|
||||
: SetWindowPanel(parent, id)
|
||||
{
|
||||
// init controls
|
||||
list = new KeywordList(this, wxID_ANY);
|
||||
Panel* panel;
|
||||
splitter = new wxSplitterWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0);
|
||||
list = new KeywordList(splitter, wxID_ANY);
|
||||
panel = new Panel(splitter, wxID_ANY);
|
||||
keyword = new TextCtrl(panel, wxID_ANY);
|
||||
match = new TextCtrl(panel, wxID_ANY);
|
||||
reminder = new TextCtrl(panel, wxID_ANY);
|
||||
rules = new TextCtrl(panel, wxID_ANY);
|
||||
// init sizer for panel
|
||||
wxSizer* sp = new wxBoxSizer(wxVERTICAL);
|
||||
sp->Add(new wxStaticText(panel, wxID_ANY, _("Keyword:")), 0, wxALL, 6);
|
||||
sp->Add(keyword, 0, wxEXPAND | wxALL & ~wxTOP, 6);
|
||||
wxSizer* s2 = new wxStaticBoxSizer(wxVERTICAL, panel, _("Match"));
|
||||
s2->Add(new wxStaticText(panel, wxID_ANY, _("Keyword format:")), 0, wxALL, 6);
|
||||
s2->Add(match, 0, wxEXPAND | wxALL & ~wxTOP, 6);
|
||||
s2->Add(new wxStaticText(panel, wxID_ANY, _("Parameters:")), 0, wxALL, 6);
|
||||
sp->Add(s2, 0, wxEXPAND | wxALL, 6);
|
||||
sp->Add(new wxStaticText(panel, wxID_ANY, _("Reminder:")), 0, wxALL, 6);
|
||||
sp->Add(reminder, 0, wxEXPAND | wxALL & ~wxTOP, 6);
|
||||
sp->Add(new wxStaticText(panel, wxID_ANY, _("Rules:")), 0, wxALL, 6);
|
||||
sp->Add(rules, 0, wxEXPAND | wxALL & ~wxTOP, 6);
|
||||
panel->SetSizer(sp);
|
||||
// init splitter
|
||||
splitter->SetMinimumPaneSize(100);
|
||||
splitter->SetSashGravity(0.5);
|
||||
splitter->SplitVertically(list, panel, -200);
|
||||
// init sizer
|
||||
wxSizer* s = new wxBoxSizer(wxHORIZONTAL);
|
||||
s->Add(list, 1, wxEXPAND);
|
||||
s->Add(splitter, 1, wxEXPAND);
|
||||
s->SetSizeHints(this);
|
||||
SetSizer(s);
|
||||
|
||||
//s->Add(new wxStaticText(this, wxID_ANY, _("Sorry, no keywords for now"),wxDefaultPosition,wxDefaultSize,wxALIGN_CENTER), 1, wxALIGN_CENTER); // TODO: Remove
|
||||
/* wxSizer* s2 = new wxBoxSizer(wxVERTICAL);
|
||||
s2->Add(list_active, 1, wxEXPAND);
|
||||
s2->Add(list_inactive, 1, wxEXPAND);*/
|
||||
s->SetSizeHints(this);
|
||||
SetSizer(s);
|
||||
}
|
||||
|
||||
void KeywordsPanel::onChangeSet() {
|
||||
list->setSet(set);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <util/prec.hpp>
|
||||
#include <gui/set/panel.hpp>
|
||||
|
||||
class wxSplitterWindow;
|
||||
class KeywordList;
|
||||
class TextCtrl;
|
||||
|
||||
@@ -25,8 +26,13 @@ class KeywordsPanel : public SetWindowPanel {
|
||||
virtual void onChangeSet();
|
||||
|
||||
private:
|
||||
KeywordList* list;
|
||||
TextCtrl* keyword;
|
||||
// --------------------------------------------------- : Controls
|
||||
wxSplitterWindow* splitter;
|
||||
KeywordList* list;
|
||||
TextCtrl* keyword;
|
||||
TextCtrl* match;
|
||||
TextCtrl* reminder;
|
||||
TextCtrl* rules;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------- : EOF
|
||||
|
||||
Reference in New Issue
Block a user