Meta: Add files to repository
This commit is contained in:
parent
80a0428b66
commit
39198164cd
1029 changed files with 78311 additions and 0 deletions
100
Applications/Accessories/Calculator.app/Run.HC
Normal file
100
Applications/Accessories/Calculator.app/Run.HC
Normal file
|
@ -0,0 +1,100 @@
|
|||
Gui.App();
|
||||
|
||||
#define CALC_OP_ADD 0
|
||||
#define CALC_OP_SUB 1
|
||||
#define CALC_OP_MUL 2
|
||||
#define CALC_OP_DIV 3
|
||||
|
||||
class @calc_entry
|
||||
{
|
||||
I64 op;
|
||||
F64 entry;
|
||||
};
|
||||
|
||||
Window* win = NULL;
|
||||
TextInputWidget* result = NULL;
|
||||
|
||||
U8* calc_font = "Eight Bit Dragon";
|
||||
U8* @calc_button_label[27] = { "Back", "CE", "C", "MC", "7", "8", "9",
|
||||
"/", "sqrt", "MR", "4", "5", "6", "*",
|
||||
"%", "MS", "1", "2", "3", "-", "1/x",
|
||||
"M+", "0", "+/-", ".", "+", "=" };
|
||||
|
||||
U0 @calc_keypress_callback(Window*, I64 key)
|
||||
{
|
||||
if (win != Compositor.active_win)
|
||||
return;
|
||||
U8* res_text = result->text;
|
||||
switch (ScanCode2Char(key)) {
|
||||
case '0' ... '9':
|
||||
StrPrint(res_text + StrLen(res_text), "%c", ScanCode2Char(key));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
U0 @calc_btn_callback(ButtonWidget* widget)
|
||||
{
|
||||
U8* res_text = result->text;
|
||||
if (Str2I64(widget->text)) {
|
||||
StrCpy(res_text + StrLen(res_text), widget->text);
|
||||
}
|
||||
if (!StrCmp(widget->text, "0"))
|
||||
StrCpy(res_text + StrLen(res_text), widget->text);
|
||||
}
|
||||
|
||||
U0 window_close(Window* win)
|
||||
{
|
||||
if (win == Compositor.active_win)
|
||||
Gui.Window.SetFocus(Compositor.GetWindowByTitle("Wallpaper"));
|
||||
Compositor.UnregisterForGlobalInputEvents(win);
|
||||
Compositor.DestroyWindow(win);
|
||||
}
|
||||
|
||||
U0 Main()
|
||||
{
|
||||
I64 i;
|
||||
I64 j;
|
||||
I64 k;
|
||||
U64 flags = WIN_FLAGS_DEFAULT;
|
||||
flags &= ~WIN_FLAGS_RESIZABLE;
|
||||
flags &= ~WIN_FLAGS_MAX_BUTTON;
|
||||
win = Compositor.CreateWindow(224, 224, 233, 240, flags);
|
||||
Gui.Window.SetTitle(win, "Calculator");
|
||||
Compositor.RegisterForGlobalInputEvents(win);
|
||||
Gui.Window.SetIcon(win, Image.FileToContext2D("window_icon_16x16.png"));
|
||||
Gui.Window.SetFocus(win);
|
||||
Gui.Window.SetCallback(win, "close", &window_close);
|
||||
Gui.Window.SetCallback(win, "keypress", &@calc_keypress_callback);
|
||||
|
||||
result = Gui.CreateWidget(win, WIDGET_TYPE_INPUT, 4, 4, 246, 24);
|
||||
Gui.Widget.SetFont(result, calc_font);
|
||||
|
||||
ButtonWidget* calc_btn[27];
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (i < 3) {
|
||||
calc_btn[i] = Gui.CreateWidget(win, WIDGET_TYPE_BUTTON, 46 + (60 * i), 32, 56, 32);
|
||||
calc_btn[i]->color = Color(255, 0, 0);
|
||||
Gui.Widget.SetText(calc_btn[i], @calc_button_label[i]);
|
||||
Gui.Widget.SetFont(calc_btn[i], calc_font);
|
||||
Gui.Widget.SetCallback(calc_btn[i], "clicked", &@calc_btn_callback);
|
||||
}
|
||||
j = 3 + (6 * i);
|
||||
calc_btn[j] = Gui.CreateWidget(win, WIDGET_TYPE_BUTTON, 4, 68 + (36 * i), 32, 32);
|
||||
calc_btn[j]->color = Color(255, 0, 0);
|
||||
Gui.Widget.SetText(calc_btn[j], @calc_button_label[j]);
|
||||
Gui.Widget.SetFont(calc_btn[j], calc_font);
|
||||
Gui.Widget.SetCallback(calc_btn[j], "clicked", &@calc_btn_callback);
|
||||
for (k = 1; k < 6; k++) {
|
||||
calc_btn[j + k] = Gui.CreateWidget(win, WIDGET_TYPE_BUTTON, 10 + (36 * k),
|
||||
68 + (36 * i), 32, 32);
|
||||
calc_btn[j + k]->color = T(k == 4 || k == 5 && i == 3, Color(255, 0, 0), Color(0, 0, 255));
|
||||
Gui.Widget.SetText(calc_btn[j + k], @calc_button_label[j + k]);
|
||||
Gui.Widget.SetFont(calc_btn[j + k], calc_font);
|
||||
Gui.Widget.SetCallback(calc_btn[j + k], "clicked", &@calc_btn_callback);
|
||||
}
|
||||
}
|
||||
Suspend;
|
||||
}
|
||||
|
||||
Main;
|
BIN
Applications/Accessories/Calculator.app/window_icon_16x16.png
Normal file
BIN
Applications/Accessories/Calculator.app/window_icon_16x16.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 619 B |
Loading…
Add table
Add a link
Reference in a new issue