mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-27 13:00:17 +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_progressfrm.pas svneol=native#text/pascal
|
||||||
components/onlinepackagemanager/opkman_repositories.lfm -text svneol=native#plain/text
|
components/onlinepackagemanager/opkman_repositories.lfm -text svneol=native#plain/text
|
||||||
components/onlinepackagemanager/opkman_repositories.pas svneol=native#text/pascal
|
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_serializablepackages.pas svneol=native#text/pascal
|
||||||
components/onlinepackagemanager/opkman_timer.pas svneol=native#text/pascal
|
components/onlinepackagemanager/opkman_timer.pas svneol=native#text/pascal
|
||||||
components/onlinepackagemanager/opkman_updates.pas svneol=native#text/pascal
|
components/onlinepackagemanager/opkman_updates.pas svneol=native#text/pascal
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
<Description Value="Online package manger"/>
|
<Description Value="Online package manger"/>
|
||||||
<License Value="GPL"/>
|
<License Value="GPL"/>
|
||||||
<Version Major="1"/>
|
<Version Major="1"/>
|
||||||
<Files Count="22">
|
<Files Count="23">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Filename Value="onlinepackagemanagerintf.pas"/>
|
<Filename Value="onlinepackagemanagerintf.pas"/>
|
||||||
<HasRegisterProc Value="True"/>
|
<HasRegisterProc Value="True"/>
|
||||||
@ -115,6 +115,10 @@
|
|||||||
<Filename Value="opkman_createrepositoryfrm.pas"/>
|
<Filename Value="opkman_createrepositoryfrm.pas"/>
|
||||||
<UnitName Value="opkman_createrepositoryfrm"/>
|
<UnitName Value="opkman_createrepositoryfrm"/>
|
||||||
</Item22>
|
</Item22>
|
||||||
|
<Item23>
|
||||||
|
<Filename Value="opkman_repositorydetailsfrm.pas"/>
|
||||||
|
<UnitName Value="opkman_repositorydetailsfrm"/>
|
||||||
|
</Item23>
|
||||||
</Files>
|
</Files>
|
||||||
<i18n>
|
<i18n>
|
||||||
<EnableI18N Value="True"/>
|
<EnableI18N Value="True"/>
|
||||||
|
@ -15,7 +15,7 @@ uses
|
|||||||
opkman_createrepositorypackagefrm, opkman_categoriesfrm,
|
opkman_createrepositorypackagefrm, opkman_categoriesfrm,
|
||||||
opkman_packagedetailsfrm, opkman_updates, opkman_createjsonforupdatesfrm,
|
opkman_packagedetailsfrm, opkman_updates, opkman_createjsonforupdatesfrm,
|
||||||
opkman_uploader, opkman_repositories, opkman_createrepositoryfrm,
|
opkman_uploader, opkman_repositories, opkman_createrepositoryfrm,
|
||||||
LazarusPackageIntf;
|
opkman_repositorydetailsfrm, LazarusPackageIntf;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
@ -406,7 +406,12 @@ resourcestring
|
|||||||
rsCreateRepositoryFrm_bDelete_Hint = 'Delete package from the current repository';
|
rsCreateRepositoryFrm_bDelete_Hint = 'Delete package from the current repository';
|
||||||
rsCreateRepositoryFrm_bCancel_Caption = 'Cancel';
|
rsCreateRepositoryFrm_bCancel_Caption = 'Cancel';
|
||||||
rsCreateRepositoryFrm_bCancel_Hint = 'Close this dialog';
|
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
|
implementation
|
||||||
|
|
||||||
|
@ -12,7 +12,9 @@ object CreateRepositoryFrm: TCreateRepositoryFrm
|
|||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
OnDestroy = FormDestroy
|
OnDestroy = FormDestroy
|
||||||
PopupMode = pmExplicit
|
PopupMode = pmExplicit
|
||||||
|
PopupParent = MainFrm.Owner
|
||||||
Position = poOwnerFormCenter
|
Position = poOwnerFormCenter
|
||||||
|
LCLVersion = '1.9.0.0'
|
||||||
object pnButtons: TPanel
|
object pnButtons: TPanel
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 41
|
Height = 41
|
||||||
@ -23,27 +25,29 @@ object CreateRepositoryFrm: TCreateRepositoryFrm
|
|||||||
BorderStyle = bsSingle
|
BorderStyle = bsSingle
|
||||||
ClientHeight = 37
|
ClientHeight = 37
|
||||||
ClientWidth = 796
|
ClientWidth = 796
|
||||||
TabOrder = 0
|
TabOrder = 2
|
||||||
OnResize = pnButtonsResize
|
OnResize = pnButtonsResize
|
||||||
object bOpen: TButton
|
object bOpen: TButton
|
||||||
Left = 6
|
Left = 96
|
||||||
Height = 27
|
Height = 27
|
||||||
Top = 4
|
Top = 4
|
||||||
Width = 80
|
Width = 80
|
||||||
Caption = 'Open'
|
Caption = 'Open'
|
||||||
|
OnClick = bOpenClick
|
||||||
ParentShowHint = False
|
ParentShowHint = False
|
||||||
ShowHint = True
|
ShowHint = True
|
||||||
TabOrder = 0
|
TabOrder = 1
|
||||||
end
|
end
|
||||||
object bCreate: TButton
|
object bCreate: TButton
|
||||||
Left = 87
|
Left = 16
|
||||||
Height = 27
|
Height = 27
|
||||||
Top = 4
|
Top = 4
|
||||||
Width = 80
|
Width = 80
|
||||||
Caption = 'Create'
|
Caption = 'Create'
|
||||||
|
OnClick = bCreateClick
|
||||||
ParentShowHint = False
|
ParentShowHint = False
|
||||||
ShowHint = True
|
ShowHint = True
|
||||||
TabOrder = 1
|
TabOrder = 0
|
||||||
end
|
end
|
||||||
object bAdd: TButton
|
object bAdd: TButton
|
||||||
Left = 368
|
Left = 368
|
||||||
@ -58,7 +62,7 @@ object CreateRepositoryFrm: TCreateRepositoryFrm
|
|||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
end
|
end
|
||||||
object bDelete: TButton
|
object bDelete: TButton
|
||||||
Left = 449
|
Left = 448
|
||||||
Height = 27
|
Height = 27
|
||||||
Top = 4
|
Top = 4
|
||||||
Width = 80
|
Width = 80
|
||||||
@ -70,7 +74,7 @@ object CreateRepositoryFrm: TCreateRepositoryFrm
|
|||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
end
|
end
|
||||||
object bCancel: TButton
|
object bCancel: TButton
|
||||||
Left = 705
|
Left = 702
|
||||||
Height = 27
|
Height = 27
|
||||||
Top = 4
|
Top = 4
|
||||||
Width = 80
|
Width = 80
|
||||||
@ -84,4 +88,167 @@ object CreateRepositoryFrm: TCreateRepositoryFrm
|
|||||||
TabOrder = 4
|
TabOrder = 4
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
@ -31,12 +31,23 @@ uses
|
|||||||
Classes, SysUtils, FileUtil,
|
Classes, SysUtils, FileUtil,
|
||||||
// LCL
|
// LCL
|
||||||
Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
||||||
StdCtrls,
|
StdCtrls, Buttons,
|
||||||
|
// LazUtils
|
||||||
|
LazFileUtils,
|
||||||
// OpkMan
|
// OpkMan
|
||||||
opkman_VirtualTrees;
|
opkman_VirtualTrees;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
|
PRepository = ^TRepository;
|
||||||
|
TRepository = record
|
||||||
|
FName: String;
|
||||||
|
FPath: String;
|
||||||
|
FAddress: String;
|
||||||
|
FDescription: String;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
{ TCreateRepositoryFrm }
|
{ TCreateRepositoryFrm }
|
||||||
|
|
||||||
TCreateRepositoryFrm = class(TForm)
|
TCreateRepositoryFrm = class(TForm)
|
||||||
@ -45,14 +56,46 @@ type
|
|||||||
bDelete: TButton;
|
bDelete: TButton;
|
||||||
bOpen: TButton;
|
bOpen: TButton;
|
||||||
bCreate: TButton;
|
bCreate: TButton;
|
||||||
|
imTree: TImageList;
|
||||||
|
OD: TOpenDialog;
|
||||||
pnButtons: TPanel;
|
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 FormCreate(Sender: TObject);
|
||||||
procedure FormDestroy(Sender: TObject);
|
procedure FormDestroy(Sender: TObject);
|
||||||
procedure pnButtonsResize(Sender: TObject);
|
procedure pnButtonsResize(Sender: TObject);
|
||||||
private
|
private
|
||||||
FVST: TVirtualStringTree;
|
FVSTPackages: TVirtualStringTree;
|
||||||
FRepository: String;
|
FVSTDetails: TVirtualStringTree;
|
||||||
|
FRepository: TRepository;
|
||||||
procedure EnableDisableButtons(const AEnable: Boolean);
|
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
|
public
|
||||||
|
|
||||||
end;
|
end;
|
||||||
@ -61,12 +104,44 @@ var
|
|||||||
CreateRepositoryFrm: TCreateRepositoryFrm;
|
CreateRepositoryFrm: TCreateRepositoryFrm;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
uses opkman_const;
|
|
||||||
|
uses opkman_common, opkman_const, opkman_options, opkman_serializablepackages,
|
||||||
|
opkman_repositorydetailsfrm;
|
||||||
|
|
||||||
{$R *.lfm}
|
{$R *.lfm}
|
||||||
|
|
||||||
{ TCreateRepositoryFrm }
|
{ 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);
|
procedure TCreateRepositoryFrm.FormCreate(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
Caption := rsCreateRepositoryFrm_Caption;
|
Caption := rsCreateRepositoryFrm_Caption;
|
||||||
@ -81,28 +156,330 @@ begin
|
|||||||
bCancel.Caption := rsCreateRepositoryFrm_bCancel_Caption;
|
bCancel.Caption := rsCreateRepositoryFrm_bCancel_Caption;
|
||||||
bCancel.Hint := rsCreateRepositoryFrm_bCancel_Hint;
|
bCancel.Hint := rsCreateRepositoryFrm_bCancel_Hint;
|
||||||
EnableDisableButtons(True);
|
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;
|
end;
|
||||||
|
|
||||||
procedure TCreateRepositoryFrm.FormDestroy(Sender: TObject);
|
procedure TCreateRepositoryFrm.FormDestroy(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
FVST.Free;
|
FVSTPackages.Free;
|
||||||
|
FVSTDetails.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCreateRepositoryFrm.pnButtonsResize(Sender: TObject);
|
procedure TCreateRepositoryFrm.pnButtonsResize(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
bAdd.Left := (pnButtons.Width - (bAdd.Width + bDelete.Width)) div 2;
|
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;
|
end;
|
||||||
|
|
||||||
procedure TCreateRepositoryFrm.EnableDisableButtons(const AEnable: Boolean);
|
procedure TCreateRepositoryFrm.EnableDisableButtons(const AEnable: Boolean);
|
||||||
begin
|
begin
|
||||||
bOpen.Enabled := AEnable;
|
bOpen.Enabled := AEnable;
|
||||||
bCreate.Enabled := AEnable;
|
bCreate.Enabled := AEnable;
|
||||||
bAdd.Enabled := AEnable and FileExists(Trim(FRepository));
|
bAdd.Enabled := AEnable and FileExists(Trim(FRepository.FPath));
|
||||||
bDelete.Enabled := AEnable and FileExists(Trim(FRepository)) and (FVST.RootNodeCount > 0);
|
bDelete.Enabled := AEnable and FileExists(Trim(FRepository.FPath)) and (FVSTPackages.RootNodeCount > 0);
|
||||||
bCancel.Enabled := AEnable;
|
bCancel.Enabled := AEnable;
|
||||||
end;
|
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.
|
end.
|
||||||
|
|
||||||
|
@ -38,33 +38,9 @@ uses
|
|||||||
opkman_VirtualTrees, opkman_serializablepackages, opkman_zipper, opkman_uploader;
|
opkman_VirtualTrees, opkman_serializablepackages, opkman_zipper, opkman_uploader;
|
||||||
|
|
||||||
type
|
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);
|
TPackageOperation = (poCreate, poSubmit);
|
||||||
|
|
||||||
{ TCreateRepositoryPackagesFrm }
|
{ TCreateRepositoryPackagesFrm }
|
||||||
|
|
||||||
TCreateRepositoryPackagesFrm = class(TForm)
|
TCreateRepositoryPackagesFrm = class(TForm)
|
||||||
bCancel: TButton;
|
bCancel: TButton;
|
||||||
bCreate: TButton;
|
bCreate: TButton;
|
||||||
@ -147,7 +123,7 @@ type
|
|||||||
procedure VSTPackageDataFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
|
procedure VSTPackageDataFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||||||
procedure DoOnZippError(Sender: TObject; AZipFile: String; const AErrMsg: String);
|
procedure DoOnZippError(Sender: TObject; AZipFile: String; const AErrMsg: String);
|
||||||
procedure DoOnZipCompleted(Sender: TObject);
|
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 ShowHideControls(const AType: Integer);
|
||||||
procedure EnableDisableControls(const AEnable: Boolean);
|
procedure EnableDisableControls(const AEnable: Boolean);
|
||||||
procedure SaveExtraInfo(const ANode: PVirtualNode);
|
procedure SaveExtraInfo(const ANode: PVirtualNode);
|
||||||
@ -174,6 +150,30 @@ uses opkman_const, opkman_common, opkman_options, opkman_categoriesfrm,
|
|||||||
|
|
||||||
{ TCreateRepositoryPackagesFrm }
|
{ 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);
|
procedure TCreateRepositoryPackagesFrm.FormCreate(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
Caption := rsCreateRepositoryPackageFrm_Caption;
|
Caption := rsCreateRepositoryPackageFrm_Caption;
|
||||||
@ -298,8 +298,7 @@ begin
|
|||||||
FVSTPackageData.Free;
|
FVSTPackageData.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCreateRepositoryPackagesFrm.LoadPackageData(const APath: String;
|
function LoadPackageData(const APath: String; AData: PData): Boolean;
|
||||||
AData: PPackageData): Boolean;
|
|
||||||
|
|
||||||
function PackageTypeIdentToType(const AStr: String): TPackageType;
|
function PackageTypeIdentToType(const AStr: String): TPackageType;
|
||||||
begin
|
begin
|
||||||
@ -431,7 +430,7 @@ var
|
|||||||
PackageList: TStringList;
|
PackageList: TStringList;
|
||||||
I: Integer;
|
I: Integer;
|
||||||
Node, RootNode: PVirtualNode;
|
Node, RootNode: PVirtualNode;
|
||||||
Data, RootData: PPackageData;
|
Data, RootData: PData;
|
||||||
CanGo: Boolean;
|
CanGo: Boolean;
|
||||||
begin
|
begin
|
||||||
CanGo := False;
|
CanGo := False;
|
||||||
@ -532,7 +531,7 @@ function TCreateRepositoryPackagesFrm.CanCreate: Boolean;
|
|||||||
|
|
||||||
var
|
var
|
||||||
Node: PVirtualNode;
|
Node: PVirtualNode;
|
||||||
Data: PPackageData;
|
Data: PData;
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
Node := FVSTPackages.GetFirstSelected;
|
Node := FVSTPackages.GetFirstSelected;
|
||||||
@ -586,7 +585,7 @@ end;
|
|||||||
procedure TCreateRepositoryPackagesFrm.bCreateClick(Sender: TObject);
|
procedure TCreateRepositoryPackagesFrm.bCreateClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
RootNode: PVirtualNode;
|
RootNode: PVirtualNode;
|
||||||
RootData: PPackageData;
|
RootData: PData;
|
||||||
begin
|
begin
|
||||||
if not CanCreate then
|
if not CanCreate then
|
||||||
Exit;
|
Exit;
|
||||||
@ -621,7 +620,7 @@ end;
|
|||||||
procedure TCreateRepositoryPackagesFrm.bSubmitClick(Sender: TObject);
|
procedure TCreateRepositoryPackagesFrm.bSubmitClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
RootNode: PVirtualNode;
|
RootNode: PVirtualNode;
|
||||||
RootData: PPackageData;
|
RootData: PData;
|
||||||
begin
|
begin
|
||||||
if not CanCreate then
|
if not CanCreate then
|
||||||
Exit;
|
Exit;
|
||||||
@ -666,7 +665,7 @@ procedure TCreateRepositoryPackagesFrm.VSTPackagesGetText(
|
|||||||
Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex;
|
Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex;
|
||||||
TextType: TVSTTextType; var CellText: String);
|
TextType: TVSTTextType; var CellText: String);
|
||||||
var
|
var
|
||||||
Data: PPackageData;
|
Data: PData;
|
||||||
begin
|
begin
|
||||||
Data := FVSTPackages.GetNodeData(Node);
|
Data := FVSTPackages.GetNodeData(Node);
|
||||||
if Column = 0 then
|
if Column = 0 then
|
||||||
@ -683,7 +682,7 @@ end;
|
|||||||
|
|
||||||
procedure TCreateRepositoryPackagesFrm.SaveExtraInfo(const ANode: PVirtualNode);
|
procedure TCreateRepositoryPackagesFrm.SaveExtraInfo(const ANode: PVirtualNode);
|
||||||
var
|
var
|
||||||
Data: PPackageData;
|
Data: PData;
|
||||||
begin
|
begin
|
||||||
Data := FVSTPackages.GetNodeData(ANode);
|
Data := FVSTPackages.GetNodeData(ANode);
|
||||||
case FVSTPackages.GetNodeLevel(ANode) of
|
case FVSTPackages.GetNodeLevel(ANode) of
|
||||||
@ -723,9 +722,9 @@ end;
|
|||||||
procedure TCreateRepositoryPackagesFrm.VSTPackagesFocusChanged(
|
procedure TCreateRepositoryPackagesFrm.VSTPackagesFocusChanged(
|
||||||
Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
|
Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
|
||||||
var
|
var
|
||||||
Data: PPackageData;
|
Data: PData;
|
||||||
PDNode: PVirtualNode;
|
PDNode: PVirtualNode;
|
||||||
PDData: PPackageData;
|
PDData: PData;
|
||||||
Level: Integer;
|
Level: Integer;
|
||||||
begin
|
begin
|
||||||
if Node = nil then
|
if Node = nil then
|
||||||
@ -790,7 +789,7 @@ end;
|
|||||||
procedure TCreateRepositoryPackagesFrm.VSTPackagesFreeNode(
|
procedure TCreateRepositoryPackagesFrm.VSTPackagesFreeNode(
|
||||||
Sender: TBaseVirtualTree; Node: PVirtualNode);
|
Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||||||
var
|
var
|
||||||
Data: PPackageData;
|
Data: PData;
|
||||||
begin
|
begin
|
||||||
Data := FVSTPackages.GetNodeData(Node);
|
Data := FVSTPackages.GetNodeData(Node);
|
||||||
Finalize(Data^);
|
Finalize(Data^);
|
||||||
@ -800,7 +799,7 @@ procedure TCreateRepositoryPackagesFrm.VSTPackageDataGetText(
|
|||||||
Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex;
|
Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex;
|
||||||
TextType: TVSTTextType; var CellText: String);
|
TextType: TVSTTextType; var CellText: String);
|
||||||
var
|
var
|
||||||
Data: PPackageData;
|
Data: PData;
|
||||||
begin
|
begin
|
||||||
Data := FVSTPackageData.GetNodeData(Node);
|
Data := FVSTPackageData.GetNodeData(Node);
|
||||||
case Column of
|
case Column of
|
||||||
@ -832,7 +831,7 @@ procedure TCreateRepositoryPackagesFrm.VSTPackageDataGetImageIndex(
|
|||||||
Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind;
|
Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind;
|
||||||
Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
|
Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
|
||||||
var
|
var
|
||||||
Data: PPackageData;
|
Data: PData;
|
||||||
begin
|
begin
|
||||||
if Column = 0 then
|
if Column = 0 then
|
||||||
begin
|
begin
|
||||||
@ -845,8 +844,8 @@ procedure TCreateRepositoryPackagesFrm.VSTCompareNodes(
|
|||||||
Sender: TBaseVirtualTree; Node1, Node2: PVirtualNode; Column: TColumnIndex;
|
Sender: TBaseVirtualTree; Node1, Node2: PVirtualNode; Column: TColumnIndex;
|
||||||
var Result: Integer);
|
var Result: Integer);
|
||||||
var
|
var
|
||||||
Data1: PPackageData;
|
Data1: PData;
|
||||||
Data2: PPackageData;
|
Data2: PData;
|
||||||
begin
|
begin
|
||||||
Data1 := Sender.GetNodeData(Node1);
|
Data1 := Sender.GetNodeData(Node1);
|
||||||
Data2 := Sender.GetNodeData(Node2);
|
Data2 := Sender.GetNodeData(Node2);
|
||||||
@ -864,7 +863,7 @@ end;
|
|||||||
procedure TCreateRepositoryPackagesFrm.VSTPackageDataFreeNode(
|
procedure TCreateRepositoryPackagesFrm.VSTPackageDataFreeNode(
|
||||||
Sender: TBaseVirtualTree; Node: PVirtualNode);
|
Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||||||
var
|
var
|
||||||
Data: PPackageData;
|
Data: PData;
|
||||||
begin
|
begin
|
||||||
Data := FVSTPackageData.GetNodeData(Node);
|
Data := FVSTPackageData.GetNodeData(Node);
|
||||||
Finalize(Data^);
|
Finalize(Data^);
|
||||||
@ -924,7 +923,7 @@ function TCreateRepositoryPackagesFrm.CreateJSONForUpdates(var AErrMsg: String
|
|||||||
): Boolean;
|
): Boolean;
|
||||||
var
|
var
|
||||||
RootNode, Node: PVirtualNode;
|
RootNode, Node: PVirtualNode;
|
||||||
RootData, Data: PPackageData;
|
RootData, Data: PData;
|
||||||
JSON: TJSONStringType;
|
JSON: TJSONStringType;
|
||||||
Ms: TMemoryStream;
|
Ms: TMemoryStream;
|
||||||
UpdatePackage: TUpdatePackage;
|
UpdatePackage: TUpdatePackage;
|
||||||
@ -985,7 +984,7 @@ var
|
|||||||
MetaPkg: TMetaPackage;
|
MetaPkg: TMetaPackage;
|
||||||
LazarusPkg: TLazarusPackage;
|
LazarusPkg: TLazarusPackage;
|
||||||
RootNode, Node: PVirtualNode;
|
RootNode, Node: PVirtualNode;
|
||||||
RootData, Data: PPackageData;
|
RootData, Data: PData;
|
||||||
JSON: TJSONStringType;
|
JSON: TJSONStringType;
|
||||||
MS: TMemoryStream;
|
MS: TMemoryStream;
|
||||||
begin
|
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