cleaned all trailing white space from source files.
[sdk] / samples / guiAndGfx / reminder / Reminder.ec
1 import "ecere"
2 import "timeAddendum"
3
4 class ReminderWindow : Window
5 {
6    text = "Reminder";
7    background = activeBorder;
8    borderStyle = sizable;
9    hasMinimize = true;
10    hasClose = true;
11    stayOnTop = true;
12    size = { 480, 200 };
13    minClientSize = { 360, 100 };
14
15    Time lastTime;
16    Seconds delay;
17    property Seconds delay
18    {
19       set
20       {
21          char s[MAX_F_STRING];
22          char msg[MAX_F_STRING];
23          Minutes minutes = value;
24          minutes.ToString(s, class(Seconds));
25          sprintf(msg, "Remind Me Delay: %s", s);
26          note.text = msg;
27          delay = value;
28       }
29    }
30
31    bool OnPostCreate()
32    {
33       char unescaped[16384];
34       if(app.argc > 1)
35       {
36          struscpy(unescaped, app.argv[1]);
37          message.contents = unescaped;
38       }
39
40       if(app.argc > 2)
41          property::delay = atoi(app.argv[2]);
42       else
43          property::delay = 3;
44
45       if(app.argc > 3)
46          text = app.argv[3];
47
48       return true;
49    }
50
51    Label note { this, text = "Note", position = { 16, 160 }, anchor = { left = 10, bottom = 10 } };
52    Button remindMe
53    {
54       this, caption = "Remind Me", escape, anchor = { right = 54, bottom = 10 };
55
56       bool NotifyClicked(Button button, int x, int y, Modifiers mods)
57       {
58          char s[MAX_F_STRING];
59          char msg[MAX_F_STRING];
60          Minutes minutes = delay;
61          minutes.ToString(s, class(Seconds));
62          sprintf(msg, "You will be reminded in %s", s);
63          if(MessageBox { parent = this, master = this, type = okCancel, text = "Remind Me", contents = msg }.Modal() == ok)
64          {
65             lastTime = GetTime();
66             timer.Start();
67             state = minimized;
68          }
69          return true;
70       }
71    };
72    Button done
73    {
74       this, text = "Done", anchor = { right = 10, bottom = 10 };
75
76       bool NotifyClicked(Button button, int x, int y, Modifiers mods)
77       {
78          if(MessageBox { parent = this, master = this, type = yesNo, text = "Done", contents = "Are you sure that you're done with this reminder?" }.Modal() == yes)
79          {
80             Destroy(0); //ButtonCloseDialog(button, x, y, mods);
81          }
82          return true;
83       }
84    };
85    EditBox message { this, text = "Message", anchor = { left = 8, top = 8, right = 8, bottom = 40 }, readOnly = true, multiLine = true, noCaret = true, borderStyle = none };
86    Timer timer
87    {
88       delay = 5;
89
90       bool DelayExpired()
91       {
92          Time now = GetTime();
93          if(now - reminderWindow.lastTime > reminderWindow.delay)
94          {
95             reminderWindow.state = normal;
96             reminderWindow.Activate();
97             reminderWindow.timer.Stop();
98          }
99          return true;
100       }
101    }
102 }
103
104 ReminderWindow reminderWindow { };
105
106 class ReminderApp : GuiApplication
107 {
108    //skin = "Acovel";
109 }
110
111 define app = ((ReminderApp)__thisModule);
112
113 static void struscpy(char * d, char * s)
114 {
115    int j, k;
116    j = k = 0;
117    while(s[j])
118    {
119       switch(s[j])
120       {
121          case '\\':
122             switch(s[++j])
123             {
124                case 'n':
125                   d[k] = '\n';
126                   break;
127                case 't':
128                   d[k] = '\t';
129                   break;
130                case 'a':
131                   d[k] = '\a';
132                   break;
133                case 'b':
134                   d[k] = '\b';
135                   break;
136                case 'f':
137                   d[k] = '\f';
138                   break;
139                case 'r':
140                   d[k] = '\r';
141                   break;
142                case 'v':
143                   d[k] = '\v';
144                   break;
145                case '\\':
146                   d[k] = '\\';
147                   break;
148                case '\"':
149                   d[k] = '\"';
150                   break;
151                default:
152                   d[k] = '\\';
153                   d[++k] = s[j];
154             }
155             break;
156          default:
157             d[k] = s[j];
158       }
159       ++j;
160       ++k;
161    }
162    d[k] = s[j];
163 }
164