Changeset 253 in Main for trunk/Server/gui.c


Ignore:
Timestamp:
Oct 4, 2024, 12:13:36 PM (6 weeks ago)
Author:
Nishi
Message:

fix stuff

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Server/gui.c

    r249 r253  
    44
    55#include "gui.h"
    6 
     6#include "tw_server.h"
     7
     8#include <cm_log.h>
     9
     10#include <stdio.h>
    711#include <windows.h>
     12#include <process.h>
    813#include <commctrl.h>
    914
     
    1520HWND button_about;
    1621HWND status;
     22HFONT monospace;
    1723BOOL tewi_alive;
    1824BOOL was_starting;
    1925BOOL exiting;
     26BOOL idle;
     27extern FILE* logfile;
     28extern int running;
    2029
    2130#define WINWIDTH(rc) (rc.right - rc.left)
    2231#define WINHEIGHT(rc) (rc.bottom - rc.top)
    2332
    24 #define DIALOG_X(n) (HIWORD(GetDialogBaseUnits()) * n)
    25 #define DIALOG_Y(n) (LOWORD(GetDialogBaseUnits()) * n)
     33int startup(int argc, char** argv);
    2634
    2735void ShowBitmapSize(HWND hWnd, HDC hdc, const char* name, int x, int y, int w, int h){
     
    4553}
    4654
     55int max = 0;
     56void AddLog(const char* str){
     57        HDC hdc;
     58        PAINTSTRUCT ps;
     59        SIZE sz;
     60
     61        SendMessage(logarea, LB_ADDSTRING, 0, (LPARAM)str);
     62
     63        hdc = CreateCompatibleDC(NULL);
     64        SelectObject(hdc, monospace);
     65        GetTextExtentPoint32(hdc, str, strlen(str), &sz);
     66        DeleteDC(hdc);
     67       
     68        if(max < sz.cx){
     69                max = sz.cx;
     70                SendMessage(logarea, LB_SETHORIZONTALEXTENT, max, 0);
     71        }
     72}
     73
    4774LRESULT CALLBACK VersionDialog(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp){
    4875        if(msg == WM_COMMAND){
     
    6390                HDC dc = (HDC)wp;
    6491                SetBkMode(dc, TRANSPARENT);
    65                 return GetSysColorBrush(COLOR_MENU);
     92                return (LRESULT)GetSysColorBrush(COLOR_MENU);
    6693        }else{
    6794                return FALSE;
     
    7097}
    7198
     99void tewi_thread(void* ptr){
     100        int st = startup(0, NULL);
     101        was_starting = TRUE;
     102        if(st == -1){
     103                tewi_alive = TRUE;
     104                idle = FALSE;
     105        }else{
     106                cm_force_log("Config error");
     107                idle = FALSE;
     108                _endthread();
     109        }
     110        running = 1;
     111        tw_server_loop();
     112        tewi_alive = FALSE;
     113        was_starting = TRUE;
     114        idle = FALSE;
     115        _endthread();
     116}
     117
    72118void StartTewi(void){
    73         was_starting = TRUE;
     119        EnableWindow(button_start, FALSE);
     120        EnableWindow(button_stop, FALSE);
     121        _beginthread(tewi_thread, 0, NULL);
    74122}
    75123
    76124void StopTewi(void){
    77         was_starting = TRUE;
     125        EnableWindow(button_start, FALSE);
     126        EnableWindow(button_stop, FALSE);
     127        running = 0;
    78128}
    79129
     
    119169                InitCommonControls();
    120170
     171                monospace = (HFONT)GetStockObject(SYSTEM_FIXED_FONT);
     172
    121173                status = CreateStatusWindow(WS_CHILD | WS_VISIBLE | CCS_BOTTOM, NULL, hWnd, GUI_STATUS);
    122174                SendMessage(status, SB_SIMPLE, 0, 0);
     
    129181                button_about = CreateWindow("BUTTON", "&About", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, WINWIDTH(rc) - 100, 20 * 2, 100, 20, hWnd, (HMENU)GUI_BUTTON_ABOUT, hInst, NULL);
    130182                button_about = CreateWindow("BUTTON", "E&xit", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, WINWIDTH(rc) - 100, WINHEIGHT(rc) - WINHEIGHT(src) - 20, 100, 20, hWnd, (HMENU)GUI_BUTTON_EXIT, hInst, NULL);
    131                 logarea = CreateWindow("LISTBOX", NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL, 0, 40, WINWIDTH(rc) - 100, WINHEIGHT(rc) - 40 - WINHEIGHT(src), hWnd, (HMENU)GUI_LOG, hInst, NULL);
     183                logarea = CreateWindow("LISTBOX", NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | LBS_NOINTEGRALHEIGHT | LBS_NOSEL, 0, 40, WINWIDTH(rc) - 100, WINHEIGHT(rc) - 40 - WINHEIGHT(src), hWnd, (HMENU)GUI_LOG, hInst, NULL);
     184
     185                SendMessage(logarea, WM_SETFONT, (WPARAM)monospace, TRUE);
     186
    132187                SetTimer(hWnd, TIMER_WATCH_TEWI, 100, NULL);
    133188        }else if(msg == WM_TIMER){
    134189                if(wp == TIMER_WATCH_TEWI){
    135                         if(tewi_alive){
     190                        if(idle){
     191                        }else if(tewi_alive){
    136192                                if(was_starting){
    137193                                        was_starting = FALSE;
     
    140196                                EnableWindow(button_start, FALSE);
    141197                                EnableWindow(button_stop, TRUE);
     198                                idle = TRUE;
    142199                        }else{
    143200                                if(was_starting){
     
    151208                                        SendMessage(hWnd, WM_CLOSE, 0, 0);
    152209                                }
     210                                idle = TRUE;
    153211                        }
    154212                }
     
    172230
    173231BOOL InitApp(void){
    174         WNDCLASS wc;
     232        WNDCLASSEX wc;
     233        wc.cbSize = sizeof(WNDCLASSEX);
    175234        wc.style = CS_HREDRAW | CS_VREDRAW;
    176235        wc.lpfnWndProc = WndProc;
     
    183242        wc.lpszMenuName = NULL;
    184243        wc.lpszClassName = "tewihttpd";
    185         return RegisterClass(&wc);
     244        wc.hIconSm = LoadIcon(hInst, "TEWI");
     245        return RegisterClassEx(&wc);
    186246}
    187247
     
    191251        HWND hDeskWnd = GetDesktopWindow();
    192252        GetWindowRect(hDeskWnd, &deskrc);
    193         hWnd = CreateWindow("tewihttpd", "Tewi HTTPd", (WS_OVERLAPPEDWINDOW ^ WS_THICKFRAME) ^ WS_MAXIMIZEBOX, 0, 0, 600, 200, NULL, 0, hInst, NULL);
     253        hWnd = CreateWindow("tewihttpd", "Tewi HTTPd", (WS_OVERLAPPEDWINDOW ^ WS_THICKFRAME) ^ WS_MAXIMIZEBOX, 0, 0, 600, 400, NULL, 0, hInst, NULL);
    194254
    195255        if(!hWnd){
     
    210270        was_starting = FALSE;
    211271        exiting = FALSE;
     272        idle = TRUE;
     273        logfile = stderr;
    212274        if(!InitApp()){
    213275                return FALSE;
Note: See TracChangeset for help on using the changeset viewer.