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:
twanvl
2006-10-20 20:02:30 +00:00
parent 77d255ee8e
commit 46cf4dbb64
17 changed files with 259 additions and 25 deletions
+2 -2
View File
@@ -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 {
+12 -2
View File
@@ -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)
+12
View File
@@ -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
+18
View File
@@ -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;
}
+7 -1
View File
@@ -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;