* open jackpanel as jackpanel-applet slave window
[jackpanel.git] / jackpanel / MiniDisplay.vala
blob0e4fe218547be7882d5a7af76fb498d6a557bd2e
1 using Gtk;
2 using Gdk;
3 using Prolooks;
5 namespace Jackpanel {
7 public class MiniDisplay : PanelDisplayBase {
8 private DisplayState display_state = DisplayState.TIME;
11 public enum DisplayState {
12 TIME = 0,
13 TIME_ALT,
14 ENUM_END
17 protected override void redraw_time () {
18 if (display_state == DisplayState.TIME) queue_draw ();
21 protected override void redraw_time_alt () {
22 if (display_state == DisplayState.TIME_ALT) queue_draw ();
25 public MiniDisplay () {
26 width = 69;
27 height = 25;
28 time = "00:00:00";
29 set_size_request (width, height);
33 protected override bool draw_contents (Cairo.Context cr, Gdk.EventExpose event) {
34 double padding = 3;
35 double font_size = 16;
36 double smaller_font_size = font_size - 4;
37 double x = 0;
38 double y = smaller_font_size - padding + 1.0;
40 if (xruns > 0) {
41 string xruns_str = "X: %u".printf (xruns);
42 text (cr, xruns_str, padding + x, y, smaller_font_size, "#ff0000");
43 } else switch (display_state) {
44 case DisplayState.TIME:
45 // show time text
46 text (cr, time, padding + x, y, smaller_font_size);
47 break;
48 case DisplayState.TIME_ALT:
49 text (cr, time_alt, padding + x, y, smaller_font_size);
50 break;
51 default:
52 assert_not_reached ();
53 break;
56 return true;
59 public signal void double_click ();
61 public override bool button_press_event (Gdk.EventButton event) {
62 if (event.type == EventType.2BUTTON_PRESS) {
63 double_click ();
66 if (event.type == EventType.BUTTON_PRESS) {
67 short disp_state = (short)display_state;
68 if (xruns > 0) {
69 reset_xruns_requested ();
70 xruns = 0;
71 } else {
72 display_state = (DisplayState) ((++disp_state) % (short) DisplayState.ENUM_END);
73 //new MessageDialog (null, DialogFlags.MODAL, MessageType.INFO, ButtonsType.CLOSE, "display state: %d", (int)display_state);
76 return true;
79 return false;
84 } //namespace Jackpanel