|
|
1.1 root 1: /*
2: * UAE - The Un*x Amiga Emulator
3: *
4: * Interface to the Tcl/Tk GUI
5: *
6: * Copyright 1996 Bernd Schmidt
7: */
8:
9: #include <stdio.h>
10: #include <stdlib.h>
11: #include <string.h>
12: #ifdef __unix
13: #include <sys/types.h>
14: #include <sys/stat.h>
15: #include <sys/time.h>
16: #endif
17: #include <fcntl.h>
18: #include <unistd.h>
19: #include <signal.h>
20: #include <SIOUX.h>
21:
22: #include "config.h"
23: #include "amiga.h"
24: #include "options.h"
25: #include "memory.h"
26: #include "custom.h"
27: #include "newcpu.h"
28: #include "disk.h"
29: #include "gui.h"
30:
31: #define kAppleMenuID 128
32: #define kFileMenuID 129
33: #define kEditMenuID 130
34: #define kDrivesMenuID 131
35: #define kMemoryMenuID 132
36: #define kResMenuID 135
37: #define kRateMenuID 134
38: #define kVideoMenuID 133
39:
40: MenuHandle resMenu,rateMenu;
41: static int macLedState[5];
42: int quit_program;
43: extern int use_quickdraw;
44: static Rect powerRect, driveDf0Rect, driveDf1Rect, driveDf2Rect, driveDf3Rect;
45:
46: static void sigchldhandler(int foo)
47: {
48: }
49:
50: static void InitToolbox(void)
51: {
52: InitGraf (&qd.thePort);
53: InitFonts ();
54: FlushEvents (everyEvent,0);
55: InitWindows ();
56: InitMenus ();
57: TEInit ();
58: InitDialogs (nil);
59: InitCursor ();
60: }
61:
62: #define kPrefStrRsrc 130
63:
64: int gui_init(void)
65: { char pathString[1024];
66: Handle menuBar;
67:
68: InitToolbox();
69:
70: SIOUXSettings.initializeTB=false;
71: SIOUXSettings.standalone=false;
72: SIOUXSettings.setupmenus=false;
73: SIOUXSettings.autocloseonquit=true;
74: SIOUXSettings.asktosaveonclose=false;
75: SIOUXSettings.showstatusline=false;
76: SIOUXSettings.rows=11;
77: SIOUXSettings.toppixel=350;
78: SIOUXSettings.leftpixel=0;
79: fprintf(stderr,"Starting up the GUI�\n");
80: SIOUXSetTitle("\pInfo Window");
81:
82: if (ReadPrefs(pathString))
83: { if (*pathString != 0) add_filesys_unit("HD0", (char *)pathString, false);
84: }
85: else
86: { if (*pathString == 0)
87: { CreatePrefs();
88: WritePrefs(0);
89: }
90: }
91:
92: menuBar=GetNewMBar(128);
93: SetMenuBar(menuBar);
94: DisposeHandle(menuBar);
95:
96: AddResMenu(GetMenuHandle(kAppleMenuID), 'DRVR');
97:
98: if (screen_res != 4) DisableItem (GetMenuHandle(kFileMenuID), 3);
99: if (use_quickdraw) CheckItem(GetMenuHandle(kVideoMenuID),5,true);
100: if (use_gfxlib) CheckItem(GetMenuHandle(kVideoMenuID),7,true);
101: if (use_slow_mem) SetMenuItemText(GetMenuHandle(kMemoryMenuID), 1, "\pDisable 1 Mb (SlowMem)" );
102: if (!automount_uaedev) CheckItem(GetMenuHandle(kDrivesMenuID),7,true);
103: if (produce_sound) SetMenuItemText(GetMenuHandle(kFileMenuID), 9, "\pTurn Sound Off");
104: else SetMenuItemText(GetMenuHandle(kFileMenuID), 9, "\pTurn Sound On");
105: if (fake_joystick) SetMenuItemText(GetMenuHandle(kFileMenuID), 11, "\pTurn Joystick Off");
106: else SetMenuItemText(GetMenuHandle(kFileMenuID), 11, "\pTurn Joystick On");
107:
108: rateMenu=GetMenu(kRateMenuID);
109: InsertMenu(rateMenu, -1);
110: if (framerate == 1) CheckItem(rateMenu,1,true);
111: if (framerate == 3) CheckItem(rateMenu,2,true);
112: if (framerate == 5) CheckItem(rateMenu,3,true);
113: if (framerate == 7) CheckItem(rateMenu,4,true);
114:
115: resMenu=GetMenu(kResMenuID);
116: InsertMenu(resMenu, -1);
117: CheckItem(resMenu,(unsigned char)screen_res+1,true);
118:
119: DrawMenuBar();
120:
121: macLedState[0]=false;
122: macLedState[1]=false;
123: macLedState[2]=false;
124: macLedState[3]=false;
125: macLedState[4]=false;
126:
127: quit_program = 0;
128: }
129:
130: void gui_exit(void)
131: {
132: DeleteMenu(kAppleMenuID);
133: DeleteMenu(kFileMenuID);
134: DeleteMenu(kEditMenuID);
135: DeleteMenu(kDrivesMenuID);
136: DeleteMenu(kMemoryMenuID);
137: DeleteMenu(kResMenuID);
138: DeleteMenu(kRateMenuID);
139: DeleteMenu(kVideoMenuID);
140: }
141:
142: void gui_prepare_leds(long screenV)
143: {
144: if (screen_res >= 3)
145: { SetRect(&powerRect,70,(short)screenV+1,110,(short)screenV+11);
146: SetRect(&driveDf0Rect,220,(short)screenV+1,260,(short)screenV+11);
147: SetRect(&driveDf1Rect,292,(short)screenV+1,332,(short)screenV+11);
148: SetRect(&driveDf2Rect,365,(short)screenV+1,405,(short)screenV+11);
149: SetRect(&driveDf3Rect,436,(short)screenV+1,476,(short)screenV+11);
150: }
151: else
152: { SetRect(&powerRect,46,(short)screenV+1,76,(short)screenV+11);
153: SetRect(&driveDf0Rect,106,(short)screenV+1,136,(short)screenV+11);
154: SetRect(&driveDf1Rect,166,(short)screenV+1,196,(short)screenV+11);
155: SetRect(&driveDf2Rect,226,(short)screenV+1,256,(short)screenV+11);
156: SetRect(&driveDf3Rect,286,(short)screenV+1,316,(short)screenV+11);
157: }
158: }
159:
160: void gui_update_leds(void)
161: { int i;
162:
163: for(i=0;i<=4;i++) gui_led(i,macLedState[i]);
164: }
165:
166: void gui_led(int led, int on)
167: {
168: macLedState[led]=on;
169: if (dont_want_aspect || screen_res == 2)
170: { if (led == 0)
171: { if (on)
172: { ForeColor(redColor);
173: PaintRect(&powerRect);
174: }
175: else
176: { ForeColor(whiteColor);
177: PaintRect(&powerRect);
178: }
179: }
180: else
181: { switch (led)
182: { case 1:
183: if (on)
184: { ForeColor(greenColor);
185: PaintRect(&driveDf0Rect);
186: }
187: else
188: { ForeColor(whiteColor);
189: PaintRect(&driveDf0Rect);
190: }
191: break;
192:
193: case 2:
194: if (on)
195: { ForeColor(greenColor);
196: PaintRect(&driveDf1Rect);
197: }
198: else
199: { ForeColor(whiteColor);
200: PaintRect(&driveDf1Rect);
201: }
202: break;
203:
204: case 3:
205: if (on)
206: { ForeColor(greenColor);
207: PaintRect(&driveDf2Rect);
208: }
209: else
210: { ForeColor(whiteColor);
211: PaintRect(&driveDf2Rect);
212: }
213: break;
214:
215: case 4:
216: if (on)
217: { ForeColor(greenColor);
218: PaintRect(&driveDf3Rect);
219: }
220: else
221: { ForeColor(whiteColor);
222: PaintRect(&driveDf3Rect);
223: }
224: break;
225: }
226: }
227: ForeColor(blackColor);
228: }
229: }
230:
231: void gui_filename(int num, char *name)
232: {
233: }
234:
235: static void getline(char *p)
236: {
237: }
238:
239: void gui_handle_events(void)
240: {
241: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.