Fix #25: Program throws exception when clicking on the 'stylesheet' list if there are no stylesheets.

git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1450 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
twanvl
2010-07-21 18:37:47 +00:00
parent f88d92acab
commit 854998f204
3 changed files with 7 additions and 1 deletions
+5
View File
@@ -37,6 +37,11 @@ class GalleryList : public wxPanel {
void select(size_t item, size_t subcol = NO_SELECTION, bool event = true);
/// Is there an item selected?
inline bool hasSelection(size_t subcol = 0) const { return subcolumns[subcol].selection < itemCount(); }
/// Get the id of the selected item, throws if there is no selection
inline size_t getSelectionId(size_t subcol = 0) const {
if (!hasSelection(subcol)) throw Error(_("No selection"));
return subcolumns[subcol].selection;
}
/// Is the given item selected?
inline bool isSelected(size_t item, size_t subcol = 0) const {
return subcol < subcolumns.size() && subcolumns[subcol].selection == item;
+1 -1
View File
@@ -39,7 +39,7 @@ class PackageList : public GalleryList {
* Throws if the selection is not of type T */
template <typename T>
intrusive_ptr<T> getSelection(bool load_fully = true) const {
intrusive_ptr<T> ret = dynamic_pointer_cast<T>(packages.at(subcolumns[0].selection).package);
intrusive_ptr<T> ret = dynamic_pointer_cast<T>(packages.at(getSelectionId()).package);
if (!ret) throw InternalError(_("PackageList: Selected package has the wrong type"));
if (load_fully) ret->loadFully();
return ret;
+1
View File
@@ -90,6 +90,7 @@ void NewSetWindow::OnOK(wxCommandEvent&) {
void NewSetWindow::done() {
try {
if (!stylesheet_list->hasSelection()) return;
StyleSheetP stylesheet = stylesheet_list->getSelection<StyleSheet>();
set = intrusive(new Set(stylesheet));
set->validate();