mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-10 04:57:00 -04:00
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:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user