mirror of
https://github.com/wesnoth/wesnoth
synced 2025-05-08 19:29:04 +00:00
Add-on manager: add an update button to the main panel
This commit is contained in:
parent
672ac59dae
commit
0d6f7de167
@ -183,14 +183,54 @@
|
|||||||
|
|
||||||
[column]
|
[column]
|
||||||
grow_factor = 1
|
grow_factor = 1
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "center"
|
horizontal_alignment = "center"
|
||||||
|
|
||||||
[button]
|
[stacked_widget]
|
||||||
id = "install"
|
id = "install_update_stack"
|
||||||
definition = "addon_install"
|
|
||||||
[/button]
|
[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]
|
[/column]
|
||||||
|
|
||||||
|
@ -396,6 +396,14 @@ void addon_manager::pre_show(window& window)
|
|||||||
find_widget<button>(&window, "uninstall", false),
|
find_widget<button>(&window, "uninstall", false),
|
||||||
std::bind(&addon_manager::uninstall_selected_addon, this, std::ref(window)));
|
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(
|
connect_signal_mouse_left_click(
|
||||||
find_widget<button>(&window, "publish", false),
|
find_widget<button>(&window, "publish", false),
|
||||||
std::bind(&addon_manager::publish_selected_addon, this, std::ref(window)));
|
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 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);
|
stacked_widget& action_stack = find_widget<stacked_widget>(&window, "action_stack", false);
|
||||||
|
|
||||||
if(!tracking_info_[info->id].can_publish) {
|
if(!tracking_info_[info->id].can_publish) {
|
||||||
action_stack.select_layer(0);
|
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);
|
find_widget<button>(&window, "uninstall", false).set_active(installed);
|
||||||
} else {
|
} else {
|
||||||
action_stack.select_layer(1);
|
action_stack.select_layer(1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user