sidecar drag and drop

This commit is contained in:
April Ayres-Griffiths 2019-04-19 09:22:33 +10:00
parent 581d3bb7f5
commit a54d35f784
10 changed files with 262 additions and 122 deletions

View File

@ -1,11 +1,12 @@
object GUIForm: TGUIForm object GUIForm: TGUIForm
Left = 275 Left = 290
Height = 683 Height = 650
Top = 109 Top = 130
Width = 1078 Width = 1078
AllowDropFiles = True
AlphaBlendValue = 128 AlphaBlendValue = 128
Caption = 'microM8 GUI' Caption = 'microM8 GUI'
ClientHeight = 663 ClientHeight = 630
ClientWidth = 1078 ClientWidth = 1078
Constraints.MinWidth = 1078 Constraints.MinWidth = 1078
DoubleBuffered = False DoubleBuffered = False
@ -15,6 +16,7 @@ object GUIForm: TGUIForm
OnCloseQuery = FormCloseQuery OnCloseQuery = FormCloseQuery
OnCreate = FormCreate OnCreate = FormCreate
OnDeactivate = FormDeactivate OnDeactivate = FormDeactivate
OnDropFiles = FormDropFiles
OnHide = FormHide OnHide = FormHide
OnKeyDown = FormKeyDown OnKeyDown = FormKeyDown
OnKeyPress = FormKeyPress OnKeyPress = FormKeyPress
@ -30,7 +32,7 @@ object GUIForm: TGUIForm
object StatusBar1: TStatusBar object StatusBar1: TStatusBar
Left = 0 Left = 0
Height = 23 Height = 23
Top = 640 Top = 607
Width = 1078 Width = 1078
Panels = <> Panels = <>
end end
@ -327,38 +329,39 @@ object GUIForm: TGUIForm
end end
object pnlContainer: TPanel object pnlContainer: TPanel
Left = 0 Left = 0
Height = 604 Height = 571
Top = 36 Top = 36
Width = 1078 Width = 1078
Align = alClient Align = alClient
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 604 ClientHeight = 571
ClientWidth = 1078 ClientWidth = 1078
ParentColor = False ParentColor = False
TabOrder = 2 TabOrder = 2
object sidecarPanel: TPanel object sidecarPanel: TPanel
Left = 908 Left = 908
Height = 567 Height = 534
Top = 0 Top = 0
Width = 170 Width = 170
Align = alRight Align = alRight
BevelOuter = bvNone BevelOuter = bvNone
Caption = 'sidecarPanel' Caption = 'sidecarPanel'
ClientHeight = 567 ClientHeight = 534
ClientWidth = 170 ClientWidth = 170
Color = clBlack Color = clBlack
ParentColor = False ParentColor = False
TabOrder = 0 TabOrder = 0
object Image1: TImage object Image1: TImage
Left = 0 Left = 0
Height = 567 Height = 534
Top = 0 Top = 0
Width = 170 Width = 170
Align = alClient Align = alClient
OnClick = Image1Click OnClick = Image1Click
OnDblClick = Image1DblClick OnDblClick = Image1DblClick
OnDragDrop = Image1DragDrop
OnMouseDown = Image1MouseDown OnMouseDown = Image1MouseDown
OnMouseLeave = Image1MouseLeave
OnMouseMove = Image1MouseMove
OnMouseUp = Image1MouseUp OnMouseUp = Image1MouseUp
Picture.Data = { Picture.Data = {
1754506F727461626C654E6574776F726B477261706869636B7A020089504E47 1754506F727461626C654E6574776F726B477261706869636B7A020089504E47
@ -5444,12 +5447,12 @@ object GUIForm: TGUIForm
end end
object embedPanel: TPanel object embedPanel: TPanel
Left = 0 Left = 0
Height = 567 Height = 534
Top = 0 Top = 0
Width = 908 Width = 908
Align = alClient Align = alClient
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 567 ClientHeight = 534
ClientWidth = 908 ClientWidth = 908
Color = clBlack Color = clBlack
Font.Color = clWhite Font.Color = clWhite
@ -5461,7 +5464,7 @@ object GUIForm: TGUIForm
OnMouseUp = FormMouseUp OnMouseUp = FormMouseUp
object backdrop: TImage object backdrop: TImage
Left = 0 Left = 0
Height = 567 Height = 534
Top = 0 Top = 0
Width = 908 Width = 908
Align = alClient Align = alClient
@ -5474,7 +5477,7 @@ object GUIForm: TGUIForm
object pnlMemory: TPanel object pnlMemory: TPanel
Left = 0 Left = 0
Height = 37 Height = 37
Top = 567 Top = 534
Width = 1078 Width = 1078
Align = alBottom Align = alBottom
ClientHeight = 37 ClientHeight = 37

View File

@ -345,6 +345,7 @@ type
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure FormDeactivate(Sender: TObject); procedure FormDeactivate(Sender: TObject);
procedure FormDropFiles(Sender: TObject; const FileNames: array of String);
procedure FormHide(Sender: TObject); procedure FormHide(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormKeyPress(Sender: TObject; var Key: char); procedure FormKeyPress(Sender: TObject; var Key: char);
@ -363,6 +364,9 @@ type
procedure Image1DragDrop(Sender, Source: TObject; X, Y: Integer); procedure Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); Shift: TShiftState; X, Y: Integer);
procedure Image1MouseLeave(Sender: TObject);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer
);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton; procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); Shift: TShiftState; X, Y: Integer);
procedure InputClick(Sender: TObject); procedure InputClick(Sender: TObject);
@ -588,6 +592,7 @@ type
VolDrag, WarpDrag: boolean; VolDrag, WarpDrag: boolean;
Caps: boolean; Caps: boolean;
NeedsRestart, Quitting: boolean; NeedsRestart, Quitting: boolean;
sbx, sby, sbButton: longint;
public public
procedure AppActivate(Sender: TObject); procedure AppActivate(Sender: TObject);
procedure AppDeactivate(Sender: TObject); procedure AppDeactivate(Sender: TObject);
@ -737,6 +742,19 @@ begin
// nothing much // nothing much
end; end;
procedure TGUIForm.Image1MouseLeave(Sender: TObject);
begin
sbx := -1;
sby := -1;
end;
procedure TGUIForm.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
sbx := x;
sby := y;
end;
procedure TGUIForm.Image1MouseUp(Sender: TObject; Button: TMouseButton; procedure TGUIForm.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); Shift: TShiftState; X, Y: Integer);
var var
@ -1894,6 +1912,22 @@ begin
//StatusBar1.SimpleText := StatusBar1.SimpleText + ' (in window)'; //StatusBar1.SimpleText := StatusBar1.SimpleText + ' (in window)';
SendMouseState( x - longint(p.X), y - longint(p.Y) ); SendMouseState( x - longint(p.X), y - longint(p.Y) );
end; end;
{ Now see if we are over the sidecar }
p := sidecarPanel.ClientToScreen(q);
if (x >= longint(p.X)) and (x < longint(p.X)+longint(sidecarPanel.Width)) and
(y >= longint(p.Y)) and (y < longint(p.Y)+longint(sidecarPanel.Height)) then
begin
sbx := x - p.X;
sby := y - p.Y;
sbButton := sby div Round(sidecarPanel.Height/5);
end
else
begin
sbx := -1;
sby := -1;
sbButton := -1;
end;
end; end;
end; end;
@ -2835,6 +2869,37 @@ begin
lastFocusLostTime:=Now(); lastFocusLostTime:=Now();
end; end;
procedure TGUIForm.FormDropFiles(Sender: TObject;
const FileNames: array of String);
var
filename, ext: string;
begin
//StatusBar1.SimpleText := IntToStr(sbButton) + ':' + FileNames[0];
filename := FileNames[0];
ext := ExtractFileExt(filename);
case sbButton of
0, 1: begin
case ext of
'.dsk', '.do', '.po', '.woz', '.nib': begin
// insert disk here
InsertDisk( 'local:'+filename, sbButton );
ShowM8;
SendOSDMessage('Disk Insert to Drive '+IntToStr(sbButton+1));
end;
end;
end;
3: begin
case ext of
'.po', '.2mg', '.hdv': begin
// insert smartport here
InsertDisk( 'local:'+filename, 2 );
ShowM8;
end;
end;
end;
end;
end;
procedure TGUIForm.FormHide(Sender: TObject); procedure TGUIForm.FormHide(Sender: TObject);
begin begin
RepaintWindow; RepaintWindow;
@ -3174,13 +3239,13 @@ end;
procedure TGUIForm.FSTimerTimer(Sender: TObject); procedure TGUIForm.FSTimerTimer(Sender: TObject);
begin begin
isFS := (GetConfig( 'video/current.fullscreen' ) = '1'); isFS := (GetConfig( 'video/current.fullscreen' ) = '1');
if not hidden then //if not hidden then
begin //begin
Caption := 'microM8 GUI'; // Caption := 'microM8 GUI';
SimpleGet(baseUrl+'/api/control/system/heartbeat'); // SimpleGet(baseUrl+'/api/control/system/heartbeat');
end //end
else //else
Caption := 'microM8 GUI (hide)'; // Caption := 'microM8 GUI (hide)';
end; end;
procedure TGUIForm.InputClick(Sender: TObject); procedure TGUIForm.InputClick(Sender: TObject);

