mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-11 05:07:00 -04:00
Implemented NewSetWindow, added events to GalleryList
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@48 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
@@ -18,9 +18,9 @@ DECLARE_POINTER_TYPE(Field);
|
||||
|
||||
// ----------------------------------------------------------------------------- : Events
|
||||
|
||||
DECLARE_EVENT_TYPE(EVENT_CARD_SELECT, <not used>);
|
||||
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) EVT_COMMAND(id, EVENT_CARD_SELECT, handler)
|
||||
|
||||
/// The event of selecting a card
|
||||
struct CardSelectEvent : public wxCommandEvent {
|
||||
|
||||
@@ -8,6 +8,11 @@
|
||||
|
||||
#include <gui/control/gallery_list.hpp>
|
||||
|
||||
// ----------------------------------------------------------------------------- : Events
|
||||
|
||||
DEFINE_EVENT_TYPE(EVENT_GALLERY_SELECT);
|
||||
DEFINE_EVENT_TYPE(EVENT_GALLERY_ACTIVATE);
|
||||
|
||||
// ----------------------------------------------------------------------------- : GalleryList
|
||||
|
||||
const int MARGIN = 2; // margin around items
|
||||
@@ -77,12 +82,12 @@ void GalleryList::onLeftDown(wxMouseEvent& ev) {
|
||||
if (item != selection && item < itemCount()) {
|
||||
selection = item;
|
||||
update();
|
||||
sendEvent(EVENT_GALLERY_SELECT);
|
||||
}
|
||||
}
|
||||
|
||||
void GalleryList::onLeftDClick(wxMouseEvent& ev) {
|
||||
// activate an item
|
||||
// TODO
|
||||
sendEvent(EVENT_GALLERY_ACTIVATE);
|
||||
}
|
||||
|
||||
void GalleryList::onKeyDown(wxKeyEvent& ev) {
|
||||
@@ -160,6 +165,11 @@ void GalleryList::OnDraw(DC& dc) {
|
||||
}
|
||||
}
|
||||
|
||||
void GalleryList::sendEvent(WXTYPE type) {
|
||||
wxCommandEvent ev(type, GetId());
|
||||
ProcessEvent(ev);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------- : Event table
|
||||
|
||||
BEGIN_EVENT_TABLE(GalleryList, wxScrolledWindow)
|
||||
|
||||
@@ -11,6 +11,16 @@
|
||||
|
||||
#include <util/prec.hpp>
|
||||
|
||||
// ----------------------------------------------------------------------------- : Events
|
||||
|
||||
DECLARE_EVENT_TYPE(EVENT_GALLERY_SELECT, <not used>)
|
||||
DECLARE_EVENT_TYPE(EVENT_GALLERY_ACTIVATE, <not used>)
|
||||
|
||||
/// Handle EVENT_GALLERY_SELECT events
|
||||
#define EVT_GALLERY_SELECT( id, handler) EVT_COMMAND(id, EVENT_GALLERY_SELECT, handler)
|
||||
/// Handle EVENT_GALLERY_ACTIVATE events
|
||||
#define EVT_GALLERY_ACTIVATE(id, handler) EVT_COMMAND(id, EVENT_GALLERY_ACTIVATE, handler)
|
||||
|
||||
// ----------------------------------------------------------------------------- : GalleryList
|
||||
|
||||
/// A list of items with custom drawing
|
||||
@@ -47,6 +57,8 @@ class GalleryList : public wxScrolledWindow {
|
||||
|
||||
/// Find the item corresponding to the given location
|
||||
size_t findItem(const wxMouseEvent&);
|
||||
/// Send an event
|
||||
void sendEvent(WXTYPE type);
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------- : EOF
|
||||
|
||||
@@ -76,3 +76,21 @@ void PackageList::showData(const String& pattern) {
|
||||
// update list
|
||||
update();
|
||||
}
|
||||
|
||||
void PackageList::clear() {
|
||||
packages.clear();
|
||||
update();
|
||||
}
|
||||
|
||||
void PackageList::select(const String& name) {
|
||||
for (vector<PackageData>::const_iterator it = packages.begin() ; it != packages.end() ; ++it) {
|
||||
if (it->package->name() == name) {
|
||||
selection = it - packages.begin();
|
||||
update();
|
||||
return;
|
||||
}
|
||||
}
|
||||
selection = NO_SELECTION;
|
||||
update();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,10 @@ class PackageList : public GalleryList {
|
||||
/// Shows packages that match a specific patern
|
||||
void showData(const String& pattern = _("*.*"));
|
||||
|
||||
// Is there a package selected?
|
||||
/// Clears this list
|
||||
void clear();
|
||||
|
||||
/// Is there a package selected?
|
||||
inline bool hasSelection() const { return selection < itemCount(); }
|
||||
|
||||
/// Get the selected package, T should be the same type used for showData
|
||||
@@ -43,6 +46,9 @@ class PackageList : public GalleryList {
|
||||
return ret;
|
||||
}
|
||||
|
||||
/// Select the package with the given name, if it is not found, selects nothing
|
||||
void select(const String& name);
|
||||
|
||||
protected:
|
||||
/// Return how many items there are in the list
|
||||
virtual size_t itemCount() const;
|
||||
|
||||
Reference in New Issue
Block a user