mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-07 02:58:05 +02:00
Opkman: Private repositories(step1).
git-svn-id: trunk@55799 -
This commit is contained in:
parent
2c0f3660a0
commit
520a347095
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -3477,6 +3477,8 @@ components/onlinepackagemanager/opkman_progressfrm.lfm svneol=native#text/plain
|
||||
components/onlinepackagemanager/opkman_progressfrm.pas svneol=native#text/pascal
|
||||
components/onlinepackagemanager/opkman_repositories.lfm -text svneol=native#plain/text
|
||||
components/onlinepackagemanager/opkman_repositories.pas svneol=native#text/pascal
|
||||
components/onlinepackagemanager/opkman_repositorydetailsfrm.lfm svneol=native#text/plain
|
||||
components/onlinepackagemanager/opkman_repositorydetailsfrm.pas svneol=native#text/pascal
|
||||
components/onlinepackagemanager/opkman_serializablepackages.pas svneol=native#text/pascal
|
||||
components/onlinepackagemanager/opkman_timer.pas svneol=native#text/pascal
|
||||
components/onlinepackagemanager/opkman_updates.pas svneol=native#text/pascal
|
||||
|
@ -20,7 +20,7 @@
|
||||
<Description Value="Online package manger"/>
|
||||
<License Value="GPL"/>
|
||||
<Version Major="1"/>
|
||||
<Files Count="22">
|
||||
<Files Count="23">
|
||||
<Item1>
|
||||
<Filename Value="onlinepackagemanagerintf.pas"/>
|
||||
<HasRegisterProc Value="True"/>
|
||||
@ -115,6 +115,10 @@
|
||||
<Filename Value="opkman_createrepositoryfrm.pas"/>
|
||||
<UnitName Value="opkman_createrepositoryfrm"/>
|
||||
</Item22>
|
||||
<Item23>
|
||||
<Filename Value="opkman_repositorydetailsfrm.pas"/>
|
||||
<UnitName Value="opkman_repositorydetailsfrm"/>
|
||||
</Item23>
|
||||
</Files>
|
||||
<i18n>
|
||||
<EnableI18N Value="True"/>
|
||||
|
@ -15,7 +15,7 @@ uses
|
||||
opkman_createrepositorypackagefrm, opkman_categoriesfrm,
|
||||
opkman_packagedetailsfrm, opkman_updates, opkman_createjsonforupdatesfrm,
|
||||
opkman_uploader, opkman_repositories, opkman_createrepositoryfrm,
|
||||
LazarusPackageIntf;
|
||||
opkman_repositorydetailsfrm, LazarusPackageIntf;
|
||||
|
||||
implementation
|
||||
|
||||
|
@ -406,7 +406,12 @@ resourcestring
|
||||
rsCreateRepositoryFrm_bDelete_Hint = 'Delete package from the current repository';
|
||||
rsCreateRepositoryFrm_bCancel_Caption = 'Cancel';
|
||||
rsCreateRepositoryFrm_bCancel_Hint = 'Close this dialog';
|
||||
|
||||
rsCreateRepositoryFrm_VSTPackages_Column0 = 'Repository/Packages';
|
||||
rsCreateRepositoryFrm_VSTDetails_Column0 = 'Description';
|
||||
rsCreateRepositoryFrm_VSTDetails_Column1 = 'Data';
|
||||
rsCreateRepositoryFrm_Error1 = 'Cannot open private repository. Error message: ' + sLineBreak + '"%s"';
|
||||
rsCreateRepositoryFrm_Error2 = 'File ' + cRemoteJSONFile + ' not found.';
|
||||
rsCreateRepositoryFrm_Error3 = 'Cannot save private repository. Error message: ' + sLineBreak + '"%s"';
|
||||
|
||||
implementation
|
||||
|
||||
|
@ -12,7 +12,9 @@ object CreateRepositoryFrm: TCreateRepositoryFrm
|
||||
OnCreate = FormCreate
|
||||
OnDestroy = FormDestroy
|
||||
PopupMode = pmExplicit
|
||||
PopupParent = MainFrm.Owner
|
||||
Position = poOwnerFormCenter
|
||||
LCLVersion = '1.9.0.0'
|
||||
object pnButtons: TPanel
|
||||
Left = 0
|
||||
Height = 41
|
||||
@ -23,27 +25,29 @@ object CreateRepositoryFrm: TCreateRepositoryFrm
|
||||
BorderStyle = bsSingle
|
||||
ClientHeight = 37
|
||||
ClientWidth = 796
|
||||
TabOrder = 0
|
||||
TabOrder = 2
|
||||
OnResize = pnButtonsResize
|
||||
object bOpen: TButton
|
||||
Left = 6
|
||||
Left = 96
|
||||
Height = 27
|
||||
Top = 4
|
||||
Width = 80
|
||||
Caption = 'Open'
|
||||
OnClick = bOpenClick
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 0
|
||||
TabOrder = 1
|
||||
end
|
||||
object bCreate: TButton
|
||||
Left = 87
|
||||
Left = 16
|
||||
Height = 27
|
||||
Top = 4
|
||||
Width = 80
|
||||
Caption = 'Create'
|
||||
OnClick = bCreateClick
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 1
|
||||
TabOrder = 0
|
||||
end
|
||||
object bAdd: TButton
|
||||
Left = 368
|
||||
@ -58,7 +62,7 @@ object CreateRepositoryFrm: TCreateRepositoryFrm
|
||||
TabOrder = 2
|
||||
end
|
||||
object bDelete: TButton
|
||||
Left = 449
|
||||
Left = 448
|
||||
Height = 27
|
||||
Top = 4
|
||||
Width = 80
|
||||
@ -70,7 +74,7 @@ object CreateRepositoryFrm: TCreateRepositoryFrm
|
||||
TabOrder = 3
|
||||
end
|
||||
object bCancel: TButton
|
||||
Left = 705
|
||||
Left = 702
|
||||
Height = 27
|
||||
Top = 4
|
||||
Width = 80
|
||||
@ -84,4 +88,167 @@ object CreateRepositoryFrm: TCreateRepositoryFrm
|
||||
TabOrder = 4
|
||||
end
|
||||
end
|
||||
object pnPackages: TPanel
|
||||
Left = 0
|
||||
Height = 559
|
||||
Top = 0
|
||||
Width = 285
|
||||
Align = alLeft
|
||||
BevelOuter = bvNone
|
||||
TabOrder = 0
|
||||
end
|
||||
object pnDetails: TPanel
|
||||
Left = 287
|
||||
Height = 559
|
||||
Top = 0
|
||||
Width = 513
|
||||
Align = alClient
|
||||
BevelOuter = bvNone
|
||||
TabOrder = 1
|
||||
end
|
||||
object spMain: TSplitter
|
||||
Left = 285
|
||||
Height = 559
|
||||
Top = 0
|
||||
Width = 2
|
||||
AutoSnap = False
|
||||
Color = 14671839
|
||||
MinSize = 150
|
||||
ParentColor = False
|
||||
end
|
||||
object pnMessage: TPanel
|
||||
Left = 287
|
||||
Height = 559
|
||||
Top = 0
|
||||
Width = 513
|
||||
Align = alClient
|
||||
BevelOuter = bvNone
|
||||
Caption = 'No items to show'
|
||||
Font.CharSet = ANSI_CHARSET
|
||||
Font.Color = clBlack
|
||||
Font.Height = -16
|
||||
Font.Name = 'Verdana'
|
||||
Font.Pitch = fpVariable
|
||||
Font.Quality = fqDraft
|
||||
Font.Style = [fsBold]
|
||||
ParentFont = False
|
||||
TabOrder = 3
|
||||
Visible = False
|
||||
end
|
||||
object imTree: TImageList
|
||||
left = 40
|
||||
top = 24
|
||||
Bitmap = {
|
||||
4C69030000001000000010000000A38D780095806C12B3A18B9FC5B49FFEC6B5
|
||||
A0FFC6B5A0FFC6B5A0FFC6B5A1FFBEAD98E3A5917C4BFFFFFF00988674000000
|
||||
0000000000000000000000000000FFEAD300AC9A886AD5C9BBF9E3D9CBFFE2D9
|
||||
CAFFE2D9CAFFE2D9CAFFE3D9CAFFE0D6C8FFC3B4A4CB84715C189B8874000000
|
||||
0000000000000000000000000000FFFFFF00AE9F8E87E5DBCEFFE7DDCFFFE8DE
|
||||
D2FFE8DED2FFE8DED2FFE8DED2FFE8DED0FFD1C5B7E67563502492806B000000
|
||||
0000000000000000000000000000FFFFFF00AC9C8B87DED2C2FFCBB69BFFC9B4
|
||||
99FFC9B499FFC9B499FFC8B398FFD6C5B0FFCEC1B3E673614E24907D69000000
|
||||
0000000000000000000000000000FFFFFF00AA9A8887DED3C4FFE0D3C4FFE1D5
|
||||
C6FFE1D5C6FFE1D5C6FFE1D5C6FFE1D5C5FFCBBEAFE672604E248E7C68000000
|
||||
0000000000000000000000000000FFFFFF00A8988687DACDBDFFCBB69CFFC9B4
|
||||
9AFFCAB49AFFCAB49AFFC9B499FFD4C4AEFFC9BCADE6715F4C248D7B67000000
|
||||
0000000000000000000000000000FFFFFF00A6958387D9CEBEFFDED2C2FFDFD3
|
||||
C4FFDFD3C4FFDFD3C4FFDFD3C4FFDED2C2FFC7B8A7E574614D238E7A65000000
|
||||
0000000000000000000000000000FFFFFF00A4938187D5C8B7FFCAB69BFFC9B4
|
||||
99FFC9B599FFC9B599FFC8B499FFC9BBA6FFC0B6A8F3B2AA9E92BCB6AB7FBAB4
|
||||
A87CB0AA9F489D968B09A39D9100FFFFFF00A2917E87D4C8B8FFDBD0C0FFDCD2
|
||||
C2FFDCD1C2FFDDD3C3FFCCC1B2FFCFC6BBFFDDD5CBFFDFD6CCFFDED5CBFFDCD4
|
||||
CAFFD1C9BEEFADA69B5FF1E8D900FFFFFF00A08F7C87D0C3B0FFCAB79CFFC9B5
|
||||
9AFFCAB69BFFCEB79CFFBEB09DFFDBD4CCFFE9E2D9FFEAE3DBFFEAE3DBFFE9E2
|
||||
D9FFDCD5CCFFA8A19686FFFFFF00FFFFFF009E8D7987CEC1AEFFCDBFA9FFCDBF
|
||||
A9FFC7BDA6FF95B08AFFB5AE9CFFC4BCB3FFDAD1C8FFE8DED7FFE8DED8FFDBD2
|
||||
CAFFC6BEB5FF9D968B84FFFFFF00FFFFFF009C8B7687CCC1ADFFD7CDBAFFD7CD
|
||||
BAFFD6CCB9FFC8CAB2FFC5BCACFFC7BFB6FFD1C9C0FFDCD2CAFFDCD3CBFFD2CA
|
||||
C2FFC8C1B8FC978F8570FFFFFF00FFFFFF009A887487CBBFABFFE0D7C6FFE1D8
|
||||
C8FFE1D8C8FFE4DBCAFFC3BAACFFCCC5BCFFE1DAD2FFEAE2DAFFEAE2DBFFE2DB
|
||||
D3FFCFC8BEFF9B918683FFFFFF00FFFFFF008C7B6773AD9E89ECB1A28EECB1A2
|
||||
8DECB1A28DECB1A28DEBA69A8AF2C3BAB1FED9D0C7FFE7DDD5FFE9DED7FFDAD1
|
||||
C9FFC4BCB3FF938A7E84FFFFFF00000000003830271A3F352A3C3D33283E3D33
|
||||
283E3D33283E3B30263D5951485B948C82BAB0A69CE7BAAFA6EABBB0A7EAB0A7
|
||||
9CE7958C82BB675F563EFFFFFF00000000000000000000000000000000000000
|
||||
000000000000000000000000000625221D2638322C4336312A4636312A463832
|
||||
2C4325211D26000000061F181300FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00E1F2F8007DC3DCFF76C0DCFFDCEFF700FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F0F9
|
||||
FC0099CEE00055B6D9FF9CD5EAFF88CCE7FF4DAFD6FF8FC7DD00ECF6FB00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FCFEFE00AFD8E60063BD
|
||||
DBFF92CFE5FFE6F8FCFFE3F6FEFFAFDDF2FFB2E4F7FF72C0E1FF55ADD5FFA3CF
|
||||
E100F8FCFD00FFFFFF00FFFFFF00FFFFFF00C7E4EE0076C4DEFF7EC6E0FFD1EE
|
||||
F7FFF6FFFFFFF0FEFFFFCBEDFBFF50ADDAFF8BD7F7FFAAE1F9FF95D6F2FF62B2
|
||||
DBFF61AED4FFBAD9E800FFFFFF0089CADE004EB5D9FFA5D9EDFFD2EBF5FFBEDE
|
||||
EDFF95C9DEFF89C3DBFF70B8D6FF69B9DDFF90D7F5FF7FCFF5FF9DDBF8FFAAE3
|
||||
FAFF84CAECFF51A6D5FF74B3D5004FB4D8FFE1F8FEFFCDEBF9FF92D2EDFF84CC
|
||||
EBFF6FBFE5FF56B1DBFF3B94C8FFCEECFAFFD9F5FFFFB9EAFFFF95DFFEFF77D5
|
||||
FFFFA5E4FFFF84DCFBFF3193C9FF55B6D8FFE2F8FDFFD4F3FFFFB0E4FAFF86CF
|
||||
F1FF7FD0F5FF78D0F5FF4CB1E4FFB0E4FAFFB6E9FFFF9BE1FFFF78D6FEFF40BD
|
||||
F5FF3DB5E9FF90D5F1FF3895CAFF53B4D7FFE2F6FDFFDAF4FFFFD5F3FFFFBDEB
|
||||
FFFF89D5F7FF69C9F5FF4CB4E9FF8DDAFBFF8CDCFFFF009600FF009600FF0096
|
||||
00FF4FBBE8FF8CD0F0FF3693C9FF51B1D6FFE2F6FCFFD7F4FFFFCEF2FFFFC8EF
|
||||
FFFFBAEBFFFF92DBFBFF56C1F1FF48C2F9FF3BBDF0FF009600FF00C000FF0096
|
||||
00FF47B1E6FF88CAEEFF3490C8FF4EAED6FFE2F6FCFFD4F3FFFFC9F0FFFFBEED
|
||||
FFFFB3EAFFFFADE7FFFF7CD9FEFF48C7EFFF43C4EAFF009600FF00C000FF0096
|
||||
00FF40A7E1FF83C5ECFF328DC7FF45A9D3FFE7FBFEFFDDF6FFFFC1EFFFFFB7EB
|
||||
FFFFABE8FFFFA4E4FFFF009600FF009600FF009600FF009600FF00C000FF0096
|
||||
00FF009600FF009600FF009600FF6FB8D80077BDDCFFBFE5F6FFDBF6FFFFC1EE
|
||||
FFFFA5E5FFFF9FE3FFFF009600FF00C000FF00C000FF00C000FF00C000FF00C0
|
||||
00FF00C000FF00C000FF009600FFFAFDFE00AFD8EB0055ABD5FF7DC0E0FFC7EE
|
||||
FCFFCCF2FFFFA8E8FFFF009600FF009600FF009600FF009600FF00C000FF0096
|
||||
00FF009600FF009600FF009600FFFFFFFF00FFFFFF00ECF4F90093C9E3FF3F9C
|
||||
CEFF82C4E5FFCCF4FFFFC4EFFFFF8BD2F1FF8ACEF0FF009600FF00C000FF0096
|
||||
00FFD1E9E100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D7E9
|
||||
F20078B7DBFF2D8EC8FF8FCDEBFF6FB7E2FF408EC8FF009600FF00C000FF0096
|
||||
00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00BDD8E8005FA7D3FF56A2D0FFB5D3E500009600FF009600FF0096
|
||||
00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF004DB4D82B4BB2D8AF4AB0D7BC48AED631FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004EB6
|
||||
D9164DB4D8844BB2D7EF9CD5EAFF88CCE7FF45ACD5F344AAD48C42A7D31AFFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004FB7DA054EB6D9654CB4
|
||||
D8DB92CFE5FFE6F8FCFFE3F6FEFFAFDDF2FFB2E4F7FF72C0E1FF3FA4D1E03DA2
|
||||
D06C3BA0CF09FFFFFF00FFFFFF00FFFFFF004FB7D9464EB5D9C27EC6E0FFD1EE
|
||||
F7FFF6FFFFFFF0FEFFFFCBEDFBFF50ADDAFF8BD7F7FFAAE1F9FF95D6F2FF62B2
|
||||
DBFF399DCEC8369ACD4DFFFFFF004FB7D99F4DB5D9FEA5D9EDFFD2EBF5FFBEDE
|
||||
EDFF95C9DEFF89C3DBFF70B8D6FF6ABADEFF90D7F5FF7FCFF5FF9DDBF8FFAAE3
|
||||
FAFF84CAECFF51A6D5FF3295CBA64DB4D8FBE1F8FEFFCDEBF9FF92D2EDFF84CC
|
||||
EBFF6FBFE5FF56B1DBFF3B94C8FFCEECFAFFD9F5FFFFB9EAFFFF95DFFEFF77D5
|
||||
FFFFA5E4FFFF84DCFBFF2F92C9FB4BB2D7F0E2F8FDFFD4F3FFFFB0E4FAFF86CF
|
||||
F1FF7FD0F5FF78D0F5FF4CB1E4FFB0E4FAFFB6E9FFFF9BE1FFFF78D6FEFF40BD
|
||||
F5FF3DB5E9FF90D5F1FF2D8FC8F049B0D6F8DBF6F8FFD9F3FFFFD5F3FFFFBDEB
|
||||
FFFF89D5F7FF69C9F5FF4CB4E9FF8DDAFBFF8CDCFFFF48C4F9FF38B6ECFF48BF
|
||||
E8FF48B8E7FF90D3F1FF2B8DC7FA47ADD5FB92E7D4FF80E5D8FFC8F1FDFFC8EF
|
||||
FFFFBAEBFFFF92DBFBFF56C1F1FF48C2F9FF3BBDF0FF47C5ECFF45BDE9FF43B5
|
||||
E6FF39ADD4FF88D2CCFF288AC6FF44AAD4F7A8EDE2FF41D6B3FF49D8BAFF8CE4
|
||||
E4FFB3EAFFFFADE7FFFF7CD9FEFF48C7EFFF43C4EAFF43BEE8FF3DB3DCFF2DAE
|
||||
A9FF29B188FF85D3BBFF2687C5FE42A8D3F9E7FBFEFFD0F3F9FF46D7B8FF39D4
|
||||
AEFF50D9C3FF8EE2F2FF96E1FEFF48C6EBFF3FBCE3FF30AFB1FF24AC84FF24AD
|
||||
81FF67BFC2FF83C4ECFF2485C4F840A5D2BB77BDDCFFBFE5F6FFDBF6FFFF9EE8
|
||||
EBFF37D3ACFF37D2ACFF55D8D1FF37B8BCFF24AA85FF22AA7CFF4DB7A9FF86C6
|
||||
EBFF74B3E4FF4A90CAFF2283C3C13DA2D0063BA0CF65399DCEDB7DC0E0FFC7EE
|
||||
FCFFCBF2FEFF65DDD0FF33D1A8FF22AA7CFF35B091FF89CBE8FF82C1EBFF5397
|
||||
D0FF2384C3E02282C26D2080C20AFFFFFF00FFFFFF00369ACD163498CC853295
|
||||
CBEF82C4E5FFCCF4FFFFBCEEFAFF88D1E4FF8ACEF0FF5FA4D7FF2586C4F32384
|
||||
C38D2182C21BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003093
|
||||
CA2B2E90C9A52C8EC8FE8FCDEBFF6FB7E2FF408EC8FF2485C4AC2383C331FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF002A8BC6462889C5BE2687C5C42485C44DFFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
end
|
||||
object SD: TSaveDialog
|
||||
DefaultExt = '.opkman'
|
||||
Filter = '*.opkman|*.opkman'
|
||||
Options = [ofOverwritePrompt, ofEnableSizing, ofViewDetail]
|
||||
left = 41
|
||||
top = 83
|
||||
end
|
||||
object OD: TOpenDialog
|
||||
DefaultExt = '.opkman'
|
||||
Filter = '*.opkman|*.opkman'
|
||||
left = 88
|
||||
top = 84
|
||||
end
|
||||
end
|
||||
|
@ -31,12 +31,23 @@ uses
|
||||
Classes, SysUtils, FileUtil,
|
||||
// LCL
|
||||
Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
||||
StdCtrls,
|
||||
StdCtrls, Buttons,
|
||||
// LazUtils
|
||||
LazFileUtils,
|
||||
// OpkMan
|
||||
opkman_VirtualTrees;
|
||||
|
||||
type
|
||||
|
||||
PRepository = ^TRepository;
|
||||
TRepository = record
|
||||
FName: String;
|
||||
FPath: String;
|
||||
FAddress: String;
|
||||
FDescription: String;
|
||||
end;
|
||||
|
||||
|
||||
{ TCreateRepositoryFrm }
|
||||
|
||||
TCreateRepositoryFrm = class(TForm)
|
||||
@ -45,14 +56,46 @@ type
|
||||
bDelete: TButton;
|
||||
bOpen: TButton;
|
||||
bCreate: TButton;
|
||||
imTree: TImageList;
|
||||
OD: TOpenDialog;
|
||||
pnButtons: TPanel;
|
||||
pnMessage: TPanel;
|
||||
pnPackages: TPanel;
|
||||
pnDetails: TPanel;
|
||||
SD: TSaveDialog;
|
||||
spMain: TSplitter;
|
||||
procedure bCreateClick(Sender: TObject);
|
||||
procedure bOpenClick(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
procedure pnButtonsResize(Sender: TObject);
|
||||
private
|
||||
FVST: TVirtualStringTree;
|
||||
FRepository: String;
|
||||
FVSTPackages: TVirtualStringTree;
|
||||
FVSTDetails: TVirtualStringTree;
|
||||
FRepository: TRepository;
|
||||
procedure EnableDisableButtons(const AEnable: Boolean);
|
||||
procedure ShowHideControls(const AType: Integer);
|
||||
function LoadRepository(const AFileName: String; out AErrMsg: String): Boolean;
|
||||
function SaveRepository(const AFileName: String; out AErrMsg: String): Boolean;
|
||||
procedure VSTPackagesGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
|
||||
{%H-}Column: TColumnIndex; {%H-}TextType: TVSTTextType; var CellText: String);
|
||||
procedure VSTPackagesGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
|
||||
{%H-}Kind: TVTImageKind; {%H-}Column: TColumnIndex; var {%H-}Ghosted: Boolean;
|
||||
var ImageIndex: Integer);
|
||||
procedure VSTPackagesHeaderClick(Sender: TVTHeader; {%H-}Column: TColumnIndex;
|
||||
Button: TMouseButton; {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);
|
||||
procedure VSTPackagesCompareNodes(Sender: TBaseVirtualTree; Node1,
|
||||
Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer);
|
||||
procedure VSTPackagesFocusChanged(Sender: TBaseVirtualTree; Node: PVirtualNode;
|
||||
{%H-}Column: TColumnIndex);
|
||||
procedure VSTPackagesFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||||
|
||||
procedure VSTDetailsGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
|
||||
{%H-}Column: TColumnIndex; {%H-}TextType: TVSTTextType; var CellText: String);
|
||||
procedure VSTDetailsGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
|
||||
{%H-}Kind: TVTImageKind; {%H-}Column: TColumnIndex; var {%H-}Ghosted: Boolean;
|
||||
var ImageIndex: Integer);
|
||||
procedure VSTDetailsFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||||
public
|
||||
|
||||
end;
|
||||
@ -61,12 +104,44 @@ var
|
||||
CreateRepositoryFrm: TCreateRepositoryFrm;
|
||||
|
||||
implementation
|
||||
uses opkman_const;
|
||||
|
||||
uses opkman_common, opkman_const, opkman_options, opkman_serializablepackages,
|
||||
opkman_repositorydetailsfrm;
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TCreateRepositoryFrm }
|
||||
|
||||
type
|
||||
PMetaData = ^TMetaData;
|
||||
TMetaData = record
|
||||
FDataType: Integer;
|
||||
FName: String;
|
||||
end;
|
||||
|
||||
PDetails = ^TDetails;
|
||||
TDetails = record
|
||||
FPackageRelativePath: String;
|
||||
FPackageBaseDir: String;
|
||||
FFullPath: String;
|
||||
FDataType: Integer;
|
||||
FName: String;
|
||||
FDisplayName: String;
|
||||
FPackageType: TPackageType;
|
||||
FAuthor: String;
|
||||
FDescription: String;
|
||||
FLicense: String;
|
||||
FVersionAsString: String;
|
||||
FDependenciesAsString: String;
|
||||
FCategory: String;
|
||||
FLazCompatibility: String;
|
||||
FFPCCompatibility: String;
|
||||
FSupportedWidgetSet: String;
|
||||
FHomePageURL: String;
|
||||
FDownloadURL: String;
|
||||
FSVNURL: String;
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryFrm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
Caption := rsCreateRepositoryFrm_Caption;
|
||||
@ -81,28 +156,330 @@ begin
|
||||
bCancel.Caption := rsCreateRepositoryFrm_bCancel_Caption;
|
||||
bCancel.Hint := rsCreateRepositoryFrm_bCancel_Hint;
|
||||
EnableDisableButtons(True);
|
||||
FVST := TVirtualStringTree.Create(nil);
|
||||
ShowHideControls(0);
|
||||
|
||||
//continue
|
||||
EnableDisableButtons(False);
|
||||
pnMessage.Caption := 'Not yet implemented!';
|
||||
pnMessage.Visible := True;
|
||||
|
||||
FVSTPackages := TVirtualStringTree.Create(nil);
|
||||
with FVSTPackages do
|
||||
begin
|
||||
NodeDataSize := SizeOf(TMetaData);
|
||||
Parent := pnPackages;
|
||||
Align := alClient;
|
||||
Images := imTree;
|
||||
if not Options.UseDefaultTheme then
|
||||
Color := clBtnFace;
|
||||
DefaultNodeHeight := 25;
|
||||
Indent := 15;
|
||||
TabOrder := 1;
|
||||
DefaultText := '';
|
||||
Header.AutoSizeIndex := 0;
|
||||
Header.Height := 25;
|
||||
Colors.BorderColor := clBlack;
|
||||
with Header.Columns.Add do begin
|
||||
Position := 0;
|
||||
Width := 250;
|
||||
Text := rsCreateRepositoryFrm_VSTPackages_Column0;
|
||||
end;
|
||||
Header.Options := [hoAutoResize, hoColumnResize, hoRestrictDrag, hoVisible, hoAutoSpring];
|
||||
Header.SortColumn := 0;
|
||||
TabOrder := 0;
|
||||
TreeOptions.MiscOptions := [toCheckSupport, toFullRepaintOnResize, toInitOnSave, toToggleOnDblClick, toWheelPanning];
|
||||
TreeOptions.PaintOptions := [toHideFocusRect, toPopupMode, toShowButtons, toShowDropmark, toShowRoot, toThemeAware, toUseBlendedImages];
|
||||
TreeOptions.SelectionOptions := [toRightClickSelect];
|
||||
TreeOptions.AutoOptions := [toAutoTristateTracking];
|
||||
OnGetText := @VSTPackagesGetText;
|
||||
OnGetImageIndex := @VSTPackagesGetImageIndex;
|
||||
OnHeaderClick := @VSTPackagesHeaderClick;
|
||||
OnCompareNodes := @VSTPackagesCompareNodes;
|
||||
OnFocusChanged := @VSTPackagesFocusChanged;
|
||||
OnFreeNode := @VSTPackagesFreeNode;
|
||||
end;
|
||||
|
||||
FVSTDetails := TVirtualStringTree.Create(nil);
|
||||
with FVSTDetails do
|
||||
begin
|
||||
NodeDataSize := SizeOf(TDetails);
|
||||
Parent := pnDetails;
|
||||
Align := alClient;
|
||||
Images := imTree;
|
||||
if not Options.UseDefaultTheme then
|
||||
Color := clBtnFace;
|
||||
DefaultNodeHeight := 25;
|
||||
Indent := 15;
|
||||
TabOrder := 0;
|
||||
DefaultText := '';
|
||||
Header.AutoSizeIndex := 1;
|
||||
Header.Height := 25;
|
||||
Colors.BorderColor := clBlack;
|
||||
with Header.Columns.Add do begin
|
||||
Position := 0;
|
||||
Width := 150;
|
||||
Text := rsCreateRepositoryFrm_VSTDetails_Column0;
|
||||
end;
|
||||
with Header.Columns.Add do begin
|
||||
Position := 1;
|
||||
Width := 250;
|
||||
Text := rsCreateRepositoryFrm_VSTDetails_Column1;
|
||||
end;
|
||||
Header.Options := [hoAutoResize, hoColumnResize, hoRestrictDrag, hoVisible, hoAutoSpring];
|
||||
Header.SortColumn := 0;
|
||||
TreeOptions.MiscOptions := [toCheckSupport, toFullRepaintOnResize, toInitOnSave, toToggleOnDblClick, toWheelPanning];
|
||||
TreeOptions.PaintOptions := [toHideFocusRect, toPopupMode, toShowButtons, toShowDropmark, toThemeAware, toUseBlendedImages];
|
||||
TreeOptions.SelectionOptions := [toRightClickSelect, toFullRowSelect];
|
||||
TreeOptions.AutoOptions := [toAutoTristateTracking];
|
||||
OnGetText := @VSTDetailsGetText;
|
||||
OnGetImageIndex := @VSTDetailsGetImageIndex;
|
||||
OnFreeNode := @VSTDetailsFreeNode;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryFrm.bCreateClick(Sender: TObject);
|
||||
var
|
||||
ErrMsg: String;
|
||||
RepositoryDetailsFrm: TRepositoryDetailsFrm;
|
||||
begin
|
||||
RepositoryDetailsFrm := TRepositoryDetailsFrm.Create(Self);
|
||||
try
|
||||
RepositoryDetailsFrm.ShowModal;
|
||||
if RepositoryDetailsFrm.ModalResult = mrOk then
|
||||
begin
|
||||
FRepository.FName := RepositoryDetailsFrm.edName.Text;
|
||||
FRepository.FAddress := RepositoryDetailsFrm.edAddress.Text;
|
||||
FRepository.FDescription := RepositoryDetailsFrm.mDescription.Text;
|
||||
if SD.Execute then
|
||||
begin
|
||||
if not SaveRepository(SD.FileName, ErrMsg) then
|
||||
MessageDlgEx(ErrMsg, mtError, [mbOk], Self);
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
RepositoryDetailsFrm.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryFrm.bOpenClick(Sender: TObject);
|
||||
var
|
||||
ErrMsg: String;
|
||||
begin
|
||||
if OD.Execute then
|
||||
if not LoadRepository(OD.FileName, ErrMsg) then
|
||||
MessageDlgEx(ErrMsg, mtError, [mbOk], Self);
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryFrm.FormDestroy(Sender: TObject);
|
||||
begin
|
||||
FVST.Free;
|
||||
FVSTPackages.Free;
|
||||
FVSTDetails.Free;
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryFrm.pnButtonsResize(Sender: TObject);
|
||||
begin
|
||||
bAdd.Left := (pnButtons.Width - (bAdd.Width + bDelete.Width)) div 2;
|
||||
bDelete.Left := bAdd.Left + bAdd.Width + 3;
|
||||
bDelete.Left := bAdd.Left + bAdd.Width + 1;
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryFrm.EnableDisableButtons(const AEnable: Boolean);
|
||||
begin
|
||||
bOpen.Enabled := AEnable;
|
||||
bCreate.Enabled := AEnable;
|
||||
bAdd.Enabled := AEnable and FileExists(Trim(FRepository));
|
||||
bDelete.Enabled := AEnable and FileExists(Trim(FRepository)) and (FVST.RootNodeCount > 0);
|
||||
bAdd.Enabled := AEnable and FileExists(Trim(FRepository.FPath));
|
||||
bDelete.Enabled := AEnable and FileExists(Trim(FRepository.FPath)) and (FVSTPackages.RootNodeCount > 0);
|
||||
bCancel.Enabled := AEnable;
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryFrm.ShowHideControls(const AType: Integer);
|
||||
begin
|
||||
case AType of
|
||||
0: begin
|
||||
pnPackages.Visible := False;
|
||||
pnDetails.Visible := False;
|
||||
pnMessage.Visible := False;
|
||||
end;
|
||||
1: begin
|
||||
pnPackages.Visible := False;
|
||||
pnDetails.Visible := False;
|
||||
pnMessage.Visible := True;
|
||||
end;
|
||||
2: begin
|
||||
pnPackages.Visible := True;
|
||||
pnDetails.Visible := True;
|
||||
pnMessage.Visible := False;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TCreateRepositoryFrm.LoadRepository(const AFileName: String;
|
||||
out AErrMsg: String): Boolean;
|
||||
var
|
||||
FS: TFileStream;
|
||||
procedure ReadString(out AString: String);
|
||||
var
|
||||
Len: Integer;
|
||||
begin
|
||||
FS.Read(Len, SizeOf(Integer));
|
||||
SetLength(AString, Len div SizeOf(Char));
|
||||
FS.Read(Pointer(AString)^, Len);
|
||||
end;
|
||||
begin
|
||||
Result := False;
|
||||
FS := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyWrite);
|
||||
try
|
||||
try
|
||||
ReadString(FRepository.FName);
|
||||
ReadString(FRepository.FAddress);
|
||||
ReadString(FRepository.FDescription);
|
||||
FRepository.FPath := AFileName;
|
||||
except
|
||||
on E: Exception do
|
||||
begin
|
||||
AErrMsg := Format(rsCreateRepositoryFrm_Error1, [E.Message]);
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
Result := FileExists(AppendPathDelim(ExtractFilePath(AFileName)) + cRemoteJSONFile);
|
||||
if not Result then
|
||||
AErrMsg := Format(rsCreateRepositoryFrm_Error1, [rsCreateRepositoryFrm_Error2])
|
||||
finally
|
||||
FS.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TCreateRepositoryFrm.SaveRepository(const AFileName: String;
|
||||
out AErrMsg: String): Boolean;
|
||||
var
|
||||
FS: TFileStream;
|
||||
procedure WriteString(const AString: String);
|
||||
var
|
||||
Len: Integer;
|
||||
begin
|
||||
Len := Length(AString)*SizeOf(Char);
|
||||
FS.Write(Len, SizeOf(Integer));
|
||||
FS.Write(Pointer(AString)^, Len);
|
||||
end;
|
||||
begin
|
||||
Result := False;
|
||||
FS := TFileStream.Create(AFileName, fmCreate or fmOpenWrite or fmShareDenyWrite);
|
||||
try
|
||||
try
|
||||
WriteString(FRepository.FName);
|
||||
WriteString(FRepository.FAddress);
|
||||
WriteString(FRepository.FDescription);
|
||||
Result := True;
|
||||
except
|
||||
on E: Exception do
|
||||
begin
|
||||
AErrMsg := Format(rsCreateRepositoryFrm_Error3, [E.Message]);
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
FS.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryFrm.VSTPackagesGetText(Sender: TBaseVirtualTree;
|
||||
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
|
||||
var CellText: String);
|
||||
var
|
||||
Data: PMetaData;
|
||||
begin
|
||||
Data := FVSTPackages.GetNodeData(Node);
|
||||
case Data^.FDataType of
|
||||
0: CellText := FRepository.FName;
|
||||
1: CellText := Data^.FName;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryFrm.VSTPackagesGetImageIndex(Sender: TBaseVirtualTree;
|
||||
Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex;
|
||||
var Ghosted: Boolean; var ImageIndex: Integer);
|
||||
var
|
||||
Data: PMetaData;
|
||||
begin
|
||||
Data := FVSTPackages.GetNodeData(Node);
|
||||
ImageIndex := Data^.FDataType;
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryFrm.VSTPackagesHeaderClick(Sender: TVTHeader;
|
||||
Column: TColumnIndex; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||
begin
|
||||
if Button = mbLeft then
|
||||
begin
|
||||
with Sender, Treeview do
|
||||
begin
|
||||
if (SortColumn = NoColumn) or (SortColumn <> Column) then
|
||||
begin
|
||||
SortColumn := Column;
|
||||
SortDirection := opkman_VirtualTrees.sdAscending;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if SortDirection = opkman_VirtualTrees.sdAscending then
|
||||
SortDirection := opkman_VirtualTrees.sdDescending
|
||||
else
|
||||
SortDirection := opkman_VirtualTrees.sdAscending;
|
||||
end;
|
||||
SortTree(SortColumn, SortDirection, False);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryFrm.VSTPackagesCompareNodes(Sender: TBaseVirtualTree; Node1,
|
||||
Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer);
|
||||
var
|
||||
Data1: PMetaData;
|
||||
Data2: PMetaData;
|
||||
begin
|
||||
Data1 := Sender.GetNodeData(Node1);
|
||||
Data2 := Sender.GetNodeData(Node2);
|
||||
case Column of
|
||||
0: begin
|
||||
if (Data1^.FDataType < Data2^.FDataType) then
|
||||
Result := 0
|
||||
else
|
||||
Result := CompareText(Data1^.FName, Data2^.FName)
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryFrm.VSTPackagesFocusChanged(
|
||||
Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
|
||||
begin
|
||||
//
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryFrm.VSTPackagesFreeNode(Sender: TBaseVirtualTree;
|
||||
Node: PVirtualNode);
|
||||
var
|
||||
Data: PMetaData;
|
||||
begin
|
||||
Data := FVSTPackages.GetNodeData(Node);
|
||||
Finalize(Data^);
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryFrm.VSTDetailsGetText(Sender: TBaseVirtualTree;
|
||||
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
|
||||
var CellText: String);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryFrm.VSTDetailsGetImageIndex(
|
||||
Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind;
|
||||
Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryFrm.VSTDetailsFreeNode(Sender: TBaseVirtualTree;
|
||||
Node: PVirtualNode);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
@ -38,33 +38,9 @@ uses
|
||||
opkman_VirtualTrees, opkman_serializablepackages, opkman_zipper, opkman_uploader;
|
||||
|
||||
type
|
||||
PPackageData = ^TData;
|
||||
TData = record
|
||||
FPackageRelativePath: String;
|
||||
FPackageBaseDir: String;
|
||||
FFullPath: String;
|
||||
FDataType: Integer;
|
||||
FName: String;
|
||||
FDisplayName: String;
|
||||
FPackageType: TPackageType;
|
||||
FAuthor: String;
|
||||
FDescription: String;
|
||||
FLicense: String;
|
||||
FVersionAsString: String;
|
||||
FDependenciesAsString: String;
|
||||
FCategory: String;
|
||||
FLazCompatibility: String;
|
||||
FFPCCompatibility: String;
|
||||
FSupportedWidgetSet: String;
|
||||
FHomePageURL: String;
|
||||
FDownloadURL: String;
|
||||
FSVNURL: String;
|
||||
end;
|
||||
|
||||
TPackageOperation = (poCreate, poSubmit);
|
||||
|
||||
{ TCreateRepositoryPackagesFrm }
|
||||
|
||||
TCreateRepositoryPackagesFrm = class(TForm)
|
||||
bCancel: TButton;
|
||||
bCreate: TButton;
|
||||
@ -147,7 +123,7 @@ type
|
||||
procedure VSTPackageDataFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||||
procedure DoOnZippError(Sender: TObject; AZipFile: String; const AErrMsg: String);
|
||||
procedure DoOnZipCompleted(Sender: TObject);
|
||||
function LoadPackageData(const APath: String; AData: PPackageData): Boolean;
|
||||
// function LoadPackageData(const APath: String; AData: PData): Boolean;
|
||||
procedure ShowHideControls(const AType: Integer);
|
||||
procedure EnableDisableControls(const AEnable: Boolean);
|
||||
procedure SaveExtraInfo(const ANode: PVirtualNode);
|
||||
@ -174,6 +150,30 @@ uses opkman_const, opkman_common, opkman_options, opkman_categoriesfrm,
|
||||
|
||||
{ TCreateRepositoryPackagesFrm }
|
||||
|
||||
type
|
||||
PData = ^TData;
|
||||
TData = record
|
||||
FPackageRelativePath: String;
|
||||
FPackageBaseDir: String;
|
||||
FFullPath: String;
|
||||
FDataType: Integer;
|
||||
FName: String;
|
||||
FDisplayName: String;
|
||||
FPackageType: TPackageType;
|
||||
FAuthor: String;
|
||||
FDescription: String;
|
||||
FLicense: String;
|
||||
FVersionAsString: String;
|
||||
FDependenciesAsString: String;
|
||||
FCategory: String;
|
||||
FLazCompatibility: String;
|
||||
FFPCCompatibility: String;
|
||||
FSupportedWidgetSet: String;
|
||||
FHomePageURL: String;
|
||||
FDownloadURL: String;
|
||||
FSVNURL: String;
|
||||
end;
|
||||
|
||||
procedure TCreateRepositoryPackagesFrm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
Caption := rsCreateRepositoryPackageFrm_Caption;
|
||||
@ -298,8 +298,7 @@ begin
|
||||
FVSTPackageData.Free;
|
||||
end;
|
||||
|
||||
function TCreateRepositoryPackagesFrm.LoadPackageData(const APath: String;
|
||||
AData: PPackageData): Boolean;
|
||||
function LoadPackageData(const APath: String; AData: PData): Boolean;
|
||||
|
||||
function PackageTypeIdentToType(const AStr: String): TPackageType;
|
||||
begin
|
||||
@ -431,7 +430,7 @@ var
|
||||
PackageList: TStringList;
|
||||
I: Integer;
|
||||
Node, RootNode: PVirtualNode;
|
||||
Data, RootData: PPackageData;
|
||||
Data, RootData: PData;
|
||||
CanGo: Boolean;
|
||||
begin
|
||||
CanGo := False;
|
||||
@ -532,7 +531,7 @@ function TCreateRepositoryPackagesFrm.CanCreate: Boolean;
|
||||
|
||||
var
|
||||
Node: PVirtualNode;
|
||||
Data: PPackageData;
|
||||
Data: PData;
|
||||
begin
|
||||
Result := False;
|
||||
Node := FVSTPackages.GetFirstSelected;
|
||||
@ -586,7 +585,7 @@ end;
|
||||
procedure TCreateRepositoryPackagesFrm.bCreateClick(Sender: TObject);
|
||||
var
|
||||
RootNode: PVirtualNode;
|
||||
RootData: PPackageData;
|
||||
RootData: PData;
|
||||
begin
|
||||
if not CanCreate then
|
||||
Exit;
|
||||
@ -621,7 +620,7 @@ end;
|
||||
procedure TCreateRepositoryPackagesFrm.bSubmitClick(Sender: TObject);
|
||||
var
|
||||
RootNode: PVirtualNode;
|
||||
RootData: PPackageData;
|
||||
RootData: PData;
|
||||
begin
|
||||
if not CanCreate then
|
||||
Exit;
|
||||
@ -666,7 +665,7 @@ procedure TCreateRepositoryPackagesFrm.VSTPackagesGetText(
|
||||
Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex;
|
||||
TextType: TVSTTextType; var CellText: String);
|
||||
var
|
||||
Data: PPackageData;
|
||||
Data: PData;
|
||||
begin
|
||||
Data := FVSTPackages.GetNodeData(Node);
|
||||
if Column = 0 then
|
||||
@ -683,7 +682,7 @@ end;
|
||||
|
||||
procedure TCreateRepositoryPackagesFrm.SaveExtraInfo(const ANode: PVirtualNode);
|
||||
var
|
||||
Data: PPackageData;
|
||||
Data: PData;
|
||||
begin
|
||||
Data := FVSTPackages.GetNodeData(ANode);
|
||||
case FVSTPackages.GetNodeLevel(ANode) of
|
||||
@ -723,9 +722,9 @@ end;
|
||||
procedure TCreateRepositoryPackagesFrm.VSTPackagesFocusChanged(
|
||||
Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
|
||||
var
|
||||
Data: PPackageData;
|
||||
Data: PData;
|
||||
PDNode: PVirtualNode;
|
||||
PDData: PPackageData;
|
||||
PDData: PData;
|
||||
Level: Integer;
|
||||
begin
|
||||
if Node = nil then
|
||||
@ -790,7 +789,7 @@ end;
|
||||
procedure TCreateRepositoryPackagesFrm.VSTPackagesFreeNode(
|
||||
Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||||
var
|
||||
Data: PPackageData;
|
||||
Data: PData;
|
||||
begin
|
||||
Data := FVSTPackages.GetNodeData(Node);
|
||||
Finalize(Data^);
|
||||
@ -800,7 +799,7 @@ procedure TCreateRepositoryPackagesFrm.VSTPackageDataGetText(
|
||||
Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex;
|
||||
TextType: TVSTTextType; var CellText: String);
|
||||
var
|
||||
Data: PPackageData;
|
||||
Data: PData;
|
||||
begin
|
||||
Data := FVSTPackageData.GetNodeData(Node);
|
||||
case Column of
|
||||
@ -832,7 +831,7 @@ procedure TCreateRepositoryPackagesFrm.VSTPackageDataGetImageIndex(
|
||||
Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind;
|
||||
Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
|
||||
var
|
||||
Data: PPackageData;
|
||||
Data: PData;
|
||||
begin
|
||||
if Column = 0 then
|
||||
begin
|
||||
@ -845,8 +844,8 @@ procedure TCreateRepositoryPackagesFrm.VSTCompareNodes(
|
||||
Sender: TBaseVirtualTree; Node1, Node2: PVirtualNode; Column: TColumnIndex;
|
||||
var Result: Integer);
|
||||
var
|
||||
Data1: PPackageData;
|
||||
Data2: PPackageData;
|
||||
Data1: PData;
|
||||
Data2: PData;
|
||||
begin
|
||||
Data1 := Sender.GetNodeData(Node1);
|
||||
Data2 := Sender.GetNodeData(Node2);
|
||||
@ -864,7 +863,7 @@ end;
|
||||
procedure TCreateRepositoryPackagesFrm.VSTPackageDataFreeNode(
|
||||
Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||||
var
|
||||
Data: PPackageData;
|
||||
Data: PData;
|
||||
begin
|
||||
Data := FVSTPackageData.GetNodeData(Node);
|
||||
Finalize(Data^);
|
||||
@ -924,7 +923,7 @@ function TCreateRepositoryPackagesFrm.CreateJSONForUpdates(var AErrMsg: String
|
||||
): Boolean;
|
||||
var
|
||||
RootNode, Node: PVirtualNode;
|
||||
RootData, Data: PPackageData;
|
||||
RootData, Data: PData;
|
||||
JSON: TJSONStringType;
|
||||
Ms: TMemoryStream;
|
||||
UpdatePackage: TUpdatePackage;
|
||||
@ -985,7 +984,7 @@ var
|
||||
MetaPkg: TMetaPackage;
|
||||
LazarusPkg: TLazarusPackage;
|
||||
RootNode, Node: PVirtualNode;
|
||||
RootData, Data: PPackageData;
|
||||
RootData, Data: PData;
|
||||
JSON: TJSONStringType;
|
||||
MS: TMemoryStream;
|
||||
begin
|
||||
|
103
components/onlinepackagemanager/opkman_repositorydetailsfrm.lfm
Normal file
103
components/onlinepackagemanager/opkman_repositorydetailsfrm.lfm
Normal file
@ -0,0 +1,103 @@
|
||||
object RepositoryDetailsFrm: TRepositoryDetailsFrm
|
||||
Left = 389
|
||||
Height = 315
|
||||
Top = 243
|
||||
Width = 387
|
||||
Anchors = [akTop, akLeft, akBottom]
|
||||
Caption = 'Repository details'
|
||||
ClientHeight = 315
|
||||
ClientWidth = 387
|
||||
Constraints.MinHeight = 315
|
||||
Constraints.MinWidth = 300
|
||||
OnCreate = FormCreate
|
||||
PopupMode = pmExplicit
|
||||
Position = poOwnerFormCenter
|
||||
LCLVersion = '1.9.0.0'
|
||||
object pnButtons: TPanel
|
||||
Left = 0
|
||||
Height = 35
|
||||
Top = 280
|
||||
Width = 387
|
||||
Align = alBottom
|
||||
BevelOuter = bvNone
|
||||
ClientHeight = 35
|
||||
ClientWidth = 387
|
||||
TabOrder = 3
|
||||
object bOk: TButton
|
||||
Left = 217
|
||||
Height = 25
|
||||
Top = 4
|
||||
Width = 75
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = 'Ok'
|
||||
TabOrder = 0
|
||||
end
|
||||
object bCancel: TButton
|
||||
Left = 294
|
||||
Height = 25
|
||||
Top = 4
|
||||
Width = 75
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = 'Cancel'
|
||||
ModalResult = 2
|
||||
TabOrder = 1
|
||||
end
|
||||
end
|
||||
object lbName: TLabel
|
||||
Left = 19
|
||||
Height = 15
|
||||
Top = 13
|
||||
Width = 89
|
||||
Caption = 'Repository name'
|
||||
ParentColor = False
|
||||
end
|
||||
object edName: TEdit
|
||||
Left = 19
|
||||
Height = 23
|
||||
Top = 31
|
||||
Width = 350
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
TabOrder = 1
|
||||
end
|
||||
object lbAddress: TLabel
|
||||
Left = 19
|
||||
Height = 15
|
||||
Top = 69
|
||||
Width = 99
|
||||
Caption = 'Repository address'
|
||||
ParentColor = False
|
||||
end
|
||||
object edAddress: TEdit
|
||||
Left = 18
|
||||
Height = 23
|
||||
Top = 87
|
||||
Width = 351
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
TabOrder = 0
|
||||
end
|
||||
object lbDescription: TLabel
|
||||
Left = 19
|
||||
Height = 15
|
||||
Top = 126
|
||||
Width = 118
|
||||
Caption = 'Repository description'
|
||||
ParentColor = False
|
||||
end
|
||||
object mDescription: TMemo
|
||||
Left = 19
|
||||
Height = 81
|
||||
Top = 141
|
||||
Width = 350
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
TabOrder = 2
|
||||
end
|
||||
object cbAddToRepositories: TCheckBox
|
||||
Left = 19
|
||||
Height = 19
|
||||
Top = 232
|
||||
Width = 175
|
||||
Anchors = [akTop]
|
||||
Caption = 'Add to available repositoy list'
|
||||
TabOrder = 4
|
||||
end
|
||||
end
|
@ -0,0 +1,48 @@
|
||||
unit opkman_repositorydetailsfrm;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel,
|
||||
ExtCtrls, StdCtrls;
|
||||
|
||||
type
|
||||
|
||||
{ TRepositoryDetailsFrm }
|
||||
|
||||
TRepositoryDetailsFrm = class(TForm)
|
||||
bOk: TButton;
|
||||
bCancel: TButton;
|
||||
cbAddToRepositories: TCheckBox;
|
||||
edName: TEdit;
|
||||
edAddress: TEdit;
|
||||
lbName: TLabel;
|
||||
lbAddress: TLabel;
|
||||
lbDescription: TLabel;
|
||||
mDescription: TMemo;
|
||||
pnButtons: TPanel;
|
||||
procedure FormCreate(Sender: TObject);
|
||||
private
|
||||
|
||||
public
|
||||
|
||||
end;
|
||||
|
||||
var
|
||||
RepositoryDetailsFrm: TRepositoryDetailsFrm;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TRepositoryDetailsFrm }
|
||||
|
||||
procedure TRepositoryDetailsFrm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user