mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-10 21:06:59 -04:00
Implemented ImageValueViewer, and more of the related classes
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@54 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
@@ -56,14 +56,14 @@ void CardListBase::onAction(const Action& action, bool undone) {
|
||||
selectCardPos((long)sorted_card_list.size() - 1, true);
|
||||
} else {
|
||||
// select the new card
|
||||
selectCard(action.card, false /*list will be refreshed anyway*/);
|
||||
selectCard(action.card, false /*list will be refreshed anyway*/, true);
|
||||
refreshList();
|
||||
}
|
||||
}
|
||||
TYPE_CASE(action, RemoveCardAction) {
|
||||
if (undone) {
|
||||
// select the re-added card
|
||||
selectCard(action.card, false /*list will be refreshed anyway*/);
|
||||
selectCard(action.card, false /*list will be refreshed anyway*/, true);
|
||||
refreshList();
|
||||
} else {
|
||||
long pos = selected_card_pos;
|
||||
@@ -116,10 +116,12 @@ void CardListBase::selectNext() {
|
||||
|
||||
// ----------------------------------------------------------------------------- : CardListBase : Selection (private)
|
||||
|
||||
void CardListBase::selectCard(const CardP& card, bool focus) {
|
||||
void CardListBase::selectCard(const CardP& card, bool focus, bool event) {
|
||||
selected_card = card;
|
||||
CardSelectEvent ev(card);
|
||||
ProcessEvent(ev);
|
||||
if (event) {
|
||||
CardSelectEvent ev(card);
|
||||
ProcessEvent(ev);
|
||||
}
|
||||
if (focus) {
|
||||
findSelectedCardPos();
|
||||
selectCurrentCard();
|
||||
@@ -130,9 +132,9 @@ void CardListBase::selectCardPos(long pos, bool focus) {
|
||||
if (selected_card_pos == pos && !focus) return; // this card is already selected
|
||||
if ((size_t)pos < sorted_card_list.size()) {
|
||||
// only if there is something to select
|
||||
selectCard(sorted_card_list[pos], false);
|
||||
selectCard(sorted_card_list[pos], false, true);
|
||||
} else {
|
||||
selectCard(CardP(), false);
|
||||
selectCard(CardP(), false, true);
|
||||
}
|
||||
selected_card_pos = pos;
|
||||
if (focus) selectCurrentCard();
|
||||
|
||||
@@ -20,7 +20,10 @@ DECLARE_POINTER_TYPE(Field);
|
||||
|
||||
DECLARE_EVENT_TYPE(EVENT_CARD_SELECT, <not used>)
|
||||
/// Handle CardSelectEvents
|
||||
#define EVT_CARD_SELECT(id, handler) EVT_COMMAND(id, EVENT_CARD_SELECT, handler)
|
||||
#define EVT_CARD_SELECT(id, handler) \
|
||||
DECLARE_EVENT_TABLE_ENTRY(EVENT_CARD_SELECT, id, -1, \
|
||||
(wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) \
|
||||
(void (wxEvtHandler::*)(CardSelectEvent&)) (&handler), (wxObject*) NULL),
|
||||
|
||||
/// The event of selecting a card
|
||||
struct CardSelectEvent : public wxCommandEvent {
|
||||
@@ -50,7 +53,7 @@ class CardListBase : public wxListView, public SetView {
|
||||
// --------------------------------------------------- : Selection
|
||||
|
||||
inline CardP getCard() const { return selected_card; }
|
||||
inline void setCard(const CardP& card) { selectCard(card, true); }
|
||||
inline void setCard(const CardP& card) { selectCard(card, true, false); }
|
||||
|
||||
/// Is there a previous card to select?
|
||||
bool canSelectPrevious() const;
|
||||
@@ -113,7 +116,7 @@ class CardListBase : public wxListView, public SetView {
|
||||
/** If focus then the card is also focused and selected in the actual control.
|
||||
* This should abviously not be done when the card is selected because it was selected (leading to a loop).
|
||||
*/
|
||||
void selectCard(const CardP& card, bool focus);
|
||||
void selectCard(const CardP& card, bool focus, bool event);
|
||||
/// Select a card at the specified position
|
||||
void selectCardPos(long pos, bool focus);
|
||||
/// Find the position for the selected_card
|
||||
|
||||
@@ -211,4 +211,4 @@ CardP CardsPanel::selectedCard() const {
|
||||
void CardsPanel::selectCard(const CardP& card) {
|
||||
card_list->setCard(card);
|
||||
editor->setCard(*card);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ class SetWindowPanel : public wxPanel, public SetView {
|
||||
|
||||
// --------------------------------------------------- : Selection
|
||||
virtual CardP selectedCard() const { return CardP(); } ///< Return the currently selected card, or CardP()
|
||||
virtual void selectCard(CardP card) {} ///< Switch the view to another card
|
||||
virtual void selectCard(const CardP& card) {} ///< Switch the view to another card
|
||||
|
||||
protected:
|
||||
// --------------------------------------------------- : Helper functions for UI
|
||||
|
||||
+4
-11
@@ -246,11 +246,10 @@ void SetWindow::onAction(const Action& action, bool undone) {
|
||||
}
|
||||
|
||||
|
||||
void SetWindow::onCardSelect(wxCommandEvent& ev) {
|
||||
// CardP card = static_cast<CardSelectEvent&>(ev).card;
|
||||
// FOR_EACH(p, panels) {
|
||||
// p->selectCard(card);
|
||||
// }
|
||||
void SetWindow::onCardSelect(CardSelectEvent& ev) {
|
||||
FOR_EACH(p, panels) {
|
||||
p->selectCard(ev.card);
|
||||
}
|
||||
fixMinWindowSize();
|
||||
}
|
||||
|
||||
@@ -547,12 +546,6 @@ void SetWindow::onChildMenu(wxCommandEvent& ev) {
|
||||
current_panel->onCommand(ev.GetId());
|
||||
}
|
||||
|
||||
void SetWindow::onCardSelect(CardSelectEvent& ev) {
|
||||
FOR_EACH(p, panels) {
|
||||
p->selectCard(ev.card);
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------- : Event table
|
||||
|
||||
BEGIN_EVENT_TABLE(SetWindow, wxFrame)
|
||||
|
||||
@@ -85,7 +85,7 @@ class SetWindow : public wxFrame, public SetView {
|
||||
|
||||
private:
|
||||
/// A different card has been selected
|
||||
void onCardSelect(wxCommandEvent&);
|
||||
void onCardSelect(CardSelectEvent&);
|
||||
|
||||
/// Render settings have changed (because of editing of preferences)
|
||||
void onRenderSettingsChange();
|
||||
@@ -154,8 +154,6 @@ class SetWindow : public wxFrame, public SetView {
|
||||
// --------------------------------------------------- : Window events - other
|
||||
|
||||
void onChildMenu (wxCommandEvent&);
|
||||
|
||||
void onCardSelect (CardSelectEvent&);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------- : EOF
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#include <gui/util.hpp>
|
||||
#include <util/error.hpp>
|
||||
#include <util/rotation.hpp>
|
||||
#include <wx/mstream.h>
|
||||
|
||||
// ----------------------------------------------------------------------------- : DC related
|
||||
@@ -20,6 +21,26 @@ void clearDC(DC& dc, const wxBrush& brush) {
|
||||
dc.DrawRectangle(0, 0, size.GetWidth(), size.GetHeight());
|
||||
}
|
||||
|
||||
void draw_checker(RotatedDC& dc, const RealRect& rect) {
|
||||
dc.SetPen(*wxTRANSPARENT_PEN);
|
||||
dc.SetBrush(*wxWHITE_BRUSH);
|
||||
dc.DrawRectangle(rect);
|
||||
dc.SetBrush(Color(235,235,235));
|
||||
const double checker_size = 10;
|
||||
int odd = 0;
|
||||
for (double y = 0 ; y < rect.size.height ; y += checker_size) {
|
||||
for (double x = odd * checker_size ; x < rect.size.width ; x += checker_size * 2) {
|
||||
dc.DrawRectangle(RealRect(
|
||||
rect.position.x + x,
|
||||
rect.position.y + y,
|
||||
min(checker_size, rect.size.width - x),
|
||||
min(checker_size, rect.size.height - y)
|
||||
));
|
||||
}
|
||||
odd = 1 - odd;
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------- : Image related
|
||||
|
||||
Image load_resource_image(String name) {
|
||||
|
||||
@@ -15,11 +15,17 @@
|
||||
|
||||
#include <util/prec.hpp>
|
||||
|
||||
class RotatedDC;
|
||||
class RealRect;
|
||||
|
||||
// ----------------------------------------------------------------------------- : DC related
|
||||
|
||||
/// Fill a DC with a single color
|
||||
void clearDC(DC& dc, const wxBrush& brush = *wxBLACK_BRUSH);
|
||||
|
||||
/// Draw a checkerboard pattern
|
||||
void draw_checker(RotatedDC& dc, const RealRect&);
|
||||
|
||||
// ----------------------------------------------------------------------------- : Resource related
|
||||
|
||||
/// Load an image from a resource
|
||||
|
||||
Reference in New Issue
Block a user