View File

@ -21,8 +21,8 @@
<HasResources Value="True"/> <HasResources Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<IsVisibleTab Value="True"/> <IsVisibleTab Value="True"/>
<TopLine Value="3070"/> <TopLine Value="1923"/>
<CursorPos X="54" Y="3090"/> <CursorPos X="61" Y="1927"/>
<UsageCount Value="323"/> <UsageCount Value="323"/>
<Loaded Value="True"/> <Loaded Value="True"/>
<LoadedDesigner Value="True"/> <LoadedDesigner Value="True"/>
@ -43,7 +43,7 @@
<EditorIndex Value="-1"/> <EditorIndex Value="-1"/>
<TopLine Value="576"/> <TopLine Value="576"/>
<CursorPos X="49" Y="591"/> <CursorPos X="49" Y="591"/>
<UsageCount Value="100"/> <UsageCount Value="99"/>
</Unit3> </Unit3>
<Unit4> <Unit4>
<Filename Value="C:\lazarus\components\lazutils\utf8process.pp"/> <Filename Value="C:\lazarus\components\lazutils\utf8process.pp"/>
@ -51,7 +51,7 @@
<EditorIndex Value="-1"/> <EditorIndex Value="-1"/>
<TopLine Value="636"/> <TopLine Value="636"/>
<CursorPos Y="654"/> <CursorPos Y="654"/>
<UsageCount Value="5"/> <UsageCount Value="4"/>
</Unit4> </Unit4>
<Unit5> <Unit5>
<Filename Value="images\memory.pas"/> <Filename Value="images\memory.pas"/>
@ -61,129 +61,129 @@
<EditorIndex Value="-1"/> <EditorIndex Value="-1"/>
<TopLine Value="40"/> <TopLine Value="40"/>
<CursorPos X="17" Y="44"/> <CursorPos X="17" Y="44"/>
<UsageCount Value="14"/> <UsageCount Value="13"/>
</Unit5> </Unit5>
</Units> </Units>
<JumpHistory Count="30" HistoryIndex="29"> <JumpHistory Count="30" HistoryIndex="29">
<Position1> <Position1>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="3151" Column="3" TopLine="3134"/> <Caret Line="978" Column="38" TopLine="961"/>
</Position1> </Position1>
<Position2> <Position2>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="999" Column="10" TopLine="997"/> <Caret Line="2868" Column="26" TopLine="2848"/>
</Position2> </Position2>
<Position3> <Position3>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1110" Column="45" TopLine="1103"/> <Caret Line="593" Column="38" TopLine="572"/>
</Position3> </Position3>
<Position4> <Position4>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1109" Column="20" TopLine="1098"/> <Caret Line="2987" Column="48" TopLine="2978"/>
</Position4> </Position4>
<Position5> <Position5>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="396" Column="15" TopLine="385"/> <Caret Line="582" Column="20" TopLine="572"/>
</Position5> </Position5>
<Position6> <Position6>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1109" Column="20" TopLine="1104"/> <Caret Line="2809" Column="66" TopLine="2788"/>
</Position6> </Position6>
<Position7> <Position7>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="396" Column="29" TopLine="385"/> <Caret Line="2998" Column="6" TopLine="2978"/>
</Position7> </Position7>
<Position8> <Position8>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="978" Column="38" TopLine="961"/> <Caret Line="3039" Column="26" TopLine="3026"/>
</Position8> </Position8>
<Position9> <Position9>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2868" Column="26" TopLine="2848"/> <Caret Line="3035" Column="34" TopLine="3024"/>
</Position9> </Position9>
<Position10> <Position10>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="593" Column="38" TopLine="572"/> <Caret Line="335" Column="59" TopLine="318"/>
</Position10> </Position10>
<Position11> <Position11>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2987" Column="48" TopLine="2978"/> <Caret Line="3046" Column="36" TopLine="3032"/>
</Position11> </Position11>
<Position12> <Position12>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="582" Column="20" TopLine="572"/> <Caret Line="2882" Column="27" TopLine="2867"/>
</Position12> </Position12>
<Position13> <Position13>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2809" Column="66" TopLine="2788"/> <Caret Line="2888" Column="23" TopLine="2877"/>
</Position13> </Position13>
<Position14> <Position14>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2998" Column="6" TopLine="2978"/> <Caret Line="706" Column="34" TopLine="732"/>
</Position14> </Position14>
<Position15> <Position15>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="3039" Column="26" TopLine="3026"/> <Caret Line="2752" Column="28" TopLine="2729"/>
</Position15> </Position15>
<Position16> <Position16>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="3035" Column="34" TopLine="3024"/> <Caret Line="1788" Column="61" TopLine="1785"/>
</Position16> </Position16>
<Position17> <Position17>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="335" Column="59" TopLine="318"/> <Caret Line="2341" Column="6" TopLine="2313"/>
</Position17> </Position17>
<Position18> <Position18>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="3046" Column="36" TopLine="3032"/> <Caret Line="1801" Column="28" TopLine="1786"/>
</Position18> </Position18>
<Position19> <Position19>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2882" Column="27" TopLine="2867"/> <Caret Line="2900" Column="14" TopLine="2888"/>
</Position19> </Position19>
<Position20> <Position20>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2888" Column="23" TopLine="2877"/> <Caret Line="1897" Column="16" TopLine="1894"/>
</Position20> </Position20>
<Position21> <Position21>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="706" Column="34" TopLine="732"/> <Caret Line="426" Column="15" TopLine="408"/>
</Position21> </Position21>
<Position22> <Position22>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2752" Column="28" TopLine="2729"/> <Caret Line="1183" TopLine="1178"/>
</Position22> </Position22>
<Position23> <Position23>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1788" Column="61" TopLine="1785"/> <Caret Line="1923" Column="42" TopLine="1895"/>
</Position23> </Position23>
<Position24> <Position24>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2341" Column="6" TopLine="2313"/> <Caret Line="2892" Column="43" TopLine="2879"/>
</Position24> </Position24>
<Position25> <Position25>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1801" Column="28" TopLine="1786"/> <Caret Line="2899" Column="43" TopLine="2886"/>
</Position25> </Position25>
<Position26> <Position26>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2900" Column="14" TopLine="2888"/> <Caret Line="1833" Column="87" TopLine="1829"/>
</Position26> </Position26>
<Position27> <Position27>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1897" Column="16" TopLine="1894"/> <Caret Line="1839" Column="38" TopLine="1820"/>
</Position27> </Position27>
<Position28> <Position28>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="426" Column="15" TopLine="408"/> <Caret Line="1098" Column="15" TopLine="1092"/>
</Position28> </Position28>
<Position29> <Position29>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1183" TopLine="1178"/> <Caret Line="1925" Column="3" TopLine="1923"/>
</Position29> </Position29>
<Position30> <Position30>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1923" Column="42" TopLine="1895"/> <Caret Line="3205" Column="13" TopLine="3198"/>
</Position30> </Position30>
</JumpHistory> </JumpHistory>
<RunParams> <RunParams>

