mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-10 21:06:59 -04:00
added SymbolValueEditor + minor fixes
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@96 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
@@ -203,7 +203,7 @@ void GraphControl::setData(const GraphDataPre& data) {
|
||||
void GraphControl::setData(const GraphDataP& data) {
|
||||
if (graph) {
|
||||
graph->setData(data);
|
||||
current_item.clear(); // TODO : preserver selection
|
||||
current_item.clear(); // TODO : preserve selection
|
||||
Refresh(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,7 +201,7 @@ void SymbolControl::onSize(wxSizeEvent& ev) {
|
||||
Refresh(false);
|
||||
}
|
||||
void SymbolControl::onUpdateUI(wxUpdateUIEvent& ev) {
|
||||
if (!editor) return;
|
||||
if (!editor) return;
|
||||
switch (ev.GetId()) {
|
||||
case ID_MODE_SELECT: case ID_MODE_ROTATE: case ID_MODE_POINTS: case ID_MODE_SHAPES: //case ID_MODE_PAINT:
|
||||
ev.Check(editor->modeToolId() == ev.GetId());
|
||||
|
||||
@@ -10,8 +10,12 @@
|
||||
#include <gui/symbol/control.hpp>
|
||||
#include <gui/symbol/part_list.hpp>
|
||||
#include <gui/icon_menu.hpp>
|
||||
#include <data/set.hpp>
|
||||
#include <data/field/symbol.hpp>
|
||||
#include <data/action/value.hpp>
|
||||
#include <util/window_id.hpp>
|
||||
#include <util/io/reader.hpp>
|
||||
#include <util/error.hpp>
|
||||
#include <wx/filename.h>
|
||||
#include <wx/wfstream.h>
|
||||
|
||||
@@ -29,7 +33,7 @@ SymbolPartP defaultSymbolPart(double d) {
|
||||
}
|
||||
|
||||
// A default symbol, a square
|
||||
SymbolP defaultSymbol() {
|
||||
SymbolP default_symbol() {
|
||||
SymbolP symbol = new_shared<Symbol>();
|
||||
symbol->parts.push_back(defaultSymbolPart(0));
|
||||
return symbol;
|
||||
@@ -38,12 +42,29 @@ SymbolP defaultSymbol() {
|
||||
// ----------------------------------------------------------------------------- : Constructor
|
||||
|
||||
SymbolWindow::SymbolWindow(Window* parent) {
|
||||
init(parent, defaultSymbol());
|
||||
init(parent, default_symbol());
|
||||
}
|
||||
|
||||
SymbolWindow::SymbolWindow(Window* parent, String filename) {
|
||||
// TODO
|
||||
init(parent, defaultSymbol());
|
||||
SymbolWindow::SymbolWindow(Window* parent, const String& filename) {
|
||||
// TODO : open file
|
||||
init(parent, default_symbol());
|
||||
}
|
||||
|
||||
SymbolWindow::SymbolWindow(Window* parent, const SymbolValueP& value, const SetP& set)
|
||||
: value(value), set(set)
|
||||
{
|
||||
// attempt to load symbol
|
||||
SymbolP symbol;
|
||||
if (!value->filename.empty()) {
|
||||
try {
|
||||
// load symbol
|
||||
symbol = set->readFile<SymbolP>(value->filename);
|
||||
} catch (const Error& e) {
|
||||
handle_error(e);
|
||||
}
|
||||
}
|
||||
if (!symbol) symbol = default_symbol();
|
||||
init(parent, symbol);
|
||||
}
|
||||
|
||||
void SymbolWindow::init(Window* parent, SymbolP symbol) {
|
||||
@@ -122,12 +143,17 @@ void SymbolWindow::init(Window* parent, SymbolP symbol) {
|
||||
s->Add(v, 0, wxEXPAND);
|
||||
s->Add(control, 1, wxEXPAND);
|
||||
SetSizer(s);
|
||||
|
||||
// we want update ui events
|
||||
wxUpdateUIEvent::SetMode(wxUPDATE_UI_PROCESS_SPECIFIED);
|
||||
SetExtraStyle(wxWS_EX_PROCESS_UI_UPDATES);
|
||||
em->SetExtraStyle(wxWS_EX_PROCESS_UI_UPDATES);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------- : Event handling
|
||||
|
||||
void SymbolWindow::onFileNew(wxCommandEvent& ev) {
|
||||
SymbolP symbol = defaultSymbol();
|
||||
SymbolP symbol = default_symbol();
|
||||
parts->setSymbol(symbol);
|
||||
control->setSymbol(symbol);
|
||||
}
|
||||
@@ -151,12 +177,25 @@ void SymbolWindow::onFileOpen(wxCommandEvent& ev) {
|
||||
}
|
||||
|
||||
void SymbolWindow::onFileSave(wxCommandEvent& ev) {
|
||||
// TODO
|
||||
onFileSaveAs(ev);
|
||||
}
|
||||
|
||||
void SymbolWindow::onFileSaveAs(wxCommandEvent& ev) {
|
||||
String name = wxFileSelector(_("Save symbol"),_(""),_(""),_(""),_("Symbol files (*.mse-symbol)|*.mse-symbol"),wxSAVE, this);
|
||||
if (!name.empty()) {
|
||||
Writer writer(new_shared1<wxFileOutputStream>(name));
|
||||
writer.handle(control->getSymbol());
|
||||
}
|
||||
}
|
||||
|
||||
void SymbolWindow::onFileStore(wxCommandEvent& ev) {
|
||||
if (value) {
|
||||
FileName new_filename = set->newFileName(value->field().name,_(".mse-symbol")); // a new unique name in the package
|
||||
Writer writer(set->openOut(new_filename));
|
||||
writer.handle(control->getSymbol());
|
||||
set->actions.add(value_action(value, new_filename));
|
||||
}
|
||||
}
|
||||
|
||||
void SymbolWindow::onFileExit(wxCommandEvent& ev) {
|
||||
@@ -191,7 +230,7 @@ void SymbolWindow::onUpdateUI(wxUpdateUIEvent& ev) {
|
||||
switch(ev.GetId()) {
|
||||
// file menu
|
||||
case ID_FILE_STORE: {
|
||||
// ev.Enable(value);
|
||||
ev.Enable(value);
|
||||
break;
|
||||
// undo/redo
|
||||
} case ID_EDIT_UNDO: {
|
||||
|
||||
@@ -9,13 +9,14 @@
|
||||
|
||||
// ----------------------------------------------------------------------------- : Includes
|
||||
|
||||
#include "../../util/prec.hpp"
|
||||
#include <util/prec.hpp>
|
||||
#include <data/symbol.hpp>
|
||||
#include <wx/listctrl.h>
|
||||
//#include "control.hpp"
|
||||
|
||||
class SymbolControl;
|
||||
class SymbolPartList;
|
||||
DECLARE_POINTER_TYPE(SymbolValue);
|
||||
DECLARE_POINTER_TYPE(Set);
|
||||
|
||||
// ----------------------------------------------------------------------------- : SymbolWindow
|
||||
|
||||
@@ -25,9 +26,9 @@ class SymbolWindow : public Frame {
|
||||
/// Construct a SymbolWindow
|
||||
SymbolWindow(Window* parent);
|
||||
/// Construct a SymbolWindow showing a symbol from a file
|
||||
SymbolWindow(Window* parent, String filename);
|
||||
// /// Construct a SymbolWindow showing a symbol from a set
|
||||
// SymbolWindow(Window* parent);
|
||||
SymbolWindow(Window* parent, const String& filename);
|
||||
// /// Construct a SymbolWindow showing a symbol value in a set
|
||||
SymbolWindow(Window* parent, const SymbolValueP& value, const SetP& set);
|
||||
|
||||
private:
|
||||
// --------------------------------------------------- : Children
|
||||
@@ -39,8 +40,8 @@ class SymbolWindow : public Frame {
|
||||
SymbolPartList* parts; ///< A list of parts in the symbol
|
||||
|
||||
// when editing a symbol field
|
||||
// SymbolValueP value
|
||||
// SetP set
|
||||
SymbolValueP value;
|
||||
SetP set;
|
||||
|
||||
// --------------------------------------------------- : Event handling
|
||||
DECLARE_EVENT_TABLE();
|
||||
|
||||
@@ -112,5 +112,5 @@ void ChoiceValueEditor::determineSize() {
|
||||
}
|
||||
|
||||
void ChoiceValueEditor::change(const Defaultable<String>& c) {
|
||||
getSet().actions.add(value_action(static_pointer_cast<ChoiceValue>(valueP), c));
|
||||
getSet().actions.add(value_action(valueP(), c));
|
||||
}
|
||||
|
||||
@@ -148,7 +148,7 @@ void ColorValueEditor::determineSize() {
|
||||
}
|
||||
|
||||
void ColorValueEditor::change(const Defaultable<Color>& c) {
|
||||
getSet().actions.add(value_action(static_pointer_cast<ColorValue>(valueP), c));
|
||||
getSet().actions.add(value_action(valueP(), c));
|
||||
}
|
||||
void ColorValueEditor::changeCustom() {
|
||||
Color c = wxGetColourFromUser(0, value().value());
|
||||
|
||||
@@ -7,7 +7,18 @@
|
||||
// ----------------------------------------------------------------------------- : Includes
|
||||
|
||||
#include <gui/value/symbol.hpp>
|
||||
#include <gui/symbol/window.hpp>
|
||||
|
||||
// ----------------------------------------------------------------------------- :
|
||||
// ----------------------------------------------------------------------------- : SymbolValueEditor
|
||||
|
||||
IMPLEMENT_VALUE_EDITOR(Symbol) {}
|
||||
|
||||
void SymbolValueEditor::onLeftDClick(const RealPoint& pos, wxMouseEvent&) {
|
||||
// TODO : use SetWindow as parent? Maybe not, the symbol editor will stay open when mainwindow closes
|
||||
SymbolWindow* wnd = new SymbolWindow(nullptr, valueP(), viewer.getSet());
|
||||
wnd->Show();
|
||||
}
|
||||
|
||||
void SymbolValueEditor::determineSize() {
|
||||
style().height = 50;
|
||||
}
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
class SymbolValueEditor : public SymbolValueViewer, public ValueEditor {
|
||||
public:
|
||||
DECLARE_VALUE_EDITOR(Symbol);
|
||||
|
||||
virtual void onLeftDClick(const RealPoint& pos, wxMouseEvent&);
|
||||
virtual void determineSize();
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------- : EOF
|
||||
|
||||
@@ -20,6 +20,7 @@ class TextValueEditor : public TextValueViewer, public ValueEditor {
|
||||
public:
|
||||
DECLARE_VALUE_EDITOR(Text);
|
||||
|
||||
// virtual void determineSize();
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------- : EOF
|
||||
|
||||
Reference in New Issue
Block a user