[gnome-mines] Use a single button for play, pause, and restart
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-mines] Use a single button for play, pause, and restart
- Date: Tue, 21 Jan 2014 04:08:53 +0000 (UTC)
commit 255cf69dd87de7ffcd60e72ddbdaac146cfdf264
Author: Michael Catanzaro <mcatanzaro gnome org>
Date: Mon Jan 20 21:32:20 2014 -0600
Use a single button for play, pause, and restart
src/gnome-mines.vala | 60 +++++++++++++++++++++++++-------------------------
src/minefield.vala | 2 +
2 files changed, 32 insertions(+), 30 deletions(-)
---
diff --git a/src/gnome-mines.vala b/src/gnome-mines.vala
index ab8409a..e5587d6 100644
--- a/src/gnome-mines.vala
+++ b/src/gnome-mines.vala
@@ -25,9 +25,8 @@ public class Mines : Gtk.Application
private const string KEY_USE_AUTOFLAG = "use-autoflag";
private Gtk.Box buttons_box;
- private Gtk.Button new_game_button;
- private Gtk.Button pause_button;
- private Gtk.Image pause_image;
+ private Gtk.Button play_pause_button;
+ private Gtk.Image play_pause_image;
private Gtk.Label clock_label;
private Gtk.Button hint_button;
@@ -190,30 +189,19 @@ public class Mines : Gtk.Application
buttons_box.pack_start (hint_button, false, false, 0);
size.add_widget (hint_button);
- pause_button = new Gtk.Button ();
+ play_pause_button = new Gtk.Button ();
box = new Gtk.Box (Gtk.Orientation.VERTICAL, 2);
- pause_image = new Gtk.Image.from_icon_name ("media-playback-pause-symbolic", Gtk.IconSize.DND);
- box.pack_start (pause_image);
+ play_pause_image = new Gtk.Image.from_icon_name ("view-refresh-symbolic", Gtk.IconSize.DND);
+ box.pack_start (play_pause_image);
clock_label = new Gtk.Label ("");
box.pack_start (clock_label);
- pause_button.add (box);
- pause_button.valign = Gtk.Align.CENTER;
- pause_button.halign = Gtk.Align.CENTER;
- pause_button.relief = Gtk.ReliefStyle.NONE;
- pause_button.action_name = "app.pause";
- buttons_box.pack_start (pause_button, false, false, 0);
- size.add_widget (pause_button);
-
- new_game_button = new Gtk.Button ();
- image = new Gtk.Image.from_icon_name ("view-refresh-symbolic", Gtk.IconSize.DND);
- new_game_button.add (image);
- new_game_button.valign = Gtk.Align.CENTER;
- new_game_button.halign = Gtk.Align.CENTER;
- new_game_button.relief = Gtk.ReliefStyle.NONE;
- new_game_button.action_name = "app.new-game";
- buttons_box.pack_end (new_game_button, false, false, 0);
- size.add_widget (new_game_button);
-
+ play_pause_button.add (box);
+ play_pause_button.valign = Gtk.Align.CENTER;
+ play_pause_button.halign = Gtk.Align.CENTER;
+ play_pause_button.relief = Gtk.ReliefStyle.NONE;
+ play_pause_button.action_name = "app.new-game";
+ buttons_box.pack_end (play_pause_button, false, false, 0);
+ size.add_widget (play_pause_button);
}
private void startup_new_game_screen ()
@@ -495,6 +483,9 @@ public class Mines : Gtk.Application
new_game_screen.show ();
window.resize (window_width, window_height);
+ play_pause_button.action_name = "app.new-game";
+ play_pause_image.icon_name = "view-refresh-symbolic";
+
new_game_action.set_enabled (false);
hint_action.set_enabled (false);
pause_action.set_enabled (false);
@@ -547,14 +538,15 @@ public class Mines : Gtk.Application
minefield.cleared.connect (cleared_cb);
minefield.tick.connect (tick_cb);
minefield.paused_changed.connect (paused_changed_cb);
+ minefield.clock_started.connect (clock_started_cb);
minefield_view.minefield = minefield;
update_flag_label ();
new_game_action.set_enabled (true);
- hint_action.set_enabled (true);
pause_action.set_enabled (true);
+ hint_action.set_enabled (true);
minefield.paused = false;
pause_requested = false;
@@ -590,16 +582,16 @@ public class Mines : Gtk.Application
{
hint_action.set_enabled (false);
- if (pause_button.get_direction () == Gtk.TextDirection.RTL)
- pause_image.icon_name = "media-playback-start-rtl-symbolic";
+ if (play_pause_button.get_direction () == Gtk.TextDirection.RTL)
+ play_pause_image.icon_name = "media-playback-start-rtl-symbolic";
else
- pause_image.icon_name = "media-playback-start-symbolic";
+ play_pause_image.icon_name = "media-playback-start-symbolic";
}
- else
+ else if (minefield.elapsed > 0)
{
hint_action.set_enabled (true);
- pause_image.icon_name = "media-playback-pause-symbolic";
+ play_pause_image.icon_name = "media-playback-pause-symbolic";
}
}
@@ -610,6 +602,8 @@ public class Mines : Gtk.Application
private void explode_cb (Minefield minefield)
{
+ play_pause_button.action_name = "app.new-game";
+ play_pause_image.icon_name = "view-refresh-symbolic";
hint_action.set_enabled (false);
pause_action.set_enabled (false);
}
@@ -631,6 +625,12 @@ public class Mines : Gtk.Application
}
}
+ private void clock_started_cb ()
+ {
+ play_pause_image.icon_name = "media-playback-pause-symbolic";
+ play_pause_button.action_name = "app.pause";
+ }
+
private void tick_cb ()
{
var elapsed = 0;
diff --git a/src/minefield.vala b/src/minefield.vala
index 8e97cdd..62117f9 100644
--- a/src/minefield.vala
+++ b/src/minefield.vala
@@ -121,6 +121,7 @@ public class Minefield
get { return _paused; }
}
+ public signal void clock_started ();
public signal void paused_changed ();
public signal void tick ();
@@ -395,6 +396,7 @@ public class Minefield
{
if (clock == null)
clock = new Timer ();
+ clock_started ();
timeout_cb ();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]