View File

@ -1,11 +1,12 @@
object GUIForm: TGUIForm object GUIForm: TGUIForm
Left = 275 Left = 290
Height = 683 Height = 650
Top = 109 Top = 130
Width = 1078 Width = 1078
AllowDropFiles = True
AlphaBlendValue = 128 AlphaBlendValue = 128
Caption = 'microM8 GUI' Caption = 'microM8 GUI'
ClientHeight = 663 ClientHeight = 630
ClientWidth = 1078 ClientWidth = 1078
Constraints.MinWidth = 1078 Constraints.MinWidth = 1078
DoubleBuffered = False DoubleBuffered = False
@ -15,6 +16,7 @@ object GUIForm: TGUIForm
OnCloseQuery = FormCloseQuery OnCloseQuery = FormCloseQuery
OnCreate = FormCreate OnCreate = FormCreate
OnDeactivate = FormDeactivate OnDeactivate = FormDeactivate
OnDropFiles = FormDropFiles
OnHide = FormHide OnHide = FormHide
OnKeyDown = FormKeyDown OnKeyDown = FormKeyDown
OnKeyPress = FormKeyPress OnKeyPress = FormKeyPress
@ -30,7 +32,7 @@ object GUIForm: TGUIForm
object StatusBar1: TStatusBar object StatusBar1: TStatusBar
Left = 0 Left = 0
Height = 23 Height = 23
Top = 640 Top = 607
Width = 1078 Width = 1078
Panels = <> Panels = <>
end end
@ -327,38 +329,39 @@ object GUIForm: TGUIForm
end end
object pnlContainer: TPanel object pnlContainer: TPanel
Left = 0 Left = 0
Height = 604 Height = 571
Top = 36 Top = 36
Width = 1078 Width = 1078
Align = alClient Align = alClient
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 604 ClientHeight = 571
ClientWidth = 1078 ClientWidth = 1078
ParentColor = False ParentColor = False
TabOrder = 2 TabOrder = 2
object sidecarPanel: TPanel object sidecarPanel: TPanel
Left = 908 Left = 908
Height = 567 Height = 534
Top = 0 Top = 0
Width = 170 Width = 170
Align = alRight Align = alRight
BevelOuter = bvNone BevelOuter = bvNone
Caption = 'sidecarPanel' Caption = 'sidecarPanel'
ClientHeight = 567 ClientHeight = 534
ClientWidth = 170 ClientWidth = 170
Color = clBlack Color = clBlack
ParentColor = False ParentColor = False
TabOrder = 0 TabOrder = 0
object Image1: TImage object Image1: TImage
Left = 0 Left = 0
Height = 567 Height = 534
Top = 0 Top = 0
Width = 170 Width = 170
Align = alClient Align = alClient
OnClick = Image1Click OnClick = Image1Click
OnDblClick = Image1DblClick OnDblClick = Image1DblClick
OnDragDrop = Image1DragDrop
OnMouseDown = Image1MouseDown OnMouseDown = Image1MouseDown
OnMouseLeave = Image1MouseLeave
OnMouseMove = Image1MouseMove
OnMouseUp = Image1MouseUp OnMouseUp = Image1MouseUp
Picture.Data = { Picture.Data = {
1754506F727461626C654E6574776F726B477261706869636B7A020089504E47 1754506F727461626C654E6574776F726B477261706869636B7A020089504E47
@ -5444,12 +5447,12 @@ object GUIForm: TGUIForm
end end
object embedPanel: TPanel object embedPanel: TPanel
Left = 0 Left = 0
Height = 567 Height = 534
Top = 0 Top = 0
Width = 908 Width = 908
Align = alClient Align = alClient
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 567 ClientHeight = 534
ClientWidth = 908 ClientWidth = 908
Color = clBlack Color = clBlack
Font.Color = clWhite Font.Color = clWhite
@ -5461,7 +5464,7 @@ object GUIForm: TGUIForm
OnMouseUp = FormMouseUp OnMouseUp = FormMouseUp
object backdrop: TImage object backdrop: TImage
Left = 0 Left = 0
Height = 567 Height = 534
Top = 0 Top = 0
Width = 908 Width = 908
Align = alClient Align = alClient
@ -5474,7 +5477,7 @@ object GUIForm: TGUIForm
object pnlMemory: TPanel object pnlMemory: TPanel
Left = 0 Left = 0
Height = 37 Height = 37
Top = 567 Top = 534
Width = 1078 Width = 1078
Align = alBottom Align = alBottom
ClientHeight = 37 ClientHeight = 37

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,11 +1,12 @@
object GUIForm: TGUIForm object GUIForm: TGUIForm
Left = 275 Left = 290
Height = 683 Height = 650
Top = 109 Top = 130
Width = 1078 Width = 1078
AllowDropFiles = True
AlphaBlendValue = 128 AlphaBlendValue = 128
Caption = 'microM8 GUI' Caption = 'microM8 GUI'
ClientHeight = 663 ClientHeight = 630
ClientWidth = 1078 ClientWidth = 1078
Constraints.MinWidth = 1078 Constraints.MinWidth = 1078
DoubleBuffered = False DoubleBuffered = False
@ -15,6 +16,7 @@ object GUIForm: TGUIForm
OnCloseQuery = FormCloseQuery OnCloseQuery = FormCloseQuery
OnCreate = FormCreate OnCreate = FormCreate
OnDeactivate = FormDeactivate OnDeactivate = FormDeactivate
OnDropFiles = FormDropFiles
OnHide = FormHide OnHide = FormHide
OnKeyDown = FormKeyDown OnKeyDown = FormKeyDown
OnKeyPress = FormKeyPress OnKeyPress = FormKeyPress
@ -30,7 +32,7 @@ object GUIForm: TGUIForm
object StatusBar1: TStatusBar object StatusBar1: TStatusBar
Left = 0 Left = 0
Height = 23 Height = 23
Top = 640 Top = 607
Width = 1078 Width = 1078
Panels = <> Panels = <>
end end
@ -327,38 +329,39 @@ object GUIForm: TGUIForm
end end
object pnlContainer: TPanel object pnlContainer: TPanel
Left = 0 Left = 0
Height = 604 Height = 571
Top = 36 Top = 36
Width = 1078 Width = 1078
Align = alClient Align = alClient
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 604 ClientHeight = 571
ClientWidth = 1078 ClientWidth = 1078
ParentColor = False ParentColor = False
TabOrder = 2 TabOrder = 2
object sidecarPanel: TPanel object sidecarPanel: TPanel
Left = 908 Left = 908
Height = 567 Height = 534
Top = 0 Top = 0
Width = 170 Width = 170
Align = alRight Align = alRight
BevelOuter = bvNone BevelOuter = bvNone
Caption = 'sidecarPanel' Caption = 'sidecarPanel'
ClientHeight = 567 ClientHeight = 534
ClientWidth = 170 ClientWidth = 170
Color = clBlack Color = clBlack
ParentColor = False ParentColor = False
TabOrder = 0 TabOrder = 0
object Image1: TImage object Image1: TImage
Left = 0 Left = 0
Height = 567 Height = 534
Top = 0 Top = 0
Width = 170 Width = 170
Align = alClient Align = alClient
OnClick = Image1Click OnClick = Image1Click
OnDblClick = Image1DblClick OnDblClick = Image1DblClick
OnDragDrop = Image1DragDrop
OnMouseDown = Image1MouseDown OnMouseDown = Image1MouseDown
OnMouseLeave = Image1MouseLeave
OnMouseMove = Image1MouseMove
OnMouseUp = Image1MouseUp OnMouseUp = Image1MouseUp
Picture.Data = { Picture.Data = {
1754506F727461626C654E6574776F726B477261706869636B7A020089504E47 1754506F727461626C654E6574776F726B477261706869636B7A020089504E47
@ -5444,12 +5447,12 @@ object GUIForm: TGUIForm
end end
object embedPanel: TPanel object embedPanel: TPanel
Left = 0 Left = 0
Height = 567 Height = 534
Top = 0 Top = 0
Width = 908 Width = 908
Align = alClient Align = alClient
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 567 ClientHeight = 534
ClientWidth = 908 ClientWidth = 908
Color = clBlack Color = clBlack
Font.Color = clWhite Font.Color = clWhite
@ -5461,7 +5464,7 @@ object GUIForm: TGUIForm
OnMouseUp = FormMouseUp OnMouseUp = FormMouseUp
object backdrop: TImage object backdrop: TImage
Left = 0 Left = 0
Height = 567 Height = 534
Top = 0 Top = 0
Width = 908 Width = 908
Align = alClient Align = alClient
@ -5474,7 +5477,7 @@ object GUIForm: TGUIForm
object pnlMemory: TPanel object pnlMemory: TPanel
Left = 0 Left = 0
Height = 37 Height = 37
Top = 567 Top = 534
Width = 1078 Width = 1078
Align = alBottom Align = alBottom
ClientHeight = 37 ClientHeight = 37

View File

@ -345,6 +345,7 @@ type
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure FormDeactivate(Sender: TObject); procedure FormDeactivate(Sender: TObject);
procedure FormDropFiles(Sender: TObject; const FileNames: array of String);
procedure FormHide(Sender: TObject); procedure FormHide(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormKeyPress(Sender: TObject; var Key: char); procedure FormKeyPress(Sender: TObject; var Key: char);
@ -363,6 +364,9 @@ type
procedure Image1DragDrop(Sender, Source: TObject; X, Y: Integer); procedure Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); Shift: TShiftState; X, Y: Integer);
procedure Image1MouseLeave(Sender: TObject);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer
);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton; procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); Shift: TShiftState; X, Y: Integer);
procedure InputClick(Sender: TObject); procedure InputClick(Sender: TObject);
@ -588,6 +592,7 @@ type
VolDrag, WarpDrag: boolean; VolDrag, WarpDrag: boolean;
Caps: boolean; Caps: boolean;
NeedsRestart, Quitting: boolean; NeedsRestart, Quitting: boolean;
sbx, sby, sbButton: longint;
public public
procedure AppActivate(Sender: TObject); procedure AppActivate(Sender: TObject);
procedure AppDeactivate(Sender: TObject); procedure AppDeactivate(Sender: TObject);
@ -737,6 +742,19 @@ begin
// nothing much // nothing much
end; end;
procedure TGUIForm.Image1MouseLeave(Sender: TObject);
begin
sbx := -1;
sby := -1;
end;
procedure TGUIForm.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
sbx := x;
sby := y;
end;
procedure TGUIForm.Image1MouseUp(Sender: TObject; Button: TMouseButton; procedure TGUIForm.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); Shift: TShiftState; X, Y: Integer);
var var
@ -1894,6 +1912,22 @@ begin
//StatusBar1.SimpleText := StatusBar1.SimpleText + ' (in window)'; //StatusBar1.SimpleText := StatusBar1.SimpleText + ' (in window)';
SendMouseState( x - longint(p.X), y - longint(p.Y) ); SendMouseState( x - longint(p.X), y - longint(p.Y) );
end; end;
{ Now see if we are over the sidecar }
p := sidecarPanel.ClientToScreen(q);
if (x >= longint(p.X)) and (x < longint(p.X)+longint(sidecarPanel.Width)) and
(y >= longint(p.Y)) and (y < longint(p.Y)+longint(sidecarPanel.Height)) then
begin
sbx := x - p.X;
sby := y - p.Y;
sbButton := sby div Round(sidecarPanel.Height/5);
end
else
begin
sbx := -1;
sby := -1;
sbButton := -1;
end;
end; end;
end; end;
@ -2835,6 +2869,38 @@ begin
lastFocusLostTime:=Now(); lastFocusLostTime:=Now();
end; end;
procedure TGUIForm.FormDropFiles(Sender: TObject;
const FileNames: array of String);
var
filename, ext: string;
begin
//StatusBar1.SimpleText := IntToStr(sbButton) + ':' + FileNames[0];
filename := FileNames[0];
ext := ExtractFileExt(filename);
case sbButton of
0, 1: begin
case ext of
'.dsk', '.do', '.po', '.woz', '.nib': begin
// insert disk here
InsertDisk( 'local:'+filename, sbButton );
ShowM8;
SendOSDMessage('Disk Insert to Drive '+IntToStr(sbButton+1));
end;
end;
end;
3: begin
case ext of
'.po', '.2mg', '.hdv': begin
// insert smartport here
InsertDisk( 'local:'+filename, 2 );
ShowM8;
SendOSDMessage('SmartPort Volume Connected');
end;
end;
end;
end;
end;
procedure TGUIForm.FormHide(Sender: TObject); procedure TGUIForm.FormHide(Sender: TObject);
begin begin
RepaintWindow; RepaintWindow;

