mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-10 04:57:00 -04:00
d40d3de46c
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@79 0fc631ac-6414-0410-93d0-97cfa31319b6
115 lines
4.1 KiB
C++
115 lines
4.1 KiB
C++
//+----------------------------------------------------------------------------+
|
|
//| Description: Magic Set Editor - Program to make Magic (tm) cards |
|
|
//| Copyright: (C) 2001 - 2006 Twan van Laarhoven |
|
|
//| License: GNU General Public License 2 or later (see file COPYING) |
|
|
//+----------------------------------------------------------------------------+
|
|
|
|
#ifndef HEADER_GUI_CONTROL_CARD_EDITOR
|
|
#define HEADER_GUI_CONTROL_CARD_EDITOR
|
|
|
|
// ----------------------------------------------------------------------------- : Includes
|
|
|
|
#include <util/prec.hpp>
|
|
#include <gui/control/card_viewer.hpp>
|
|
|
|
class ValueEditor;
|
|
|
|
// ----------------------------------------------------------------------------- : DataEditor
|
|
|
|
/// An editor for data values (usually a card)
|
|
class DataEditor : public CardViewer {
|
|
public:
|
|
DataEditor(Window* parent, int id, long style = 0);
|
|
|
|
// --------------------------------------------------- : Utility for ValueViewers
|
|
|
|
virtual bool drawBorders() const;
|
|
virtual bool drawEditing() const;
|
|
virtual wxPen borderPen(bool active) const;
|
|
virtual ValueViewer* focusedViewer() const;
|
|
|
|
// --------------------------------------------------- : Selection
|
|
|
|
/// Select the given viewer, sends focus events
|
|
void select(ValueViewer* v);
|
|
/// Select the first editable and visible editor (by tab index)
|
|
void selectFirst();
|
|
/// Select the next editable editor, returns false if the current editor is the last one
|
|
bool selectNext();
|
|
/// Select the previous editable editor, returns false if the current editor is the first one
|
|
bool selectPrevious();
|
|
|
|
// --------------------------------------------------- : Clipboard
|
|
|
|
bool canCut() const;
|
|
bool canCopy() const;
|
|
bool canPaste() const;
|
|
void doCut();
|
|
void doCopy();
|
|
void doPaste();
|
|
|
|
// --------------------------------------------------- : Formatting
|
|
|
|
bool canFormat(int type) const;
|
|
bool hasFormat(int type) const;
|
|
void doFormat (int type);
|
|
|
|
// --------------------------------------------------- : ValueViewers
|
|
|
|
protected:
|
|
/// Create an editor for the given style (as opposed to a normal viewer)
|
|
virtual ValueViewerP makeViewer(const StyleP&);
|
|
|
|
virtual void onInit();
|
|
|
|
// --------------------------------------------------- : Data
|
|
private:
|
|
DECLARE_EVENT_TABLE();
|
|
|
|
ValueViewer* current_viewer; ///< The currently selected viewer
|
|
ValueEditor* current_editor; ///< The currently selected editor, corresponding to the viewer
|
|
vector<ValueViewer*> by_tab_index; ///< The editable viewers, sorted by tab index
|
|
|
|
// --------------------------------------------------- : Events
|
|
|
|
void onLeftDown (wxMouseEvent&);
|
|
void onLeftUp (wxMouseEvent&);
|
|
void onLeftDClick(wxMouseEvent&);
|
|
void onRightDown (wxMouseEvent&);
|
|
void onMotion (wxMouseEvent&);
|
|
void onMouseWheel(wxMouseEvent&);
|
|
void onMouseLeave(wxMouseEvent&);
|
|
|
|
void onChar (wxKeyEvent&);
|
|
|
|
void onContextMenu(wxContextMenuEvent&);
|
|
void onMenu (wxCommandEvent& e);
|
|
|
|
void onFocus (wxFocusEvent&);
|
|
void onLoseFocus(wxFocusEvent&);
|
|
|
|
// --------------------------------------------------- : Functions
|
|
|
|
/// Changes the selection to the field at the specified coordinates
|
|
/** Sends an event to the event function of the current viewer */
|
|
void selectField(wxMouseEvent& ev, void (ValueEditor::*event)(const RealPoint&, wxMouseEvent&));
|
|
// selectField, but don't send events
|
|
void selectFieldNoEvents(const RealPoint& pos);
|
|
/// Convert mouse coordinates to internal coordinates
|
|
RealPoint mousePoint(const wxMouseEvent& e);
|
|
|
|
// Create tab index ordering of the (editable) viewers
|
|
void createTabIndex();
|
|
/// Select the field with the given position in the by_tab_index list
|
|
/** Returns success */
|
|
bool selectByTabPos(int tab_pos);
|
|
/// Find the tab pos of the current viewer, returns -1 if not found
|
|
int currentTabPos() const;
|
|
};
|
|
|
|
/// By default a DataEditor edits cards
|
|
typedef DataEditor CardEditor;
|
|
|
|
// ----------------------------------------------------------------------------- : EOF
|
|
#endif
|