Skip to content

Commit

Permalink
Add-on manager: add an update button to the main panel
Browse files Browse the repository at this point in the history
  • Loading branch information
jyrkive committed Mar 11, 2017
1 parent 672ac59 commit 0d6f7de
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 7 deletions.
52 changes: 46 additions & 6 deletions data/gui/window/addon_manager.cfg
Expand Up @@ -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]

Expand Down
19 changes: 18 additions & 1 deletion src/gui/dialogs/addon/manager.cpp
Expand Up @@ -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)));
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 0d6f7de

Please sign in to comment.