Add-on manager: add an update button to the main panel
This commit is contained in:
parent
672ac59dae
commit
0d6f7de167
2 changed files with 64 additions and 7 deletions
|
@ -183,14 +183,54 @@
|
|||
|
||||
[column]
|
||||
grow_factor = 1
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "center"
|
||||
|
||||
[button]
|
||||
id = "install"
|
||||
definition = "addon_install"
|
||||
[/button]
|
||||
[stacked_widget]
|
||||
id = "install_update_stack"
|
||||
|
||||
[layer]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 1
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "center"
|
||||
|
||||
[button]
|
||||
id = "install"
|
||||
definition = "addon_install"
|
||||
[/button]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[/layer]
|
||||
|
||||
[layer]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 1
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "center"
|
||||
|
||||
[button]
|
||||
id = "update"
|
||||
definition = "addon_upgrade"
|
||||
[/button]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[/layer]
|
||||
|
||||
[/stacked_widget]
|
||||
|
||||
[/column]
|
||||
|
||||
|
|
|
@ -396,6 +396,14 @@ void addon_manager::pre_show(window& window)
|
|||
find_widget<button>(&window, "uninstall", false),
|
||||
std::bind(&addon_manager::uninstall_selected_addon, this, std::ref(window)));
|
||||
|
||||
// Make the update button temporarily accessible.
|
||||
find_widget<stacked_widget>(&window, "install_update_stack", false).select_layer(1);
|
||||
connect_signal_mouse_left_click(
|
||||
find_widget<button>(&window, "update", false),
|
||||
std::bind(&addon_manager::update_selected_addon, this, std::ref(window)));
|
||||
// Revert the above change for good measure.
|
||||
find_widget<stacked_widget>(&window, "install_update_stack", false).select_layer(0);
|
||||
|
||||
connect_signal_mouse_left_click(
|
||||
find_widget<button>(&window, "publish", false),
|
||||
std::bind(&addon_manager::publish_selected_addon, this, std::ref(window)));
|
||||
|
@ -768,13 +776,22 @@ void addon_manager::on_addon_select(window& window)
|
|||
}
|
||||
|
||||
bool installed = is_installed_addon_status(tracking_info_[info->id].state);
|
||||
bool updatable = tracking_info_[info->id].state == ADDON_INSTALLED_UPGRADABLE;
|
||||
|
||||
stacked_widget& action_stack = find_widget<stacked_widget>(&window, "action_stack", false);
|
||||
|
||||
if(!tracking_info_[info->id].can_publish) {
|
||||
action_stack.select_layer(0);
|
||||
|
||||
find_widget<button>(&window, "install", false).set_active(!installed);
|
||||
stacked_widget& install_update_stack = find_widget<stacked_widget>(&window, "install_update_stack", false);
|
||||
install_update_stack.select_layer(updatable ? 1 : 0);
|
||||
|
||||
if(!updatable) {
|
||||
find_widget<button>(&window, "install", false).set_active(!installed);
|
||||
} else {
|
||||
find_widget<button>(&window, "update", false).set_active(true);
|
||||
}
|
||||
|
||||
find_widget<button>(&window, "uninstall", false).set_active(installed);
|
||||
} else {
|
||||
action_stack.select_layer(1);
|
||||
|
|
Loading…
Add table
Reference in a new issue