70
poc.lps
View File

@ -21,8 +21,8 @@
<HasResources Value="True"/> <HasResources Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<IsVisibleTab Value="True"/> <IsVisibleTab Value="True"/>
<TopLine Value="1923"/> <TopLine Value="871"/>
<CursorPos X="61" Y="1927"/> <CursorPos X="4" Y="873"/>
<UsageCount Value="323"/> <UsageCount Value="323"/>
<Loaded Value="True"/> <Loaded Value="True"/>
<LoadedDesigner Value="True"/> <LoadedDesigner Value="True"/>
@ -43,7 +43,7 @@
<EditorIndex Value="-1"/> <EditorIndex Value="-1"/>
<TopLine Value="576"/> <TopLine Value="576"/>
<CursorPos X="49" Y="591"/> <CursorPos X="49" Y="591"/>
<UsageCount Value="99"/> <UsageCount Value="96"/>
</Unit3> </Unit3>
<Unit4> <Unit4>
<Filename Value="C:\lazarus\components\lazutils\utf8process.pp"/> <Filename Value="C:\lazarus\components\lazutils\utf8process.pp"/>
@ -51,7 +51,7 @@
<EditorIndex Value="-1"/> <EditorIndex Value="-1"/>
<TopLine Value="636"/> <TopLine Value="636"/>
<CursorPos Y="654"/> <CursorPos Y="654"/>
<UsageCount Value="4"/> <UsageCount Value="1"/>
</Unit4> </Unit4>
<Unit5> <Unit5>
<Filename Value="images\memory.pas"/> <Filename Value="images\memory.pas"/>
@ -61,129 +61,129 @@
<EditorIndex Value="-1"/> <EditorIndex Value="-1"/>
<TopLine Value="40"/> <TopLine Value="40"/>
<CursorPos X="17" Y="44"/> <CursorPos X="17" Y="44"/>
<UsageCount Value="13"/> <UsageCount Value="10"/>
</Unit5> </Unit5>
</Units> </Units>
<JumpHistory Count="30" HistoryIndex="29"> <JumpHistory Count="30" HistoryIndex="29">
<Position1> <Position1>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="978" Column="38" TopLine="961"/> <Caret Line="2998" Column="6" TopLine="2978"/>
</Position1> </Position1>
<Position2> <Position2>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2868" Column="26" TopLine="2848"/> <Caret Line="3039" Column="26" TopLine="3026"/>
</Position2> </Position2>
<Position3> <Position3>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="593" Column="38" TopLine="572"/> <Caret Line="3035" Column="34" TopLine="3024"/>
</Position3> </Position3>
<Position4> <Position4>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2987" Column="48" TopLine="2978"/> <Caret Line="335" Column="59" TopLine="318"/>
</Position4> </Position4>
<Position5> <Position5>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="582" Column="20" TopLine="572"/> <Caret Line="3046" Column="36" TopLine="3032"/>
</Position5> </Position5>
<Position6> <Position6>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2809" Column="66" TopLine="2788"/> <Caret Line="2882" Column="27" TopLine="2867"/>
</Position6> </Position6>
<Position7> <Position7>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2998" Column="6" TopLine="2978"/> <Caret Line="2888" Column="23" TopLine="2877"/>
</Position7> </Position7>
<Position8> <Position8>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="3039" Column="26" TopLine="3026"/> <Caret Line="706" Column="34" TopLine="732"/>
</Position8> </Position8>
<Position9> <Position9>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="3035" Column="34" TopLine="3024"/> <Caret Line="2752" Column="28" TopLine="2729"/>
</Position9> </Position9>
<Position10> <Position10>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="335" Column="59" TopLine="318"/> <Caret Line="1788" Column="61" TopLine="1785"/>
</Position10> </Position10>
<Position11> <Position11>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="3046" Column="36" TopLine="3032"/> <Caret Line="2341" Column="6" TopLine="2313"/>
</Position11> </Position11>
<Position12> <Position12>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2882" Column="27" TopLine="2867"/> <Caret Line="1801" Column="28" TopLine="1786"/>
</Position12> </Position12>
<Position13> <Position13>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2888" Column="23" TopLine="2877"/> <Caret Line="2900" Column="14" TopLine="2888"/>
</Position13> </Position13>
<Position14> <Position14>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="706" Column="34" TopLine="732"/> <Caret Line="1897" Column="16" TopLine="1894"/>
</Position14> </Position14>
<Position15> <Position15>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2752" Column="28" TopLine="2729"/> <Caret Line="426" Column="15" TopLine="408"/>
</Position15> </Position15>
<Position16> <Position16>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1788" Column="61" TopLine="1785"/> <Caret Line="1183" TopLine="1178"/>
</Position16> </Position16>
<Position17> <Position17>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2341" Column="6" TopLine="2313"/> <Caret Line="1923" Column="42" TopLine="1895"/>
</Position17> </Position17>
<Position18> <Position18>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1801" Column="28" TopLine="1786"/> <Caret Line="2892" Column="43" TopLine="2879"/>
</Position18> </Position18>
<Position19> <Position19>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2900" Column="14" TopLine="2888"/> <Caret Line="2899" Column="43" TopLine="2886"/>
</Position19> </Position19>
<Position20> <Position20>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1897" Column="16" TopLine="1894"/> <Caret Line="1833" Column="87" TopLine="1829"/>
</Position20> </Position20>
<Position21> <Position21>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="426" Column="15" TopLine="408"/> <Caret Line="1839" Column="38" TopLine="1820"/>
</Position21> </Position21>
<Position22> <Position22>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1183" TopLine="1178"/> <Caret Line="1098" Column="15" TopLine="1092"/>
</Position22> </Position22>
<Position23> <Position23>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1923" Column="42" TopLine="1895"/> <Caret Line="1925" Column="3" TopLine="1923"/>
</Position23> </Position23>
<Position24> <Position24>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2892" Column="43" TopLine="2879"/> <Caret Line="3205" Column="13" TopLine="3198"/>
</Position24> </Position24>
<Position25> <Position25>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="2899" Column="43" TopLine="2886"/> <Caret Line="3279" Column="24" TopLine="3223"/>
</Position25> </Position25>
<Position26> <Position26>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1833" Column="87" TopLine="1829"/> <Caret Line="581" Column="11" TopLine="563"/>
</Position26> </Position26>
<Position27> <Position27>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1839" Column="38" TopLine="1820"/> <Caret Line="2250" Column="17" TopLine="2231"/>
</Position27> </Position27>
<Position28> <Position28>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1098" Column="15" TopLine="1092"/> <Caret Line="2255" Column="14" TopLine="2231"/>
</Position28> </Position28>
<Position29> <Position29>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="1925" Column="3" TopLine="1923"/> <Caret Line="2265" Column="21" TopLine="2234"/>
</Position29> </Position29>
<Position30> <Position30>
<Filename Value="main.pas"/> <Filename Value="main.pas"/>
<Caret Line="3205" Column="13" TopLine="3198"/> <Caret Line="3202" Column="9" TopLine="3174"/>
</Position30> </Position30>
</JumpHistory> </JumpHistory>
<RunParams> <RunParams>