📄 gui.c
字号:
if (conf_log) { ConfigItem_log *logs; AppendMenu(hConfig, MF_POPUP|MF_STRING, (UINT)hLogs, "Logs"); for (logs = conf_log; logs; logs = (ConfigItem_log *)logs->next) { AppendMenu(hLogs, MF_STRING, i++, logs->file); } } AppendMenu(hConfig, MF_SEPARATOR, 0, NULL); if (conf_include) { ConfigItem_include *inc; for (inc = conf_include; inc; inc = (ConfigItem_include *)inc->next) { if (inc->flag.type & INCLUDE_NOTLOADED) continue;#ifdef USE_LIBCURL if (inc->flag.type & INCLUDE_REMOTE) AppendMenu(hConfig, MF_STRING, i++, inc->url); else#endif AppendMenu(hConfig, MF_STRING, i++, inc->file); } AppendMenu(hConfig, MF_SEPARATOR, 0, NULL); } AppendMenu(hConfig, MF_STRING, IDM_MOTD, MPATH); AppendMenu(hConfig, MF_STRING, IDM_SMOTD, SMPATH); AppendMenu(hConfig, MF_STRING, IDM_OPERMOTD, OPATH); AppendMenu(hConfig, MF_STRING, IDM_BOTMOTD, BPATH); AppendMenu(hConfig, MF_STRING, IDM_RULES, RPATH); if (conf_tld) { ConfigItem_tld *tlds; AppendMenu(hConfig, MF_SEPARATOR, 0, NULL); for (tlds = conf_tld; tlds; tlds = (ConfigItem_tld *)tlds->next) { if (!tlds->flag.motdptr) AppendMenu(hConfig, MF_STRING, i++, tlds->motd_file); if (!tlds->flag.rulesptr) AppendMenu(hConfig, MF_STRING, i++, tlds->rules_file); if (tlds->smotd_file) AppendMenu(hConfig, MF_STRING, i++, tlds->smotd_file); } } AppendMenu(hConfig, MF_SEPARATOR, 0, NULL); AppendMenu(hConfig, MF_STRING, IDM_NEW, "New File"); mii.cbSize = sizeof(MENUITEMINFO); mii.fMask = MIIM_SUBMENU; mii.hSubMenu = hConfig; SetMenuItemInfo(hTray, IDM_CONFIG, MF_BYCOMMAND, &mii); TrackPopupMenu(hTray, TPM_LEFTALIGN|TPM_LEFTBUTTON,p.x,p.y,0,hDlg,NULL); /* Kludge for a win bug */ SendMessage(hDlg, WM_NULL, 0, 0); break; } } return 0; } case WM_DESTROY: return 0; case WM_MOUSEMOVE: { POINT p; p.x = LOWORD(lParam); p.y = HIWORD(lParam); if ((p.x >= 24) && (p.x <= 78) && (p.y >= 178) && (p.y <= 190)) SetCursor(hCursor); else if ((p.x >= 85) && (p.x <= 132) && (p.y >= 178) && (p.y <= 190)) SetCursor(hCursor); else if ((p.x >= 140) && (p.x <= 186) && (p.y >= 178) && (p.y <= 190)) SetCursor(hCursor); else if ((p.x >= 194) && (p.x <= 237) && (p.y >= 178) && (p.y <= 190)) SetCursor(hCursor); else if ((p.x >= 245) && (p.x <= 311) && (p.y >= 178) && (p.y <= 190)) SetCursor(hCursor); return 0; } case WM_LBUTTONDOWN: { POINT p; p.x = LOWORD(lParam); p.y = HIWORD(lParam); if ((p.x >= 24) && (p.x <= 78) && (p.y >= 178) && (p.y <= 190)) { ClientToScreen(hDlg,&p); TrackPopupMenu(hRehash,TPM_LEFTALIGN|TPM_LEFTBUTTON,p.x,p.y,0,hDlg,NULL); return 0; } else if ((p.x >= 85) && (p.x <= 132) && (p.y >= 178) && (p.y <= 190)) { ShowDialog(&hStatusWnd, hInst, "Status", hDlg, StatusDLG); return 0; } else if ((p.x >= 140) && (p.x <= 186) && (p.y >= 178) && (p.y <= 190)) { unsigned long i = 60000; ClientToScreen(hDlg,&p); DestroyMenu(hConfig); hConfig = CreatePopupMenu(); DestroyMenu(hLogs); hLogs = CreatePopupMenu(); AppendMenu(hConfig, MF_STRING, IDM_CONF, CPATH); if (conf_log) { ConfigItem_log *logs; AppendMenu(hConfig, MF_POPUP|MF_STRING, (UINT)hLogs, "Logs"); for (logs = conf_log; logs; logs = (ConfigItem_log *)logs->next) { AppendMenu(hLogs, MF_STRING, i++, logs->file); } } AppendMenu(hConfig, MF_SEPARATOR, 0, NULL); if (conf_include) { ConfigItem_include *inc; for (inc = conf_include; inc; inc = (ConfigItem_include *)inc->next) {#ifdef USE_LIBCURL if (inc->flag.type & INCLUDE_REMOTE) AppendMenu(hConfig, MF_STRING, i++, inc->url); else#endif AppendMenu(hConfig, MF_STRING, i++, inc->file); } AppendMenu(hConfig, MF_SEPARATOR, 0, NULL); } AppendMenu(hConfig, MF_STRING, IDM_MOTD, MPATH); AppendMenu(hConfig, MF_STRING, IDM_SMOTD, SMPATH); AppendMenu(hConfig, MF_STRING, IDM_OPERMOTD, OPATH); AppendMenu(hConfig, MF_STRING, IDM_BOTMOTD, BPATH); AppendMenu(hConfig, MF_STRING, IDM_RULES, RPATH); if (conf_tld) { ConfigItem_tld *tlds; AppendMenu(hConfig, MF_SEPARATOR, 0, NULL); for (tlds = conf_tld; tlds; tlds = (ConfigItem_tld *)tlds->next) { if (!tlds->flag.motdptr) AppendMenu(hConfig, MF_STRING, i++, tlds->motd_file); if (!tlds->flag.rulesptr) AppendMenu(hConfig, MF_STRING, i++, tlds->rules_file); if (tlds->smotd_file) AppendMenu(hConfig, MF_STRING, i++, tlds->smotd_file); } } AppendMenu(hConfig, MF_SEPARATOR, 0, NULL); AppendMenu(hConfig, MF_STRING, IDM_NEW, "New File"); TrackPopupMenu(hConfig,TPM_LEFTALIGN|TPM_LEFTBUTTON,p.x,p.y,0,hDlg,NULL); return 0; } else if ((p.x >= 194) && (p.x <= 237) && (p.y >= 178) && (p.y <= 190)) { ClientToScreen(hDlg,&p); TrackPopupMenu(hAbout,TPM_LEFTALIGN|TPM_LEFTBUTTON,p.x,p.y,0,hDlg,NULL); return 0; } else if ((p.x >= 245) && (p.x <= 311) && (p.y >= 178) && (p.y <= 190)) return CloseUnreal(hDlg); } case WM_COMMAND: { if (LOWORD(wParam) >= 60000 && HIWORD(wParam) == 0 && !lParam) { unsigned char path[MAX_PATH]; if (GetMenuString(hLogs, LOWORD(wParam), path, MAX_PATH, MF_BYCOMMAND)) DialogBoxParam(hInst, "FromVar", hDlg, (DLGPROC)FromFileReadDLG, (LPARAM)path); else { GetMenuString(hConfig,LOWORD(wParam), path, MAX_PATH, MF_BYCOMMAND);#ifdef USE_LIBCURL if (url_is_valid(path)) { char *file = find_loaded_remote_include(path); DialogBoxParam(hInst, "FromVar", hDlg, (DLGPROC)FromFileReadDLG, (LPARAM)file); } else#endif DialogBoxParam(hInst, "FromFile", hDlg, (DLGPROC)FromFileDLG, (LPARAM)path); } return FALSE; } switch(LOWORD(wParam)) { case IDM_STATUS: ShowDialog(&hStatusWnd, hInst, "Status", hDlg,StatusDLG); break; case IDM_SHUTDOWN: return CloseUnreal(hDlg); case IDM_RHALL: MessageBox(NULL, "Rehashing all files", "Rehashing", MB_OK); sendto_realops("Rehashing all files via the console"); rehash(&me,&me,0); reread_motdsandrules(); break; case IDM_RHCONF: MessageBox(NULL, "Rehashing the Config file", "Rehashing", MB_OK); sendto_realops("Rehashing the Config file via the console"); rehash(&me,&me,0); break; case IDM_RHMOTD: { ConfigItem_tld *tlds; aMotd *amotd; MessageBox(NULL, "Rehashing all MOTD and Rules files", "Rehashing", MB_OK); rehash_motdrules(); sendto_realops("Rehashing all MOTD and Rules files via the console"); break; } case IDM_RHOMOTD: MessageBox(NULL, "Rehashing the OperMOTD", "Rehashing", MB_OK); opermotd = (aMotd *) read_file(OPATH, &opermotd); sendto_realops("Rehashing the OperMOTD via the console"); break; case IDM_RHBMOTD: MessageBox(NULL, "Rehashing the BotMOTD", "Rehashing", MB_OK); botmotd = (aMotd *) read_file(BPATH, &botmotd); sendto_realops("Rehashing the BotMOTD via the console"); break; case IDM_LICENSE: DialogBox(hInst, "FromVar", hDlg, (DLGPROC)LicenseDLG); break; case IDM_CREDITS: DialogBox(hInst, "FromVar", hDlg, (DLGPROC)CreditsDLG); break; case IDM_DAL: DialogBox(hInst, "FromVar", hDlg, (DLGPROC)DalDLG); break; case IDM_HELP: DialogBox(hInst, "Help", hDlg, (DLGPROC)HelpDLG); break; case IDM_CONF: DialogBoxParam(hInst, "FromFile", hDlg, (DLGPROC)FromFileDLG, (LPARAM)CPATH); break; case IDM_MOTD: DialogBoxParam(hInst, "FromFile", hDlg, (DLGPROC)FromFileDLG, (LPARAM)MPATH); break; case IDM_SMOTD: DialogBoxParam(hInst, "FromFile", hDlg, (DLGPROC)FromFileDLG, (LPARAM)SMPATH); break; case IDM_OPERMOTD: DialogBoxParam(hInst, "FromFile", hDlg, (DLGPROC)FromFileDLG, (LPARAM)OPATH); break; case IDM_BOTMOTD: DialogBoxParam(hInst, "FromFile", hDlg, (DLGPROC)FromFileDLG, (LPARAM)BPATH); break; case IDM_RULES: DialogBoxParam(hInst, "FromFile", hDlg, (DLGPROC)FromFileDLG, (LPARAM)RPATH); break; case IDM_NEW: DialogBoxParam(hInst, "FromFile", hDlg, (DLGPROC)FromFileDLG, (LPARAM)NULL); break; } } } return FALSE;}LRESULT CALLBACK LicenseDLG(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { return FromVarDLG(hDlg, message, wParam, lParam, "UnrealIRCd License", gnulicense);}LRESULT CALLBACK CreditsDLG(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { return FromVarDLG(hDlg, message, wParam, lParam, "UnrealIRCd Credits", unrealcredits);}LRESULT CALLBACK DalDLG(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { return FromVarDLG(hDlg, message, wParam, lParam, "UnrealIRCd DALnet Credits", dalinfotext);}LRESULT CALLBACK FromVarDLG(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam, unsigned char *title, unsigned char **s) { HWND hWnd; switch (message) { case WM_INITDIALOG: { unsigned char String[16384]; int size; unsigned char *RTFString; StreamIO *stream = malloc(sizeof(StreamIO)); EDITSTREAM edit; SetWindowText(hDlg, title); bzero(String, 16384); lpfnOldWndProc = (FARPROC)SetWindowLong(GetDlgItem(hDlg, IDC_TEXT), GWL_WNDPROC, (DWORD)RESubClassFunc); while (*s) { strcat(String, *s++); if (*s) strcat(String, "\r\n"); } size = CountRTFSize(String)+1; RTFString = malloc(size); bzero(RTFString, size); IRCToRTF(String,RTFString); RTFBuf = RTFString; size--; stream->size = &size; stream->buffer = &RTFBuf; edit.dwCookie = (UINT)stream; edit.pfnCallback = SplitIt; SendMessage(GetDlgItem(hDlg, IDC_TEXT), EM_STREAMIN, (WPARAM)SF_RTF|SFF_PLAINRTF, (LPARAM)&edit); free(RTFString); free(stream); return TRUE; } case WM_COMMAND: { hWnd = GetDlgItem(hDlg, IDC_TEXT); if (LOWORD(wParam) == IDOK) return EndDialog(hDlg, TRUE); if (LOWORD(wParam) == IDM_COPY) { SendMessage(hWnd, WM_COPY, 0, 0); return 0; } if (LOWORD(wParam) == IDM_SELECTALL) { SendMessage(hWnd, EM_SETSEL, 0, -1); return 0; } if (LOWORD(wParam) == IDM_PASTE) { SendMessage(hWnd, WM_PASTE, 0, 0); return 0; } if (LOWORD(wParam) == IDM_CUT) { SendMessage(hWnd, WM_CUT, 0, 0); return 0; } if (LOWORD(wParam) == IDM_UNDO) { SendMessage(hWnd, EM_UNDO, 0, 0); return 0; } if (LOWORD(wParam) == IDM_DELETE) { SendMessage(hWnd, WM_CLEAR, 0, 0); return 0; } break; } case WM_CLOSE: EndDialog(hDlg, TRUE); break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -