From 0264e7ce0725591700a0aca6f3e069fe0b44a809 Mon Sep 17 00:00:00 2001 From: James <86387140+Gad-James@users.noreply.github.com> Date: Tue, 26 Mar 2024 11:25:53 +1000 Subject: [PATCH] ok --- LICENSE | 21 +++ example.c | 101 ++++++++++++++ icon.ico | Bin 0 -> 370070 bytes icon.png | Bin 0 -> 370070 bytes pf.ico | Bin 0 -> 370070 bytes pf.png | Bin 0 -> 370070 bytes stats.c | 66 +++++++++ sync2git.bat | 5 +- systray.c | 4 + tray.h | 370 +++++++++++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 565 insertions(+), 2 deletions(-) create mode 100644 LICENSE create mode 100644 example.c create mode 100644 icon.ico create mode 100644 icon.png create mode 100644 pf.ico create mode 100644 pf.png create mode 100644 stats.c create mode 100644 systray.c create mode 100644 tray.h diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b18604b --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Serge Zaitsev + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/example.c b/example.c new file mode 100644 index 0000000..c42ffe2 --- /dev/null +++ b/example.c @@ -0,0 +1,101 @@ +#include +#include + +#if defined (_WIN32) || defined (_WIN64) +#define TRAY_WINAPI 1 +#elif defined (__linux__) || defined (linux) || defined (__linux) +#define TRAY_APPINDICATOR 1 +#elif defined (__APPLE__) || defined (__MACH__) +#define TRAY_APPKIT 1 +#endif + +#include "tray.h" + +#if TRAY_APPINDICATOR +#define TRAY_ICON1 "indicator-messages" +#define TRAY_ICON2 "indicator-messages-new" +#elif TRAY_APPKIT +#define TRAY_ICON1 "icon.png" +#define TRAY_ICON2 "icon.png" +#elif TRAY_WINAPI +#define TRAY_ICON1 "icon.ico" +#define TRAY_ICON2 "icon.ico" +#endif + +static struct tray tray; + +static void toggle_cb(struct tray_menu *item) { + printf("toggle cb\n"); + item->checked = !item->checked; + tray_update(&tray); +} + +static void hello_cb(struct tray_menu *item) { + (void)item; + printf("hello cb\n"); + if (strcmp(tray.icon, TRAY_ICON1) == 0) { + tray.icon = TRAY_ICON2; + } else { + tray.icon = TRAY_ICON1; + } + tray_update(&tray); +} + +static void quit_cb(struct tray_menu *item) { + (void)item; + printf("quit cb\n"); + tray_exit(); +} + +static void submenu_cb(struct tray_menu *item) { + (void)item; + printf("submenu: clicked on %s\n", item->text); + tray_update(&tray); +} + +// Test tray init +static struct tray tray = { + .icon = TRAY_ICON1, + .menu = + (struct tray_menu[]){ + {.text = "Hello", .cb = hello_cb}, + {.text = "Checked", .checked = 1, .cb = toggle_cb}, + {.text = "Disabled", .disabled = 1}, + {.text = "-"}, + {.text = "SubMenu", + .submenu = + (struct tray_menu[]){ + {.text = "FIRST", .checked = 1, .cb = submenu_cb}, + {.text = "SECOND", + .submenu = + (struct tray_menu[]){ + {.text = "THIRD", + .submenu = + (struct tray_menu[]){ + {.text = "7", .cb = submenu_cb}, + {.text = "-"}, + {.text = "8", .cb = submenu_cb}, + {.text = NULL}}}, + {.text = "FOUR", + .submenu = + (struct tray_menu[]){ + {.text = "5", .cb = submenu_cb}, + {.text = "6", .cb = submenu_cb}, + {.text = NULL}}}, + {.text = NULL}}}, + {.text = NULL}}}, + {.text = "-"}, + {.text = "Quit", .cb = quit_cb}, + {.text = NULL}}, +}; + +int main() { + if (tray_init(&tray) < 0) { + printf("failed to create tray\n"); + return 1; + } + while (tray_loop(1) == 0) { + printf("iteration\n"); + } + return 0; +} diff --git a/icon.ico b/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bb96b6e4a7e7e33dee0d168811c3cd35a02556b2 GIT binary patch literal 370070 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 + +#include "api.h" + +void print_stats(enum ps ps) { + int procs = SDL_GetCPUCount(); + int d ; + int L1; + char L1suf[6]; + char dsuf[3]; + SDL_PowerState pwr; + int psec;//seconds of battery life left + int ppct;//percentage of battery life left + char psecsuf[8]; + const char*pwrdesc; + /*--system RAM--*/ + d = SDL_GetSystemRAM(); + if(d>1024) { + d /= 1024; + memcpy(dsuf,"gb",3); + } + else memcpy(dsuf,"mb",3); + /*--L1--*/ + L1 = SDL_GetCPUCacheLineSize(); + if(L1>1024*1024) { + L1 /= 1024 * 1024; + memcpy(L1suf,"mb",3); + } else if(L1>1024) { + L1 /= 1024; + memcpy(L1suf,"kb",3); + } else { + memcpy(L1suf,"bytes",6); + } + /*--power state--*/ + pwr = SDL_GetPowerInfo(&psec, &ppct); + if(psec == -1) psec = 60*60; + if(psec>=60*60) { + psec /= 60*60; + memcpy(psecsuf,psec>1?"hours":"hour\0\0",6); + } else if(psec>=60) { + psec /= 60; + memcpy(psecsuf,psec>1?"minutes":"minute\0\0",8); + } else { + memcpy(psecsuf,psec>1?"seconds":"second\0\0",8); + } + switch(pwr){ + case SDL_POWERSTATE_ON_BATTERY: pwrdesc="not plugged in, running on the battery";break; + case SDL_POWERSTATE_NO_BATTERY: pwrdesc="plugged in, no battery available";break; + case SDL_POWERSTATE_CHARGING: pwrdesc="plugged in, charging battery";break; + case SDL_POWERSTATE_CHARGED: pwrdesc="plugged in, battery charged";break; + default: + case SDL_POWERSTATE_UNKNOWN: pwrdesc="cannot determine power status"; + } + /*--print stats--*/ + switch(ps){ + case ps_shutdown: + printf("SDL Quit Battery %d%% (%d%s)\n",ppct,psec,psecsuf); + break; + default: + case ps_startup: + printf("SDL %s %d%sRAM %dProc%s (L1align=%d%s) Battery %d%% (%d%s)\n",SDL_GetPlatform(),d,dsuf,procs,procs>1?"s":"",L1,L1suf, + ppct,psec,psecsuf); + } + +} diff --git a/sync2git.bat b/sync2git.bat index d4e945f..e3bc508 100644 --- a/sync2git.bat +++ b/sync2git.bat @@ -1,8 +1,9 @@ set GITDIR=D:\dev\db\purrforce\ copy /B /Y api.h %GITDIR% -copy /B /Y error.c %GITDIR% copy /B /Y ls.bat %GITDIR% -copy /B /Y main.c %GITDIR% +copy /B /Y *.c %GITDIR% +copy /B /Y images %GITDIR% +copy /B /Y tray %GITDIR% copy /B /Y make.bat %GITDIR% copy /B /Y Makefile %GITDIR% copy /B /Y pull_fromgit.bat %GITDIR% diff --git a/systray.c b/systray.c new file mode 100644 index 0000000..4baa2a6 --- /dev/null +++ b/systray.c @@ -0,0 +1,4 @@ +#include "tray/tray.h" + +#include "api.h" + diff --git a/tray.h b/tray.h new file mode 100644 index 0000000..4ba47ea --- /dev/null +++ b/tray.h @@ -0,0 +1,370 @@ +#ifndef TRAY_H +#define TRAY_H + +struct tray_menu; + +struct tray { + char *icon; + struct tray_menu *menu; +}; + +struct tray_menu { + char *text; + int disabled; + int checked; + + void (*cb)(struct tray_menu *); + void *context; + + struct tray_menu *submenu; +}; + +static void tray_update(struct tray *tray); + +#if defined(TRAY_APPINDICATOR) + +#include +#include + +#define TRAY_APPINDICATOR_ID "tray-id" + +static AppIndicator *indicator = NULL; +static int loop_result = 0; + +static void _tray_menu_cb(GtkMenuItem *item, gpointer data) { + (void)item; + struct tray_menu *m = (struct tray_menu *)data; + m->cb(m); +} + +static GtkMenuShell *_tray_menu(struct tray_menu *m) { + GtkMenuShell *menu = (GtkMenuShell *)gtk_menu_new(); + for (; m != NULL && m->text != NULL; m++) { + GtkWidget *item; + if (strcmp(m->text, "-") == 0) { + item = gtk_separator_menu_item_new(); + } else { + if (m->submenu != NULL) { + item = gtk_menu_item_new_with_label(m->text); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), + GTK_WIDGET(_tray_menu(m->submenu))); + } else { + item = gtk_check_menu_item_new_with_label(m->text); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), !!m->checked); + } + gtk_widget_set_sensitive(item, !m->disabled); + if (m->cb != NULL) { + g_signal_connect(item, "activate", G_CALLBACK(_tray_menu_cb), m); + } + } + gtk_widget_show(item); + gtk_menu_shell_append(menu, item); + } + return menu; +} + +static int tray_init(struct tray *tray) { + if (gtk_init_check(0, NULL) == FALSE) { + return -1; + } + indicator = app_indicator_new(TRAY_APPINDICATOR_ID, tray->icon, + APP_INDICATOR_CATEGORY_APPLICATION_STATUS); + app_indicator_set_status(indicator, APP_INDICATOR_STATUS_ACTIVE); + tray_update(tray); + return 0; +} + +static int tray_loop(int blocking) { + gtk_main_iteration_do(blocking); + return loop_result; +} + +static void tray_update(struct tray *tray) { + app_indicator_set_icon(indicator, tray->icon); + // GTK is all about reference counting, so previous menu should be destroyed + // here + app_indicator_set_menu(indicator, GTK_MENU(_tray_menu(tray->menu))); +} + +static void tray_exit() { loop_result = -1; } + +#elif defined(TRAY_APPKIT) + +#include +#include + +static id app; +static id pool; +static id statusBar; +static id statusItem; +static id statusBarButton; + +static id _tray_menu(struct tray_menu *m) { + id menu = objc_msgSend((id)objc_getClass("NSMenu"), sel_registerName("new")); + objc_msgSend(menu, sel_registerName("autorelease")); + objc_msgSend(menu, sel_registerName("setAutoenablesItems:"), false); + + for (; m != NULL && m->text != NULL; m++) { + if (strcmp(m->text, "-") == 0) { + objc_msgSend(menu, sel_registerName("addItem:"), + objc_msgSend((id)objc_getClass("NSMenuItem"), sel_registerName("separatorItem"))); + } else { + id menuItem = objc_msgSend((id)objc_getClass("NSMenuItem"), sel_registerName("alloc")); + objc_msgSend(menuItem, sel_registerName("autorelease")); + objc_msgSend(menuItem, sel_registerName("initWithTitle:action:keyEquivalent:"), + objc_msgSend((id)objc_getClass("NSString"), sel_registerName("stringWithUTF8String:"), m->text), + sel_registerName("menuCallback:"), + objc_msgSend((id)objc_getClass("NSString"), sel_registerName("stringWithUTF8String:"), "")); + + objc_msgSend(menuItem, sel_registerName("setEnabled:"), (m->disabled ? false : true)); + objc_msgSend(menuItem, sel_registerName("setState:"), (m->checked ? 1 : 0)); + objc_msgSend(menuItem, sel_registerName("setRepresentedObject:"), + objc_msgSend((id)objc_getClass("NSValue"), sel_registerName("valueWithPointer:"), m)); + + objc_msgSend(menu, sel_registerName("addItem:"), menuItem); + + if (m->submenu != NULL) { + objc_msgSend(menu, sel_registerName("setSubmenu:forItem:"), _tray_menu(m->submenu), menuItem); + } + } + } + + return menu; +} + +static void menu_callback(id self, SEL cmd, id sender) { + struct tray_menu *m = + (struct tray_menu *)objc_msgSend(objc_msgSend(sender, sel_registerName("representedObject")), + sel_registerName("pointerValue")); + + if (m != NULL && m->cb != NULL) { + m->cb(m); + } +} + +static int tray_init(struct tray *tray) { + pool = objc_msgSend((id)objc_getClass("NSAutoreleasePool"), + sel_registerName("new")); + + objc_msgSend((id)objc_getClass("NSApplication"), + sel_registerName("sharedApplication")); + + Class trayDelegateClass = objc_allocateClassPair(objc_getClass("NSObject"), "Tray", 0); + class_addProtocol(trayDelegateClass, objc_getProtocol("NSApplicationDelegate")); + class_addMethod(trayDelegateClass, sel_registerName("menuCallback:"), (IMP)menu_callback, "v@:@"); + objc_registerClassPair(trayDelegateClass); + + id trayDelegate = objc_msgSend((id)trayDelegateClass, + sel_registerName("new")); + + app = objc_msgSend((id)objc_getClass("NSApplication"), + sel_registerName("sharedApplication")); + + objc_msgSend(app, sel_registerName("setDelegate:"), trayDelegate); + + statusBar = objc_msgSend((id)objc_getClass("NSStatusBar"), + sel_registerName("systemStatusBar")); + + statusItem = objc_msgSend(statusBar, sel_registerName("statusItemWithLength:"), -1.0); + + objc_msgSend(statusItem, sel_registerName("retain")); + objc_msgSend(statusItem, sel_registerName("setHighlightMode:"), true); + statusBarButton = objc_msgSend(statusItem, sel_registerName("button")); + tray_update(tray); + objc_msgSend(app, sel_registerName("activateIgnoringOtherApps:"), true); + return 0; +} + +static int tray_loop(int blocking) { + id until = (blocking ? + objc_msgSend((id)objc_getClass("NSDate"), sel_registerName("distantFuture")) : + objc_msgSend((id)objc_getClass("NSDate"), sel_registerName("distantPast"))); + + id event = objc_msgSend(app, sel_registerName("nextEventMatchingMask:untilDate:inMode:dequeue:"), + ULONG_MAX, + until, + objc_msgSend((id)objc_getClass("NSString"), + sel_registerName("stringWithUTF8String:"), + "kCFRunLoopDefaultMode"), + true); + if (event) { + objc_msgSend(app, sel_registerName("sendEvent:"), event); + } + return 0; +} + +static void tray_update(struct tray *tray) { + objc_msgSend(statusBarButton, sel_registerName("setImage:"), + objc_msgSend((id)objc_getClass("NSImage"), sel_registerName("imageNamed:"), + objc_msgSend((id)objc_getClass("NSString"), sel_registerName("stringWithUTF8String:"), tray->icon))); + + objc_msgSend(statusItem, sel_registerName("setMenu:"), _tray_menu(tray->menu)); +} + +static void tray_exit() { objc_msgSend(app, sel_registerName("terminate:"), app); } + +#elif defined(TRAY_WINAPI) +#include + +#include + +#define WM_TRAY_CALLBACK_MESSAGE (WM_USER + 1) +#define WC_TRAY_CLASS_NAME "TRAY" +#define ID_TRAY_FIRST 1000 + +static WNDCLASSEX wc; +static NOTIFYICONDATA nid; +static HWND hwnd; +static HMENU hmenu = NULL; + +static LRESULT CALLBACK _tray_wnd_proc(HWND hwnd, UINT msg, WPARAM wparam, + LPARAM lparam) { + switch (msg) { + case WM_CLOSE: + DestroyWindow(hwnd); + return 0; + case WM_DESTROY: + PostQuitMessage(0); + return 0; + case WM_TRAY_CALLBACK_MESSAGE: + if (lparam == WM_LBUTTONUP || lparam == WM_RBUTTONUP) { + POINT p; + GetCursorPos(&p); + SetForegroundWindow(hwnd); + WORD cmd = TrackPopupMenu(hmenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON | + TPM_RETURNCMD | TPM_NONOTIFY, + p.x, p.y, 0, hwnd, NULL); + SendMessage(hwnd, WM_COMMAND, cmd, 0); + return 0; + } + break; + case WM_COMMAND: + if (wparam >= ID_TRAY_FIRST) { + MENUITEMINFO item = { + .cbSize = sizeof(MENUITEMINFO), .fMask = MIIM_ID | MIIM_DATA, + }; + if (GetMenuItemInfo(hmenu, wparam, FALSE, &item)) { + struct tray_menu *menu = (struct tray_menu *)item.dwItemData; + if (menu != NULL && menu->cb != NULL) { + menu->cb(menu); + } + } + return 0; + } + break; + } + return DefWindowProc(hwnd, msg, wparam, lparam); +} + +static HMENU _tray_menu(struct tray_menu *m, UINT *id) { + HMENU hmenu = CreatePopupMenu(); + for (; m != NULL && m->text != NULL; m++, (*id)++) { + if (strcmp(m->text, "-") == 0) { + InsertMenu(hmenu, *id, MF_SEPARATOR, TRUE, ""); + } else { + MENUITEMINFO item; + memset(&item, 0, sizeof(item)); + item.cbSize = sizeof(MENUITEMINFO); + item.fMask = MIIM_ID | MIIM_TYPE | MIIM_STATE | MIIM_DATA; + item.fType = 0; + item.fState = 0; + if (m->submenu != NULL) { + item.fMask = item.fMask | MIIM_SUBMENU; + item.hSubMenu = _tray_menu(m->submenu, id); + } + if (m->disabled) { + item.fState |= MFS_DISABLED; + } + if (m->checked) { + item.fState |= MFS_CHECKED; + } + item.wID = *id; + item.dwTypeData = m->text; + item.dwItemData = (ULONG_PTR)m; + + InsertMenuItem(hmenu, *id, TRUE, &item); + } + } + return hmenu; +} + +static int tray_init(struct tray *tray) { + memset(&wc, 0, sizeof(wc)); + wc.cbSize = sizeof(WNDCLASSEX); + wc.lpfnWndProc = _tray_wnd_proc; + wc.hInstance = GetModuleHandle(NULL); + wc.lpszClassName = WC_TRAY_CLASS_NAME; + if (!RegisterClassEx(&wc)) { + return -1; + } + + hwnd = CreateWindowEx(0, WC_TRAY_CLASS_NAME, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0); + if (hwnd == NULL) { + return -1; + } + UpdateWindow(hwnd); + + memset(&nid, 0, sizeof(nid)); + nid.cbSize = sizeof(NOTIFYICONDATA); + nid.hWnd = hwnd; + nid.uID = 0; + nid.uFlags = NIF_ICON | NIF_MESSAGE; + nid.uCallbackMessage = WM_TRAY_CALLBACK_MESSAGE; + Shell_NotifyIcon(NIM_ADD, &nid); + + tray_update(tray); + return 0; +} + +static int tray_loop(int blocking) { + MSG msg; + if (blocking) { + GetMessage(&msg, NULL, 0, 0); + } else { + PeekMessage(&msg, NULL, 0, 0, PM_REMOVE); + } + if (msg.message == WM_QUIT) { + return -1; + } + TranslateMessage(&msg); + DispatchMessage(&msg); + return 0; +} + +static void tray_update(struct tray *tray) { + HMENU prevmenu = hmenu; + UINT id = ID_TRAY_FIRST; + hmenu = _tray_menu(tray->menu, &id); + SendMessage(hwnd, WM_INITMENUPOPUP, (WPARAM)hmenu, 0); + HICON icon; + ExtractIconEx(tray->icon, 0, NULL, &icon, 1); + if (nid.hIcon) { + DestroyIcon(nid.hIcon); + } + nid.hIcon = icon; + Shell_NotifyIcon(NIM_MODIFY, &nid); + + if (prevmenu != NULL) { + DestroyMenu(prevmenu); + } +} + +static void tray_exit() { + Shell_NotifyIcon(NIM_DELETE, &nid); + if (nid.hIcon != 0) { + DestroyIcon(nid.hIcon); + } + if (hmenu != 0) { + DestroyMenu(hmenu); + } + PostQuitMessage(0); + UnregisterClass(WC_TRAY_CLASS_NAME, GetModuleHandle(NULL)); +} +#else +static int tray_init(struct tray *tray) { return -1; } +static int tray_loop(int blocking) { return -1; } +static void tray_update(struct tray *tray) {} +static void tray_exit(); +#endif + +#endif /* TRAY_H */