display addon versions as a dropdown list

This commit is contained in:
kabachuha 2020-11-08 23:40:46 +03:00
parent 4e66d0a7f1
commit ec19ddd1db
2 changed files with 20 additions and 11 deletions

View file

@ -125,16 +125,13 @@
[column]
border = "left,top,bottom"
border_size = 5
horizontal_alignment = "left"
[scroll_label]
id = "version"
definition = "default_small"
horizontal_scrollbar_mode = "never"
vertical_scrollbar_mode = "never"
[/scroll_label]
horizontal_alignment = "right"
[menu_button]
id = "version_filter"
definition = "default"
tooltip = _"Select the add-on version"
[/menu_button]
[/column]
[/row]

View file

@ -885,7 +885,7 @@ void addon_manager::on_addon_select(window& window)
find_widget<styled_widget>(parent, "title", false).set_label(info->display_title_translated_or_original());
find_widget<styled_widget>(parent, "description", false).set_label(info->description_translated());
find_widget<styled_widget>(parent, "version", false).set_label(info->version.str());
menu_button& version_filter = find_widget<menu_button>(parent, "version_filter", false);
find_widget<styled_widget>(parent, "author", false).set_label(info->author);
find_widget<styled_widget>(parent, "type", false).set_label(info->display_type());
@ -929,6 +929,8 @@ void addon_manager::on_addon_select(window& window)
bool updatable = tracking_info_[info->id].state == ADDON_INSTALLED_UPGRADABLE;
stacked_widget& action_stack = find_widget<stacked_widget>(parent, "action_stack", false);
// #TODO: Add tooltips with upload time and pack size
std::vector<config> version_filter_entries;
if(!tracking_info_[info->id].can_publish) {
action_stack.select_layer(0);
@ -943,13 +945,23 @@ void addon_manager::on_addon_select(window& window)
}
find_widget<button>(parent, "uninstall", false).set_active(installed);
for(const auto& f : info->versions) {
version_filter_entries.emplace_back("label", f.str());
}
version_filter.set_active(true);
} else {
action_stack.select_layer(1);
// Always enable the publish button, but disable the delete button if not yet published.
find_widget<button>(parent, "publish", false).set_active(true);
find_widget<button>(parent, "delete", false).set_active(!info->local_only);
// Show only the version to be published
version_filter_entries.emplace_back("label", info->current_version.str());
version_filter.set_active(false);
}
version_filter.set_values(version_filter_entries);
}
bool addon_manager::exit_hook(window& window)