From 5981bdc34458ab11d235d6e7face42310c3d2b04 Mon Sep 17 00:00:00 2001 From: juha Date: Mon, 7 Aug 2017 07:30:58 +0000 Subject: [PATCH] AnchorDocking: Add a minide example project with AnchorDockPanel. Issue #24703, by Andrey Zubarev. git-svn-id: trunk@55641 - --- .gitattributes | 8 + .../minidewithdockpanel/layout.xml | 26 + .../minidewithdockpanel/miniide1.lpi | 100 + .../minidewithdockpanel/miniide1.lpr | 21 + .../minidewithdockpanel/miniide1.res | Bin 0 -> 1779 bytes .../minidewithdockpanel/simplefrm.lfm | 4307 +++++++++++++++++ .../minidewithdockpanel/simplefrm.pas | 76 + .../minidewithdockpanel/unit1.lfm | 597 +++ .../minidewithdockpanel/unit1.pas | 357 ++ 9 files changed, 5492 insertions(+) create mode 100644 components/anchordocking/minidewithdockpanel/layout.xml create mode 100644 components/anchordocking/minidewithdockpanel/miniide1.lpi create mode 100644 components/anchordocking/minidewithdockpanel/miniide1.lpr create mode 100644 components/anchordocking/minidewithdockpanel/miniide1.res create mode 100644 components/anchordocking/minidewithdockpanel/simplefrm.lfm create mode 100644 components/anchordocking/minidewithdockpanel/simplefrm.pas create mode 100644 components/anchordocking/minidewithdockpanel/unit1.lfm create mode 100644 components/anchordocking/minidewithdockpanel/unit1.pas diff --git a/.gitattributes b/.gitattributes index ed55f45743..570b1b53eb 100644 --- a/.gitattributes +++ b/.gitattributes @@ -592,6 +592,14 @@ components/anchordocking/minide/simplefrm.lfm svneol=native#text/plain components/anchordocking/minide/simplefrm.pas svneol=native#text/plain components/anchordocking/minide/unit1.lfm svneol=native#text/plain components/anchordocking/minide/unit1.pas svneol=native#text/plain +components/anchordocking/minidewithdockpanel/layout.xml -text svneol=native#text/plain +components/anchordocking/minidewithdockpanel/miniide1.lpi -text svneol=native#text/plain +components/anchordocking/minidewithdockpanel/miniide1.lpr -text svneol=native#text/pascal +components/anchordocking/minidewithdockpanel/miniide1.res -text +components/anchordocking/minidewithdockpanel/simplefrm.lfm -text svneol=native#text/plain +components/anchordocking/minidewithdockpanel/simplefrm.pas -text svneol=native#text/pascal +components/anchordocking/minidewithdockpanel/unit1.lfm -text svneol=native#text/plain +components/anchordocking/minidewithdockpanel/unit1.pas -text svneol=native#text/pascal components/anchordocking/restoredebugger/ADRestoreDebugger.lpi svneol=native#text/plain components/anchordocking/restoredebugger/ADRestoreDebugger.lpr svneol=native#text/plain components/anchordocking/restoredebugger/adlayoutviewer.pas svneol=native#text/plain diff --git a/components/anchordocking/minidewithdockpanel/layout.xml b/components/anchordocking/minidewithdockpanel/layout.xml new file mode 100644 index 0000000000..7fde4a973a --- /dev/null +++ b/components/anchordocking/minidewithdockpanel/layout.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/anchordocking/minidewithdockpanel/miniide1.lpi b/components/anchordocking/minidewithdockpanel/miniide1.lpi new file mode 100644 index 0000000000..7bd7cc285f --- /dev/null +++ b/components/anchordocking/minidewithdockpanel/miniide1.lpi @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/anchordocking/minidewithdockpanel/miniide1.lpr b/components/anchordocking/minidewithdockpanel/miniide1.lpr new file mode 100644 index 0000000000..70f9b848c6 --- /dev/null +++ b/components/anchordocking/minidewithdockpanel/miniide1.lpr @@ -0,0 +1,21 @@ +program miniide1; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, Unit1, Controls, LazUTF8; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TMainIDE, MainIDE); + if (Paramcount>0) then + MainIDE.LoadLayout(ParamStrUTF8(1)); + Application.Run; +end. + diff --git a/components/anchordocking/minidewithdockpanel/miniide1.res b/components/anchordocking/minidewithdockpanel/miniide1.res new file mode 100644 index 0000000000000000000000000000000000000000..0ad004b9d97928b9d3a42fa745f31fc0da4dfdb5 GIT binary patch literal 1779 zcmbVNO^@3)5ZzvSC{Q5B9$6j>P~Vc}g}i|gB!JPR4X|m79w~CPD^wy?lJdqV`m6c_ zlhKF0+F;jP)PQV~Lp{EE^Eke^xVRwreEvK=IDGK=_uFIq2i)_`7<=*JeoOK4Q`?X| z7+Y(#p`jO00!nCEtD6n|?ZX?EQ(_%gk~dnxh91Dumsj6^S8!{gEt>;D0A)9{H|o-g zTWGmuZ7qzpx^hhD_LAGy+lQ32T-6m=_i=d|LXi{JPJ(i^J3Jud1p}$hXaUx0vo+$j zb|74Dkj_t(DBj}Wm2Nw(4!_{UdvCPtg&W7)t{Z+Safc4K-PJ0Ns6U=6!3tA%4l}>{ zL-&U8u4`(+hXt|-dWFB3&98Q#kgPZiQ&LEn=59NyGA=)o*pkJ}{M}J3@Aq0seP=z) zrPYeP(#jd#Sb8rWxZ} zA;CuyxL=;~ES%}B+o?+b$D+q{lE;GR4c2v5#lT-Z`T*p6Q}62rZop0vQk+7sKjAw= zCEmgw8qy5k8_MlY?J+MyNndZp;D`;acw=FzDVD-NL41W?_)8jve@bRJyFjCMSoyMU z2LC + DockSite = True + Vertical = True + object ToolBar2: TToolBar + AnchorSideLeft.Control = LeftCoolBar + AnchorSideTop.Control = LeftCoolBar + Left = 5 + Height = 52 + Top = 24 + Width = 28 + Align = alNone + AutoSize = True + BorderSpacing.Left = 3 + BorderSpacing.Top = 22 + Caption = 'ToolBar2' + DragKind = dkDock + DragMode = dmAutomatic + EdgeBorders = [] + Images = ImageList1 + TabOrder = 0 + Transparent = True + object SaveLayoutToolButton: TToolButton + Left = 1 + Top = 0 + Caption = 'SaveLayoutToolButton' + ImageIndex = 7 + OnClick = SaveLayoutToolButtonClick + ParentShowHint = False + ShowHint = True + end + object LoadLayoutToolButton: TToolButton + Left = 1 + Top = 26 + Caption = 'LoadLayoutToolButton' + ImageIndex = 8 + OnClick = LoadLayoutToolButtonClick + ParentShowHint = False + ShowHint = True + end + end + end + object StatusBar: TStatusBar + Left = 0 + Height = 28 + Top = 367 + Width = 568 + Panels = <> + SimpleText = 'StatusBar' + end + object AnchorDockPanel1: TAnchorDockPanel + Left = 38 + Height = 327 + Top = 36 + Width = 526 + Align = alClient + Caption = 'AnchorDockPanel1' + TabOrder = 2 + end + object TopCoolBar: TCoolBar + Left = 0 + Height = 36 + Top = 0 + Width = 568 + AutoSize = True + Bands = < + item + Control = ToolBar1 + Width = 100 + end> + DockSite = True + object ToolBar1: TToolBar + AnchorSideLeft.Control = TopCoolBar + AnchorSideTop.Control = TopCoolBar + Left = 24 + Height = 26 + Top = 5 + Width = 217 + Align = alNone + AutoSize = True + BorderSpacing.Left = 22 + BorderSpacing.Top = 3 + Caption = 'ToolBar1' + DragKind = dkDock + DragMode = dmAutomatic + EdgeBorders = [] + Images = ImageList1 + TabOrder = 0 + Transparent = True + object ViewSrcEditor1ToolButton: TToolButton + Left = 1 + Top = 0 + Caption = 'ViewSrcEditor1ToolButton' + ImageIndex = 2 + OnClick = ViewSrcEditor1ToolButtonClick + ParentShowHint = False + ShowHint = True + end + object ViewSrcEdit2ToolButton: TToolButton + Left = 55 + Top = 0 + Caption = 'ViewSrcEdit2ToolButton' + ImageIndex = 2 + OnClick = ViewSrcEdit2ToolButtonClick + ParentShowHint = False + ShowHint = True + end + object ViewCodeExplToolButton: TToolButton + Left = 82 + Top = 0 + Caption = 'ViewCodeExplToolButton' + ImageIndex = 3 + OnClick = ViewCodeExplToolButtonClick + ParentShowHint = False + ShowHint = True + end + object ViewOIToolButton: TToolButton + Left = 109 + Top = 0 + Caption = 'ViewOIToolButton' + ImageIndex = 4 + OnClick = ViewOIToolButtonClick + ParentShowHint = False + ShowHint = True + end + object ViewMessagesToolButton: TToolButton + Left = 136 + Top = 0 + Caption = 'ViewMessagesToolButton' + ImageIndex = 5 + OnClick = ViewMessagesToolButtonClick + ParentShowHint = False + ShowHint = True + end + object ViewFPDocEditorToolButton: TToolButton + Left = 163 + Top = 0 + Caption = 'ViewFPDocEditorToolButton' + ImageIndex = 6 + OnClick = ViewFPDocEditorToolButtonClick + ParentShowHint = False + ShowHint = True + end + object ViewProjInspToolButton: TToolButton + Left = 190 + Top = 0 + Caption = 'ViewProjInspToolButton' + ImageIndex = 9 + OnClick = ViewProjInspToolButtonClick + ParentShowHint = False + ShowHint = True + end + object ViewDbgOutToolButton: TToolButton + Left = 28 + Top = 0 + Caption = 'ViewDbgOutToolButton' + ImageIndex = 10 + OnClick = ViewDbgOutToolButtonClick + ParentShowHint = False + ShowHint = True + end + end + end + object RightCoolBar: TCoolBar + Left = 564 + Height = 327 + Top = 36 + Width = 4 + Align = alRight + AutoSize = True + Bands = <> + DockSite = True + Vertical = True + end + object BottomCoolBar: TCoolBar + Left = 0 + Height = 4 + Top = 363 + Width = 568 + Align = alBottom + AutoSize = True + Bands = <> + DockSite = True + end + object MainMenu1: TMainMenu + Left = 235 + Top = 32 + object FileMenuItem: TMenuItem + Caption = 'File' + object OpenFileMenuItem: TMenuItem + Caption = 'Open file' + end + object NewFileMenuItem: TMenuItem + Caption = 'New file' + end + object MenuItem1: TMenuItem + Caption = '-' + end + object SaveLayoutAsMenuItem: TMenuItem + Caption = 'Save layout as ...' + OnClick = SaveLayoutAsMenuItemClick + end + object LoadLayoutMenuItem: TMenuItem + Caption = 'Load layout ...' + OnClick = LoadLayoutMenuItemClick + end + object MenuItem2: TMenuItem + Caption = '-' + end + object QuitMenuItem: TMenuItem + Caption = 'Quit' + OnClick = QuitMenuItemClick + end + end + end + object ImageList1: TImageList + Left = 296 + Top = 32 + Bitmap = { + 4C690B0000001000000010000000FFFFFF00C17D4460C88B4DBBC88C4FEEC88C + 4FF6C88C4FF7C88C4FF7C88D4FF7C98C4FF7C78B4FF7C5894BD4C4763B91B368 + 3C06FFFFFF00FFFFFF00FFFFFF00FFFFFF00C48549C3F7F2ECECF8F4EEFCF8F4 + EDFFF8F3EDFFF8F3EDFFF8F3EDFFF8F2ECFFF7F2ECFFF2E6D7FFE2B27DFFDB94 + 65F5B3683B07FFFFFF00FFFFFF00FFFFFF00C5884BEAFAF6F2FCFAE0C7FFFBE1 + C9FFFBE2C9FFFBE0C8FFF9DFC5FFF8DBC1FFF4D6B8FFFFFBF8FFF6D8B4FFE1B0 + 7DFFDB9264F6B46B3E07FFFFFF00FFFFFF00C6894CF6F9F5F1FFFCE3CDFFFBE3 + CEFFFBE3CDFFFBE2CBFFF9E0C8FFF8DCC2FFF5D6BAFFFDFBF8FFFCE6CDFFFAE5 + C9FFE2B684FFBF7942A6FFFFFF00FFFFFF00C6894BF7F9F5F1FFFCE3CFFFFBE4 + D0FFFCE4CFFFFCE3CDFFFAE1CAFFF9DDC4FFF6D9BCFFF4E9DFFFF7F2ECFFFBF7 + F3FFF5EFE9FFC27E45FBFFFFFF00FFFFFF00C6894BF7F9F4F0FFFCE6D3FFFCE6 + D4FFFDE7D3FFFCE4D1FFFBE3CDFFFAE0C8FFF8DCC2FFF5D6BBFFF3D4B5FFF1D2 + B3FFF8F4F0FFC48246F7FFFFFF00FFFFFF00C6884AF7F9F4EFFFFEE7D7FFFDE7 + D6FFFDE7D5FFFDE6D4FFFCE6D2FFFBE1CCFFFADFC7FFF8DCC2FFF6DABDFFF6D8 + BBFFFAF4EFFFC68346F7FFFFFF00FFFFFF00C68849F7F9F4EDFFFEE8D8FFFEE8 + D8FFFEE8D7FFFEE7D6FFFDE5D3FFFCE4D1FFFBE1CCFFFAE0C7FFF9DDC3FFF8DC + C2FFFAF4EDFFC68245F7FFFFFF00FFFFFF00C68447F7F9F3ECFFFEE8D6FFFEE8 + D7FFFDE7D6FFFDE7D6FFFDE7D5FFFDE5D3FFFBE4D0FFFBE3CCFFFADFC7FFFADF + C6FFFAF2EAFFC68042F7FFFFFF00FFFFFF00C58245F7F8F2EBFFFEE7D6FFFDE7 + D6FFFDE7D6FFFDE7D6FFFDE6D5FFFDE5D3FFFCE4D1FFFCE2CDFFFBE1CBFFFBE1 + C9FFFBF7F2FFC57C3FF7FFFFFF00FFFFFF00C58042F7F8F1E8FFFEE5D5FFFDE5 + D3FFFDE5D3FFFCE5D3FFFCE5D3FFFCE4D1FFFCE2CEFFFCE2CCFFFBE0C9FFFBE1 + C8FFFDFAF7FFC1763BF7FFFFFF00FFFFFF00C47C40F7F7F0E6FFF8B455FFF7B4 + 56FFF7B554FFF8B453FFF8B253FFF7B352FFF7B352FFF7B251FFF7B24FFFF7B2 + 4FFFFCF9F5FFBF6F36F7FFFFFF00FFFFFF00C1783CF7F7EDE3FFFDC26EFFFFD8 + A0FFFFD79EFFFFD69BFFFFD798FFFFD696FFFFD695FFFFD594FFFFD493FFFBBE + 65FFFBF7F4FFBB6731F7FFFFFF00FFFFFF00BF7138F5F5EBDFFEFDBF68FFFCBD + 67FFFBBE65FFFCBE64FFFCBE64FFFCBD62FFFBBD63FFFBBC61FFFCBE60FFFCBC + 62FFFDFBF8FDB9642DF3FFFFFF00FFFFFF00BC6933DEF8F1EAF2F7ECDFFDF6EB + DEFFF6EADEFFF6EADCFFF6EADCFFFAF3EBFFFAF3EBFFFAF2EAFFFCF7F3FFFCF8 + F4FDFEFEFDF0B7602AD5FFFFFF00FFFFFF00BB6A346BBA6530BCBB6631EDBA66 + 30F7BA6630F7BA6630F7BA6530F7BA652FF7B9652EF7B9652EF7B9642EF7B964 + 2EEFB7622CBDB7622E63FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFE00636CA5FF233E + C2FFFEFEFE00F7F7FB00FEFEFE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00CFD2D1FF868B89FF868B89FF868B89FF868B89FF868B89FF1F2777FF0A37 + CAFF0B45F3FFFEFEFE00FAFAFC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00868B + 89FF868B89FF8D908FFFCFD2D1FFFFFFFF00FFFFFF006B6995FF232971FF0C2C + BAFF0641F2FF4661CEFFFEFEFE00FFFFFF00FFFFFF00FFFFFF00868B89FFB86F + 6CFFB97370FFFFFFFF00FEFEFD00FFFFFF00FFFFFF00232971FF232971FF0920 + A8FF0B45F3FF0B45F3FF5666C1FFFFFFFF00FFFFFF00A9524AFFBA5E54FFC472 + 69FFC17067FFB06358FFFFFFFF00FFFFFF009091ADFF232971FF232971FF031E + 8EFF0B45F3FF0B45F3FF0B45F3FF5AC2E1FF9C5048FFB14E45FFC17D71FFE7BA + ABFFD09689FFC87A6EFFB4554BFFFFFFFF00FFFFFF00232971FF232971FF2329 + 71FF0B45F3FF0B45F3FF7C8ECFFF3CB6DCFF832316FFBC5047FFC1786FFFDDA5 + 9BFFD29C92FFC37C71FFB4554BFFFFFFFF00FFFFFF00FFFFFF00232971FF2329 + 71FF0B45F3FF3E5CCCFF868B89FF41B4DDFF721F11FFAB4135FFBD6359FFC474 + 6EFFD18B83FFB86B5EFFB15849FFFFFFFF00F9F9FA00FFFFFF00FFFFFF002329 + 71FFFFFFFF00FFFFFF00868B89FF41AFDCFF721F11FFAB4135FFBD6359FFC474 + 6EFF3594DAFF3594DAFF3594DAFF3594DAFF3594DAFF3594DAFF3594DAFF3594 + DAFF3594DAFFFFFFFF00868B89FF39ADDBFFE8F6FBFF70BCE7FF55AAE2FF4DA5 + E0FF91C9EBFFFAF3EFFFFDFEFDFFFFFDFCFFFFFDFCFFFEFDFCFFFEFCFBFFFEFE + FDFF3594DAFFCFD2D1FF868B89FF3BA8DBFFFEFFFFFFF8FDFFFFF6FDFFFFF5FC + FFFFF3FCFEFF9AE4F4FF9AE6F7FF9BE6F6FF9DE5F5FF9EE5F5FF9FE5F4FFDAF3 + F8FF3594DAFF868B89FF868B89FF3BA4DBFFF6FCFEFF94E5F8FF93E5F8FF93E5 + F8FF91E5F8FF93DBE9FF93D7E3FF93D2DCFF90CED7FF8CC8CFFF86C1C6FFC9D8 + D6FF3594DAFF868B89FFCFD2D1FF3C9DDCFFF2FAFDFF94E6F8FF92E5F8FF90E5 + F8FF8BE3F8FF86E2F7FF7FE1F7FF77DEF6FF6CDCF6FF5ED9F4FF4FD5F3FFCCF2 + FBFF3594DAFF868B89FFFFFFFF003C98DCFFEFFAFEFF93E5F8FF8FE4F8FF89E3 + F8FF82E1F7FF7ADFF7FF71DEF6FF67DBF5FF5BD8F4FF4DD4F3FF40D1F2FFCAF2 + FBFF3594DAFFCFD2D1FFFFFFFF003790DAFFDCF0FAFF98E1F6FF95E0F6FF92DF + F6FF8EDEF5FF89DCF5FF85DAF4FF80D9F4FF7AD7F3FF74D5F3FF70D3F2FFC2EA + F8FF3594DAFFFFFFFF00FFFFFF00539CE0FF348CDAFF348BDAFF348CDAFF348C + DAFF348CDAFF348CDAFF348CDAFF348CDAFF348CDAFF348CDAFF348BDAFF348C + DAFF539CE0FFFFFFFF00FFFFFF00FFFFFF008C8E8DFF858A88FF858A88FF858A + 88FF858A88FF858A88FF858A88FF858A88FF858A88FF858A88FF858A88FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00858A88FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF858A + 88FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FFF7F8 + F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8 + F8FF858A88FFFFFFFF00FFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FF0E0E + D8FF0E0ED8FF0E0ED8FF858A88FF858A88FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8 + F8FFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FFF7F8 + F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FFF7F8F8FF02598FFF0259 + 8FFFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FF858A + 88FF858A88FF858A88FF858A88FF858A88FF858A88FF02598FFF02598FFFC7EB + EFFF02598FFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FFF4F5 + F5FFF4F5F5FFF4F5F5FFF4F5F5FFF4F5F5FF02598FFFC7EBEFFF02598FFF0259 + 8FFF02598FFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FFA369 + 36FFA36936FFA36936FFA36936FF02598FFFC7EBEFFF6AACD2FF5787A4FF0259 + 8FFFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FFF4F5 + F5FFF4F5F5FFF4F5F5FF02598FFFC6EAEEFF69AACFFF5683A0FF02598FFFF3F3 + F3FFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FF858A + 88FF858A88FF02598FFFC5E6EDFF68A6CEFF5784A0FF02598FFFF7F8F8FFF1F2 + F2FFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF7F8F8FFF6F7 + F7FF02598FFFC4E5EDFF649FC8FF5787A4FF02598FFFF1F2F2FFF0F1F1FFF0F0 + F0FFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF6F7F7FF858A + 88FF325061FF8AABC2FF5585A3FF02598FFF858A88FF858A88FF858A88FFEEEF + EFFFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF4F5F5FFF4F5 + F5FF000000FF36576BFF02598FFFF4F5F5FFF4F5F5FFF4F5F5FFEEEEEEFFEDED + EDFFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFF3F4F4FF858A + 88FFF4F5F5FFF4F5F5FFF4F5F5FFF4F5F5FFF4F5F5FFF4F5F5FFECECECFFEBEC + ECFFFEFEFEFF888D8BFFFFFFFF00FFFFFF00858A88FFFFFFFFFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFFFFFFFF888D8BFFFFFFFF00FFFFFF008C8E8DFF888D8BFF888D8BFF888D + 8BFF888D8BFF888D8BFF888D8BFF888D8BFF888D8BFF888D8BFF888D8BFF888D + 8BFF888D8BFF8C8E8DFFFFFFFF00FEFEFE00FEFEFE00FDFDFD00FDFDFD00FDFC + FC00FCFBFB00FCFCFC00FDFCFC00FAFAFB00FCFCFC00FFFFFF00C5C3D900E2DC + E500FFFEFE00FCFCFC00FDFDFC00FEFEFE00FDFCFD00FEFEFE00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FEFEFF00FFFFFF00D9DCE2002D3A9AFF7F82 + C9FFFEFDFD00FDFDFD00FCFCFB00FCFCFC00FEFEFF00FFFFFF00F5F2F100F5EC + EC00F6EBEB00EDEFEF00E8EBEB00E2E3E700EBECEC00848197FF011694FF1441 + DAFFA7B2DB00FFFFFA00FAFAFC00FDFDFE00F9F6F500D6B6B200B8716AFFBC64 + 5FFF98706EFF545655FF545655FF545655FF545655FF545655FF3E4D8CFF0032 + EBFF143BCCFFC6C7DA00FFFFFF00FBFBFB00BA8A8600982E24FFBD594EFF9D70 + 6CFF545655FF545655FFD2A391FFF9E9D8FFB4A8AEFF545655FF545655FF3F5F + C5FF0533F4FF3447C1FFCBCCE0000000000092342BFFB95248FFC49D96FF5456 + 55FF545655FFD69B82FFCC9888FFD7C1BAFF9A94A6FF6A658AFF545655FF5456 + 55FF5C80F3FF001FDAFF5C6DB4FF0000000095291CFFC85B52FFB98E8AFF5456 + 55FFE3AF96FFCDA693FFDFAA9DFFB99B9DFF878BB9FF766F8FFF534E7CFF5456 + 55FF5577F0FF103AC8FFBFC7DC00000000007D190CFFC05044FFBD8A84FF5456 + 55FFDBA188FFD4A898FFD49482FFC6A8A5FFA7B7CBFF9D9FB1FF6A567CFF5456 + 55FF4A6AD4FF808FC9FFFFFFFE00000000006A2718FF951E14FFC28078FF5456 + 55FFD58A71FFD19F93FFCCBCB3FFBFD5D2FFBCE2E8FFB8CFC9FF878E9DFF5456 + 55FF9399C8FFEFEEF600FAFAFD00FDFFFF00B49D95006D1003FFA65B52FF5456 + 55FF545655FFC5CDC2FFA9D0D5FFABD4DCFFA3BFC5FFA7CCCBFF545655FF5456 + 55FFECE9E900FFFFFF00FCFCFC00FCFBFC00FAFAF900D0BEB600545655FF0EB2 + 5FFF545655FF545655FF96C6CEFFABC4C4FFAAD3D8FF545655FF545655FF4471 + 8CFFD8E4EE00FEFEFE00FCFCFC00FEFEFE00FEFDFD00545655FF0EB25FFF0EB2 + 5FFF7ECAA3FF545655FF545655FF545655FF545655FF545655FF3E6179FF1054 + 86FFD0DDE600FEFEFF00FBFAFC00F6F6F600545655FF0EB25FFF0EB25FFF7ECA + A3FF545655FF80BDE2FF72B6DEFF8FD1EBFF80B0C9FF6A8A9FFF005185FF0F52 + 80FFD5DEE400FEFEFE00FCFCFD00545655FF0EB25FFF0EB25FFF7ECAA3FF5456 + 55FFDFEEF00038AFF6FF00A5FFFF1AC0FFFF0779BAFF005389FF005390FF336D + 95FFE3E9EB00FFFFFF00FBFDFD00545655FF0EB25FFF7ECAA3FF545655FFF7F7 + F700FFFFFF00CDE9F70032AFF1FF06B0FEFF0F83BEFF004A7FFF155882FFB2C3 + CE00FDFEFE00FDFDFD00FCFCFC0054565500545655FF545655FFFDFCFC00FFFE + FF00F8FBFC00FFFFFD00D7EAF40046BAF4FF0072ADFF43768EFFCED8DB00FFFE + FD00FDFDFD00FCFCFC00FDFCFC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00848484FF848484FF848484FFC4C4C4FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00848484FF848484FF848484FF848484FF8484 + 84FF848484FFC4C4C4FFFFFFFF00848484FFE5E5E5FFE5E5E5FF848484FF8484 + 84FF848484FF848484FF848484FF848484FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5 + E5FFE5E5E5FF848484FFFFFFFF00C4C4C4FF848484FF848484FF848484FFFFFF + FF00848484FF545655FF545655FF545655FF545655FF545655FF848484FF8484 + 84FF848484FF848484FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00545655FF545655FFD4C3C0FFF9E9D8FFD4C3C0FF545655FF545655FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005456 + 55FF545655FFD4B2A4FFD4C3C0FFF9E9D8FFD4C3C0FFBA774FFF545655FF5456 + 55FF848484FFC4C4C4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005456 + 55FF8F746BFFC67B3CFF9D8B86FF9C8D8AFFD8C0AEFFE3BB7EFFE4B881FF5456 + 55FFE5E5E5FF848484FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005456 + 55FFAD795DFFDFBB94FFD4C3C0FFD8C0AEFFAD856BFFC1824DFFA87F66FF5456 + 55FF848484FF848484FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005456 + 55FF947868FFE4B881FFDCBAA0FFD9BFA9FFD7C1B4FFDFB896FFE3BB7EFF5456 + 55FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005456 + 55FF545655FFE4B881FFE4B881FFB97F5FFFB67A58FFBD7C4FFF545655FF5456 + 55FF848484FFC4C4C4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00545655FF0EB2 + 5FFF545655FF545655FFE4B881FFB97F5FFFE2B68EFF545655FF545655FFE5E5 + E5FFE5E5E5FF848484FFFFFFFF00FFFFFF00FFFFFF00545655FF0EB25FFF0EB2 + 5FFF7ECAA3FF545655FF545655FF545655FF545655FF545655FF848484FF8484 + 84FF848484FF848484FFFFFFFF00FFFFFF00545655FF0EB25FFF0EB25FFF7ECA + A3FF545655FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00545655FF0EB25FFF0EB25FFF7ECAA3FF5456 + 55FF848484FFFFFFFF00FFFFFF00848484FF848484FF848484FF848484FF8484 + 84FF848484FFC4C4C4FFFFFFFF00545655FF0EB25FFF7ECAA3FF545655FFFFFF + FF00848484FF848484FF848484FF848484FFE5E5E5FFE5E5E5FFE5E5E5FFE5E5 + E5FFE5E5E5FF848484FFFFFFFF00545655FF545655FF545655FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00C4C4C4FF848484FF848484FF848484FF8484 + 84FF848484FF848484FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFE009EA3C6FF7689D7FFFEFE + FE00F7F7FB00FEFEFE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DFE1 + E0FFB3B6B5FFB3B6B5FFB3B6B5FFB3B6B5FFB3B6B5FF7579AAFF6983DCFF698B + F3FFFEFEFE00FAFAFC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B3B6B5FFB3B6 + B5FFB8BAB9FFDFE1E0FFFFFFFF00FFFFFF00A3A3BCFF767BA6FF697DD3FF658A + F3FF8C9DDEFFFEFEFE00FFFFFF00FFFFFF00FFFFFF00B3B6B5FFD1A5A3FFD2A8 + A6FFFFFFFF00FEFEFD00FFFFFF00FFFFFF00767BA6FF767BA6FF6875C8FF698B + F3FF698BF3FF96A0D7FFFFFFFF00FFFFFF00C8938FFFD39B95FFD9A7A3FFD7A6 + A1FFCD9E97FF3A3E3EFF3A3E3EFF3A3E3EFF3A3E3EFF767BA6FF6475B9FF698B + F3FF698BF3FF698BF3FFFFFFFF00C0938DFFCD938BFFD7AEA6FFEDD3C9FFE0BD + B5FF3A3E3EFF9E7D71FFF7D8C3FFCCC2C2FF605F64FF3A3E3EFF767BA6FF698B + F3FF698BF3FFADB9DFFFFFFFFF00B1766FFFD4938CFFD7ABA5FFE8C6C0FF3A3E + 3EFFA88979FFDD9F89FFCFAEA5FFA69FAFFF6E6991FF535460FF3A3E3EFF698B + F3FF899BDEFFB3B6B5FFFFFFFF00A7756CFFC98A81FFD49E98FFD9A9A4FF3A3E + 3EFFEDBCA3FFD0A293FFCD9A92FF9493B5FF7F7EA0FF594C7BFF3A3E3EFFFFFF + FF00FFFFFF00B3B6B5FFFFFFFF00FFFFFF00B3766DFFD08A82FFD0938CFF3A3E + 3EFFEDA790FFCC998AFFCCACA1FFB8CCD5FFACBBC2FF7F7590FF3A3E3EFFFFFF + FF00FFFFFF00B3B6B5FFFFFFFF00FFFFFF00B3B6B5FFBB827CFFC98A80FF3A3E + 3EFFC39E8DFFCDC8C2FFB1D0D2FFADD0D6FFBCDFDAFF7E898EFF3A3E3EFFFFFF + FF00DFE1E0FFB3B6B5FFFFFFFF00FFFFFF00B3B6B5FFB3B6B5FF3A3E3EFF3A3E + 3EFF3A3E3EFF9EC5C6FFB0DDE5FFB6DAE0FF879FA0FF3A3E3EFFA7E2FDFFFFFF + FF00B3B6B5FFB3B6B5FFFFFFFF00FFFFFF00DFE1E0FF3A3E3EFF008D43FF2FC6 + 79FF3A3E3EFF3A3E3EFF3A3E3EFF3A3E3EFF3A3E3EFFA7E2FDFF7B9EB7FFDFE1 + E0FFB3B6B5FFDFE1E0FFFFFFFF00FFFFFF003A3E3EFF019148FF21CC75FF5DA1 + 7EFF3A3E3EFF70BFE6FF70BFE6FFA7E2FDFFA7E2FDFF7B9EB7FF7B9EB7FFB3B6 + B5FFB3B6B5FFFFFFFF00FFFFFF003A3E3EFF06974DFF1AC770FF67A786FF3A3E + 3EFFB3B6B5FF70BFE6FF70BFE6FF70BFE6FF7B9EB7FF7B9EB7FF7B9EB7FFB3B6 + B5FFDFE1E0FFFFFFFF00FFFFFF003A3E3EFF19C26CFF6BAD8BFF3A3E3EFFDFE1 + E0FFB3B6B5FFB3B6B5FF70BFE6FF70BFE6FF7B9EB7FF7B9EB7FFDFE1E0FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF003A3E3EFF3A3E3EFF3A3E3EFFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF0070BFE6FF7B9EB7FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFE00A5AACAFF8092DAFFFEFE + FE00F7F7FB00FEFEFE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E1E3 + E2FFB9BBBAFFB9BBBAFFB9BBBAFFB9BBBAFFB9BBBAFF8083B0FF758CDEFF7594 + F3FFFEFEFE00FAFAFC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B9BBBAFFB9BB + BAFFBDBFBEFFE1E3E2FFFFFFFF00FFFFFF00AAAAC1FF8085ADFF7587D6FF7193 + F3FF95A4E0FFFEFEFE00FFFFFF00FFFFFF00FFFFFF00B9BBBAFFD4ACAAFFD5AE + ADFFFFFFFF00FEFEFD00FFFFFF00FFFFFF008085ADFF8085ADFF7480CCFF7594 + F3FF7594F3FF9EA7DAFFFFFFFF00FFFFFF00CC9B97FFD6A39DFFDCAEAAFFDAAD + A8FFD1A59FFFFFFFFF00FFFFFF00BFBFCFFF8085ADFF8085ADFF7080BEFF7594 + F3FF7594F3FF7594F3FFFFFFFF00C59B96FFD19B94FFDAB4ADFFEED6CDFFE2C2 + BAFF6A6A6AFF000000FF000000FF6A6A6AFF8085ADFF8085ADFF8085ADFF7594 + F3FF7594F3FFB3BEE1FFFFFFFF00B7807AFFD79B95FFDAB1ACFFE9CAC5FFE3C5 + BFFF000000FFE1E1E1FFD2D2D2FF000000FFFFFFFF008085ADFF8085ADFF7594 + F3FF92A3E0FFB9BBBAFFFFFFFF00AE8077FFCD938BFFD7A5A0FFDCAFABFFE2BB + B7FF000000FFE6E6E6FF000000FFF9F9FA00000000FF6A6A6AFF8085ADFFFFFF + FF00FFFFFF00B9BBBAFFFFFFFF00FFFFFF00B98078FFD3938CFFD39B95FF6A6A + 6AFF000000FFD6D6D6FF000000FF000000FFC0C0C0FF000000FFFFFFFF00FFFF + FF00FFFFFF00B9BBBAFFFFFFFF00FFFFFF00B9BBBAFFC08C86FFCD938AFF0000 + 00FFCBCBCBFFD2D2D2FFC9C9C9FFD2D2D2FFC6C6C6FF000000FFECF5FC5FFFFF + FF00E1E3E2FFB9BBBAFFFFFFFF00FFFFFF00B9BBBAFFB9BBBAFF045FCDFF0000 + 00FFD5D5D5FFBBBBBBFF000000FF000000FF000000FFAEE4FDFFAEE4FDFFFFFF + FF00B9BBBAFFB9BBBAFFFFFFFF00FFFFFF00E1E3E2FF045FCDFF3795F7FF045F + CDFF000000FF000000FF6A6A6AFFAAE4FBFFAEE4FDFFAEE4FDFF85A5BCFFE1E3 + E2FFB9BBBAFFE1E3E2FFFFFFFF00FFFFFF00045FCDFF3795F7FF3795F7FF3795 + F7FF045FCDFF7BC4E8FF7BC4E8FFAEE4FDFFAEE4FDFF85A5BCFF85A5BCFFB9BB + BAFFB9BBBAFFFFFFFF00FFFFFF00045FCDFF3795F7FF3795F7FF3795F7FF045F + CDFFB9BBBAFF7BC4E8FF7BC4E8FF7BC4E8FF85A5BCFF85A5BCFF85A5BCFFB9BB + BAFFE1E3E2FFFFFFFF00FFFFFF00045FCDFF3795F7FF3795F7FF045FCDFFE1E3 + E2FFB9BBBAFFB9BBBAFF7BC4E8FF7BC4E8FF85A5BCFF85A5BCFFE1E3E2FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00045FCDFF045FCDFF045FCDFFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF007BC4E8FF85A5BCFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00E1BDA6FFD9AB8DFFC9895EFFC07543FFBD6E + 3AFFBB6C37FFBB6B36FFBB6A36FFBB6A36FFBC6C39FFBD6E3BFFBB6D3AFFBF74 + 44FFC98D65FFE7CEBCFF00000000D6A585FFF6E0D1FFF7E0D1FFFEFBF8FFFEFB + F7FFFDF9F6FFFCF5F0FFFAF0EAFFFBF2EDFFFDF9F6FFFDFAF7FFFBF1EBFFF8E9 + DFFFECD1BEFFCD926AFFE2C5B1FFC68255FFF6DFD1FFE9AA80FFFEFAF6FFFDFA + F6FFDAF1F3FFAFF4FAFF99F6FEFF99F6FEFFAFF4FAFFDAF1F3FFF9ECE2FFF8E7 + DBFFEED0BAFFECD0BDFFBD7443FFC07442FFF6DFD0FFE8A87EFFFCF6F1FFC6F2 + F6FF94F7FFFF94F7FFFF94F7FFFF94F7FFFF94F7FFFF94F7FFFFB8E4E8FFF7E6 + DBFFE1A37AFFEFD5C3FFB76A36FFBD6E3AFFF5DDCCFFE7A87EFFFAF0E8FFB5EF + FFFF849CA5FF292929FF292929FF292929FF292929FF849CA5FFB5EFFFFFF7E5 + D9FFE0A278FFE7C2A9FFB66835FFBB6C37FFF4DCC9FFE7A77DFFC9E6F0FFB5EF + FFFF292929FF292929FFB5EFFFFF849CA5FF292929FF292929FFB5EFFFFFC9EF + F9FFDEA077FFE4BEA4FFB46734FFBB6B36FFF4D9C7FFE6A67DFFBAECFAFFB5EF + FFFF292929FF525252FFB5EFFFFFB5EFFFFF292929FF292929FFB5EFFFFFBAEF + FDFFDA9C74FFE1BA9FFFB36634FFBB6A36FFF2D8C5FFE3A47BFFB5EEFEFFB5EF + FFFFB5EFFFFFB5EFFFFFB5EFFFFF525252FF292929FF525252FFB5EFFFFFB5EF + FEFFDC9D74FFDDB59AFFB16534FFBB6A36FFF2D5C2FFE3A37AFFD0F2FAFFCEF7 + FFFFCEF7FFFFCEF7FFFF525252FF292929FF849CA5FFCEF7FFFFCEF7FFFFD2F7 + FEFFD99B73FFDAB095FFAF6433FFBB6A36FFF0D2BEFFE2A37AFFE2A37AFFCEF7 + FFFFCEF7FFFFCEF7FFFF292929FF525252FFCEF7FFFFCEF7FFFFCEF7FFFFD899 + 71FFD69970FFD5AB8EFFAD6333FFBA6A36FFEFD0BBFFE2A27AFFFEFBF8FFCEF7 + FFFFCEF7FFFFCEF7FFFFCEF7FFFFCEF7FFFFCEF7FFFFCEF7FFFFCEF7FFFFFEFB + F8FFD3966DFFD2A78AFFAB6232FFBB6B38FFEFCEB8FFE1A279FFFEFAF7FF62C0 + 88FF62C088FFCEF7FFFF292929FF525252FFCEF7FFFF62C088FF62C088FFFDF9 + F6FFCF936AFFCEA384FFAA6132FFBB6C38FFEECCB6FFE1A27AFFFEFAF7FFBFDC + C2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFFDF9 + F6FFCD9068FFCC9E81FFA86132FFBA6C38FFEDCAB3FFE0A27AFFFEFAF7FF62C0 + 88FF62C088FF62C088FF62C088FF62C088FF62C088FF62C088FF62C088FFFDF9 + F6FFCA8D65FFC99B7CFFA76132FFC37D4FFFEBC6ADFFEAC5ADFFFEFBF8FFFEFB + F8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFB + F8FFC89A7CFFC79879FFAD6B40FFD8AB8E00CD9570FFBD7342FFB76835FFB568 + 35FFB46734FFB26634FFB06533FFAE6433FFAC6332FFAA6232FFA96132FFA860 + 31FFA76132FFAB693CFFBC8661FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFE00636CA5FF233E + C2FFFEFEFE00F7F7FB00FEFEFE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00CFD2D1FF868B89FF868B89FF868B89FF868B89FF868B89FF1F2777FF0A37 + CAFF0B45F3FFFEFEFE00FAFAFC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00868B + 89FF868B89FF8D908FFFCFD2D1FFFFFFFF00FFFFFF006B6995FF232971FF0C2C + BAFF0641F2FF4661CEFFFEFEFE00FFFFFF00FFFFFF00FFFFFF00868B89FFB86F + 6CFFB97370FFFFFFFF00FEFEFD00FFFFFF00FFFFFF00232971FF232971FF0920 + A8FF0B45F3FF0B45F3FF5666C1FFFFFFFF00FFFFFF00A9524AFFBA5E54FFC472 + 69FFC17067FFB06358FFFFFFFF00FFFFFF009091ADFF232971FF232971FF031E + 8EFF0B45F3FF0B45F3FF0B45F3FF5AC2E1FF9C5048FFB14E45FFC17D71FFE7BA + ABFFD09689FFC87A6EFFB4554BFFFFFFFF00FFFFFF00232971FF232971FF2329 + 71FF0B45F3FF0B45F3FF7C8ECFFF3CB6DCFF832316FFBC5047FFC1786FFFDDA5 + 9BFFD29C92FFC37C71FFB4554BFFFFFFFF00FFFFFF00FFFFFF00232971FF2329 + 71FF0B45F3FF3E5CCCFF868B89FF41B4DDFF721F11FFAB4135FFBD6359FFC474 + 6EFFD18B83FFB86B5EFFB15849FFFFFFFF00F9F9FA00FFFFFF00FFFFFF002329 + 71FFFFFFFF00FFFFFF00868B89FF41AFDCFF721F11FFAB4135FFBD6359FFC474 + 6EFF3594DAFF3594DAFF3594DAFF3594DAFF3594DAFF3594DAFF3594DAFF3594 + DAFF3594DAFFFFFFFF00868B89FF39ADDBFFE8F6FBFF70BCE7FF55AAE2FF4DA5 + E0FF91C9EBFFFAF3EFFFFDFEFDFFFFFDFCFFFFFDFCFFFEFDFCFFFEFCFBFFFEFE + FDFF3594DAFFCFD2D1FF868B89FF3BA8DBFFFEFFFFFFF8FDFFFFF6FDFFFFF5FC + FFFFF3FCFEFF9AE4F4FF9AE6F7FF9BE6F6FF9DE5F5FF9EE5F5FF9FE5F4FFDAF3 + F8FF3594DAFF868B89FF868B89FF3BA4DBFFF6FCFEFF94E5F8FF93E5F8FF93E5 + F8FF91E5F8FF93DBE9FF93D7E3FF93D2DCFF90CED7FF8CC8CFFF86C1C6FFC9D8 + D6FF3594DAFF868B89FFCFD2D1FF3C9DDCFFF2FAFDFF94E6F8FF92E5F8FF90E5 + F8FF8BE3F8FF86E2F7FF7FE1F7FF77DEF6FF6CDCF6FF5ED9F4FF4FD5F3FFCCF2 + FBFF3594DAFF868B89FFFFFFFF003C98DCFFEFFAFEFF93E5F8FF8FE4F8FF89E3 + F8FF82E1F7FF7ADFF7FF71DEF6FF67DBF5FF5BD8F4FF4DD4F3FF40D1F2FFCAF2 + FBFF3594DAFFCFD2D1FFFFFFFF003790DAFFDCF0FAFF98E1F6FF95E0F6FF92DF + F6FF8EDEF5FF89DCF5FF85DAF4FF80D9F4FF7AD7F3FF74D5F3FF70D3F2FFC2EA + F8FF3594DAFFFFFFFF00FFFFFF00539CE0FF348CDAFF348BDAFF348CDAFF348C + DAFF348CDAFF348CDAFF348CDAFF348CDAFF348CDAFF348CDAFF348BDAFF348C + DAFF539CE0FFFFFFFF00FFFFFF00FEFEFE00FEFEFE00FDFDFD00FDFDFD00FDFC + FC00FCFBFB00FCFCFC00FDFCFC00FAFAFB00FCFCFC00FFFFFF00C5C3D900E2DC + E500FFFEFE00FCFCFC00FDFDFC00FEFEFE00FDFCFD00FEFEFE00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FEFEFF00FFFFFF00D9DCE2002D3A9AFF7F82 + C9FFFEFDFD00FDFDFD00FCFCFB00FCFCFC00FEFEFF00FFFFFF00F5F2F100F5EC + EC00F6EBEB00EDEFEF00E8EBEB00E2E3E700EBECEC00848197FF011694FF1441 + DAFFA7B2DB00FFFFFA00FAFAFC00FDFDFE00F9F6F500D6B6B200B8716AFFBC64 + 5FFF98706EFF54565500545655005456550054565500545655003E4D8CFF0032 + EBFF143BCCFFC6C7DA00FFFFFF00FBFBFB00BA8A8600982E24FFBD594EFF9D70 + 6CFF5456550054565500D2A391FFF9E9D8FFB4A8AEFF54565500545655003F5F + C5FF0533F4FF3447C1FFCBCCE0000000000092342BFFB95248FFC49D96FF5456 + 550054565500D69B82FFCC9888FFD7C1BAFF9A94A6FF6A658AFF545655005456 + 55005C80F3FF001FDAFF5C6DB4FF0000000095291CFFC85B52FFB98E8AFF5456 + 5500E3AF96FFCDA693FFDFAA9DFFB99B9DFF878BB9FF766F8FFF534E7CFF5456 + 55005577F0FF103AC8FFBFC7DC00000000007D190CFFC05044FFBD8A84FF5456 + 5500DBA188FFD4A898FFD49482FFC6A8A5FFA7B7CBFF9D9FB1FF6A567CFF5456 + 55004A6AD4FF808FC9FFFFFFFE00000000006A2718FF951E14FFC28078FF5456 + 5500D58A71FFD19F93FFCCBCB3FFBFD5D2FFBCE2E8FFB8CFC9FF878E9DFF5456 + 55009399C8FFEFEEF600FAFAFD00FDFFFF00B49D95006D1003FFA65B52FF5456 + 550054565500C5CDC2FFA9D0D5FFABD4DCFFA3BFC5FFA7CCCBFF545655005456 + 5500ECE9E900FFFFFF00FCFCFC00FCFBFC00FAFAF900D0BEB600545655000EB2 + 5FFF545655005456550096C6CEFFABC4C4FFAAD3D8FF54565500545655004471 + 8CFFD8E4EE00FEFEFE00FCFCFC00FEFEFE00FEFDFD00545655000EB25FFF0EB2 + 5FFF7ECAA3FF54565500545655005456550054565500545655003E6179FF1054 + 86FFD0DDE600FEFEFF00FBFAFC00F6F6F600545655000EB25FFF0EB25FFF7ECA + A3FF5456550080BDE2FF72B6DEFF8FD1EBFF80B0C9FF6A8A9FFF005185FF0F52 + 80FFD5DEE400FEFEFE00FCFCFD00545655000EB25FFF0EB25FFF7ECAA3FF5456 + 5500DFEEF00038AFF6FF00A5FFFF1AC0FFFF0779BAFF005389FF005390FF336D + 95FFE3E9EB00FFFFFF00FBFDFD00545655000EB25FFF7ECAA3FF54565500F7F7 + F700FFFFFF00CDE9F70032AFF1FF06B0FEFF0F83BEFF004A7FFF155882FFB2C3 + CE00FDFEFE00FDFDFD00FCFCFC00545655005456550054565500FDFCFC00FFFE + FF00F8FBFC00FFFFFD00D7EAF40046BAF4FF0072ADFF43768EFFCED8DB00FFFE + FD00FDFDFD00FCFCFC00FDFCFC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF003AB73FFFCDECCFFFFFFFFF00BFE5C1FF3DAF43FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E5F6E5FFFFFF + FF00FFFFFF00FFFFFF0038B23EFF74C878FFE8F0ECDFAFDDB2FF3FAB45FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003AB740FFA5DE + A8FFFFFFFF00FFFFFF003DB042FF45B049FF88AD9CFF418A56FF349E3BFF96B3 + A6FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0044B84AFF3EB4 + 43FFFFFFFF0043B148FF35A83AFF34A539FF34A139FF72C27EFFAFE3C2FF5F8C + 78FFA1B9AEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00CDEBCEFF36AB + 3CFF44AF4AFF45AC4BFF9ED4ADFFA4D7B8FF85C38EFF288F2DFF4FB75FFF97C8 + AAFF2C8D31FF2B8930FF2A852EFF43B649FFE4F5E5FFFFFFFF00FFFFFF0035A7 + 3BFF39A53FFF90CEA8FF62B984FF58B27BFF60B276FF38973EFF29892DFF57A4 + 62FF45695FFFFFFFFF00FFFFFF003BAF40FF36AA3BFF7FC882FF49AD4EFF50AD + 56FF8DCCA5FF5EB580FF4FAD73FF42A35DFF1010CFFF1010CFFF1010CFFF1010 + CFFF6A8E79FFFFFFFF00FFFFFF00FFFFFF0061B865FF33A138FF339E38FF94CF + ACFF5CB47EFF4EAC72FF41A15DFF1010CFFF1010CFFF1010CFFF1010CFFF1010 + CFFF1010CFFFA2C5A4FF1010CFFFFFFFFF00FFFFFF00399F3EFF52A959FF6DBC + 8CFF4DAA70FF429F5CFF1010CFFF1010CFFF51A36DFF479D63FF89BE99FF1010 + CFFF1010CFFF1010CFFF1010CFFFFFFFFF00FFFFFF003B9A3FFF62AD68FF77BE + 91FF44A05DFF4B9F53FF78B48CFF4EA26AFF479C62FF71B185FF6AA06FFF2471 + 27FF1010CFFF1010CFFF1010CFFFFFFFFF00FFFFFF0095C697FF2D8C32FF77B5 + 82FF4D9E54FF79B38CFF4DA16AFF469A60FF71B084FF367D39FF236E26FF1010 + CFFF1010CFFF1010CFFF1010CFFFFFFFFF00FFFFFF00FFFFFF0062A565FF2074 + 23FF94C09DFF6CAF82FF1010CFFF1010CFFF1010CFFF1010CFFF216824FF276A + 2AFF9AB89BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005E9C + 61FF2A792EFF68A16FFF1010CFFF1010CFFF1010CFFFA8C3AAFFC6D7C7FF2C69 + 2FFF1D5C20FFE0E9E1FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF0076A77AFF256F2AFF1010CFFF1010CFFF1010CFFF1010CFFFFFFFFF00FFFF + FF00FFFFFF001010CFFF1010CFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF001010CFFF518453FF1010CFFF1010CFFF1010CFFF1010 + CFFF1010CFFF1010CFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00215D24FF1010CFFF1010CFFF1010 + CFFF1010CFFFFFFFFF00FFFFFF00 + } + end +end diff --git a/components/anchordocking/minidewithdockpanel/unit1.pas b/components/anchordocking/minidewithdockpanel/unit1.pas new file mode 100644 index 0000000000..7b0f4e61d4 --- /dev/null +++ b/components/anchordocking/minidewithdockpanel/unit1.pas @@ -0,0 +1,357 @@ +unit Unit1; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, LCLProc, Forms, Controls, Graphics, Dialogs, StdCtrls, + Menus, ExtCtrls, Buttons, ComCtrls, XMLPropStorage, LazFileUtils, SimpleFrm, + AnchorDocking, AnchorDockStorage, AnchorDockOptionsDlg, AnchorDockPanel; + +type + + { TMainIDE } + + TMainIDE = class(TForm) + AnchorDockPanel1: TAnchorDockPanel; + LeftCoolBar: TCoolBar; + BottomCoolBar: TCoolBar; + TopCoolBar: TCoolBar; + RightCoolBar: TCoolBar; + ImageList1: TImageList; + MainMenu1: TMainMenu; + MenuItem1: TMenuItem; + MenuItem2: TMenuItem; + LoadLayoutMenuItem: TMenuItem; + SaveLayoutAsMenuItem: TMenuItem; + NewFileMenuItem: TMenuItem; + OpenFileMenuItem: TMenuItem; + QuitMenuItem: TMenuItem; + FileMenuItem: TMenuItem; + StatusBar: TStatusBar; + ToolBar1: TToolBar; + ToolBar2: TToolBar; + SaveLayoutToolButton: TToolButton; + LoadLayoutToolButton: TToolButton; + ViewDbgOutToolButton: TToolButton; + ViewProjInspToolButton: TToolButton; + ViewFPDocEditorToolButton: TToolButton; + ViewMessagesToolButton: TToolButton; + ViewOIToolButton: TToolButton; + ViewCodeExplToolButton: TToolButton; + ViewSrcEdit2ToolButton: TToolButton; + ViewSrcEditor1ToolButton: TToolButton; + procedure AnchorDockPanel1Create(Sender: TObject); + procedure FileMenuItemClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure InfoButtonClick(Sender: TObject); + procedure LoadLayoutMenuItemClick(Sender: TObject); + procedure LoadLayoutToolButtonClick(Sender: TObject); + procedure QuitMenuItemClick(Sender: TObject); + procedure SaveLayoutAsMenuItemClick(Sender: TObject); + procedure SaveLayoutToolButtonClick(Sender: TObject); + procedure ViewCodeExplToolButtonClick(Sender: TObject); + procedure ViewDbgOutToolButtonClick(Sender: TObject); + procedure ViewFPDocEditorToolButtonClick(Sender: TObject); + procedure ViewMessagesToolButtonClick(Sender: TObject); + procedure ViewOIToolButtonClick(Sender: TObject); + procedure ViewProjInspToolButtonClick(Sender: TObject); + procedure ViewSrcEdit2ToolButtonClick(Sender: TObject); + procedure ViewSrcEditor1ToolButtonClick(Sender: TObject); + private + procedure DockMasterCreateControl(Sender: TObject; aName: string; var + AControl: TControl; DoDisableAutoSizing: boolean); + procedure GetInfo(sl: TStringList); + public + procedure ShowForm(AForm: TCustomForm; FormEnableAutosizing: boolean); + procedure SaveLayout(Filename: string); + procedure LoadLayout(Filename: string); + end; + +var + MainIDE: TMainIDE; + +implementation + +{$R *.lfm} + +{ TMainIDE } + +procedure TMainIDE.FileMenuItemClick(Sender: TObject); +begin + close; +end; + +procedure TMainIDE.AnchorDockPanel1Create(Sender: TObject); +begin + +end; + +procedure TMainIDE.DockMasterCreateControl(Sender: TObject; aName: string; var + AControl: TControl; DoDisableAutoSizing: boolean); + + procedure CreateForm(Caption: string; NewBounds: TRect); + begin + AControl:=CreateSimpleForm(aName,Caption,NewBounds,DoDisableAutoSizing); + end; + +begin + if aName='CodeExplorer' then + CreateForm('Code Explorer',Bounds(700,230,100,250)) + else if aName='FPDocEditor' then + CreateForm('FPDoc Editor',Bounds(200,720,300,100)) + else if aName='Messages' then + CreateForm('Messages',Bounds(230,650,350,100)) + else if aName='ObjectInspector' then + CreateForm('Object Inspector',Bounds(10,200,100,350)) + else if aName='SourceEditor1' then + CreateForm('Source Editor 1',Bounds(230,200,400,400)) + else if aName='SourceEditor2' then + CreateForm('Source Editor 2',Bounds(260,230,350,350)) + else if aName='ProjectInspector' then + CreateForm('Project Inspector',Bounds(10,230,150,250)) + else if aName='DebugOutput' then + CreateForm('Debug Output',Bounds(400,400,350,150)); +end; + +procedure TMainIDE.GetInfo(sl: TStringList); +var + i: Integer; + aMonitor: TMonitor; + aForm: TCustomForm; +begin + // monitors + sl.Add('Monitors:'); + for i:=0 to Screen.MonitorCount-1 do begin + aMonitor:=Screen.Monitors[i]; + sl.Add(' '+dbgs(i)+'/'+dbgs(Screen.MonitorCount) + +' MonitorNum='+IntToStr(aMonitor.MonitorNum) + +' BoundsRect='+dbgs(aMonitor.BoundsRect) + +' WorkareaRect='+dbgs(aMonitor.WorkareaRect) + +' Primary='+dbgs(aMonitor.Primary) + ); + end; + sl.Add(''); + + // forms + sl.Add('Visible top level Forms:'); + for i:=0 to Screen.CustomFormCount-1 do begin + aForm:=Screen.CustomForms[i]; + if not aForm.Visible then continue; + if aForm.Parent<>nil then continue; + sl.Add(' '+dbgs(i)+'/'+dbgs(Screen.CustomFormCount) + +' Caption="'+aForm.Caption+'"' + +' Name="'+DbgSName(aForm)+'"' + +' BoundsRect='+dbgs(aForm.BoundsRect) + +' ClientRect='+dbgs(aForm.ClientRect) + +' MonitorNum='+dbgs(aForm.Monitor.MonitorNum) + ); + end; + sl.Add(''); +end; + +procedure TMainIDE.FormCreate(Sender: TObject); +begin + ViewOIToolButton.Hint:='View Object Inspector'; + ViewCodeExplToolButton.Hint:='View Code Explorer'; + ViewSrcEditor1ToolButton.Hint:='View Source Editor 1'; + ViewSrcEdit2ToolButton.Hint:='View Source Editor 2'; + ViewFPDocEditorToolButton.Hint:='View FPDoc Editor'; + ViewMessagesToolButton.Hint:='View Messages'; + ViewProjInspToolButton.Hint:='View Project Inspector'; + ViewDbgOutToolButton.Hint:='View Debug Output'; + SaveLayoutToolButton.Hint:='Save Layout to layout.xml'; + LoadLayoutToolButton.Hint:='Load layout from layout.xml'; + + //DockMaster.MakeDockSite(Self,[akBottom],admrpChild); + DockMaster.MakeDockPanel(AnchorDockPanel1,admrpChild); + DockMaster.OnCreateControl:=@DockMasterCreateControl; + DockMaster.OnShowOptions:=@ShowAnchorDockOptions; + + LoadLayoutToolButtonClick(self); + + //SetBounds(100,50,600,80); + //ViewSrcEditor1ToolButtonClick(Self); + //ViewMessagesToolButtonClick(Self); + //ViewOIToolButtonClick(Self); + //ViewFPDocEditorToolButtonClick(Self); +end; + +procedure TMainIDE.InfoButtonClick(Sender: TObject); +var + aForm: TForm; + aMemo: TMemo; + sl: TStringList; +begin + aForm:=TForm.CreateNew(Self); + sl:=TStringList.Create; + try + aForm.Name:='InfoForm'; + aForm.Position:=poScreenCenter; + aMemo:=TMemo.Create(aForm); + with aMemo do + begin + Name:='aMemo'; + Parent:=aForm; + Align:=alClient; + ScrollBars:=ssBoth; + end; + GetInfo(sl); + aMemo.Lines.Assign(sl); + + aForm.ShowModal; + finally + sl.Free; + aForm.Free; + end; +end; + +procedure TMainIDE.LoadLayoutMenuItemClick(Sender: TObject); +var + Dlg: TOpenDialog; +begin + Dlg:=TOpenDialog.Create(nil); + try + Dlg.InitialDir:=GetCurrentDirUTF8; + Dlg.Title:='Open layout file ...'; + Dlg.Filter:='*.xml|*.xml'; + Dlg.Options:=Dlg.Options+[ofFileMustExist]; + if not Dlg.Execute then exit; + LoadLayout(Dlg.FileName); + finally + Dlg.Free; + end; +end; + +procedure TMainIDE.LoadLayoutToolButtonClick(Sender: TObject); +begin + LoadLayout('layout.xml'); +end; + +procedure TMainIDE.QuitMenuItemClick(Sender: TObject); +begin + Close; +end; + +procedure TMainIDE.SaveLayoutAsMenuItemClick(Sender: TObject); +var + Dlg: TSaveDialog; + Filename: String; +begin + Dlg:=TSaveDialog.Create(nil); + try + Dlg.InitialDir:=GetCurrentDirUTF8; + Dlg.Title:='Save layout as ...'; + Dlg.Filter:='*.xml|*.xml'; + Dlg.Options:=Dlg.Options+[ofPathMustExist,ofHideReadOnly,ofOverwritePrompt]; + if not Dlg.Execute then exit; + Filename:=Dlg.FileName; + if ExtractFileExt(Filename)='' then + Filename:=Filename+'.xml'; + SaveLayout(FileName); + finally + Dlg.Free; + end; +end; + +procedure TMainIDE.SaveLayoutToolButtonClick(Sender: TObject); +begin + SaveLayout('layout.xml'); +end; + +procedure TMainIDE.ViewCodeExplToolButtonClick(Sender: TObject); +begin + DockMaster.ShowControl('CodeExplorer',true); +end; + +procedure TMainIDE.ViewDbgOutToolButtonClick(Sender: TObject); +begin + DockMaster.ShowControl('DebugOutput',true); +end; + +procedure TMainIDE.ViewFPDocEditorToolButtonClick(Sender: TObject); +begin + DockMaster.ShowControl('FPDocEditor',true); +end; + +procedure TMainIDE.ViewMessagesToolButtonClick(Sender: TObject); +begin + DockMaster.ShowControl('Messages',true); +end; + +procedure TMainIDE.ViewOIToolButtonClick(Sender: TObject); +begin + DockMaster.ShowControl('ObjectInspector',true); +end; + +procedure TMainIDE.ViewProjInspToolButtonClick(Sender: TObject); +begin + DockMaster.ShowControl('ProjectInspector',true); +end; + +procedure TMainIDE.ViewSrcEdit2ToolButtonClick(Sender: TObject); +begin + DockMaster.ShowControl('SourceEditor2',true); +end; + +procedure TMainIDE.ViewSrcEditor1ToolButtonClick(Sender: TObject); +begin + DockMaster.ShowControl('SourceEditor1',true); +end; + +procedure TMainIDE.ShowForm(AForm: TCustomForm; FormEnableAutosizing: boolean); +begin + DockMaster.MakeDockable(AForm); + if FormEnableAutosizing then + AForm.EnableAutoSizing; +end; + +procedure TMainIDE.SaveLayout(Filename: string); +var + XMLConfig: TXMLConfigStorage; +begin + try + // create a new xml config file + XMLConfig:=TXMLConfigStorage.Create(Filename,false); + try + // save the current layout of all forms + DockMaster.SaveLayoutToConfig(XMLConfig); + XMLConfig.WriteToDisk; + finally + XMLConfig.Free; + end; + except + on E: Exception do begin + MessageDlg('Error', + 'Error saving layout to file '+Filename+':'#13+E.Message,mtError, + [mbCancel],0); + end; + end; +end; + +procedure TMainIDE.LoadLayout(Filename: string); +var + XMLConfig: TXMLConfigStorage; +begin + try + // load the xml config file + XMLConfig:=TXMLConfigStorage.Create(Filename,True); + try + // restore the layout + // this will close unneeded forms and call OnCreateControl for all needed + DockMaster.LoadLayoutFromConfig(XMLConfig,true); + finally + XMLConfig.Free; + end; + except + on E: Exception do begin + MessageDlg('Error', + 'Error loading layout from file '+Filename+':'#13+E.Message,mtError, + [mbCancel],0); + end; + end; +end; + +end. +