[gnome-nibbles/arnaudb/modernize-code: 45/58] Use GAction for number of players.
- From: Arnaud B. <arnaudb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-nibbles/arnaudb/modernize-code: 45/58] Use GAction for number of players.
- Date: Wed, 10 Jun 2020 17:16:43 +0000 (UTC)
commit b50ea8494dc260c9f558f1498bb5f5eea2ed57e1
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date: Sun May 31 21:07:49 2020 +0200
Use GAction for number of players.
data/nibbles.css | 4 +++
data/nibbles.ui | 13 +++++++-
src/nibbles-window.vala | 81 ++++++++-----------------------------------------
3 files changed, 29 insertions(+), 69 deletions(-)
---
diff --git a/data/nibbles.css b/data/nibbles.css
index 3591183..0cc9a22 100644
--- a/data/nibbles.css
+++ b/data/nibbles.css
@@ -17,6 +17,10 @@
font-family: Sans;
padding: 1px 38px;
background-image: linear-gradient(to bottom, #3e4444);
+ color:@theme-fg-color;
+}
+.number-box:disabled {
+ color:@theme-fg-color;
}
.number-box:hover {
background-image: linear-gradient(to bottom, rgba(60, 69, 71, 0.8));
diff --git a/data/nibbles.ui b/data/nibbles.ui
index 033ec48..3d9ba4a 100644
--- a/data/nibbles.ui
+++ b/data/nibbles.ui
@@ -213,7 +213,9 @@
<property name="visible">True</property>
<property name="use-underline">True</property>
<property name="label">_1</property>
- <property name="active">True</property>
+ <property name="action-name">win.change-humans-number</property>
+ <property name="action-target">@i 1</property>
+ <property name="sensitive" bind-source="players1" bind-property="active"
bind-flags="invert-boolean"/>
<style>
<class name="number-box"/>
</style>
@@ -227,6 +229,9 @@
<property name="visible">True</property>
<property name="use-underline">True</property>
<property name="label">_2</property>
+ <property name="action-name">win.change-humans-number</property>
+ <property name="action-target">@i 2</property>
+ <property name="sensitive" bind-source="players2" bind-property="active"
bind-flags="invert-boolean"/>
<style>
<class name="number-box"/>
</style>
@@ -240,6 +245,9 @@
<property name="visible">True</property>
<property name="use-underline">True</property>
<property name="label">_3</property>
+ <property name="action-name">win.change-humans-number</property>
+ <property name="action-target">@i 3</property>
+ <property name="sensitive" bind-source="players3" bind-property="active"
bind-flags="invert-boolean"/>
<style>
<class name="number-box"/>
</style>
@@ -253,6 +261,9 @@
<property name="visible">True</property>
<property name="use-underline">True</property>
<property name="label">_4</property>
+ <property name="action-name">win.change-humans-number</property>
+ <property name="action-target">@i 4</property>
+ <property name="sensitive" bind-source="players4" bind-property="active"
bind-flags="invert-boolean"/>
<style>
<class name="number-box"/>
</style>
diff --git a/src/nibbles-window.vala b/src/nibbles-window.vala
index d08cca6..403c652 100644
--- a/src/nibbles-window.vala
+++ b/src/nibbles-window.vala
@@ -41,12 +41,7 @@ private class NibblesWindow : ApplicationWindow
[GtkChild] private Button pause_button;
/* Pre-game screen widgets */
- private Gee.LinkedList<ToggleButton> number_of_players_buttons;
private Gee.LinkedList<ToggleButton> number_of_ai_buttons;
- [GtkChild] private ToggleButton players1;
- [GtkChild] private ToggleButton players2;
- [GtkChild] private ToggleButton players3;
- [GtkChild] private ToggleButton players4;
[GtkChild] private ToggleButton ai0;
[GtkChild] private ToggleButton ai1;
[GtkChild] private ToggleButton ai2;
@@ -100,6 +95,7 @@ private class NibblesWindow : ApplicationWindow
{"preferences", preferences_cb},
{"scores", scores_cb},
+ {"change-humans-number", null, "i", "1", change_humans_number },
{"show-new-game-screen", show_new_game_screen_cb},
{"show-controls-screen", show_controls_screen_cb},
{"back", back_cb}
@@ -132,16 +128,6 @@ private class NibblesWindow : ApplicationWindow
key_controller = new EventControllerKey (this);
key_controller.key_pressed.connect (key_press_event_cb);
- number_of_players_buttons = new Gee.LinkedList<ToggleButton> ();
- players1.toggled.connect (change_number_of_players_cb);
- number_of_players_buttons.add (players1);
- players2.toggled.connect (change_number_of_players_cb);
- number_of_players_buttons.add (players2);
- players3.toggled.connect (change_number_of_players_cb);
- number_of_players_buttons.add (players3);
- players4.toggled.connect (change_number_of_players_cb);
- number_of_players_buttons.add (players4);
-
number_of_ai_buttons = new Gee.LinkedList<ToggleButton> ();
ai0.toggled.connect (change_number_of_ai_cb);
number_of_ai_buttons.add (ai0);
@@ -187,6 +173,7 @@ private class NibblesWindow : ApplicationWindow
/* Number of worms */
game.numhumans = settings.get_int ("players");
game.numai = settings.get_int ("ai");
+ ((SimpleAction) lookup_action ("change-humans-number")).set_state (game.numhumans);
/* Controls screen */
arrow_pixbuf = NibblesView.load_pixmap_file ("arrow.svg", 5 * view.tile_size, 5 * view.tile_size);
@@ -484,7 +471,6 @@ private class NibblesWindow : ApplicationWindow
new_game_button.hide ();
pause_button.hide ();
- number_of_players_buttons[game.numhumans - 1].set_active (true);
number_of_ai_buttons[game.numai].set_active (true);
set_default (next_button);
@@ -496,21 +482,6 @@ private class NibblesWindow : ApplicationWindow
private void show_controls_screen_cb ()
{
- /* Save selected number of players before changing the screen */
- foreach (var button in number_of_players_buttons)
- {
- if (button.get_active ())
- {
- int numhumans = -1;
- button.get_label ().scanf ("_%d", &numhumans);
- game.numhumans = numhumans;
-
- /* Remember the option for the following runs */
- settings.set_int ("players", game.numhumans);
- break;
- }
- }
-
/* Save selected number of computer players before changing the screen */
foreach (var button in number_of_ai_buttons)
{
@@ -588,43 +559,17 @@ private class NibblesWindow : ApplicationWindow
main_stack.set_transition_type (StackTransitionType.SLIDE_UP);
}
- private void change_number_of_players_cb (ToggleButton button)
+ private inline void change_humans_number (SimpleAction action, Variant variant)
{
- var is_same_button = true;
- foreach (var other_button in number_of_players_buttons)
- {
- if (button != other_button)
- {
- if (other_button.get_active ())
- {
- /* We are blocking the signal to prevent another callback when setting the previous
- * checked button to inactive
- */
- SignalHandler.block_matched (other_button, SignalMatchType.DATA, 0, 0, null, null, this);
- other_button.set_active (false);
- SignalHandler.unblock_matched (other_button, SignalMatchType.DATA, 0, 0, null, null,
this);
- is_same_button = false;
- break;
- }
- }
- }
-
- /* Ignore clicks on the same button. */
- if (is_same_button)
- {
- SignalHandler.block_matched (button, SignalMatchType.DATA, 0, 0, null, null, this);
- button.set_active (true);
- SignalHandler.unblock_matched (button, SignalMatchType.DATA, 0, 0, null, null, this);
- return;
- }
-
- button.set_active (true);
-
- int numhumans = -1;
- button.get_label ().scanf ("_%d", &numhumans);
-
- int min_ai = 4 - numhumans;
- int max_ai = NibblesGame.MAX_WORMS - numhumans;
+ int humans_number = variant.get_int32 ();
+ if (humans_number < 1 || humans_number > 4)
+ assert_not_reached ();
+ action.set_state (humans_number);
+ game.numhumans = humans_number;
+ settings.set_int ("players", humans_number);
+
+ int min_ai = 4 - humans_number;
+ int max_ai = NibblesGame.MAX_WORMS - humans_number;
for (int i = 0; i < min_ai; i++)
{
number_of_ai_buttons[i].hide ();
@@ -638,7 +583,7 @@ private class NibblesWindow : ApplicationWindow
number_of_ai_buttons[i].hide ();
}
- if (numhumans == 4)
+ if (humans_number == 4)
{
number_of_ai_buttons[0].show ();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]