sidecar wip

This commit is contained in:
April Ayres-Griffiths 2019-04-06 19:57:29 +11:00
parent 2482c7c0a1
commit c8e999eaae
14 changed files with 17835 additions and 187 deletions

File diff suppressed because it is too large Load Diff

View File

@ -19,11 +19,113 @@ type
TGUIForm = class(TForm)
backdrop: TImage;
Image1: TImage;
pnlContainer: TPanel;
SideImages: TImageList;
miWarp400: TMenuItem;
miWarp200: TMenuItem;
miWarp100: TMenuItem;
miWarp50: TMenuItem;
miWarp25: TMenuItem;
miCPU65c02: TMenuItem;
miCPU6502: TMenuItem;
miDisksSwap: TMenuItem;
miDisksDisableWarp: TMenuItem;
miDisksConvertWOZ: TMenuItem;
miPDFTO60s: TMenuItem;
miPDFTO45s: TMenuItem;
miPDFTO30s: TMenuItem;
miPDFTO15s: TMenuItem;
miPDFTO5s: TMenuItem;
miPrinterPDF: TMenuItem;
miCPUWarp: TMenuItem;
miCPUType: TMenuItem;
miSerialTelnetServer: TMenuItem;
miSerialVModem: TMenuItem;
miDisks: TMenuItem;
miPrinter: TMenuItem;
miCPU: TMenuItem;
miSerial: TMenuItem;
miHardware: TMenuItem;
miSVOL100: TMenuItem;
miSVOL090: TMenuItem;
miSVOL080: TMenuItem;
miSVOL070: TMenuItem;
miSVOL060: TMenuItem;
miSVOL050: TMenuItem;
miSVOL040: TMenuItem;
miSVOL030: TMenuItem;
miSVOL020: TMenuItem;
miSVOL010: TMenuItem;
miSVOL000: TMenuItem;
miMVOL100: TMenuItem;
miMVOL090: TMenuItem;
miMVOL080: TMenuItem;
miMVOL070: TMenuItem;
miMVOL060: TMenuItem;
miMVOL050: TMenuItem;
miMVOL040: TMenuItem;
miMVOL030: TMenuItem;
miMVOL020: TMenuItem;
miMVOL010: TMenuItem;
miMVOL000: TMenuItem;
miPSG0p100: TMenuItem;
miPSG0p75: TMenuItem;
miPSG0p50: TMenuItem;
miPSG0p25: TMenuItem;
miPSG0p0: TMenuItem;
miPSG0m25: TMenuItem;
miPSG0m50: TMenuItem;
miPSG0m75: TMenuItem;
miPSG0m100: TMenuItem;
miSNDPSG0: TMenuItem;
miPSG1p100: TMenuItem;
miPSG1p75: TMenuItem;
miPSG1p50: TMenuItem;
miPSG1p25: TMenuItem;
miPSG1p0: TMenuItem;
miPSG1m25: TMenuItem;
miPSG1m50: TMenuItem;
miPSG1m75: TMenuItem;
miPSG1m100: TMenuItem;
miSNDPSG1: TMenuItem;
miSNDMockingboard: TMenuItem;
miSNDSpeaker: TMenuItem;
miSNDMaster: TMenuItem;
miSNDMuted: TMenuItem;
miAudio: TMenuItem;
miJSYRev: TMenuItem;
miJSXRev: TMenuItem;
miJSAxisSwap: TMenuItem;
miVD9: TMenuItem;
miVD8: TMenuItem;
miVD7: TMenuItem;
miVD6: TMenuItem;
miVD5: TMenuItem;
miVD4: TMenuItem;
miVD3: TMenuItem;
miVD2: TMenuItem;
miVD1: TMenuItem;
miVD: TMenuItem;
miAR178: TMenuItem;
miAR162: TMenuItem;
miAR146: TMenuItem;
miAR100: TMenuItem;
miAR133: TMenuItem;
miAR: TMenuItem;
miTMAmber: TMenuItem;
miTMGreen: TMenuItem;
miTMGrey: TMenuItem;
miTMNone: TMenuItem;
miTintMode: TMenuItem;
N4: TMenuItem;
N3: TMenuItem;
N2: TMenuItem;
miTintOff: TMenuItem;
miTintGrey: TMenuItem;
miTintGreen: TMenuItem;
miTintAmber: TMenuItem;
sidecarPanel: TPanel;
ToolTimer: TTimer;
TintMode: TPopupMenu;
ToolbarIcons: TImageList;
@ -129,11 +231,16 @@ type
procedure FormShow(Sender: TObject);
procedure FormUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
procedure FormWindowStateChange(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure InputClick(Sender: TObject);
procedure MenuItem15Click(Sender: TObject);
procedure MenuItem16Click(Sender: TObject);
procedure MenuItem1Click(Sender: TObject);
procedure MenuItem2Click(Sender: TObject);
procedure Freeze;
procedure miAR100Click(Sender: TObject);
procedure miARClick(Sender: TObject);
procedure miAudioClick(Sender: TObject);
procedure miColorDotsClick(Sender: TObject);
procedure miColorRasterClick(Sender: TObject);
procedure miColorVoxelsClick(Sender: TObject);
@ -155,6 +262,8 @@ type
procedure miGRRasterClick(Sender: TObject);
procedure miGRRenderModeClick(Sender: TObject);
procedure miGRVoxelsClick(Sender: TObject);
procedure miINPAllCapsClick(Sender: TObject);
procedure miINPJoystickClick(Sender: TObject);
procedure miINPMMDDrawClick(Sender: TObject);
procedure miINPMMDPADClick(Sender: TObject);
procedure miINPMMGEOSClick(Sender: TObject);
@ -166,18 +275,37 @@ type
procedure miIntFPClick(Sender: TObject);
procedure miIntINTClick(Sender: TObject);
procedure miIntLOGOClick(Sender: TObject);
procedure miJSAxisSwapClick(Sender: TObject);
procedure miJSXRevClick(Sender: TObject);
procedure miJSYRevClick(Sender: TObject);
procedure miMonoDotsClick(Sender: TObject);
procedure miMonoRasterClick(Sender: TObject);
procedure miMonoVoxelsClick(Sender: TObject);
procedure miMVOL000Click(Sender: TObject);
procedure miPSG0m100Click(Sender: TObject);
procedure miPSG1m100Click(Sender: TObject);
procedure miScanLineIntClick(Sender: TObject);
procedure miSerialClick(Sender: TObject);
procedure miSerialVModemClick(Sender: TObject);
procedure miSHRClick(Sender: TObject);
procedure miSHRColorDotsClick(Sender: TObject);
procedure miSHRColorRasterClick(Sender: TObject);
procedure miSHRColorVoxelsClick(Sender: TObject);
procedure miSLIClick(Sender: TObject);
procedure miSNDMasterClick(Sender: TObject);
procedure miSNDMutedClick(Sender: TObject);
procedure miSNDPSG0Click(Sender: TObject);
procedure miSNDPSG1Click(Sender: TObject);
procedure miSNDSpeakerClick(Sender: TObject);
procedure miSPEjectClick(Sender: TObject);
procedure miSPFileClick(Sender: TObject);
procedure miSVOL000Click(Sender: TObject);
procedure miTintModeClick(Sender: TObject);
procedure miTMNoneClick(Sender: TObject);
procedure miVD1Click(Sender: TObject);
procedure miVDClick(Sender: TObject);
procedure MouseTimerTimer(Sender: TObject);
procedure sidecarPanelResize(Sender: TObject);
procedure tbRMClick(Sender: TObject);
procedure tbRMColorClick(Sender: TObject);
procedure tbTintModeClick(Sender: TObject);
@ -191,6 +319,7 @@ type
procedure ReposWindow;
procedure RepaintWindow;
procedure UpdateColorMode;
procedure UpdateTintMode;
function GetTitleOfActiveWindow: string;
procedure SendKey(key: Integer; ScanCode: Integer; KeyAction: Integer; Mods: Integer);
procedure tbDisk1MouseDown(Sender: TObject; Button: TMouseButton;
@ -267,6 +396,32 @@ begin
self.hc.Get(baseUrl + '/api/control/window/freeze');
end;
procedure TGUIForm.miAR100Click(Sender: TObject);
begin
UpdateConfig( 'video/init.aspect', TMenuItem(sender).Caption, true );
end;
procedure TGUIForm.miARClick(Sender: TObject);
var
aspect: string;
begin
//
aspect := GetConfig( 'video/init.aspect' );
case aspect of
'1.00': miAR100.Checked := true;
'1.33': miAR133.Checked := true;
'1.46': miAR146.Checked := true;
'1.62': miAR162.Checked := true;
'1.78': miAR178.Checked := true;
end;
end;
procedure TGUIForm.miAudioClick(Sender: TObject);
begin
// muted
miSNDMuted.Checked := GetConfig('audio/init.master.mute') = '1';
end;
procedure TGUIForm.miColorDotsClick(Sender: TObject);
begin
UpdateConfig( 'video/init.video.hgrmode', '0', true );
@ -369,7 +524,7 @@ end;
procedure TGUIForm.miDHRMonoDotsClick(Sender: TObject);
begin
UpdateConfig( 'video/init.video.dhgrmode', '4', true );
UpdateConfig( 'video/init.video.dhgrmode', '3', true );
end;
procedure TGUIForm.miDHRMonoRasterClick(Sender: TObject);
@ -379,7 +534,7 @@ end;
procedure TGUIForm.miDHRMonoVoxelsClick(Sender: TObject);
begin
UpdateConfig( 'video/init.video.dhgrmode', '5', true );
UpdateConfig( 'video/init.video.dhgrmode', '4', true );
end;
procedure TGUIForm.miFileCatClick(Sender: TObject);
@ -413,6 +568,26 @@ begin
UpdateConfig( 'video/init.video.grmode', '1', true );
end;
procedure TGUIForm.miINPAllCapsClick(Sender: TObject);
var
mi: TMenuItem;
begin
mi := TMenuItem(sender);
mi.Checked := not mi.Checked;
if mi.Checked then
UpdateConfig( 'input/init.uppercase', '1', true )
else
UpdateConfig( 'input/init.uppercase', '0', true );
end;
procedure TGUIForm.miINPJoystickClick(Sender: TObject);
begin
// setup joystick menu
miJSXRev.Checked := GetConfig( 'input/init.joystick.reversex' ) = '1';
miJSYRev.Checked := GetConfig( 'input/init.joystick.reversey' ) = '1';
miJSAxisSwap.Checked := GetConfig( 'input/init.joystick.axis0' ) = '1';
end;
procedure TGUIForm.miINPMMJoystickClick(Sender: TObject);
begin
UpdateConfig('input/init.mouse', '0', true);
@ -485,6 +660,38 @@ begin
self.hc.Get(baseUrl + '/api/control/interpreter/logo');
end;
procedure TGUIForm.miJSAxisSwapClick(Sender: TObject);
var
p0, p1: string;
begin
p0 := GetConfig( 'input/init.joystick.axis0' );
p1 := GetConfig( 'input/init.joystick.axis1' );
UpdateConfig( 'input/init.joystick.axis0', p1, true );
UpdateConfig( 'input/init.joystick.axis1', p0, true );
end;
procedure TGUIForm.miJSXRevClick(Sender: TObject);
var
p0: string;
begin
p0 := GetConfig( 'input/init.joystick.reversex' );
if p0 = '1' then
UpdateConfig( 'input/init.joystick.reversex', '0', true )
else
UpdateConfig( 'input/init.joystick.reversex', '1', true );
end;
procedure TGUIForm.miJSYRevClick(Sender: TObject);
var
p0: string;
begin
p0 := GetConfig( 'input/init.joystick.reversey' );
if p0 = '1' then
UpdateConfig( 'input/init.joystick.reversey', '0', true )
else
UpdateConfig( 'input/init.joystick.reversey', '1', true );
end;
procedure TGUIForm.miMonoDotsClick(Sender: TObject);
begin
UpdateConfig( 'video/init.video.hgrmode', '3', true );
@ -500,6 +707,53 @@ begin
UpdateConfig( 'video/init.video.hgrmode', '4', true );
end;
procedure TGUIForm.miMVOL000Click(Sender: TObject);
begin
case TMenuItem(sender).Caption of
'0': UpdateConfig( 'audio/init.master.volume', '0.0', true );
'1': UpdateConfig( 'audio/init.master.volume', '0.1', true );
'2': UpdateConfig( 'audio/init.master.volume', '0.2', true );
'3': UpdateConfig( 'audio/init.master.volume', '0.3', true );
'4': UpdateConfig( 'audio/init.master.volume', '0.4', true );
'5': UpdateConfig( 'audio/init.master.volume', '0.5', true );
'6': UpdateConfig( 'audio/init.master.volume', '0.6', true );
'7': UpdateConfig( 'audio/init.master.volume', '0.7', true );
'8': UpdateConfig( 'audio/init.master.volume', '0.8', true );
'9': UpdateConfig( 'audio/init.master.volume', '0.9', true );
'10': UpdateConfig( 'audio/init.master.volume', '1.0', true );
end;
end;
procedure TGUIForm.miPSG0m100Click(Sender: TObject);
begin
case TMenuItem(sender).Tag of
-100: UpdateConfig( 'audio/init.mockingboard.psg0balance', '-1.00', true );
-75: UpdateConfig( 'audio/init.mockingboard.psg0balance', '-0.75', true );
-50: UpdateConfig( 'audio/init.mockingboard.psg0balance', '-0.50', true );
-25: UpdateConfig( 'audio/init.mockingboard.psg0balance', '-0.25', true );
0: UpdateConfig( 'audio/init.mockingboard.psg0balance', '0.00', true );
25: UpdateConfig( 'audio/init.mockingboard.psg0balance', '0.25', true );
50: UpdateConfig( 'audio/init.mockingboard.psg0balance', '0.50', true );
75: UpdateConfig( 'audio/init.mockingboard.psg0balance', '0.75', true );
100: UpdateConfig( 'audio/init.mockingboard.psg0balance', '1.00', true );
end;
end;
procedure TGUIForm.miPSG1m100Click(Sender: TObject);
begin
case TMenuItem(sender).Tag of
-100: UpdateConfig( 'audio/init.mockingboard.psg1balance', '-1.00', true );
-75: UpdateConfig( 'audio/init.mockingboard.psg1balance', '-0.75', true );
-50: UpdateConfig( 'audio/init.mockingboard.psg1balance', '-0.50', true );
-25: UpdateConfig( 'audio/init.mockingboard.psg1balance', '-0.25', true );
0: UpdateConfig( 'audio/init.mockingboard.psg1balance', '0.00', true );
25: UpdateConfig( 'audio/init.mockingboard.psg1balance', '0.25', true );
50: UpdateConfig( 'audio/init.mockingboard.psg1balance', '0.50', true );
75: UpdateConfig( 'audio/init.mockingboard.psg1balance', '0.75', true );
100: UpdateConfig( 'audio/init.mockingboard.psg1balance', '1.00', true );
end;
end;
procedure TGUIForm.miScanLineIntClick(Sender: TObject);
var
value: string;
@ -524,6 +778,32 @@ begin
end;
end;
procedure TGUIForm.miSerialClick(Sender: TObject);
var
mode: string;
ovr: string;
begin
{ get serial card option }
mode := GetConfig( 'hardware/init.serial.mode' );
ovr := GetConfig( 'override/ssc.disable.telnet' );
if ovr = '1' then
begin
miSerialVModem.Checked := true;
miSerialTelnetServer.Visible := false;
end
else
begin
miSerialVModem.Checked := (mode = '0');
miSerialTelnetServer.Visible := true;
miSerialTelnetServer.Checked := (mode = '1');
end;
end;
procedure TGUIForm.miSerialVModemClick(Sender: TObject);
begin
UpdateConfig( 'hardware/init.serial.mode', IntToStr(TMenuItem(sender).Tag), true );
end;
procedure TGUIForm.miSHRClick(Sender: TObject);
var
value: string;
@ -565,6 +845,80 @@ begin
UpdateConfig( 'video/init.video.scanline', values[StrToInt(TMenuItem(Sender).Caption)], true );
end;
procedure TGUIForm.miSNDMasterClick(Sender: TObject);
begin
case GetConfig( 'audio/init.master.volume' ) of
'0.00': miMVOL000.Checked := true;
'0.10': miMVOL010.Checked := true;
'0.20': miMVOL020.Checked := true;
'0.30': miMVOL030.Checked := true;
'0.40': miMVOL040.Checked := true;
'0.50': miMVOL050.Checked := true;
'0.60': miMVOL060.Checked := true;
'0.70': miMVOL070.Checked := true;
'0.80': miMVOL080.Checked := true;
'0.90': miMVOL090.Checked := true;
'1.00': miMVOL100.Checked := true;
end;
end;
procedure TGUIForm.miSNDMutedClick(Sender: TObject);
begin
if GetConfig('audio/init.master.mute') = '1' then
UpdateConfig( 'audio/init.master.mute', '0', false )
else
UpdateConfig( 'audio/init.master.mute', '1', false );
end;
procedure TGUIForm.miSNDPSG0Click(Sender: TObject);
begin
// get psg 1 balance ...
case GetConfig( 'audio/init.mockingboard.psg0balance' ) of
'-1.00': miPSG0m100.Checked := true;
'-0.75': miPSG0m75.Checked := true;
'-0.50': miPSG0m50.Checked := true;
'-0.25': miPSG0m25.Checked := true;
'0.00': miPSG0p0.Checked := true;
'0.25': miPSG0p25.Checked := true;
'0.50': miPSG0p50.Checked := true;
'0.75': miPSG0p75.Checked := true;
'1.00': miPSG0p100.Checked := true;
end;
end;
procedure TGUIForm.miSNDPSG1Click(Sender: TObject);
begin
// get psg 1 balance ...
case GetConfig( 'audio/init.mockingboard.psg1balance' ) of
'-1.00': miPSG1m100.Checked := true;
'-0.75': miPSG1m75.Checked := true;
'-0.50': miPSG1m50.Checked := true;
'-0.25': miPSG1m25.Checked := true;
'0.00': miPSG1p0.Checked := true;
'0.25': miPSG1p25.Checked := true;
'0.50': miPSG1p50.Checked := true;
'0.75': miPSG1p75.Checked := true;
'1.00': miPSG1p100.Checked := true;
end;
end;
procedure TGUIForm.miSNDSpeakerClick(Sender: TObject);
begin
case GetConfig( 'audio/init.speaker.volume' ) of
'0.00': miSVOL000.Checked := true;
'0.10': miSVOL010.Checked := true;
'0.20': miSVOL020.Checked := true;
'0.30': miSVOL030.Checked := true;
'0.40': miSVOL040.Checked := true;
'0.50': miSVOL050.Checked := true;
'0.60': miSVOL060.Checked := true;
'0.70': miSVOL070.Checked := true;
'0.80': miSVOL080.Checked := true;
'0.90': miSVOL090.Checked := true;
'1.00': miSVOL100.Checked := true;
end;
end;
procedure TGUIForm.miSPEjectClick(Sender: TObject);
begin
self.hc.Get(baseUrl + '/api/control/hardware/disk/eject/2');
@ -581,6 +935,79 @@ begin
ShowM8;
end;
procedure TGUIForm.miSVOL000Click(Sender: TObject);
begin
case TMenuItem(sender).Caption of
'0': UpdateConfig( 'audio/init.speaker.volume', '0.0', true );
'1': UpdateConfig( 'audio/init.speaker.volume', '0.1', true );
'2': UpdateConfig( 'audio/init.speaker.volume', '0.2', true );
'3': UpdateConfig( 'audio/init.speaker.volume', '0.3', true );
'4': UpdateConfig( 'audio/init.speaker.volume', '0.4', true );
'5': UpdateConfig( 'audio/init.speaker.volume', '0.5', true );
'6': UpdateConfig( 'audio/init.speaker.volume', '0.6', true );
'7': UpdateConfig( 'audio/init.speaker.volume', '0.7', true );
'8': UpdateConfig( 'audio/init.speaker.volume', '0.8', true );
'9': UpdateConfig( 'audio/init.speaker.volume', '0.9', true );
'10': UpdateConfig( 'audio/init.speaker.volume', '1.0', true );
end;
end;
procedure TGUIForm.miTintModeClick(Sender: TObject);
var
t: integer;
begin
t := StrToInt( GetConfig( 'video/init.video.tintmode') );
case t of
0: miTMNone.Checked := true;
1: miTMGrey.Checked := true;
2: miTMGreen.Checked := true;
3: miTMAmber.Checked := true;
end;
end;
procedure TGUIForm.miTMNoneClick(Sender: TObject);
var
t: integer;
s: TMenuItem;
begin
t := 0;
s := TMenuItem(sender);
if s.Caption = 'Grey' then
t := 1
else if s.Caption = 'Green' then
t := 2
else if s.Caption = 'Amber' then
t := 3;
UpdateConfig( 'video/init.video.tintmode', IntToStr(t), true );
UpdateTintMode;
end;
procedure TGUIForm.miVD1Click(Sender: TObject);
var
i: integer;
begin
i := StrToInt(Copy( TMenuItem(sender).Caption, 1, 1 )) - 1;
UpdateConfig( 'video/init.video.voxeldepth', IntToStr(i), true );
end;
procedure TGUIForm.miVDClick(Sender: TObject);
var
i: integer;
begin
i := StrToInt( GetConfig('video/init.video.voxeldepth') );
case i of
0: miVD1.Checked := true;
1: miVD2.Checked := true;
2: miVD3.Checked := true;
3: miVD4.Checked := true;
4: miVD5.Checked := true;
5: miVD6.Checked := true;
6: miVD7.Checked := true;
7: miVD8.Checked := true;
8: miVD9.Checked := true;
end;
end;
procedure TGUIForm.MouseTimerTimer(Sender: TObject);
var
x, y: longint;
@ -604,6 +1031,14 @@ begin
end;
end;
procedure TGUIForm.sidecarPanelResize(Sender: TObject);
var
h: double;
begin
h := sidecarPanel.Height;
sidecarPanel.Width := Round(0.34 * h);
end;
procedure TGUIForm.UpdateRenderMode;
var
t: integer;
@ -673,6 +1108,14 @@ begin
UpdateColorMode;
end;
procedure TGUIForm.UpdateTintMode;
var
t: integer;
begin
t := StrToInt( GetConfig( 'video/init.video.tintmode' ) );
tbTintMode.ImageIndex := t;
end;
procedure TGUIForm.tbTintModeClick(Sender: TObject);
var
t: integer;
@ -684,8 +1127,7 @@ begin
if t > 3 then
t := 0;
UpdateConfig( 'video/init.video.tintmode', IntToStr(t), false );
t := StrToInt( GetConfig( 'video/init.video.tintmode' ) );
tbTintMode.ImageIndex := t;
UpdateTintMode;
end;
@ -896,7 +1338,11 @@ begin
end;
procedure TGUIForm.FormChangeBounds(Sender: TObject);
var
h: double;
begin
h := sidecarPanel.Height;
sidecarPanel.Width := Round(0.34 * h);
self.ReposWindow;
end;
@ -957,6 +1403,7 @@ begin
//StatusBar1.SimpleText := 'App is refocussing';
lastShowTime := Now();
end;
ReposWindow;
end;
procedure TGUIForm.FormCreate(Sender: TObject);
@ -1112,8 +1559,11 @@ begin
end;
procedure TGUIForm.FormResize(Sender: TObject);
var
h: double;
begin
// on form resize we need to send a size request
h := sidecarPanel.Height;
sidecarPanel.Width := Round(0.34 * h);
ReposWindow;
end;
@ -1137,6 +1587,19 @@ begin
ShowM8;
end;
procedure TGUIForm.Image1Click(Sender: TObject);
begin
end;
procedure TGUIForm.InputClick(Sender: TObject);
var
value: string;
begin
// setup item states
miINPAllCaps.Checked := (GetConfig( 'input/init.uppercase' ) = '1');
end;
procedure TGUIForm.MenuItem15Click(Sender: TObject);
var
value: string;

View File

@ -37,7 +37,7 @@
<PackageName Value="LCL"/>
</Item3>
</RequiredPackages>
<Units Count="2">
<Units Count="3">
<Unit0>
<Filename Value="poc.lpr"/>
<IsPartOfProject Value="True"/>
@ -49,6 +49,12 @@
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit1>
<Unit2>
<Filename Value="mixer.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmMixer"/>
<ResourceBaseClass Value="Form"/>
</Unit2>
</Units>
</ProjectOptions>
<CompilerOptions>

View File

@ -4,7 +4,7 @@
<PathDelim Value="\"/>
<Version Value="11"/>
<BuildModes Active="Default"/>
<Units Count="3">
<Units Count="4">
<Unit0>
<Filename Value="poc.lpr"/>
<IsPartOfProject Value="True"/>
@ -21,8 +21,8 @@
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<IsVisibleTab Value="True"/>
<TopLine Value="782"/>
<CursorPos X="21" Y="799"/>
<TopLine Value="1191"/>
<CursorPos X="33" Y="1205"/>
<UsageCount Value="323"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
@ -32,129 +32,141 @@
<EditorIndex Value="-1"/>
<TopLine Value="576"/>
<CursorPos X="49" Y="591"/>
<UsageCount Value="136"/>
<UsageCount Value="134"/>
</Unit2>
<Unit3>
<Filename Value="mixer.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmMixer"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="1"/>
<TopLine Value="3"/>
<CursorPos X="26" Y="25"/>
<UsageCount Value="33"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit3>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="main.pas"/>
<Caret Line="620" Column="46" TopLine="602"/>
<Caret Line="910" Column="42" TopLine="897"/>
</Position1>
<Position2>
<Filename Value="main.pas"/>
<Caret Line="621" Column="46" TopLine="603"/>
<Caret Line="1168" TopLine="1150"/>
</Position2>
<Position3>
<Filename Value="main.pas"/>
<Caret Line="622" Column="46" TopLine="604"/>
<Caret Line="1169" TopLine="1151"/>
</Position3>
<Position4>
<Filename Value="main.pas"/>
<Caret Line="623" Column="46" TopLine="605"/>
<Caret Line="1170" TopLine="1152"/>
</Position4>
<Position5>
<Filename Value="main.pas"/>
<Caret Line="624" Column="46" TopLine="606"/>
<Caret Line="1171" TopLine="1153"/>
</Position5>
<Position6>
<Filename Value="main.pas"/>
<Caret Line="213" Column="30" TopLine="190"/>
<Caret Line="1172" TopLine="1154"/>
</Position6>
<Position7>
<Filename Value="main.pas"/>
<Caret Line="467" Column="98" TopLine="448"/>
<Caret Line="1173" TopLine="1155"/>
</Position7>
<Position8>
<Filename Value="main.pas"/>
<Caret Line="232" Column="76" TopLine="237"/>
<Caret Line="1174" TopLine="1156"/>
</Position8>
<Position9>
<Filename Value="main.pas"/>
<Caret Line="233" Column="76" TopLine="233"/>
<Caret Line="1181" TopLine="1163"/>
</Position9>
<Position10>
<Filename Value="main.pas"/>
<Caret Line="234" Column="76" TopLine="234"/>
<Caret Line="778" Column="23" TopLine="774"/>
</Position10>
<Position11>
<Filename Value="main.pas"/>
<Caret Line="235" Column="76" TopLine="235"/>
<Caret Line="776" Column="26" TopLine="774"/>
</Position11>
<Position12>
<Filename Value="main.pas"/>
<Caret Line="236" Column="76" TopLine="236"/>
<Caret Line="778" Column="26" TopLine="776"/>
</Position12>
<Position13>
<Filename Value="main.pas"/>
<Caret Line="238" Column="76" TopLine="238"/>
<Caret Line="1032" Column="68" TopLine="1013"/>
</Position13>
<Position14>
<Filename Value="main.pas"/>
<Caret Line="612" Column="33" TopLine="583"/>
<Caret Line="1035" Column="33" TopLine="1013"/>
</Position14>
<Position15>
<Filename Value="main.pas"/>
<Caret Line="610" Column="66" TopLine="591"/>
<Caret Line="1031" TopLine="1016"/>
</Position15>
<Position16>
<Filename Value="main.pas"/>
<Caret Line="692" TopLine="674"/>
<Caret Line="1560" Column="34" TopLine="1552"/>
</Position16>
<Position17>
<Filename Value="main.pas"/>
<Caret Line="614" Column="24" TopLine="599"/>
<Caret Line="1562" Column="34" TopLine="1554"/>
</Position17>
<Position18>
<Filename Value="main.pas"/>
<Caret Line="192" Column="30" TopLine="174"/>
<Caret Line="1585" Column="3" TopLine="1554"/>
</Position18>
<Position19>
<Filename Value="main.pas"/>
<Caret Line="618" Column="40" TopLine="600"/>
<Caret Line="1586" Column="3" TopLine="1555"/>
</Position19>
<Position20>
<Filename Value="main.pas"/>
<Caret Line="183" Column="36" TopLine="158"/>
<Caret Line="1556" TopLine="1555"/>
</Position20>
<Position21>
<Filename Value="main.pas"/>
<Caret Line="822" TopLine="804"/>
<Caret Line="1452" Column="44" TopLine="1447"/>
</Position21>
<Position22>
<Filename Value="main.pas"/>
<Caret Line="820" Column="5" TopLine="804"/>
<Caret Line="542" Column="3" TopLine="548"/>
</Position22>
<Position23>
<Filename Value="main.pas"/>
<Caret Line="794" Column="29" TopLine="787"/>
<Caret Line="1343" TopLine="1324"/>
</Position23>
<Position24>
<Filename Value="main.pas"/>
<Caret Line="820" Column="5" TopLine="804"/>
<Caret Line="1338" Column="35" TopLine="1325"/>
</Position24>
<Position25>
<Filename Value="main.pas"/>
<Caret Line="179" Column="42" TopLine="157"/>
<Caret Line="1346" Column="20" TopLine="1325"/>
</Position25>
<Position26>
<Filename Value="main.pas"/>
<Caret Line="793" Column="48" TopLine="820"/>
<Caret Line="1351" Column="23" TopLine="1325"/>
</Position26>
<Position27>
<Filename Value="main.pas"/>
<Caret Line="821" TopLine="802"/>
<Caret Line="1204" Column="17" TopLine="1181"/>
</Position27>
<Position28>
<Filename Value="main.pas"/>
<Caret Line="811" Column="20" TopLine="785"/>
<Caret Line="1217" TopLine="1186"/>
</Position28>
<Position29>
<Filename Value="main.pas"/>
<Caret Line="810" Column="6" TopLine="780"/>
<Caret Line="1406" Column="10" TopLine="1388"/>
</Position29>
<Position30>
<Filename Value="main.pas"/>
<Caret Line="799" Column="28" TopLine="780"/>
<Caret Line="319" Column="15" TopLine="301"/>
</Position30>
</JumpHistory>
<RunParams>

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

5636
main.lfm

File diff suppressed because it is too large Load Diff

461
main.pas
View File

@ -19,11 +19,113 @@ type
TGUIForm = class(TForm)
backdrop: TImage;
Image1: TImage;
pnlContainer: TPanel;
SideImages: TImageList;
miWarp400: TMenuItem;
miWarp200: TMenuItem;
miWarp100: TMenuItem;
miWarp50: TMenuItem;
miWarp25: TMenuItem;
miCPU65c02: TMenuItem;
miCPU6502: TMenuItem;
miDisksSwap: TMenuItem;
miDisksDisableWarp: TMenuItem;
miDisksConvertWOZ: TMenuItem;
miPDFTO60s: TMenuItem;
miPDFTO45s: TMenuItem;
miPDFTO30s: TMenuItem;
miPDFTO15s: TMenuItem;
miPDFTO5s: TMenuItem;
miPrinterPDF: TMenuItem;
miCPUWarp: TMenuItem;
miCPUType: TMenuItem;
miSerialTelnetServer: TMenuItem;
miSerialVModem: TMenuItem;
miDisks: TMenuItem;
miPrinter: TMenuItem;
miCPU: TMenuItem;
miSerial: TMenuItem;
miHardware: TMenuItem;
miSVOL100: TMenuItem;
miSVOL090: TMenuItem;
miSVOL080: TMenuItem;
miSVOL070: TMenuItem;
miSVOL060: TMenuItem;
miSVOL050: TMenuItem;
miSVOL040: TMenuItem;
miSVOL030: TMenuItem;
miSVOL020: TMenuItem;
miSVOL010: TMenuItem;
miSVOL000: TMenuItem;
miMVOL100: TMenuItem;
miMVOL090: TMenuItem;
miMVOL080: TMenuItem;
miMVOL070: TMenuItem;
miMVOL060: TMenuItem;
miMVOL050: TMenuItem;
miMVOL040: TMenuItem;
miMVOL030: TMenuItem;
miMVOL020: TMenuItem;
miMVOL010: TMenuItem;
miMVOL000: TMenuItem;
miPSG0p100: TMenuItem;
miPSG0p75: TMenuItem;
miPSG0p50: TMenuItem;
miPSG0p25: TMenuItem;
miPSG0p0: TMenuItem;
miPSG0m25: TMenuItem;
miPSG0m50: TMenuItem;
miPSG0m75: TMenuItem;
miPSG0m100: TMenuItem;
miSNDPSG0: TMenuItem;
miPSG1p100: TMenuItem;
miPSG1p75: TMenuItem;
miPSG1p50: TMenuItem;
miPSG1p25: TMenuItem;
miPSG1p0: TMenuItem;
miPSG1m25: TMenuItem;
miPSG1m50: TMenuItem;
miPSG1m75: TMenuItem;
miPSG1m100: TMenuItem;
miSNDPSG1: TMenuItem;
miSNDMockingboard: TMenuItem;
miSNDSpeaker: TMenuItem;
miSNDMaster: TMenuItem;
miSNDMuted: TMenuItem;
miAudio: TMenuItem;
miJSYRev: TMenuItem;
miJSXRev: TMenuItem;
miJSAxisSwap: TMenuItem;
miVD9: TMenuItem;
miVD8: TMenuItem;
miVD7: TMenuItem;
miVD6: TMenuItem;
miVD5: TMenuItem;
miVD4: TMenuItem;
miVD3: TMenuItem;
miVD2: TMenuItem;
miVD1: TMenuItem;
miVD: TMenuItem;
miAR178: TMenuItem;
miAR162: TMenuItem;
miAR146: TMenuItem;
miAR100: TMenuItem;
miAR133: TMenuItem;
miAR: TMenuItem;
miTMAmber: TMenuItem;
miTMGreen: TMenuItem;
miTMGrey: TMenuItem;
miTMNone: TMenuItem;
miTintMode: TMenuItem;
N4: TMenuItem;
N3: TMenuItem;
N2: TMenuItem;
miTintOff: TMenuItem;
miTintGrey: TMenuItem;
miTintGreen: TMenuItem;
miTintAmber: TMenuItem;
sidecarPanel: TPanel;
ToolTimer: TTimer;
TintMode: TPopupMenu;
ToolbarIcons: TImageList;
@ -129,11 +231,16 @@ type
procedure FormShow(Sender: TObject);
procedure FormUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
procedure FormWindowStateChange(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure InputClick(Sender: TObject);
procedure MenuItem15Click(Sender: TObject);
procedure MenuItem16Click(Sender: TObject);
procedure MenuItem1Click(Sender: TObject);
procedure MenuItem2Click(Sender: TObject);
procedure Freeze;
procedure miAR100Click(Sender: TObject);
procedure miARClick(Sender: TObject);
procedure miAudioClick(Sender: TObject);
procedure miColorDotsClick(Sender: TObject);
procedure miColorRasterClick(Sender: TObject);
procedure miColorVoxelsClick(Sender: TObject);
@ -155,6 +262,8 @@ type
procedure miGRRasterClick(Sender: TObject);
procedure miGRRenderModeClick(Sender: TObject);
procedure miGRVoxelsClick(Sender: TObject);
procedure miINPAllCapsClick(Sender: TObject);
procedure miINPJoystickClick(Sender: TObject);
procedure miINPMMDDrawClick(Sender: TObject);
procedure miINPMMDPADClick(Sender: TObject);
procedure miINPMMGEOSClick(Sender: TObject);
@ -166,18 +275,37 @@ type
procedure miIntFPClick(Sender: TObject);
procedure miIntINTClick(Sender: TObject);
procedure miIntLOGOClick(Sender: TObject);
procedure miJSAxisSwapClick(Sender: TObject);
procedure miJSXRevClick(Sender: TObject);
procedure miJSYRevClick(Sender: TObject);
procedure miMonoDotsClick(Sender: TObject);
procedure miMonoRasterClick(Sender: TObject);
procedure miMonoVoxelsClick(Sender: TObject);
procedure miMVOL000Click(Sender: TObject);
procedure miPSG0m100Click(Sender: TObject);
procedure miPSG1m100Click(Sender: TObject);
procedure miScanLineIntClick(Sender: TObject);
procedure miSerialClick(Sender: TObject);
procedure miSerialVModemClick(Sender: TObject);
procedure miSHRClick(Sender: TObject);
procedure miSHRColorDotsClick(Sender: TObject);
procedure miSHRColorRasterClick(Sender: TObject);
procedure miSHRColorVoxelsClick(Sender: TObject);
procedure miSLIClick(Sender: TObject);
procedure miSNDMasterClick(Sender: TObject);
procedure miSNDMutedClick(Sender: TObject);
procedure miSNDPSG0Click(Sender: TObject);
procedure miSNDPSG1Click(Sender: TObject);
procedure miSNDSpeakerClick(Sender: TObject);
procedure miSPEjectClick(Sender: TObject);
procedure miSPFileClick(Sender: TObject);
procedure miSVOL000Click(Sender: TObject);
procedure miTintModeClick(Sender: TObject);
procedure miTMNoneClick(Sender: TObject);
procedure miVD1Click(Sender: TObject);
procedure miVDClick(Sender: TObject);
procedure MouseTimerTimer(Sender: TObject);
procedure sidecarPanelResize(Sender: TObject);
procedure tbRMClick(Sender: TObject);
procedure tbRMColorClick(Sender: TObject);
procedure tbTintModeClick(Sender: TObject);
@ -268,6 +396,32 @@ begin
self.hc.Get(baseUrl + '/api/control/window/freeze');
end;
procedure TGUIForm.miAR100Click(Sender: TObject);
begin
UpdateConfig( 'video/init.aspect', TMenuItem(sender).Caption, true );
end;
procedure TGUIForm.miARClick(Sender: TObject);
var
aspect: string;
begin
//
aspect := GetConfig( 'video/init.aspect' );
case aspect of
'1.00': miAR100.Checked := true;
'1.33': miAR133.Checked := true;
'1.46': miAR146.Checked := true;
'1.62': miAR162.Checked := true;
'1.78': miAR178.Checked := true;
end;
end;
procedure TGUIForm.miAudioClick(Sender: TObject);
begin
// muted
miSNDMuted.Checked := GetConfig('audio/init.master.mute') = '1';
end;
procedure TGUIForm.miColorDotsClick(Sender: TObject);
begin
UpdateConfig( 'video/init.video.hgrmode', '0', true );
@ -370,7 +524,7 @@ end;
procedure TGUIForm.miDHRMonoDotsClick(Sender: TObject);
begin
UpdateConfig( 'video/init.video.dhgrmode', '4', true );
UpdateConfig( 'video/init.video.dhgrmode', '3', true );
end;
procedure TGUIForm.miDHRMonoRasterClick(Sender: TObject);
@ -380,7 +534,7 @@ end;
procedure TGUIForm.miDHRMonoVoxelsClick(Sender: TObject);
begin
UpdateConfig( 'video/init.video.dhgrmode', '5', true );
UpdateConfig( 'video/init.video.dhgrmode', '4', true );
end;
procedure TGUIForm.miFileCatClick(Sender: TObject);
@ -414,6 +568,26 @@ begin
UpdateConfig( 'video/init.video.grmode', '1', true );
end;
procedure TGUIForm.miINPAllCapsClick(Sender: TObject);
var
mi: TMenuItem;
begin
mi := TMenuItem(sender);
mi.Checked := not mi.Checked;
if mi.Checked then
UpdateConfig( 'input/init.uppercase', '1', true )
else
UpdateConfig( 'input/init.uppercase', '0', true );
end;
procedure TGUIForm.miINPJoystickClick(Sender: TObject);
begin
// setup joystick menu
miJSXRev.Checked := GetConfig( 'input/init.joystick.reversex' ) = '1';
miJSYRev.Checked := GetConfig( 'input/init.joystick.reversey' ) = '1';
miJSAxisSwap.Checked := GetConfig( 'input/init.joystick.axis0' ) = '1';
end;
procedure TGUIForm.miINPMMJoystickClick(Sender: TObject);
begin
UpdateConfig('input/init.mouse', '0', true);
@ -486,6 +660,38 @@ begin
self.hc.Get(baseUrl + '/api/control/interpreter/logo');
end;
procedure TGUIForm.miJSAxisSwapClick(Sender: TObject);
var
p0, p1: string;
begin
p0 := GetConfig( 'input/init.joystick.axis0' );
p1 := GetConfig( 'input/init.joystick.axis1' );
UpdateConfig( 'input/init.joystick.axis0', p1, true );
UpdateConfig( 'input/init.joystick.axis1', p0, true );
end;
procedure TGUIForm.miJSXRevClick(Sender: TObject);
var
p0: string;
begin
p0 := GetConfig( 'input/init.joystick.reversex' );
if p0 = '1' then
UpdateConfig( 'input/init.joystick.reversex', '0', true )
else
UpdateConfig( 'input/init.joystick.reversex', '1', true );
end;
procedure TGUIForm.miJSYRevClick(Sender: TObject);
var
p0: string;
begin
p0 := GetConfig( 'input/init.joystick.reversey' );
if p0 = '1' then
UpdateConfig( 'input/init.joystick.reversey', '0', true )
else
UpdateConfig( 'input/init.joystick.reversey', '1', true );
end;
procedure TGUIForm.miMonoDotsClick(Sender: TObject);
begin
UpdateConfig( 'video/init.video.hgrmode', '3', true );
@ -501,6 +707,53 @@ begin
UpdateConfig( 'video/init.video.hgrmode', '4', true );
end;
procedure TGUIForm.miMVOL000Click(Sender: TObject);
begin
case TMenuItem(sender).Caption of
'0': UpdateConfig( 'audio/init.master.volume', '0.0', true );
'1': UpdateConfig( 'audio/init.master.volume', '0.1', true );
'2': UpdateConfig( 'audio/init.master.volume', '0.2', true );
'3': UpdateConfig( 'audio/init.master.volume', '0.3', true );
'4': UpdateConfig( 'audio/init.master.volume', '0.4', true );
'5': UpdateConfig( 'audio/init.master.volume', '0.5', true );
'6': UpdateConfig( 'audio/init.master.volume', '0.6', true );
'7': UpdateConfig( 'audio/init.master.volume', '0.7', true );
'8': UpdateConfig( 'audio/init.master.volume', '0.8', true );
'9': UpdateConfig( 'audio/init.master.volume', '0.9', true );
'10': UpdateConfig( 'audio/init.master.volume', '1.0', true );
end;
end;
procedure TGUIForm.miPSG0m100Click(Sender: TObject);
begin
case TMenuItem(sender).Tag of
-100: UpdateConfig( 'audio/init.mockingboard.psg0balance', '-1.00', true );
-75: UpdateConfig( 'audio/init.mockingboard.psg0balance', '-0.75', true );
-50: UpdateConfig( 'audio/init.mockingboard.psg0balance', '-0.50', true );
-25: UpdateConfig( 'audio/init.mockingboard.psg0balance', '-0.25', true );
0: UpdateConfig( 'audio/init.mockingboard.psg0balance', '0.00', true );
25: UpdateConfig( 'audio/init.mockingboard.psg0balance', '0.25', true );
50: UpdateConfig( 'audio/init.mockingboard.psg0balance', '0.50', true );
75: UpdateConfig( 'audio/init.mockingboard.psg0balance', '0.75', true );
100: UpdateConfig( 'audio/init.mockingboard.psg0balance', '1.00', true );
end;
end;
procedure TGUIForm.miPSG1m100Click(Sender: TObject);
begin
case TMenuItem(sender).Tag of
-100: UpdateConfig( 'audio/init.mockingboard.psg1balance', '-1.00', true );
-75: UpdateConfig( 'audio/init.mockingboard.psg1balance', '-0.75', true );
-50: UpdateConfig( 'audio/init.mockingboard.psg1balance', '-0.50', true );
-25: UpdateConfig( 'audio/init.mockingboard.psg1balance', '-0.25', true );
0: UpdateConfig( 'audio/init.mockingboard.psg1balance', '0.00', true );
25: UpdateConfig( 'audio/init.mockingboard.psg1balance', '0.25', true );
50: UpdateConfig( 'audio/init.mockingboard.psg1balance', '0.50', true );
75: UpdateConfig( 'audio/init.mockingboard.psg1balance', '0.75', true );
100: UpdateConfig( 'audio/init.mockingboard.psg1balance', '1.00', true );
end;
end;
procedure TGUIForm.miScanLineIntClick(Sender: TObject);
var
value: string;
@ -525,6 +778,32 @@ begin
end;
end;
procedure TGUIForm.miSerialClick(Sender: TObject);
var
mode: string;
ovr: string;
begin
{ get serial card option }
mode := GetConfig( 'hardware/init.serial.mode' );
ovr := GetConfig( 'override/ssc.disable.telnet' );
if ovr = '1' then
begin
miSerialVModem.Checked := true;
miSerialTelnetServer.Visible := false;
end
else
begin
miSerialVModem.Checked := (mode = '0');
miSerialTelnetServer.Visible := true;
miSerialTelnetServer.Checked := (mode = '1');
end;
end;
procedure TGUIForm.miSerialVModemClick(Sender: TObject);
begin
UpdateConfig( 'hardware/init.serial.mode', IntToStr(TMenuItem(sender).Tag), true );
end;
procedure TGUIForm.miSHRClick(Sender: TObject);
var
value: string;
@ -566,6 +845,80 @@ begin
UpdateConfig( 'video/init.video.scanline', values[StrToInt(TMenuItem(Sender).Caption)], true );
end;
procedure TGUIForm.miSNDMasterClick(Sender: TObject);
begin
case GetConfig( 'audio/init.master.volume' ) of
'0.00': miMVOL000.Checked := true;
'0.10': miMVOL010.Checked := true;
'0.20': miMVOL020.Checked := true;
'0.30': miMVOL030.Checked := true;
'0.40': miMVOL040.Checked := true;
'0.50': miMVOL050.Checked := true;
'0.60': miMVOL060.Checked := true;
'0.70': miMVOL070.Checked := true;
'0.80': miMVOL080.Checked := true;
'0.90': miMVOL090.Checked := true;
'1.00': miMVOL100.Checked := true;
end;
end;
procedure TGUIForm.miSNDMutedClick(Sender: TObject);
begin
if GetConfig('audio/init.master.mute') = '1' then
UpdateConfig( 'audio/init.master.mute', '0', false )
else
UpdateConfig( 'audio/init.master.mute', '1', false );
end;
procedure TGUIForm.miSNDPSG0Click(Sender: TObject);
begin
// get psg 1 balance ...
case GetConfig( 'audio/init.mockingboard.psg0balance' ) of
'-1.00': miPSG0m100.Checked := true;
'-0.75': miPSG0m75.Checked := true;
'-0.50': miPSG0m50.Checked := true;
'-0.25': miPSG0m25.Checked := true;
'0.00': miPSG0p0.Checked := true;
'0.25': miPSG0p25.Checked := true;
'0.50': miPSG0p50.Checked := true;
'0.75': miPSG0p75.Checked := true;
'1.00': miPSG0p100.Checked := true;
end;
end;
procedure TGUIForm.miSNDPSG1Click(Sender: TObject);
begin
// get psg 1 balance ...
case GetConfig( 'audio/init.mockingboard.psg1balance' ) of
'-1.00': miPSG1m100.Checked := true;
'-0.75': miPSG1m75.Checked := true;
'-0.50': miPSG1m50.Checked := true;
'-0.25': miPSG1m25.Checked := true;
'0.00': miPSG1p0.Checked := true;
'0.25': miPSG1p25.Checked := true;
'0.50': miPSG1p50.Checked := true;
'0.75': miPSG1p75.Checked := true;
'1.00': miPSG1p100.Checked := true;
end;
end;
procedure TGUIForm.miSNDSpeakerClick(Sender: TObject);
begin
case GetConfig( 'audio/init.speaker.volume' ) of
'0.00': miSVOL000.Checked := true;
'0.10': miSVOL010.Checked := true;
'0.20': miSVOL020.Checked := true;
'0.30': miSVOL030.Checked := true;
'0.40': miSVOL040.Checked := true;
'0.50': miSVOL050.Checked := true;
'0.60': miSVOL060.Checked := true;
'0.70': miSVOL070.Checked := true;
'0.80': miSVOL080.Checked := true;
'0.90': miSVOL090.Checked := true;
'1.00': miSVOL100.Checked := true;
end;
end;
procedure TGUIForm.miSPEjectClick(Sender: TObject);
begin
self.hc.Get(baseUrl + '/api/control/hardware/disk/eject/2');
@ -582,6 +935,79 @@ begin
ShowM8;
end;
procedure TGUIForm.miSVOL000Click(Sender: TObject);
begin
case TMenuItem(sender).Caption of
'0': UpdateConfig( 'audio/init.speaker.volume', '0.0', true );
'1': UpdateConfig( 'audio/init.speaker.volume', '0.1', true );
'2': UpdateConfig( 'audio/init.speaker.volume', '0.2', true );
'3': UpdateConfig( 'audio/init.speaker.volume', '0.3', true );
'4': UpdateConfig( 'audio/init.speaker.volume', '0.4', true );
'5': UpdateConfig( 'audio/init.speaker.volume', '0.5', true );
'6': UpdateConfig( 'audio/init.speaker.volume', '0.6', true );
'7': UpdateConfig( 'audio/init.speaker.volume', '0.7', true );
'8': UpdateConfig( 'audio/init.speaker.volume', '0.8', true );
'9': UpdateConfig( 'audio/init.speaker.volume', '0.9', true );
'10': UpdateConfig( 'audio/init.speaker.volume', '1.0', true );
end;
end;
procedure TGUIForm.miTintModeClick(Sender: TObject);
var
t: integer;
begin
t := StrToInt( GetConfig( 'video/init.video.tintmode') );
case t of
0: miTMNone.Checked := true;
1: miTMGrey.Checked := true;
2: miTMGreen.Checked := true;
3: miTMAmber.Checked := true;
end;
end;
procedure TGUIForm.miTMNoneClick(Sender: TObject);
var
t: integer;
s: TMenuItem;
begin
t := 0;
s := TMenuItem(sender);
if s.Caption = 'Grey' then
t := 1
else if s.Caption = 'Green' then
t := 2
else if s.Caption = 'Amber' then
t := 3;
UpdateConfig( 'video/init.video.tintmode', IntToStr(t), true );
UpdateTintMode;
end;
procedure TGUIForm.miVD1Click(Sender: TObject);
var
i: integer;
begin
i := StrToInt(Copy( TMenuItem(sender).Caption, 1, 1 )) - 1;
UpdateConfig( 'video/init.video.voxeldepth', IntToStr(i), true );
end;
procedure TGUIForm.miVDClick(Sender: TObject);
var
i: integer;
begin
i := StrToInt( GetConfig('video/init.video.voxeldepth') );
case i of
0: miVD1.Checked := true;
1: miVD2.Checked := true;
2: miVD3.Checked := true;
3: miVD4.Checked := true;
4: miVD5.Checked := true;
5: miVD6.Checked := true;
6: miVD7.Checked := true;
7: miVD8.Checked := true;
8: miVD9.Checked := true;
end;
end;
procedure TGUIForm.MouseTimerTimer(Sender: TObject);
var
x, y: longint;
@ -605,6 +1031,14 @@ begin
end;
end;
procedure TGUIForm.sidecarPanelResize(Sender: TObject);
var
h: double;
begin
h := sidecarPanel.Height;
sidecarPanel.Width := Round(0.34 * h);
end;
procedure TGUIForm.UpdateRenderMode;
var
t: integer;
@ -904,7 +1338,11 @@ begin
end;
procedure TGUIForm.FormChangeBounds(Sender: TObject);
var
h: double;
begin
h := sidecarPanel.Height;
sidecarPanel.Width := Round(0.34 * h);
self.ReposWindow;
end;
@ -965,6 +1403,7 @@ begin
//StatusBar1.SimpleText := 'App is refocussing';
lastShowTime := Now();
end;
ReposWindow;
end;
procedure TGUIForm.FormCreate(Sender: TObject);
@ -1120,8 +1559,11 @@ begin
end;
procedure TGUIForm.FormResize(Sender: TObject);
var
h: double;
begin
// on form resize we need to send a size request
h := sidecarPanel.Height;
sidecarPanel.Width := Round(0.34 * h);
ReposWindow;
end;
@ -1145,6 +1587,19 @@ begin
ShowM8;
end;
procedure TGUIForm.Image1Click(Sender: TObject);
begin
end;
procedure TGUIForm.InputClick(Sender: TObject);
var
value: string;
begin
// setup item states
miINPAllCaps.Checked := (GetConfig( 'input/init.uppercase' ) = '1');
end;
procedure TGUIForm.MenuItem15Click(Sender: TObject);
var
value: string;

View File

@ -37,7 +37,7 @@
<PackageName Value="LCL"/>
</Item3>
</RequiredPackages>
<Units Count="2">
<Units Count="3">
<Unit0>
<Filename Value="poc.lpr"/>
<IsPartOfProject Value="True"/>
@ -49,6 +49,12 @@
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit1>
<Unit2>
<Filename Value="mixer.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmMixer"/>
<ResourceBaseClass Value="Form"/>
</Unit2>
</Units>
</ProjectOptions>
<CompilerOptions>

View File

@ -7,7 +7,7 @@ uses
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, lazopenglcontext, indylaz, main
Forms, lazopenglcontext, indylaz, main, mixer
{ you can add units after this };
{$R *.res}
@ -17,6 +17,7 @@ begin
Application.Scaled:=True;
Application.Initialize;
Application.CreateForm(TGUIForm, GUIForm);
Application.CreateForm(TfrmMixer, frmMixer);
Application.Run;
end.

80
poc.lps
View File

@ -4,7 +4,7 @@
<PathDelim Value="\"/>
<Version Value="11"/>
<BuildModes Active="Default"/>
<Units Count="3">
<Units Count="4">
<Unit0>
<Filename Value="poc.lpr"/>
<IsPartOfProject Value="True"/>
@ -21,8 +21,8 @@
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<IsVisibleTab Value="True"/>
<TopLine Value="239"/>
<CursorPos X="5" Y="260"/>
<TopLine Value="1152"/>
<CursorPos X="51" Y="1168"/>
<UsageCount Value="323"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
@ -32,129 +32,141 @@
<EditorIndex Value="-1"/>
<TopLine Value="576"/>
<CursorPos X="49" Y="591"/>
<UsageCount Value="136"/>
<UsageCount Value="134"/>
</Unit2>
<Unit3>
<Filename Value="mixer.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="frmMixer"/>
<ResourceBaseClass Value="Form"/>
<EditorIndex Value="1"/>
<TopLine Value="3"/>
<CursorPos X="26" Y="25"/>
<UsageCount Value="33"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit3>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="main.pas"/>
<Caret Line="820" Column="5" TopLine="804"/>
<Caret Line="1169" TopLine="1151"/>
</Position1>
<Position2>
<Filename Value="main.pas"/>
<Caret Line="179" Column="42" TopLine="157"/>
<Caret Line="1170" TopLine="1152"/>
</Position2>
<Position3>
<Filename Value="main.pas"/>
<Caret Line="793" Column="48" TopLine="820"/>
<Caret Line="1171" TopLine="1153"/>
</Position3>
<Position4>
<Filename Value="main.pas"/>
<Caret Line="821" TopLine="802"/>
<Caret Line="1172" TopLine="1154"/>
</Position4>
<Position5>
<Filename Value="main.pas"/>
<Caret Line="811" Column="20" TopLine="785"/>
<Caret Line="1173" TopLine="1155"/>
</Position5>
<Position6>
<Filename Value="main.pas"/>
<Caret Line="810" Column="6" TopLine="780"/>
<Caret Line="1174" TopLine="1156"/>
</Position6>
<Position7>
<Filename Value="main.pas"/>
<Caret Line="799" Column="21" TopLine="782"/>
<Caret Line="1181" TopLine="1163"/>
</Position7>
<Position8>
<Filename Value="main.pas"/>
<Caret Line="837" Column="20" TopLine="818"/>
<Caret Line="778" Column="23" TopLine="774"/>
</Position8>
<Position9>
<Filename Value="main.pas"/>
<Caret Line="772" Column="20" TopLine="753"/>
<Caret Line="776" Column="26" TopLine="774"/>
</Position9>
<Position10>
<Filename Value="main.pas"/>
<Caret Line="777" Column="20" TopLine="758"/>
<Caret Line="778" Column="26" TopLine="776"/>
</Position10>
<Position11>
<Filename Value="main.pas"/>
<Caret Line="182" Column="23" TopLine="167"/>
<Caret Line="1032" Column="68" TopLine="1013"/>
</Position11>
<Position12>
<Filename Value="main.pas"/>
<Caret Line="772" Column="20" TopLine="754"/>
<Caret Line="1035" Column="33" TopLine="1013"/>
</Position12>
<Position13>
<Filename Value="main.pas"/>
<Caret Line="837" Column="28" TopLine="812"/>
<Caret Line="1031" TopLine="1016"/>
</Position13>
<Position14>
<Filename Value="main.pas"/>
<Caret Line="839" Column="59" TopLine="812"/>
<Caret Line="1560" Column="34" TopLine="1552"/>
</Position14>
<Position15>
<Filename Value="main.pas"/>
<Caret Line="182" Column="23" TopLine="164"/>
<Caret Line="1562" Column="34" TopLine="1554"/>
</Position15>
<Position16>
<Filename Value="main.pas"/>
<Caret Line="770" Column="5" TopLine="741"/>
<Caret Line="1585" Column="3" TopLine="1554"/>
</Position16>
<Position17>
<Filename Value="main.pas"/>
<Caret Line="837" Column="26" TopLine="818"/>
<Caret Line="1586" Column="3" TopLine="1555"/>
</Position17>
<Position18>
<Filename Value="main.pas"/>
<Caret Line="1108" Column="9" TopLine="1077"/>
<Caret Line="1556" TopLine="1555"/>
</Position18>
<Position19>
<Filename Value="main.pas"/>
<Caret Line="1268" Column="12" TopLine="1237"/>
<Caret Line="1452" Column="44" TopLine="1447"/>
</Position19>
<Position20>
<Filename Value="main.pas"/>
<Caret Line="183" Column="21" TopLine="165"/>
<Caret Line="542" Column="3" TopLine="548"/>
</Position20>
<Position21>
<Filename Value="main.pas"/>
<Caret Line="250" Column="15" TopLine="219"/>
<Caret Line="1343" TopLine="1324"/>
</Position21>
<Position22>
<Filename Value="main.pas"/>
<Caret Line="443" Column="12" TopLine="412"/>
<Caret Line="1338" Column="35" TopLine="1325"/>
</Position22>
<Position23>
<Filename Value="main.pas"/>
<Caret Line="459" Column="9" TopLine="428"/>
<Caret Line="1346" Column="20" TopLine="1325"/>
</Position23>
<Position24>
<Filename Value="main.pas"/>
<Caret Line="726" Column="9" TopLine="695"/>
<Caret Line="1351" Column="23" TopLine="1325"/>
</Position24>
<Position25>
<Filename Value="main.pas"/>
<Caret Line="770" Column="5" TopLine="741"/>
<Caret Line="1204" Column="17" TopLine="1181"/>
</Position25>
<Position26>
<Filename Value="main.pas"/>
<Caret Line="842" Column="37" TopLine="834"/>
<Caret Line="1217" TopLine="1186"/>
</Position26>
<Position27>
<Filename Value="main.pas"/>
<Caret Line="770" Column="5" TopLine="753"/>
<Caret Line="1406" Column="10" TopLine="1388"/>
</Position27>
<Position28>
<Filename Value="main.pas"/>
<Caret Line="847" Column="33" TopLine="822"/>
<Caret Line="319" Column="15" TopLine="301"/>
</Position28>
<Position29>
<Filename Value="main.pas"/>
<Caret Line="258" Column="5" TopLine="237"/>
<Caret Line="1205" Column="33" TopLine="1191"/>
</Position29>
<Position30>
<Filename Value="main.pas"/>
<Caret Line="259" Column="5" TopLine="238"/>
<Caret Line="1171" Column="20" TopLine="1152"/>
</Position30>
</JumpHistory>
<RunParams>