|
@ -82,9 +82,6 @@ begin
|
|||
inherited;
|
||||
end;
|
||||
|
||||
var
|
||||
runing:Boolean=False;
|
||||
|
||||
procedure re_init_tty; register;
|
||||
var
|
||||
i:Integer;
|
||||
|
@ -244,8 +241,6 @@ begin
|
|||
Result:=nil;
|
||||
if Item.FLock then Exit;
|
||||
|
||||
if runing then Exit;
|
||||
|
||||
SetStdHandle(STD_OUTPUT_HANDLE,cfg.hOutput);
|
||||
SetStdHandle(STD_ERROR_HANDLE ,cfg.hError );
|
||||
|
||||
|
@ -326,7 +321,6 @@ begin
|
|||
|
||||
Result.g_ipc.kevent(@kev,1);
|
||||
|
||||
runing:=True;
|
||||
end;
|
||||
|
||||
|
||||
|
|
118
gui/main.lfm
|
@ -1,7 +1,7 @@
|
|||
object frmMain: TfrmMain
|
||||
Left = 527
|
||||
Left = 396
|
||||
Height = 343
|
||||
Top = 146
|
||||
Top = 211
|
||||
Width = 623
|
||||
Caption = 'fpPS4'
|
||||
ClientHeight = 343
|
||||
|
@ -11,8 +11,8 @@ object frmMain: TfrmMain
|
|||
OnCreate = FormCreate
|
||||
object Pages: TPageControl
|
||||
Left = 0
|
||||
Height = 343
|
||||
Top = 0
|
||||
Height = 275
|
||||
Top = 68
|
||||
Width = 623
|
||||
ActivePage = TabList
|
||||
Align = alClient
|
||||
|
@ -20,12 +20,12 @@ object frmMain: TfrmMain
|
|||
TabOrder = 0
|
||||
object TabList: TTabSheet
|
||||
Caption = 'Games'
|
||||
ClientHeight = 315
|
||||
ClientHeight = 247
|
||||
ClientWidth = 615
|
||||
PopupMenu = MenuList
|
||||
object ListGrid: TStringGrid
|
||||
Left = 0
|
||||
Height = 315
|
||||
Height = 247
|
||||
Top = 0
|
||||
Width = 615
|
||||
Align = alClient
|
||||
|
@ -62,6 +62,44 @@ object frmMain: TfrmMain
|
|||
Caption = 'Log'
|
||||
end
|
||||
end
|
||||
object MainToolBar: TToolBar
|
||||
Left = 0
|
||||
Height = 68
|
||||
Top = 0
|
||||
Width = 623
|
||||
AutoSize = True
|
||||
ButtonHeight = 64
|
||||
ButtonWidth = 64
|
||||
EdgeBorders = [ebLeft, ebTop, ebRight, ebBottom]
|
||||
Images = MainImageList
|
||||
ImagesWidth = 64
|
||||
TabOrder = 1
|
||||
object TBPlay: TToolButton
|
||||
Left = 3
|
||||
Top = 2
|
||||
ImageIndex = 0
|
||||
Style = tbsCheck
|
||||
OnClick = TBPlayClick
|
||||
end
|
||||
object TBPause: TToolButton
|
||||
Left = 71
|
||||
Top = 2
|
||||
ImageIndex = 1
|
||||
OnClick = TBPauseClick
|
||||
end
|
||||
object TBStop: TToolButton
|
||||
Left = 139
|
||||
Top = 2
|
||||
ImageIndex = 2
|
||||
OnClick = TBStopClick
|
||||
end
|
||||
object TBConfig: TToolButton
|
||||
Left = 207
|
||||
Top = 2
|
||||
Caption = 'TBConfig'
|
||||
ImageIndex = 6
|
||||
end
|
||||
end
|
||||
object MenuList: TPopupMenu
|
||||
Left = 171
|
||||
Top = 142
|
||||
|
@ -95,4 +133,72 @@ object frmMain: TfrmMain
|
|||
OnClick = MIDelClick
|
||||
end
|
||||
end
|
||||
object MainImageList: TImageList
|
||||
AllocBy = 7
|
||||
Height = 64
|
||||
Width = 64
|
||||
Left = 241
|
||||
Top = 144
|
||||
Bitmap = {
|
||||
4C7A070000004000000040000000340700000000000078DAEDDD6DA815451CC7
|
||||
F1311F8A527BF0018C2C82BCA18904051A61192589BDAB171156221244595448
|
||||
3E5CEF3D57B4B0C84A2A8AD00CA10C312AACC427C42C7C119441655EA5A232B1
|
||||
C0EBF353EAE93F348B8B9D7BCFEC9E39BBB33BDF1FFC88E0B0673FE3EED9DDD9
|
||||
B1942284104208A99BABA51BA447A55BA4E302F3AF9356633D2B7D473A3410FF
|
||||
F1F3FC51BBA44F4AFB94DC5FADD31DD28901FBA3AE910E0FD8AF7B44DA21BD30
|
||||
507FD49DD24901FBE3E7C43501FBABE6BE419F131705EA8FBA4B7A4FC0FEF839
|
||||
716DC07EDD63D245D2FE81FAA3FE2E7D38607FD48DD25101FB754F4997480704
|
||||
EA8FBAC7B373A29A53374B4707ECD7FDC79C130303F547FDD39C13BD02F547FD
|
||||
423A2660BFEE19E90AE9A040FD517F3373B3A1FA755706EEEFC2CFF11FF0EFDF
|
||||
70AE7F41F9B7047AFF13EAFDEFA9809F7F427DFEFD23D0F98F90E7BFF4FCE748
|
||||
E6BF837AFFD1A18AF14E90F75FEEDE7F4E56C58BABF7DF455D13C2FA8774EB5F
|
||||
EE56E5489AF54FFD5479C2FAB79EBB5D3A5E9537DDAD7FDD2F9D21EDADCA9D75
|
||||
35E69F964987A830A2DFB1AC37BF6D9BA4631521841042082184104248B9F39C
|
||||
F4A4AA3F2FA83FB3C0627B0B1D6FAFD9B1D9D7A8272CB677C2F1F69A9DA4EF42
|
||||
B2DE1E7EFCF8F1E3C78F1F3F7EFCF8F1E3C78F1F3F7EFCF8F1E3C78F1F3F7EFC
|
||||
F8F1E3C78F1F3F7EFCF8F1E3C78F1F3F7EFCF8CFC5F57AE5A2AD7F5E60B9CFFA
|
||||
33F373D81E21841042082184104248BD2C57FFFD371EAB05EB69E95207FED305
|
||||
B4C7C7A0D1540B5EFCF8F1E3C78F1F3F7EFCF8F1E3C78F1F3F7EFCF8F1E3C78F
|
||||
1F3F7EFCF8F1E3C78F1F3F7EFCF8F1E3C78F1F3F7EFCF843F287BEFE795941C7
|
||||
40EFF3DB8A10420821841042082189D3D1D1D122ADC4DA12927DCE9C391BE49F
|
||||
D5A8B366CDFA36947130CE6AADB6B6B67E5AF631E8C9AF2BC7C681F6F6F68565
|
||||
1D877AFED839B1B38CE784AD3F763C6C28D33824F5479573E2FD328C415ABF39
|
||||
273A8B7E2C34E28F9D131B8B3A0E2EFC51DBDADA56166D0C5CFACD39B1BB48C7
|
||||
826B7FEC9CD85C847168963FEABC79F356F93C06CDF6EBCE9E3D7BAFAFC74216
|
||||
FED8387CE5DB3864E98F5D2756FB320679F87D3A27F2F2C7C6615B9EE390B73F
|
||||
769DF8308F31F0C51F3B273AB21C079FFC799C133EFA63F36F9F347B0C7CF6C7
|
||||
E65B5A42F59B56F0E3C7CFEF1FD73FEE7FB8FFE5F987E75FE63F98FF62FE93F9
|
||||
6FBFFDBEBF13E4FD17EF3F5DD98BB82684F50F0DAD7F29FC9AB006D63FBD17E2
|
||||
FAA750D7BFC9B1FE7D88EB1FE5CFBBAB52A92C0871FD6B20EB9F835EFF1E8D41
|
||||
A87FFF81104208218410424898A9F12C6CD396ACB69781BFE2727D9AEBEDE1C7
|
||||
8F1F3F7EFCF8F1E3C78F1F3F7EFCF8F1E3C78F1F3F7EFCF8F1E3C78F1F3F7EFC
|
||||
F8F1E3C78F1F3F7EFCF8F1E3C78F1F3F7EFCF8F9FB0F8410420821841042CA91
|
||||
94CFA3BEB5A5017F11FE7F374D9B1FC18F1F3F7EFCF8F1E3C78F1F3F7EFCF8F1
|
||||
E3C78F1F3F7EFCF8F1E3C78F1F3F7EFCF8F1E3C78F1F3F7EFCF8F1E3C78F1F3F
|
||||
7EFCF80BE20FFAEF3F1042082184104208212475A64B774ACF4AABB1EE912E92
|
||||
F62BB1FDDEF3CCB5FA5289FD6B2DFC07A51794D4FF83855FF78A02DA2E97F671
|
||||
E41F54673B433C72DF2CFDCEECF771E90BD2BE353ED74BBADFD27F4337DF3545
|
||||
BACF7C669FF9F73C33417AB8C6FEAFAE3106F75BDA755FADF15D4F75F3D96772
|
||||
B2DF253DDA83619B7492F446E95CE9B1047E7D6D7C4B3A563A4EBAB4CEE76766
|
||||
6C1F6F8EF5AA479D91A17FB76776DD13D2AB32B00FF3D01EF5BE0CFC7D3D3CF6
|
||||
A38ECDE8F86FF5D0BED65C63B388FE9ED73DB27F9DC33DA31E83CF13EEE769E9
|
||||
C7D269D291D281D28BA5D79967A377A547126EF367E96539DD03DC96603FD74B
|
||||
475BFEBE2E4DB0DDBCEE7F74C658EEE3A214CF7453CD35ADDEB6A7E7E8EFB0D8
|
||||
BFC50D6C7F8AC5F63FCBC1DD5FFAB8F4649D7DDB2AEDDDE077BD613106AF35F1
|
||||
99501FB74F48B79BE7B7FDE677CCE61EDEC5F578B0F480E57916ED9F9E5F9B6F
|
||||
F13C6E9367535E93B63AFC335892721FDA1D7CF7AF29BFDBE5EFF21D29F7E127
|
||||
07DF9DF69E648243FF8094FB702847FF08C7BF43870AE677BDEEEE70C1FC2E8F
|
||||
FF81391EFFBFA4FC6E97735277A6DC871F1D7CF7CC025FFFE63A7ACE7B4CFA4D
|
||||
8AFB9F718EEE7F0E5A7ABBCCFE759A6B7F1FD59C5C6279FFFBA583FBDF372DDC
|
||||
2FAB7CDE89D83CFFBCD2C0F61FB2D8FE470578FE7D31C57130CDE2F8AA9A31CA
|
||||
2B49E63F3699F1AA972BA5CB3D9DF76F74FEEB8C748D99B31825BDD4CC7F8D30
|
||||
73D72B54CFEF946AB5D3DC1F676DF769FE736BC663D0E6E1FC7756BF837A7D8E
|
||||
AFEF3FC664E0F7F9FDD7E48C8E814E0FEDFA77736846FE5B55B2F7F959F4D18C
|
||||
AF0113EB8C81BEF7D5EB1F6E925612FE6644EB1FF438DF2EFD40F9F90EA4BB35
|
||||
20ABD4FFD7BF4C4DE05F9CE09AF3B4CA37B74877A873EB9F9EEFE6B9AB778239
|
||||
9CEBBBF9AE47D4B935547F491F54FE64B0C5F3A6EDBA910175DE470C53D9BDEB
|
||||
761917FE22679385FD6F55DE3CA0ECDE159739FA3ABDAB867BAF2AFFFA774208
|
||||
218478907F01A6F0B4E2
|
||||
}
|
||||
end
|
||||
end
|
||||
|
|
124
gui/main.pas
|
@ -23,10 +23,15 @@ uses
|
|||
host_ipc;
|
||||
|
||||
type
|
||||
TMainButtonsState=(mbsStopped,
|
||||
mdsStarted,
|
||||
mdsRunned,
|
||||
mdsSuspended);
|
||||
|
||||
{ TfrmMain }
|
||||
|
||||
TfrmMain = class(TForm)
|
||||
MainImageList: TImageList;
|
||||
MIDevide3: TMenuItem;
|
||||
MIRun: TMenuItem;
|
||||
MIEdit: TMenuItem;
|
||||
|
@ -40,6 +45,11 @@ type
|
|||
ListGrid: TStringGrid;
|
||||
TabList: TTabSheet;
|
||||
TabLog: TTabSheet;
|
||||
MainToolBar: TToolBar;
|
||||
TBPlay: TToolButton;
|
||||
TBPause: TToolButton;
|
||||
TBStop: TToolButton;
|
||||
TBConfig: TToolButton;
|
||||
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure OnIdleUpdate(Sender:TObject;var Done:Boolean);
|
||||
|
@ -48,6 +58,9 @@ type
|
|||
procedure MIDelClick(Sender: TObject);
|
||||
procedure MIEditClick(Sender: TObject);
|
||||
procedure MIRunClick(Sender: TObject);
|
||||
procedure TBPauseClick(Sender: TObject);
|
||||
procedure TBPlayClick(Sender: TObject);
|
||||
procedure TBStopClick(Sender: TObject);
|
||||
private
|
||||
|
||||
public
|
||||
|
@ -67,6 +80,8 @@ type
|
|||
|
||||
FLogUpdateTime:QWORD;
|
||||
|
||||
FMainButtonsState:TMainButtonsState;
|
||||
|
||||
procedure ReadIniFile;
|
||||
procedure LoadItemIni(Item:TGameItem);
|
||||
procedure SaveItemIni(Item:TGameItem);
|
||||
|
@ -79,6 +94,7 @@ type
|
|||
procedure DoEdit(Sender: TObject);
|
||||
procedure LogEnd;
|
||||
procedure ClearLog;
|
||||
procedure SetButtonsState(s:TMainButtonsState);
|
||||
end;
|
||||
|
||||
var
|
||||
|
@ -163,7 +179,8 @@ begin
|
|||
end;
|
||||
if ((kev[i].fflags and NOTE_EXEC)<>0) then
|
||||
begin
|
||||
ShowMessage('NOTE_EXEC pid:'+IntToStr(kev[i].ident));
|
||||
//ShowMessage('NOTE_EXEC pid:'+IntToStr(kev[i].ident));
|
||||
Form.SetButtonsState(mdsRunned);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
@ -322,6 +339,8 @@ begin
|
|||
Pages.ActivePageIndex:=0;
|
||||
|
||||
Application.AddOnIdleHandler(@OnIdleUpdate,False);
|
||||
|
||||
SetButtonsState(mbsStopped);
|
||||
end;
|
||||
|
||||
procedure TfrmMain.OnIdleUpdate(Sender:TObject;var Done:Boolean);
|
||||
|
@ -338,9 +357,18 @@ begin
|
|||
end;
|
||||
|
||||
if (FGameProcess<>nil) then
|
||||
if (FGameProcess.g_ipc<>nil) then
|
||||
begin
|
||||
FGameProcess.g_ipc.Update(IpcHandler);
|
||||
|
||||
if (FGameProcess.g_ipc<>nil) then
|
||||
begin
|
||||
FGameProcess.g_ipc.Update(IpcHandler);
|
||||
end;
|
||||
|
||||
if FGameProcess.is_terminated then
|
||||
begin
|
||||
TBStopClick(Sender);
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
end;
|
||||
|
@ -430,6 +458,8 @@ var
|
|||
aRow:Integer;
|
||||
cfg:TGameRunConfig;
|
||||
begin
|
||||
if (FGameProcess<>nil) then Exit;
|
||||
|
||||
aRow:=ListGrid.Row;
|
||||
|
||||
if (aRow=0) then Exit;
|
||||
|
@ -448,6 +478,46 @@ begin
|
|||
cfg.fork_proc:=True;
|
||||
|
||||
FGameProcess:=run_item(cfg,Item);
|
||||
|
||||
SetButtonsState(mdsStarted);
|
||||
end;
|
||||
|
||||
procedure TfrmMain.TBPlayClick(Sender: TObject);
|
||||
begin
|
||||
if (FGameProcess<>nil) then
|
||||
begin
|
||||
//resume
|
||||
FGameProcess.resume;
|
||||
SetButtonsState(mdsRunned);
|
||||
end else
|
||||
begin
|
||||
//run
|
||||
MIRunClick(Sender);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmMain.TBPauseClick(Sender: TObject);
|
||||
begin
|
||||
if (FGameProcess<>nil) then
|
||||
begin
|
||||
//suspend
|
||||
FGameProcess.suspend;
|
||||
SetButtonsState(mdsSuspended);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmMain.TBStopClick(Sender: TObject);
|
||||
begin
|
||||
if (FGameProcess<>nil) then
|
||||
if (FGameProcess.g_fork) then //only forked
|
||||
begin
|
||||
//terminate
|
||||
FGameProcess.stop;
|
||||
SetButtonsState(mbsStopped);
|
||||
FreeAndNil(FGameProcess);
|
||||
//
|
||||
Pages.ActivePage:=TabList;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmMain.MIDelClick(Sender: TObject);
|
||||
|
@ -555,6 +625,54 @@ begin
|
|||
SaveItemIni(Item);
|
||||
end;
|
||||
|
||||
procedure TfrmMain.SetButtonsState(s:TMainButtonsState);
|
||||
begin
|
||||
FMainButtonsState:=s;
|
||||
|
||||
case s of
|
||||
mbsStopped:
|
||||
begin
|
||||
TBPlay .Enabled:=True;
|
||||
TBPause.Enabled:=False;
|
||||
TBStop .Enabled:=False;
|
||||
//
|
||||
TBPlay .ImageIndex:=0;
|
||||
TBPause.ImageIndex:=1+3;
|
||||
TBStop .ImageIndex:=2+3;
|
||||
end;
|
||||
mdsStarted:
|
||||
begin
|
||||
TBPlay .Enabled:=False;
|
||||
TBPause.Enabled:=False;
|
||||
TBStop .Enabled:=False;
|
||||
//
|
||||
TBPlay .ImageIndex:=0+3;
|
||||
TBPause.ImageIndex:=1+3;
|
||||
TBStop .ImageIndex:=2+3;
|
||||
end;
|
||||
mdsRunned:
|
||||
begin
|
||||
TBPlay .Enabled:=False;
|
||||
TBPause.Enabled:=True;
|
||||
TBStop .Enabled:=True;
|
||||
//
|
||||
TBPlay .ImageIndex:=0+3;
|
||||
TBPause.ImageIndex:=1;
|
||||
TBStop .ImageIndex:=2;
|
||||
end;
|
||||
mdsSuspended:
|
||||
begin
|
||||
TBPlay .Enabled:=True;
|
||||
TBPause.Enabled:=False;
|
||||
TBStop .Enabled:=True;
|
||||
//
|
||||
TBPlay .ImageIndex:=0;
|
||||
TBPause.ImageIndex:=1+3;
|
||||
TBStop .ImageIndex:=2;
|
||||
end;
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
|
After Width: | Height: | Size: 972 B |
After Width: | Height: | Size: 287 B |
After Width: | Height: | Size: 479 B |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 203 B |
After Width: | Height: | Size: 403 B |