From c92b18ed828c687e94c48d8e4c5a30c485ff4c90 Mon Sep 17 00:00:00 2001 From: mattias Date: Mon, 17 Jul 2006 18:41:28 +0000 Subject: [PATCH] added procedure list from Graeme Geldenhuys git-svn-id: trunk@9625 - --- .gitattributes | 3 + ide/main.pp | 3 +- ide/procedurelist.lfm | 637 ++++++++++++++++++++++++++++++++++++++++++ ide/procedurelist.lrs | 292 +++++++++++++++++++ ide/procedurelist.pas | 633 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 1567 insertions(+), 1 deletion(-) create mode 100644 ide/procedurelist.lfm create mode 100644 ide/procedurelist.lrs create mode 100644 ide/procedurelist.pas diff --git a/.gitattributes b/.gitattributes index b41484219d..59ab25f68f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1280,6 +1280,9 @@ ide/newprojectdlg.pp svneol=native#text/pascal ide/objectlists.pas svneol=native#text/pascal ide/outputfilter.pas svneol=native#text/pascal ide/patheditordlg.pas svneol=native#text/pascal +ide/procedurelist.lfm svneol=native#text/plain +ide/procedurelist.lrs svneol=native#text/plain +ide/procedurelist.pas svneol=native#text/plain ide/progressdlg.lfm svneol=native#text/plain ide/progressdlg.lrs svneol=native#text/plain ide/progressdlg.pas svneol=native#text/plain diff --git a/ide/main.pp b/ide/main.pp index e9ab1ec527..604fd51e98 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -116,7 +116,7 @@ uses BuildLazDialog, MiscOptions, InputHistory, UnitDependencies, ClipBoardHistory, ProcessList, InitialSetupDlgs, NewDialog, MakeResStrDlg, ToDoList, DialogProcs, FindReplaceDialog, FindInFilesDlg, CodeExplorer, BuildFileDlg, - ExtractProcDlg, FindRenameIdentifier, + ProcedureList, ExtractProcDlg, FindRenameIdentifier, CleanDirDlg, CodeContextForm, AboutFrm, // main ide MainBar, MainIntf, MainBase; @@ -1853,6 +1853,7 @@ begin SetupEnvironmentMenu; SetupWindowsMenu; SetupHelpMenu; + ProcedureList.Register; mnuMain.MenuItem:=MainIDEBar.mnuMainMenu.Items; end; diff --git a/ide/procedurelist.lfm b/ide/procedurelist.lfm new file mode 100644 index 0000000000..7f73bd0510 --- /dev/null +++ b/ide/procedurelist.lfm @@ -0,0 +1,637 @@ +object ProcedureListForm: TProcedureListForm + ActiveControl = cbObjects + Caption = 'Procedure List - ' + ClientHeight = 300 + ClientWidth = 518 + OnCreate = FormCreate + OnKeyPress = FormKeyPress + OnResize = FormResize + OnShow = FormShow + PixelsPerInch = 75 + Position = poDefault + HorzScrollBar.Page = 517 + VertScrollBar.Page = 299 + Left = 376 + Height = 300 + Top = 272 + Width = 518 + object StatusBar: TStatusBar + Panels = < + item + Width = 400 + end + item + Width = 50 + end> + SimplePanel = False + Height = 24 + Top = 276 + Width = 518 + end + object TB: TToolBar + Caption = 'TB' + Flat = True + Height = 26 + Images = ImageList1 + TabOrder = 1 + Height = 26 + Width = 518 + object tbAbout: TToolButton + Caption = 'tbAbout' + ImageIndex = 9 + ParentShowHint = False + ShowHint = True + OnClick = tbAboutClick + Left = 136 + Height = 22 + Hint = 'About' + Top = 2 + Width = 23 + end + object ToolButton2: TToolButton + Caption = 'ToolButton2' + Style = tbsDivider + Width = 5 + Left = 131 + Height = 22 + Top = 2 + Width = 5 + end + object tbJumpTo: TToolButton + Caption = 'Goto' + ImageIndex = 5 + ParentShowHint = False + ShowHint = True + OnClick = LVDblClick + Left = 108 + Height = 22 + Hint = 'Jump To Selection' + Top = 2 + Width = 23 + end + object ToolButton4: TToolButton + Caption = 'ToolButton4' + Style = tbsDivider + Width = 5 + Left = 103 + Height = 22 + Top = 2 + Width = 5 + end + object tbFilterAny: TToolButton + Caption = 'tbFilterAny' + Down = True + Grouped = True + ImageIndex = 8 + ParentShowHint = False + ShowHint = True + Style = tbsCheck + Left = 80 + Height = 22 + Hint = 'Filter by matching any part of method' + Top = 2 + Width = 23 + end + object tbFilterStart: TToolButton + Caption = 'tbFilterStart' + Grouped = True + ImageIndex = 7 + ParentShowHint = False + ShowHint = True + Style = tbsCheck + Left = 57 + Height = 22 + Hint = 'Filter by matching with start of method' + Top = 2 + Width = 23 + end + object ToolButton7: TToolButton + Caption = 'ToolButton7' + Style = tbsDivider + Width = 5 + Left = 52 + Height = 22 + Top = 2 + Width = 5 + end + object tbChangeFont: TToolButton + Caption = 'tbChangeFont' + ImageIndex = 4 + ParentShowHint = False + ShowHint = True + Left = 29 + Height = 22 + Hint = 'Change Font' + Top = 2 + Width = 23 + end + object ToolButton9: TToolButton + Caption = 'ToolButton9' + Style = tbsDivider + Width = 5 + Left = 24 + Height = 22 + Top = 2 + Width = 5 + end + object tbCopy: TToolButton + Caption = 'tbCopy' + ImageIndex = 6 + ParentShowHint = False + ShowHint = True + OnClick = tbCopyClick + Left = 1 + Height = 22 + Hint = 'Copy method name to the clipboard' + Top = 2 + Width = 23 + end + end + object pnlHeader: TPanel + Align = alTop + BevelOuter = bvNone + ClientHeight = 38 + ClientWidth = 518 + Color = clLime + ParentColor = False + TabOrder = 2 + Height = 38 + Top = 26 + Width = 518 + object pnlObjects: TPanel + Align = alClient + BevelOuter = bvNone + ClientHeight = 38 + ClientWidth = 262 + ParentColor = False + TabOrder = 0 + Left = 256 + Height = 38 + Width = 262 + object lblObjects: TLabel + Caption = '&Objects' + Color = clNone + ParentColor = False + AnchorSideTop.Control = cbObjects + AnchorSideTop.Side = asrCenter + Left = 8 + Height = 17 + Top = 12 + Width = 68 + end + object cbObjects: TComboBox + Anchors = [akTop, akLeft, akRight] + AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending] + MaxLength = 0 + OnChange = cbObjectsChange + Sorted = True + Style = csDropDownList + TabOrder = 0 + Left = 64 + Height = 24 + Top = 8 + Width = 191 + end + end + object pnlSearch: TPanel + Align = alLeft + BevelOuter = bvNone + ClientHeight = 38 + ClientWidth = 256 + ParentColor = False + TabOrder = 1 + Height = 38 + Width = 256 + object lblSearch: TLabel + Caption = '&Search' + Color = clNone + ParentColor = False + AnchorSideTop.Control = edMethods + AnchorSideTop.Side = asrCenter + Left = 11 + Height = 17 + Top = 11 + Width = 63 + end + object edMethods: TEdit + Anchors = [akTop, akLeft, akRight] + OnChange = edMethodsChange + OnKeyDown = edMethodsKeyDown + OnKeyPress = edMethodsKeyPress + TabOrder = 0 + Left = 68 + Height = 23 + Top = 8 + Width = 180 + end + end + end + object LV: TListView + Align = alClient + Columns = < + item + end + item + Caption = 'Procedure' + Width = 300 + end + item + Caption = 'Type' + end + item + Caption = 'Line' + end> + HideSelection = False + Items.Data = { + 45FFFFFF0100000000000000FFFFFFFFFFFFFFFF0300000000000000000E5446 + 6F726D2E54657374466F75720846756E6374696F6E023234FFFFFFFFFFFFFFFF + FFFFFFFF + } + ReadOnly = True + RowSelect = True + ScrollBars = ssAutoBoth + SmallImages = ImageList1 + TabOrder = 0 + ViewStyle = vsReport + OnDblClick = LVDblClick + OnKeyPress = edMethodsKeyPress + OnSelectItem = LVSelectItem + Height = 212 + Top = 64 + Width = 518 + end + object ImageList1: TImageList + left = 210 + top = 404 + Bitmap = { + 6C690A00000010000000100000007E0200002F2A2058504D202A2F0D0A737461 + 7469632063686172202A2063655F70726F6365647572655F78706D5B5D203D20 + 7B0D0A2231362031362031352031222C0D0A22200963204E6F6E65222C0D0A22 + 2E09632023334133413341222C0D0A222B09632023393139313931222C0D0A22 + 4009632023384238423842222C0D0A222309632023434343434343222C0D0A22 + 2409632023443544354435222C0D0A222509632023414441444144222C0D0A22 + 2609632023433443344334222C0D0A222A09632023423442344234222C0D0A22 + 3D09632023413141314131222C0D0A222D09632023393839383938222C0D0A22 + 3B09632023413241324132222C0D0A223E09632023433643364336222C0D0A22 + 2C09632023443844384438222C0D0A222709632023344334433443222C0D0A22 + 2020202020202E2E2E2E202020202020222C0D0A222020202E2E202E2B2B2E20 + 2E2E202020222C0D0A2220202E402E2E232424232E2E402E2020222C0D0A2220 + 2E4025262A3D2D2D3D2A2625402E20222C0D0A22202E2E263B403E2C2C3E403B + 262E2E20222C0D0A2220202E2A3D3E2A27272A3E3D2A2E2020222C0D0A222E2E + 233D3E2A2E20202E2A3E3D232E2E222C0D0A222E2B242D2C2720202020272C2D + 242B2E222C0D0A222E2B242D2C2720202020272C2D242B2E222C0D0A222E2E23 + 3D3E2A2E20202E2A3E3D232E2E222C0D0A2220202E2A3D3E2A27272A3E3D2A2E + 2020222C0D0A22202E2E263B403E2C2C3E403B262E2E20222C0D0A22202E4025 + 262A3D2D2D3D2A2625402E20222C0D0A2220202E402E2E232424232E2E402E20 + 20222C0D0A222020202E2E202E2B2B2E202E2E202020222C0D0A222020202020 + 202E2E2E2E202020202020227D3B0D0A8C0600002F2A2058504D202A2F0D0A73 + 74617469632063686172202A2063655F64656661756C745F78706D5B5D203D20 + 7B0D0A2231362031362038302031222C0D0A22200963204E6F6E65222C0D0A22 + 2E09632023393939393939222C0D0A222B09632023394139413941222C0D0A22 + 4009632023394239423942222C0D0A222309632023394339433943222C0D0A22 + 2409632023394439443944222C0D0A222509632023394539453945222C0D0A22 + 2609632023394639463946222C0D0A222A09632023413041304130222C0D0A22 + 3D09632023333533353335222C0D0A222D09632023453845384538222C0D0A22 + 3B09632023453945394539222C0D0A223E09632023454145414541222C0D0A22 + 2C09632023454245424542222C0D0A222709632023454345434543222C0D0A22 + 2909632023454545454545222C0D0A222109632023454645464546222C0D0A22 + 7E09632023463046304630222C0D0A227B09632023463146314631222C0D0A22 + 5D09632023463246324632222C0D0A225E09632023353135313531222C0D0A22 + 2F09632023444344434443222C0D0A222809632023443944394439222C0D0A22 + 5F09632023453645364536222C0D0A223A09632023393639414332222C0D0A22 + 3C09632023393339384330222C0D0A225B09632023393839434332222C0D0A22 + 7D09632023394541324334222C0D0A227C09632023413341374336222C0D0A22 + 3109632023463446344634222C0D0A223209632023454445444544222C0D0A22 + 3309632023413441374337222C0D0A223409632023413241354336222C0D0A22 + 3509632023413841424338222C0D0A223609632023414542304341222C0D0A22 + 3709632023423442364344222C0D0A223809632023463646364636222C0D0A22 + 3909632023353235323532222C0D0A223009632023444644464446222C0D0A22 + 6109632023423242344344222C0D0A226209632023423242344343222C0D0A22 + 6309632023423842414345222C0D0A226409632023424542464430222C0D0A22 + 6509632023433443354433222C0D0A226609632023463846384638222C0D0A22 + 6709632023353335333533222C0D0A226809632023453145314531222C0D0A22 + 6909632023444444444444222C0D0A226A09632023433143334433222C0D0A22 + 6B09632023433243344432222C0D0A226C09632023433943394435222C0D0A22 + 6D09632023434643464437222C0D0A226E09632023443544354439222C0D0A22 + 6F09632023464146414641222C0D0A227009632023463346334633222C0D0A22 + 7109632023463546354635222C0D0A227209632023453945394544222C0D0A22 + 7309632023454145414544222C0D0A227409632023454445444546222C0D0A22 + 7509632023463346324632222C0D0A227609632023464346434643222C0D0A22 + 7709632023353435343534222C0D0A227809632023453445344534222C0D0A22 + 7909632023453045304530222C0D0A227A09632023453245324532222C0D0A22 + 4109632023453345334533222C0D0A224209632023463946394639222C0D0A22 + 4309632023463746374637222C0D0A224409632023453545354535222C0D0A22 + 4509632023453745374537222C0D0A224609632023464246424642222C0D0A22 + 4709632023464446444644222C0D0A224809632023464546454645222C0D0A22 + 4909632023343734373437222C0D0A224A09632023434443444344222C0D0A22 + 4B09632023433943394339222C0D0A224C09632023354335433543222C0D0A22 + 4D09632023424542454245222C0D0A224E09632023424442444244222C0D0A22 + 4F09632023334233423342222C0D0A2220202020202020202020202020202020 + 222C0D0A222020202E2B404023242526262A3D2020222C0D0A222020202D3B3E + 2C2729217E7B5D5E2020222C0D0A222020203E2F285F3A3C5B7D7C315E202022 + 2C0D0A222020203229217E333435363738392020222C0D0A2220202021302F3E + 616263646566672020222C0D0A222020207B68692C6A6B6C6D6E6F672020222C + 0D0A22202020703171387273747E7576772020222C0D0A22202020717879687A + 7A41787842772020222C0D0A2220202043447A7A414178444442772020222C0D + 0A2220202042454141784444444442772020222C0D0A22202020467647484848 + 48484848492020222C0D0A222020204748484848484848714A202020222C0D0A + 2220202048484848484848484B4C202020222C0D0A222020204D4D4D4D4D4D4E + 234F20202020222C0D0A2220202020202020202020202020202020227D3B0D0A + FB0800002F2A2058504D202A2F0D0A7374617469632063686172202A2063655F + 636C6173735F78706D5B5D203D207B0D0A2231362031362039372032222C0D0A + 2220200963204E6F6E65222C0D0A222E2009632023343033373236222C0D0A22 + 2B2009632023364635463344222C0D0A22402009632023394638383535222C0D + 0A22232009632023414339323538222C0D0A2224200963202334383346324422 + 2C0D0A22252009632023333332433145222C0D0A222620096320234130383835 + 35222C0D0A222A2009632023433541373636222C0D0A223D2009632023433041 + 323545222C0D0A222D2009632023423639393539222C0D0A223B200963202338 + 4137343434222C0D0A223E2009632023334233393334222C0D0A222C20096320 + 23344534453444222C0D0A22272009632023454443453934222C0D0A22292009 + 632023373436353439222C0D0A22212009632023433541373633222C0D0A227E + 2009632023383137313444222C0D0A227B2009632023384338363738222C0D0A + 225D2009632023413841384137222C0D0A225E2009632023453045304530222C + 0D0A222F2009632023453745374537222C0D0A22282009632023423042304230 + 222C0D0A225F2009632023453943423932222C0D0A223A200963202346454444 + 3946222C0D0A223C2009632023423039353539222C0D0A225B20096320234231 + 39313437222C0D0A227D2009632023393438453832222C0D0A227C2009632023 + 444644464446222C0D0A22312009632023443844384438222C0D0A2232200963 + 2023434243424342222C0D0A22332009632023434143414341222C0D0A223420 + 09632023414141414141222C0D0A22352009632023453943413932222C0D0A22 + 362009632023344534313236222C0D0A22372009632023414338433339222C0D + 0A22382009632023394637453242222C0D0A2239200963202336443442304122 + 2C0D0A22302009632023383738313737222C0D0A226120096320234337433743 + 37222C0D0A22622009632023434443444344222C0D0A22632009632023413541 + 354135222C0D0A22642009632023423639383543222C0D0A2265200963202346 + 4444433945222C0D0A22662009632023363135343344222C0D0A226720096320 + 23344434313234222C0D0A22682009632023393937393238222C0D0A22692009 + 632023384138343736222C0D0A226A2009632023433943394339222C0D0A226B + 2009632023433143314331222C0D0A226C2009632023413141314131222C0D0A + 226D2009632023364334433046222C0D0A226E2009632023433141313630222C + 0D0A226F2009632023383136463443222C0D0A22702009632023374336323242 + 222C0D0A22712009632023414638453342222C0D0A2272200963202342303935 + 3531222C0D0A22732009632023434243394333222C0D0A227420096320234335 + 43354335222C0D0A22752009632023433042464244222C0D0A22762009632023 + 433342424141222C0D0A22772009632023423541363833222C0D0A2278200963 + 2023423239323532222C0D0A22792009632023414639313531222C0D0A227A20 + 09632023353234363245222C0D0A22412009632023374336333238222C0D0A22 + 422009632023413037453334222C0D0A22432009632023394137383237222C0D + 0A22442009632023394638333434222C0D0A2245200963202342323941363922 + 2C0D0A22462009632023423339343533222C0D0A224720096320234146384534 + 43222C0D0A22482009632023394637453341222C0D0A22492009632023393337 + 323238222C0D0A224A2009632023384537303238222C0D0A224B200963202338 + 3336423331222C0D0A224C2009632023414538453430222C0D0A224D20096320 + 23413738373336222C0D0A224E2009632023423239313439222C0D0A224F2009 + 632023413338323246222C0D0A22502009632023394137393243222C0D0A2251 + 2009632023413138303245222C0D0A22522009632023413638353330222C0D0A + 22532009632023393837413243222C0D0A22542009632023323231433044222C + 0D0A22552009632023413838423434222C0D0A22562009632023423639373443 + 222C0D0A22572009632023423539353445222C0D0A2258200963202332333144 + 3045222C0D0A22592009632023414238463442222C0D0A225A20096320234237 + 39373530222C0D0A22602009632023383336393236222C0D0A22202E09632023 + 323431453130222C0D0A222E2E09632023414238443444222C0D0A222B2E0963 + 2023393637383243222C0D0A22402E09632023364235363146222C0D0A22232E + 09632023334633323132222C0D0A222020202020202020202020202020202020 + 202020202020202020202020202020222C0D0A22202020202020202020202020 + 2020202020202020202020202020202020202020222C0D0A2220202020202020 + 2020202E202B20402023202020202024202020202020202020222C0D0A222020 + 2020252026202A203D203D202D203B203E202C2027202920202020202020222C + 0D0A2220202020202021203D207E207B205D205E202F2028205F203A20292020 + 202020222C0D0A222020202020203C205B207D207C2031203220332034203520 + 3A203A2029202020222C0D0A2220203620372038203920302031206120332062 + 20632064206520652066202020222C0D0A222020202067203720682069206A20 + 33206A206B206C206D206E206F2020202020222C0D0A22202020202020702071 + 20722073207420752076207720782079207A2020202020222C0D0A2220202020 + 20204120422043204420452046204720482049204A20202020202020222C0D0A + 222020202020204B204C204D204E204F20502051205220522053202020202020 + 20222C0D0A222020202020205420552056205720522052205220522052205320 + 202020202020222C0D0A222020202020202020582059205A2052205220522052 + 2052206020202020202020222C0D0A2220202020202020202020202E2E2E5220 + 2B2E402E232E20202020202020202020222C0D0A222020202020202020202020 + 202020202020202020202020202020202020202020222C0D0A22202020202020 + 2020202020202020202020202020202020202020202020202020227D3B0D0A41 + 0700002F2A2058504D202A2F0D0A7374617469632063686172202A2063655F66 + 696E616C697A6174696F6E5F78706D5B5D203D207B0D0A223136203136203931 + 2031222C0D0A22200963204E6F6E65222C0D0A222E0963202339323837374322 + 2C0D0A222B09632023424639443744222C0D0A22400963202339373832354122 + 2C0D0A222309632023423239343730222C0D0A22240963202341453933374522 + 2C0D0A222509632023423739363732222C0D0A22260963202335333536333522 + 2C0D0A222A09632023343034423334222C0D0A223D0963202335333534324522 + 2C0D0A222D09632023414238453638222C0D0A223B0963202342323939383622 + 2C0D0A223E09632023423539343644222C0D0A222C0963202337303637334522 + 2C0D0A222709632023423139323731222C0D0A22290963202342363934364422 + 2C0D0A222109632023373537303545222C0D0A227E0963202335303533324522 + 2C0D0A227B09632023413838423634222C0D0A225D0963202338353741363922 + 2C0D0A225E09632023373336393346222C0D0A222F0963202344344142384222 + 2C0D0A222809632023423339363739222C0D0A225F0963202334373444333022 + 2C0D0A223A09632023393838303536222C0D0A223C0963202338433742363222 + 2C0D0A225B09632023353135383238222C0D0A227D0963202337413645343022 + 2C0D0A227C09632023424139373731222C0D0A22310963202344344143384322 + 2C0D0A223209632023413438423646222C0D0A22330963202334463535343122 + 2C0D0A223409632023383537343439222C0D0A22350963202339383834363522 + 2C0D0A223609632023344235343241222C0D0A22370963202335443545324522 + 2C0D0A223809632023413138363543222C0D0A22390963202344434231393422 + 2C0D0A223009632023443941453846222C0D0A22610963202343363946374222 + 2C0D0A226209632023414138453638222C0D0A22630963202338373738353922 + 2C0D0A226409632023354435463530222C0D0A22650963202337363642343122 + 2C0D0A226609632023394138313546222C0D0A22670963202335303534334122 + 2C0D0A226809632023423739343645222C0D0A22690963202344354141384122 + 2C0D0A226A09632023434341323746222C0D0A226B0963202342463937373122 + 2C0D0A226C09632023423839413736222C0D0A226D0963202344334241413522 + 2C0D0A226E09632023413638433636222C0D0A226F0963202336313633353322 + 2C0D0A227009632023364536363344222C0D0A22710963202334433533333322 + 2C0D0A227209632023373236393341222C0D0A22730963202342383935364522 + 2C0D0A227409632023434541343832222C0D0A22750963202343384131374422 + 2C0D0A227609632023453343334142222C0D0A22770963202345314331413922 + 2C0D0A227809632023414338453635222C0D0A22790963202338413738344222 + 2C0D0A227A09632023353735443439222C0D0A22410963202334443535323922 + 2C0D0A224209632023363436323332222C0D0A22430963202341363844363522 + 2C0D0A224409632023454243414235222C0D0A22450963202343334131374522 + 2C0D0A224609632023394438323536222C0D0A22470963202337323641334122 + 2C0D0A224809632023433041373839222C0D0A22490963202343444335423622 + 2C0D0A224A09632023353135353334222C0D0A224B0963202336463638334122 + 2C0D0A224C09632023423238463637222C0D0A224D0963202343454142384222 + 2C0D0A224E09632023364436373338222C0D0A224F0963202333333432314122 + 2C0D0A225009632023353135353434222C0D0A22510963202341414134394122 + 2C0D0A225209632023453545354535222C0D0A22530963202334323442324122 + 2C0D0A225409632023393437443531222C0D0A22550963202338323736344222 + 2C0D0A225609632023434542454139222C0D0A22570963202341354134413022 + 2C0D0A225809632023353535353338222C0D0A22590963202343344334433422 + 2C0D0A225A09632023443144314431222C0D0A22202020202020202020202020 + 20202020222C0D0A2220202020202020202020202020202020222C0D0A22202E + 2B40402324202020202020202020222C0D0A2220252620202A3D2D3B20202020 + 202020222C0D0A22203E2020202020202C27202020202020222C0D0A22202921 + 2020202020207E7B5D20202020222C0D0A22205E2F282020202020205F3A3C20 + 2020222C0D0A22205B7D7C313220202020203334352020222C0D0A2220203637 + 383930616263202064656620222C0D0A2220202067376830696A6B6C6D6E6F70 + 20222C0D0A22202020207172737475767778797A2020222C0D0A222020202020 + 4142434445464748492020222C0D0A222020202020204A4B4C4D4E4F50515220 + 222C0D0A2220202020202020535455565720202020222C0D0A22202020202020 + 2020582020595A202020222C0D0A222020202020202020202020202020202022 + 7D3B0D0AEE0100002F2A2058504D202A2F0D0A7374617469632063686172202A + 20666F6E74735F78706D5B5D203D207B0D0A22313920313720322031222C0D0A + 22200963204E6F6E65222C0D0A222E09632023303030303030222C0D0A222020 + 20202020202020202E2E2E202020202020222C0D0A2220202020202020202020 + 2E2E2E202020202020222C0D0A222020202020202020202E2E2E2E2E20202020 + 20222C0D0A2220202020202020202E2E202E2E2E2020202020222C0D0A222020 + 2020202020202E20202E2E2E2020202020222C0D0A22202020202020202E2E20 + 202E2E2E2020202020222C0D0A22202020202020202E2020202E2E2E2E202020 + 20222C0D0A222020202020202E202020202E2E2E2E20202020222C0D0A222020 + 2020202E2E20202020202E2E2E20202020222C0D0A2220202020202E2E2E2E2E + 2E2E2E2E2E20202020222C0D0A22202020202E2E2020202020202E2E2E2E2020 + 20222C0D0A22202020202E202020202020202E2E2E2E202020222C0D0A222020 + 202E2E202020202020202E2E2E2E202020222C0D0A2220202E2E202020202020 + 2020202E2E2E202020222C0D0A22202E2E2E2E202020202020202E2E2E2E2E20 + 20222C0D0A222E2E2E2E2E2E202020202E2E2E2E2E2E2E2E20222C0D0A222020 + 2020202020202020202020202020202020227D3B0D0AAB0100002F2A2058504D + 202A2F0A7374617469632063686172202A677261706869635B5D203D207B0A22 + 313620313620342031222C0A222E2063204E6F6E65222C0A222C206320233331 + 33313331222C0A222D20632023464646464646222C0A222A2063202346463030 + 3030222C0A222E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E222C0A222E2E2E2E2E2E + 2E2E2E2E2E2E2E2E2E2E222C0A222E2E2E2C2C2C2C2C2C2C2E2E2E2E2E2E222C + 0A222E2E2E2C2D2D2D2D2D2D2C2E2E2E2E2E222C0A222E2E2E2C2D2D2D2D2D2D + 2D2C2E2E2E2E222C0A222E2E2E2C2D2D2D2D2D2D2D2D2C2E2E2E222C0A222E2E + 2E2C2D2D2D2D2D2D2D2D2C2E2E2E222C0A222E2E2E2C2D2D2D2D2D2D2D2D2C2E + 2E2E222C0A222E2A2E2C2D2D2D2D2D2D2D2D2C2E2E2E222C0A222E2E2A2A2A2A + 2A2A2A2A2A2A2A2E2E2E222C0A222E2A2E2C2D2D2D2D2D2D2D2D2C2E2E2E222C + 0A222E2E2E2C2D2D2D2D2D2D2D2D2C2E2E2E222C0A222E2E2E2C2D2D2D2D2D2D + 2D2D2C2E2E2E222C0A222E2E2E2C2C2C2C2C2C2C2C2C2C2E2E2E222C0A222E2E + 2E2E2E2E2E2E2E2E2E2E2E2E2E2E222C0A222E2E2E2E2E2E2E2E2E2E2E2E2E2E + 2E2E227D0AE00A00002F2A2058504D202A2F0D0A737461746963206368617220 + 2A206D656E755F636F70795F78706D5B5D203D207B0D0A223232203233203934 + 2032222C0D0A2220200963204E6F6E65222C0D0A222E20096320233031303130 + 31222C0D0A222B2009632023423942394239222C0D0A22402009632023464546 + 454645222C0D0A22232009632023463946394639222C0D0A2224200963202337 + 3537353735222C0D0A22252009632023463546354538222C0D0A222620096320 + 23353735373532222C0D0A222A2009632023464646464646222C0D0A223D2009 + 632023413041304130222C0D0A222D2009632023393339333933222C0D0A223B + 2009632023374337433743222C0D0A223E2009632023434643364130222C0D0A + 222C2009632023443743454141222C0D0A22272009632023344334393344222C + 0D0A22292009632023364436443644222C0D0A22212009632023364336433643 + 222C0D0A227E2009632023413941394139222C0D0A227B200963202333453342 + 3331222C0D0A225D2009632023393739313738222C0D0A225E20096320233841 + 37393345222C0D0A222F2009632023433342423941222C0D0A22282009632023 + 343534333337222C0D0A225F2009632023464146414641222C0D0A223A200963 + 2023454645464546222C0D0A223C2009632023433743374337222C0D0A225B20 + 09632023443844384438222C0D0A227D2009632023443244324432222C0D0A22 + 7C2009632023374237423742222C0D0A22312009632023333132463237222C0D + 0A22322009632023383938343643222C0D0A2233200963202343344243394122 + 2C0D0A22342009632023383437323336222C0D0A223520096320233535353134 + 33222C0D0A22362009632023313831373133222C0D0A22372009632023433543 + 354335222C0D0A22382009632023413741374137222C0D0A2239200963202341 + 4441444144222C0D0A22302009632023394139413941222C0D0A226120096320 + 23394239423942222C0D0A22622009632023383638363836222C0D0A22632009 + 632023343334333433222C0D0A22642009632023313331323046222C0D0A2265 + 2009632023323232313142222C0D0A22662009632023383437303334222C0D0A + 22672009632023343434313335222C0D0A22682009632023423342334233222C + 0D0A22692009632023423442344234222C0D0A226A2009632023354435443544 + 222C0D0A226B2009632023343734373437222C0D0A226C200963202333433343 + 3343222C0D0A226D2009632023343034303430222C0D0A226E20096320234436 + 44364436222C0D0A226F2009632023313931383134222C0D0A22702009632023 + 383236463334222C0D0A22712009632023343434313336222C0D0A2272200963 + 2023313631353131222C0D0A22732009632023313431333130222C0D0A227420 + 09632023384638463846222C0D0A22752009632023393839383938222C0D0A22 + 762009632023433643364336222C0D0A22772009632023303230323032222C0D + 0A22782009632023383036463334222C0D0A2279200963202337463643333322 + 2C0D0A227A2009632023334133373245222C0D0A224120096320233633363336 + 33222C0D0A22422009632023373637363736222C0D0A22432009632023374636 + 453333222C0D0A22442009632023343234303335222C0D0A2245200963202331 + 3531343131222C0D0A22462009632023344434443439222C0D0A224720096320 + 23353135313531222C0D0A22482009632023333533353335222C0D0A22492009 + 632023323032303230222C0D0A224A2009632023324432443244222C0D0A224B + 2009632023334533453345222C0D0A224C2009632023313731373137222C0D0A + 224D2009632023374436393246222C0D0A224E2009632023314131413141222C + 0D0A224F2009632023314431433137222C0D0A22502009632023323632353146 + 222C0D0A22512009632023323932373231222C0D0A2252200963202337463642 + 3246222C0D0A22532009632023303230323031222C0D0A225420096320234131 + 39413746222C0D0A22552009632023413339443831222C0D0A22562009632023 + 383036433330222C0D0A22572009632023313030463043222C0D0A2258200963 + 2023413941313836222C0D0A22592009632023304430423035222C0D0A225A20 + 09632023383937383344222C0D0A22602009632023374136373245222C0D0A22 + 202E09632023373636353241222C0D0A222E2E09632023373836373243222C0D + 0A22202020202020202020202020202020202020202020202E202E202E202E20 + 2020202020202020202020202020222C0D0A22202020202020202020202E202E + 202E202E202E202E202B204020232024202E202E202E202E202E202E20202022 + 2C0D0A2220202020202020202E202520252025202520252026202A203D202D20 + 3B20262025202520252025203E202E20222C0D0A2220202020202020202E2025 + 202C202C202C202C2027202A20292021207E207B205D202C202C202C205E202E + 20222C0D0A2220202020202020202E2025202F202F202F2028205F203A203C20 + 5B207D207C20312032202F20332034202E20222C0D0A2220202020202020202E + 2025202C203520362037203820382039203020612062206320642065202C2066 + 202E20222C0D0A2220202020202020202E2025206720682069206A206B206C20 + 6C206C206C206C206D2069206E206F2070202E20222C0D0A2220202020202020 + 202E20252071202A202A20692069206920692069206920692069202A202A2072 + 2070202E20222C0D0A2220202020202020202E20252073202A20382074207420 + 75202A20762074202A20742076202A20772078202E20222C0D0A222020202020 + 2020202E20252072202A202A202A202A202A202A202A202A202A202A202A202A + 20772079202E20222C0D0A2220202020202020202E2025207A202A2029204120 + 2A204220742076202A20762074202A202A20642043202E20222C0D0A22202020 + 20202020202E20252044202A202A202A202A202A202A202A202A202A202A202A + 202A20452070202E20222C0D0A2220202E202E202E202E204620642047204820 + 49204A204B204C20742076202A20752074202A20642078202E20222C0D0A222E + 2068202A202A202A202A202A202A202A202A202A202A206E2049202A202A202A + 202A202A2072204D202E20222C0D0A222E202A202A202A202A202A202A202A20 + 2A202A202A202A202A204E202A202A202A202A206E204F204D202E20222C0D0A + 222E202A2038207420742075202A20762074202A20742076202A202E20502050 + 205020502051202C2052202E20222C0D0A222E202A202A202A202A202A202A20 + 2A202A202A202A202A202A20532054205420542054205420552056202E20222C + 0D0A222E202A20292041202A204220742076202A20762074202A202A2072202C + 202C202C202C202C202C2079202E20222C0D0A222E202A202A202A202A202A20 + 2A202A202A202A202A202A202A20572054205420542054205420582079202E20 + 222C0D0A222E202A203820742074202A207420742076202A20752074202A2072 + 202C202C202C202C202C202C2056202E20222C0D0A222E202A202A202A202A20 + 2A202A202A202A202A202A202A202A20592056205A20702070206020202E2E2E + 2E20222C0D0A222E206E202A202A202A202A202A202A202A202A202A202A206E + 202E202E202E202E202E202E202E202E202020222C0D0A2220202E202E202E20 + 2E202E202E202E202E202E202E202E202E202020202020202020202020202020 + 20202020227D3B0D0AB70100002F2A2058504D202A2F0D0A7374617469632063 + 686172202A206D656E755F756E696E64656E745F78706D5B5D203D207B0D0A22 + 313820313520322031222C0D0A22200963204E6F6E65222C0D0A222E09632023 + 303130313031222C0D0A222E2E2E2E2E2E2E2E2E2E2E20202020202020222C0D + 0A22202020202020202020202020202020202020222C0D0A222E202E202E202E + 202E202E202E202E202E20222C0D0A2220202020202020202020202020202020 + 2020222C0D0A2220202E20202020202E2E2E2E2E2E2E2E2E2E222C0D0A22202E + 2E2E2E2E20202E2E2E2E2E2E2E2E2E2E222C0D0A222E2E2E2E2E2E2020202020 + 20202020202020222C0D0A22202E2E2E2E2E20202E2E2E2E2E2E2E2E2020222C + 0D0A2220202E20202020202E2E2E2E2E2E2E2E2020222C0D0A22202020202020 + 202020202020202020202020222C0D0A222E202E202E202E202E202E202E202E + 202E20222C0D0A22202020202020202020202020202020202020222C0D0A222E + 2E2E2E2E2E2E2E2E2E2E2E2E2020202020222C0D0A2220202020202020202020 + 2020202020202020222C0D0A222E2E2E2E2E2E2E2E2E2E2E2020202020202022 + 7D3B0D0AC50100002F2A2058504D202A2F0D0A7374617469632063686172202A + 206D656E755F696E64656E745F78706D5B5D203D207B0D0A2231382031352033 + 2031222C0D0A22200963204E6F6E65222C0D0A222E0963202330313031303122 + 2C0D0A222B09632023303030303030222C0D0A222E2E2E2E2E2E2E2E2E2E2E20 + 202020202020222C0D0A22202020202020202020202020202020202020222C0D + 0A222E202E202E202E202E202E202E202E202E20222C0D0A2220202020202020 + 2020202020202020202020222C0D0A22202020202B2020202E2E2E2E2E2E2E2E + 2E2E222C0D0A22202B2E2E2E2E20202E2E2E2E2E2E2E2E2E2E222C0D0A22202E + 2E2E2E2E2E2020202020202020202020222C0D0A22202B2E2E2E2E20202E2E2E + 2E2E2E2E2E2020222C0D0A22202020202B2020202E2E2E2E2E2E2E2E2020222C + 0D0A22202020202020202020202020202020202020222C0D0A222E202E202E20 + 2E202E202E202E202E202E20222C0D0A22202020202020202020202020202020 + 202020222C0D0A222E2E2E2E2E2E2E2E2E2E2E2E2E2020202020222C0D0A2220 + 2020202020202020202020202020202020222C0D0A222E2E2E2E2E2E2E2E2E2E + 2E20202020202020227D3B0D0A730200002F2A2058504D202A2F0A7374617469 + 632063686172202A20756E72656769737465726564636F6D706F6E656E745F78 + 706D5B5D203D207B0A2231332031372031382031222C0A22200963204E6F6E65 + 222C0A222E09632023303033383542222C0A222B09632023303030303030222C + 0A224009632023323938324330222C0A222309632023303035323843222C0A22 + 2409632023303033453636222C0A222509632023364241414432222C0A222609 + 632023303034353732222C0A222A09632023344639374341222C0A223D096320 + 23324138324246222C0A222D09632023343138464336222C0A223B0963202330 + 3034303641222C0A223E09632023343038464337222C0A222C09632023363641 + 374431222C0A222709632023303035333845222C0A2229096320233842424244 + 43222C0A222109632023303035413939222C0A227E0963202330303538393622 + 2C0A2220202E2E2E2E2E2E2B20202020222C0A22202E40232B2B2B23232B2B20 + 20222C0A222425232B2020202E4023232B20222C0A22262A2B20202020202E40 + 232B20222C0A222E3D232B20202020242D232B20222C0A22202E23232B202020 + 3B3E232B20222C0A2220202B2B2B20202E2C272B2020222C0A22202020202020 + 2E29212B202020222C0A2220202020202E2C7E2B20202020222C0A2220202020 + 2E40232B2020202020222C0A22202020202E40232B2020202020222C0A222020 + 2020202B2B202020202020222C0A2220202020202020202020202020222C0A22 + 20202020202E2E202020202020222C0A22202020202E2C232B2020202020222C + 0A2220202020202B2B202020202020222C0A2220202020202020202020202020 + 227D3B0A + } + end +end diff --git a/ide/procedurelist.lrs b/ide/procedurelist.lrs new file mode 100644 index 0000000000..77c316eb27 --- /dev/null +++ b/ide/procedurelist.lrs @@ -0,0 +1,292 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TProcedureListForm','FORMDATA',[ + 'TPF0'#18'TProcedureListForm'#17'ProcedureListForm'#13'ActiveControl'#7#9'cbO' + +'bjects'#7'Caption'#6#17'Procedure List - '#12'ClientHeight'#3','#1#11'Clien' + +'tWidth'#3#6#2#8'OnCreate'#7#10'FormCreate'#10'OnKeyPress'#7#12'FormKeyPress' + +#8'OnResize'#7#10'FormResize'#6'OnShow'#7#8'FormShow'#13'PixelsPerInch'#2'K' + +#8'Position'#7#9'poDefault'#18'HorzScrollBar.Page'#3#5#2#18'VertScrollBar.Pa' + +'ge'#3'+'#1#4'Left'#3'x'#1#6'Height'#3','#1#3'Top'#3#16#1#5'Width'#3#6#2#0#10 + +'TStatusBar'#9'StatusBar'#6'Panels'#14#1#5'Width'#3#144#1#0#1#5'Width'#2'2'#0 + +#0#11'SimplePanel'#8#6'Height'#2#24#3'Top'#3#20#1#5'Width'#3#6#2#0#0#8'TTool' + +'Bar'#2'TB'#7'Caption'#6#2'TB'#4'Flat'#9#6'Height'#2#26#6'Images'#7#10'Image' + +'List1'#8'TabOrder'#2#1#6'Height'#2#26#5'Width'#3#6#2#0#11'TToolButton'#7'tb' + +'About'#7'Caption'#6#7'tbAbout'#10'ImageIndex'#2#9#14'ParentShowHint'#8#8'Sh' + +'owHint'#9#7'OnClick'#7#12'tbAboutClick'#4'Left'#3#136#0#6'Height'#2#22#4'Hi' + +'nt'#6#5'About'#3'Top'#2#2#5'Width'#2#23#0#0#11'TToolButton'#11'ToolButton2' + +#7'Caption'#6#11'ToolButton2'#5'Style'#7#10'tbsDivider'#5'Width'#2#5#4'Left' + +#3#131#0#6'Height'#2#22#3'Top'#2#2#5'Width'#2#5#0#0#11'TToolButton'#8'tbJump' + +'To'#7'Caption'#6#4'Goto'#10'ImageIndex'#2#5#14'ParentShowHint'#8#8'ShowHint' + +#9#7'OnClick'#7#10'LVDblClick'#4'Left'#2'l'#6'Height'#2#22#4'Hint'#6#17'Jump' + +' To Selection'#3'Top'#2#2#5'Width'#2#23#0#0#11'TToolButton'#11'ToolButton4' + +#7'Caption'#6#11'ToolButton4'#5'Style'#7#10'tbsDivider'#5'Width'#2#5#4'Left' + +#2'g'#6'Height'#2#22#3'Top'#2#2#5'Width'#2#5#0#0#11'TToolButton'#11'tbFilter' + +'Any'#7'Caption'#6#11'tbFilterAny'#4'Down'#9#7'Grouped'#9#10'ImageIndex'#2#8 + +#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#4'Left'#2'P'#6'He' + +'ight'#2#22#4'Hint'#6'%Filter by matching any part of method'#3'Top'#2#2#5'W' + +'idth'#2#23#0#0#11'TToolButton'#13'tbFilterStart'#7'Caption'#6#13'tbFilterSt' + +'art'#7'Grouped'#9#10'ImageIndex'#2#7#14'ParentShowHint'#8#8'ShowHint'#9#5'S' + +'tyle'#7#8'tbsCheck'#4'Left'#2'9'#6'Height'#2#22#4'Hint'#6'''Filter by match' + +'ing with start of method'#3'Top'#2#2#5'Width'#2#23#0#0#11'TToolButton'#11'T' + +'oolButton7'#7'Caption'#6#11'ToolButton7'#5'Style'#7#10'tbsDivider'#5'Width' + +#2#5#4'Left'#2'4'#6'Height'#2#22#3'Top'#2#2#5'Width'#2#5#0#0#11'TToolButton' + +#12'tbChangeFont'#7'Caption'#6#12'tbChangeFont'#10'ImageIndex'#2#4#14'Parent' + +'ShowHint'#8#8'ShowHint'#9#4'Left'#2#29#6'Height'#2#22#4'Hint'#6#11'Change F' + +'ont'#3'Top'#2#2#5'Width'#2#23#0#0#11'TToolButton'#11'ToolButton9'#7'Caption' + +#6#11'ToolButton9'#5'Style'#7#10'tbsDivider'#5'Width'#2#5#4'Left'#2#24#6'Hei' + +'ght'#2#22#3'Top'#2#2#5'Width'#2#5#0#0#11'TToolButton'#6'tbCopy'#7'Caption'#6 + +#6'tbCopy'#10'ImageIndex'#2#6#14'ParentShowHint'#8#8'ShowHint'#9#7'OnClick'#7 + +#11'tbCopyClick'#4'Left'#2#1#6'Height'#2#22#4'Hint'#6'!Copy method name to t' + +'he clipboard'#3'Top'#2#2#5'Width'#2#23#0#0#0#6'TPanel'#9'pnlHeader'#5'Align' + +#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'&'#11'ClientWidth' + +#3#6#2#5'Color'#7#6'clLime'#11'ParentColor'#8#8'TabOrder'#2#2#6'Height'#2'&' + +#3'Top'#2#26#5'Width'#3#6#2#0#6'TPanel'#10'pnlObjects'#5'Align'#7#8'alClient' + +#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'&'#11'ClientWidth'#3#6#1#11'P' + +'arentColor'#8#8'TabOrder'#2#0#4'Left'#3#0#1#6'Height'#2'&'#5'Width'#3#6#1#0 + +#6'TLabel'#10'lblObjects'#7'Caption'#6#8'&Objects'#5'Color'#7#6'clNone'#11'P' + +'arentColor'#8#21'AnchorSideTop.Control'#7#9'cbObjects'#18'AnchorSideTop.Sid' + +'e'#7#9'asrCenter'#4'Left'#2#8#6'Height'#2#17#3'Top'#2#12#5'Width'#2'D'#0#0#9 + +'TComboBox'#9'cbObjects'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#16'Au' + +'toCompleteText'#11#22'cbactEndOfLineComplete'#20'cbactSearchAscending'#0#9 + +'MaxLength'#2#0#8'OnChange'#7#15'cbObjectsChange'#6'Sorted'#9#5'Style'#7#14 + +'csDropDownList'#8'TabOrder'#2#0#4'Left'#2'@'#6'Height'#2#24#3'Top'#2#8#5'Wi' + +'dth'#3#191#0#0#0#0#6'TPanel'#9'pnlSearch'#5'Align'#7#6'alLeft'#10'BevelOute' + +'r'#7#6'bvNone'#12'ClientHeight'#2'&'#11'ClientWidth'#3#0#1#11'ParentColor'#8 + +#8'TabOrder'#2#1#6'Height'#2'&'#5'Width'#3#0#1#0#6'TLabel'#9'lblSearch'#7'Ca' + +'ption'#6#7'&Search'#5'Color'#7#6'clNone'#11'ParentColor'#8#21'AnchorSideTop' + +'.Control'#7#9'edMethods'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#11 + +#6'Height'#2#17#3'Top'#2#11#5'Width'#2'?'#0#0#5'TEdit'#9'edMethods'#7'Anchor' + +'s'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'OnChange'#7#15'edMethodsChange'#9'O' + +'nKeyDown'#7#16'edMethodsKeyDown'#10'OnKeyPress'#7#17'edMethodsKeyPress'#8'T' + +'abOrder'#2#0#4'Left'#2'D'#6'Height'#2#23#3'Top'#2#8#5'Width'#3#180#0#0#0#0#0 + +#9'TListView'#2'LV'#5'Align'#7#8'alClient'#7'Columns'#14#1#0#1#7'Caption'#6#9 + +'Procedure'#5'Width'#3','#1#0#1#7'Caption'#6#4'Type'#0#1#7'Caption'#6#4'Line' + +#0#0#13'HideSelection'#8#10'Items.Data'#10'D'#0#0#0'E'#255#255#255#1#0#0#0#0 + +#0#0#0#255#255#255#255#255#255#255#255#3#0#0#0#0#0#0#0#0#14'TForm.TestFour'#8 + +'Function'#2'24'#255#255#255#255#255#255#255#255#255#255#255#255#8'ReadOnly' + +#9#9'RowSelect'#9#10'ScrollBars'#7#10'ssAutoBoth'#11'SmallImages'#7#10'Image' + ,'List1'#8'TabOrder'#2#0#9'ViewStyle'#7#8'vsReport'#10'OnDblClick'#7#10'LVDbl' + +'Click'#10'OnKeyPress'#7#17'edMethodsKeyPress'#12'OnSelectItem'#7#12'LVSelec' + +'tItem'#6'Height'#3#212#0#3'Top'#2'@'#5'Width'#3#6#2#0#0#10'TImageList'#10'I' + +'mageList1'#4'left'#3#210#0#3'top'#3#148#1#6'Bitmap'#10#228'-'#0#0'li'#10#0#0 + +#0#16#0#0#0#16#0#0#0'~'#2#0#0'/* XPM */'#13#10'static char * ce_procedure_xp' + +'m[] = {'#13#10'"16 16 15 1",'#13#10'" '#9'c None",'#13#10'".'#9'c #3A3A3A",' + +#13#10'"+'#9'c #919191",'#13#10'"@'#9'c #8B8B8B",'#13#10'"#'#9'c #CCCCCC",' + +#13#10'"$'#9'c #D5D5D5",'#13#10'"%'#9'c #ADADAD",'#13#10'"&'#9'c #C4C4C4",' + +#13#10'"*'#9'c #B4B4B4",'#13#10'"='#9'c #A1A1A1",'#13#10'"-'#9'c #989898",' + +#13#10'";'#9'c #A2A2A2",'#13#10'">'#9'c #C6C6C6",'#13#10'",'#9'c #D8D8D8",' + +#13#10'"'''#9'c #4C4C4C",'#13#10'" .... ",'#13#10'" .. .++. .. ' + +' ",'#13#10'" .@..#$$#..@. ",'#13#10'" .@%&*=--=*&%@. ",'#13#10'" ..&;@>,,' + +'>@;&.. ",'#13#10'" .*=>*''''*>=*. ",'#13#10'"..#=>*. .*>=#..",'#13#10'".' + +'+$-,'' '',-$+.",'#13#10'".+$-,'' '',-$+.",'#13#10'"..#=>*. .*>=#..",' + +#13#10'" .*=>*''''*>=*. ",'#13#10'" ..&;@>,,>@;&.. ",'#13#10'" .@%&*=--=*&' + +'%@. ",'#13#10'" .@..#$$#..@. ",'#13#10'" .. .++. .. ",'#13#10'" ' + +'.... "};'#13#10#140#6#0#0'/* XPM */'#13#10'static char * ce_default_xp' + +'m[] = {'#13#10'"16 16 80 1",'#13#10'" '#9'c None",'#13#10'".'#9'c #999999",' + +#13#10'"+'#9'c #9A9A9A",'#13#10'"@'#9'c #9B9B9B",'#13#10'"#'#9'c #9C9C9C",' + +#13#10'"$'#9'c #9D9D9D",'#13#10'"%'#9'c #9E9E9E",'#13#10'"&'#9'c #9F9F9F",' + +#13#10'"*'#9'c #A0A0A0",'#13#10'"='#9'c #353535",'#13#10'"-'#9'c #E8E8E8",' + +#13#10'";'#9'c #E9E9E9",'#13#10'">'#9'c #EAEAEA",'#13#10'",'#9'c #EBEBEB",' + +#13#10'"'''#9'c #ECECEC",'#13#10'")'#9'c #EEEEEE",'#13#10'"!'#9'c #EFEFEF",' + +#13#10'"~'#9'c #F0F0F0",'#13#10'"{'#9'c #F1F1F1",'#13#10'"]'#9'c #F2F2F2",' + +#13#10'"^'#9'c #515151",'#13#10'"/'#9'c #DCDCDC",'#13#10'"('#9'c #D9D9D9",' + +#13#10'"_'#9'c #E6E6E6",'#13#10'":'#9'c #969AC2",'#13#10'"<'#9'c #9398C0",' + +#13#10'"['#9'c #989CC2",'#13#10'"}'#9'c #9EA2C4",'#13#10'"|'#9'c #A3A7C6",' + +#13#10'"1'#9'c #F4F4F4",'#13#10'"2'#9'c #EDEDED",'#13#10'"3'#9'c #A4A7C7",' + +#13#10'"4'#9'c #A2A5C6",'#13#10'"5'#9'c #A8ABC8",'#13#10'"6'#9'c #AEB0CA",' + +#13#10'"7'#9'c #B4B6CD",'#13#10'"8'#9'c #F6F6F6",'#13#10'"9'#9'c #525252",' + +#13#10'"0'#9'c #DFDFDF",'#13#10'"a'#9'c #B2B4CD",'#13#10'"b'#9'c #B2B4CC",' + +#13#10'"c'#9'c #B8BACE",'#13#10'"d'#9'c #BEBFD0",'#13#10'"e'#9'c #C4C5D3",' + +#13#10'"f'#9'c #F8F8F8",'#13#10'"g'#9'c #535353",'#13#10'"h'#9'c #E1E1E1",' + +#13#10'"i'#9'c #DDDDDD",'#13#10'"j'#9'c #C1C3D3",'#13#10'"k'#9'c #C2C4D2",' + +#13#10'"l'#9'c #C9C9D5",'#13#10'"m'#9'c #CFCFD7",'#13#10'"n'#9'c #D5D5D9",' + +#13#10'"o'#9'c #FAFAFA",'#13#10'"p'#9'c #F3F3F3",'#13#10'"q'#9'c #F5F5F5",' + +#13#10'"r'#9'c #E9E9ED",'#13#10'"s'#9'c #EAEAED",'#13#10'"t'#9'c #EDEDEF",' + +#13#10'"u'#9'c #F3F2F2",'#13#10'"v'#9'c #FCFCFC",'#13#10'"w'#9'c #545454",' + +#13#10'"x'#9'c #E4E4E4",'#13#10'"y'#9'c #E0E0E0",'#13#10'"z'#9'c #E2E2E2",' + +#13#10'"A'#9'c #E3E3E3",'#13#10'"B'#9'c #F9F9F9",'#13#10'"C'#9'c #F7F7F7",' + +#13#10'"D'#9'c #E5E5E5",'#13#10'"E'#9'c #E7E7E7",'#13#10'"F'#9'c #FBFBFB",' + +#13#10'"G'#9'c #FDFDFD",'#13#10'"H'#9'c #FEFEFE",'#13#10'"I'#9'c #474747",' + +#13#10'"J'#9'c #CDCDCD",'#13#10'"K'#9'c #C9C9C9",'#13#10'"L'#9'c #5C5C5C",' + +#13#10'"M'#9'c #BEBEBE",'#13#10'"N'#9'c #BDBDBD",'#13#10'"O'#9'c #3B3B3B",' + +#13#10'" ",'#13#10'" .+@@#$%&&*= ",'#13#10'" -;>,'')!~{]' + +'^ ",'#13#10'" >/(_:<[}|1^ ",'#13#10'" 2)!~3456789 ",'#13#10'" !0/>' + +'abcdefg ",'#13#10'" {hi,jklmnog ",'#13#10'" p1q8rst~uvw ",'#13#10'" ' + +' qxyhzzAxxBw ",'#13#10'" CDzzAAxDDBw ",'#13#10'" BEAAxDDDDBw ",'#13 + +#10'" FvGHHHHHHHI ",'#13#10'" GHHHHHHHqJ ",'#13#10'" HHHHHHHHKL "' + +','#13#10'" MMMMMMN#O ",'#13#10'" "};'#13#10#251#8#0#0'/' + +'* XPM */'#13#10'static char * ce_class_xpm[] = {'#13#10'"16 16 97 2",'#13#10 + +'" '#9'c None",'#13#10'". '#9'c #403726",'#13#10'"+ '#9'c #6F5F3D",'#13#10 + +'"@ '#9'c #9F8855",'#13#10'"# '#9'c #AC9258",'#13#10'"$ '#9'c #483F2D",'#13 + +#10'"% '#9'c #332C1E",'#13#10'"& '#9'c #A08855",'#13#10'"* '#9'c #C5A766",' + +#13#10'"= '#9'c #C0A25E",'#13#10'"- '#9'c #B69959",'#13#10'"; '#9'c #8A7444"' + +','#13#10'"> '#9'c #3B3934",'#13#10'", '#9'c #4E4E4D",'#13#10'"'' '#9'c #EDC' + +'E94",'#13#10'") '#9'c #746549",'#13#10'"! '#9'c #C5A763",'#13#10'"~ '#9'c #' + +'81714D",'#13#10'"{ '#9'c #8C8678",'#13#10'"] '#9'c #A8A8A7",'#13#10'"^ '#9 + +'c #E0E0E0",'#13#10'"/ '#9'c #E7E7E7",'#13#10'"( '#9'c #B0B0B0",'#13#10'"_ ' + +#9'c #E9CB92",'#13#10'": '#9'c #FEDD9F",'#13#10'"< '#9'c #B09559",'#13#10'"[' + +' '#9'c #B19147",'#13#10'"} '#9'c #948E82",'#13#10'"| '#9'c #DFDFDF",'#13#10 + +'"1 '#9'c #D8D8D8",'#13#10'"2 '#9'c #CBCBCB",'#13#10'"3 '#9'c #CACACA",'#13 + +#10'"4 '#9'c #AAAAAA",'#13#10'"5 '#9'c #E9CA92",'#13#10'"6 '#9'c #4E4126",' + +#13#10'"7 '#9'c #AC8C39",'#13#10'"8 '#9'c #9F7E2B",'#13#10'"9 '#9'c #6D4B0A"' + ,','#13#10'"0 '#9'c #878177",'#13#10'"a '#9'c #C7C7C7",'#13#10'"b '#9'c #CDCD' + +'CD",'#13#10'"c '#9'c #A5A5A5",'#13#10'"d '#9'c #B6985C",'#13#10'"e '#9'c #F' + +'DDC9E",'#13#10'"f '#9'c #61543D",'#13#10'"g '#9'c #4D4124",'#13#10'"h '#9'c' + +' #997928",'#13#10'"i '#9'c #8A8476",'#13#10'"j '#9'c #C9C9C9",'#13#10'"k '#9 + +'c #C1C1C1",'#13#10'"l '#9'c #A1A1A1",'#13#10'"m '#9'c #6C4C0F",'#13#10'"n ' + +#9'c #C1A160",'#13#10'"o '#9'c #816F4C",'#13#10'"p '#9'c #7C622B",'#13#10'"q' + +' '#9'c #AF8E3B",'#13#10'"r '#9'c #B09551",'#13#10'"s '#9'c #CBC9C3",'#13#10 + +'"t '#9'c #C5C5C5",'#13#10'"u '#9'c #C0BFBD",'#13#10'"v '#9'c #C3BBAA",'#13 + +#10'"w '#9'c #B5A683",'#13#10'"x '#9'c #B29252",'#13#10'"y '#9'c #AF9151",' + +#13#10'"z '#9'c #52462E",'#13#10'"A '#9'c #7C6328",'#13#10'"B '#9'c #A07E34"' + +','#13#10'"C '#9'c #9A7827",'#13#10'"D '#9'c #9F8344",'#13#10'"E '#9'c #B29A' + +'69",'#13#10'"F '#9'c #B39453",'#13#10'"G '#9'c #AF8E4C",'#13#10'"H '#9'c #9' + +'F7E3A",'#13#10'"I '#9'c #937228",'#13#10'"J '#9'c #8E7028",'#13#10'"K '#9'c' + +' #836B31",'#13#10'"L '#9'c #AE8E40",'#13#10'"M '#9'c #A78736",'#13#10'"N '#9 + +'c #B29149",'#13#10'"O '#9'c #A3822F",'#13#10'"P '#9'c #9A792C",'#13#10'"Q ' + +#9'c #A1802E",'#13#10'"R '#9'c #A68530",'#13#10'"S '#9'c #987A2C",'#13#10'"T' + +' '#9'c #221C0D",'#13#10'"U '#9'c #A88B44",'#13#10'"V '#9'c #B6974C",'#13#10 + +'"W '#9'c #B5954E",'#13#10'"X '#9'c #231D0E",'#13#10'"Y '#9'c #AB8F4B",'#13 + +#10'"Z '#9'c #B79750",'#13#10'"` '#9'c #836926",'#13#10'" .'#9'c #241E10",' + +#13#10'"..'#9'c #AB8D4D",'#13#10'"+.'#9'c #96782C",'#13#10'"@.'#9'c #6B561F"' + +','#13#10'"#.'#9'c #3F3212",'#13#10'" ",'#13 + +#10'" ",'#13#10'" . + @ # $ ' + +' ",'#13#10'" % & * = = - ; > , '' ) ",'#13#10'" ! = ~ { ] ' + +'^ / ( _ : ) ",'#13#10'" < [ } | 1 2 3 4 5 : : ) ",'#13#10'" 6 7' + +' 8 9 0 1 a 3 b c d e e f ",'#13#10'" g 7 h i j 3 j k l m n o ",'#13 + +#10'" p q r s t u v w x y z ",'#13#10'" A B C D E F G H I J ' + +' ",'#13#10'" K L M N O P Q R R S ",'#13#10'" T U V W R R' + +' R R R S ",'#13#10'" X Y Z R R R R R ` ",'#13#10'" ' + +' ...R +.@.#. ",'#13#10'" ",'#13 + +#10'" "};'#13#10'A'#7#0#0'/* XPM */'#13#10'st' + +'atic char * ce_finalization_xpm[] = {'#13#10'"16 16 91 1",'#13#10'" '#9'c N' + +'one",'#13#10'".'#9'c #92877C",'#13#10'"+'#9'c #BF9D7D",'#13#10'"@'#9'c #978' + +'25A",'#13#10'"#'#9'c #B29470",'#13#10'"$'#9'c #AE937E",'#13#10'"%'#9'c #B79' + +'672",'#13#10'"&'#9'c #535635",'#13#10'"*'#9'c #404B34",'#13#10'"='#9'c #535' + +'42E",'#13#10'"-'#9'c #AB8E68",'#13#10'";'#9'c #B29986",'#13#10'">'#9'c #B59' + +'46D",'#13#10'",'#9'c #70673E",'#13#10'"'''#9'c #B19271",'#13#10'")'#9'c #B6' + +'946D",'#13#10'"!'#9'c #75705E",'#13#10'"~'#9'c #50532E",'#13#10'"{'#9'c #A8' + +'8B64",'#13#10'"]'#9'c #857A69",'#13#10'"^'#9'c #73693F",'#13#10'"/'#9'c #D4' + +'AB8B",'#13#10'"('#9'c #B39679",'#13#10'"_'#9'c #474D30",'#13#10'":'#9'c #98' + +'8056",'#13#10'"<'#9'c #8C7B62",'#13#10'"['#9'c #515828",'#13#10'"}'#9'c #7A' + +'6E40",'#13#10'"|'#9'c #BA9771",'#13#10'"1'#9'c #D4AC8C",'#13#10'"2'#9'c #A4' + +'8B6F",'#13#10'"3'#9'c #4F5541",'#13#10'"4'#9'c #857449",'#13#10'"5'#9'c #98' + +'8465",'#13#10'"6'#9'c #4B542A",'#13#10'"7'#9'c #5D5E2E",'#13#10'"8'#9'c #A1' + +'865C",'#13#10'"9'#9'c #DCB194",'#13#10'"0'#9'c #D9AE8F",'#13#10'"a'#9'c #C6' + +'9F7B",'#13#10'"b'#9'c #AA8E68",'#13#10'"c'#9'c #877859",'#13#10'"d'#9'c #5D' + +'5F50",'#13#10'"e'#9'c #766B41",'#13#10'"f'#9'c #9A815F",'#13#10'"g'#9'c #50' + +'543A",'#13#10'"h'#9'c #B7946E",'#13#10'"i'#9'c #D5AA8A",'#13#10'"j'#9'c #CC' + +'A27F",'#13#10'"k'#9'c #BF9771",'#13#10'"l'#9'c #B89A76",'#13#10'"m'#9'c #D3' + +'BAA5",'#13#10'"n'#9'c #A68C66",'#13#10'"o'#9'c #616353",'#13#10'"p'#9'c #6E' + +'663D",'#13#10'"q'#9'c #4C5333",'#13#10'"r'#9'c #72693A",'#13#10'"s'#9'c #B8' + +'956E",'#13#10'"t'#9'c #CEA482",'#13#10'"u'#9'c #C8A17D",'#13#10'"v'#9'c #E3' + +'C3AB",'#13#10'"w'#9'c #E1C1A9",'#13#10'"x'#9'c #AC8E65",'#13#10'"y'#9'c #8A' + +'784B",'#13#10'"z'#9'c #575D49",'#13#10'"A'#9'c #4D5529",'#13#10'"B'#9'c #64' + +'6232",'#13#10'"C'#9'c #A68D65",'#13#10'"D'#9'c #EBCAB5",'#13#10'"E'#9'c #C3' + +'A17E",'#13#10'"F'#9'c #9D8256",'#13#10'"G'#9'c #726A3A",'#13#10'"H'#9'c #C0' + +'A789",'#13#10'"I'#9'c #CDC5B6",'#13#10'"J'#9'c #515534",'#13#10'"K'#9'c #6F' + +'683A",'#13#10'"L'#9'c #B28F67",'#13#10'"M'#9'c #CEAB8B",'#13#10'"N'#9'c #6D' + +'6738",'#13#10'"O'#9'c #33421A",'#13#10'"P'#9'c #515544",'#13#10'"Q'#9'c #AA' + +'A49A",'#13#10'"R'#9'c #E5E5E5",'#13#10'"S'#9'c #424B2A",'#13#10'"T'#9'c #94' + +'7D51",'#13#10'"U'#9'c #82764B",'#13#10'"V'#9'c #CEBEA9",'#13#10'"W'#9'c #A5' + +'A4A0",'#13#10'"X'#9'c #555538",'#13#10'"Y'#9'c #C4C4C4",'#13#10'"Z'#9'c #D1' + +'D1D1",'#13#10'" ",'#13#10'" ",'#13#10'" .+@@#' + +'$ ",'#13#10'" %& *=-; ",'#13#10'" > ,'' ",'#13#10 + +'" )! ~{] ",'#13#10'" ^/( _:< ",'#13#10'" [}|12 345 ",' + ,#13#10'" 67890abc def ",'#13#10'" g7h0ijklmnop ",'#13#10'" qrstuvwxyz' + +' ",'#13#10'" ABCDEFGHI ",'#13#10'" JKLMNOPQR ",'#13#10'" S' + +'TUVW ",'#13#10'" X YZ ",'#13#10'" "};'#13#10#238 + +#1#0#0'/* XPM */'#13#10'static char * fonts_xpm[] = {'#13#10'"19 17 2 1",'#13 + +#10'" '#9'c None",'#13#10'".'#9'c #000000",'#13#10'" ... ",'#13 + +#10'" ... ",'#13#10'" ..... ",'#13#10'" .. ' + +'... ",'#13#10'" . ... ",'#13#10'" .. ... ",'#13 + +#10'" . .... ",'#13#10'" . .... ",'#13#10'" .. ' + +' ... ",'#13#10'" .......... ",'#13#10'" .. .... ",'#13 + +#10'" . .... ",'#13#10'" .. .... ",'#13#10'" .. ' + +' ... ",'#13#10'" .... ..... ",'#13#10'"...... ........ ",'#13 + +#10'" "};'#13#10#171#1#0#0'/* XPM */'#10'static char *grap' + +'hic[] = {'#10'"16 16 4 1",'#10'". c None",'#10'", c #313131",'#10'"- c #FFF' + +'FFF",'#10'"* c #FF0000",'#10'"................",'#10'"................",'#10 + +'"...,,,,,,,......",'#10'"...,------,.....",'#10'"...,-------,....",'#10'"..' + +'.,--------,...",'#10'"...,--------,...",'#10'"...,--------,...",'#10'".*.,-' + +'-------,...",'#10'"..***********...",'#10'".*.,--------,...",'#10'"...,----' + +'----,...",'#10'"...,--------,...",'#10'"...,,,,,,,,,,...",'#10'"...........' + +'.....",'#10'"................"}'#10#224#10#0#0'/* XPM */'#13#10'static char' + +' * menu_copy_xpm[] = {'#13#10'"22 23 94 2",'#13#10'" '#9'c None",'#13#10'"' + +'. '#9'c #010101",'#13#10'"+ '#9'c #B9B9B9",'#13#10'"@ '#9'c #FEFEFE",'#13#10 + +'"# '#9'c #F9F9F9",'#13#10'"$ '#9'c #757575",'#13#10'"% '#9'c #F5F5E8",'#13 + +#10'"& '#9'c #575752",'#13#10'"* '#9'c #FFFFFF",'#13#10'"= '#9'c #A0A0A0",' + +#13#10'"- '#9'c #939393",'#13#10'"; '#9'c #7C7C7C",'#13#10'"> '#9'c #CFC6A0"' + +','#13#10'", '#9'c #D7CEAA",'#13#10'"'' '#9'c #4C493D",'#13#10'") '#9'c #6D6' + +'D6D",'#13#10'"! '#9'c #6C6C6C",'#13#10'"~ '#9'c #A9A9A9",'#13#10'"{ '#9'c #' + +'3E3B31",'#13#10'"] '#9'c #979178",'#13#10'"^ '#9'c #8A793E",'#13#10'"/ '#9 + +'c #C3BB9A",'#13#10'"( '#9'c #454337",'#13#10'"_ '#9'c #FAFAFA",'#13#10'": ' + +#9'c #EFEFEF",'#13#10'"< '#9'c #C7C7C7",'#13#10'"[ '#9'c #D8D8D8",'#13#10'"}' + +' '#9'c #D2D2D2",'#13#10'"| '#9'c #7B7B7B",'#13#10'"1 '#9'c #312F27",'#13#10 + +'"2 '#9'c #89846C",'#13#10'"3 '#9'c #C4BC9A",'#13#10'"4 '#9'c #847236",'#13 + +#10'"5 '#9'c #555143",'#13#10'"6 '#9'c #181713",'#13#10'"7 '#9'c #C5C5C5",' + +#13#10'"8 '#9'c #A7A7A7",'#13#10'"9 '#9'c #ADADAD",'#13#10'"0 '#9'c #9A9A9A"' + +','#13#10'"a '#9'c #9B9B9B",'#13#10'"b '#9'c #868686",'#13#10'"c '#9'c #4343' + +'43",'#13#10'"d '#9'c #13120F",'#13#10'"e '#9'c #22211B",'#13#10'"f '#9'c #8' + +'47034",'#13#10'"g '#9'c #444135",'#13#10'"h '#9'c #B3B3B3",'#13#10'"i '#9'c' + +' #B4B4B4",'#13#10'"j '#9'c #5D5D5D",'#13#10'"k '#9'c #474747",'#13#10'"l '#9 + +'c #3C3C3C",'#13#10'"m '#9'c #404040",'#13#10'"n '#9'c #D6D6D6",'#13#10'"o ' + +#9'c #191814",'#13#10'"p '#9'c #826F34",'#13#10'"q '#9'c #444136",'#13#10'"r' + +' '#9'c #161511",'#13#10'"s '#9'c #141310",'#13#10'"t '#9'c #8F8F8F",'#13#10 + +'"u '#9'c #989898",'#13#10'"v '#9'c #C6C6C6",'#13#10'"w '#9'c #020202",'#13 + +#10'"x '#9'c #806F34",'#13#10'"y '#9'c #7F6C33",'#13#10'"z '#9'c #3A372E",' + +#13#10'"A '#9'c #636363",'#13#10'"B '#9'c #767676",'#13#10'"C '#9'c #7F6E33"' + +','#13#10'"D '#9'c #424035",'#13#10'"E '#9'c #151411",'#13#10'"F '#9'c #4D4D' + +'49",'#13#10'"G '#9'c #515151",'#13#10'"H '#9'c #353535",'#13#10'"I '#9'c #2' + +'02020",'#13#10'"J '#9'c #2D2D2D",'#13#10'"K '#9'c #3E3E3E",'#13#10'"L '#9'c' + +' #171717",'#13#10'"M '#9'c #7D692F",'#13#10'"N '#9'c #1A1A1A",'#13#10'"O '#9 + +'c #1D1C17",'#13#10'"P '#9'c #26251F",'#13#10'"Q '#9'c #292721",'#13#10'"R ' + +#9'c #7F6B2F",'#13#10'"S '#9'c #020201",'#13#10'"T '#9'c #A19A7F",'#13#10'"U' + +' '#9'c #A39D81",'#13#10'"V '#9'c #806C30",'#13#10'"W '#9'c #100F0C",'#13#10 + +'"X '#9'c #A9A186",'#13#10'"Y '#9'c #0D0B05",'#13#10'"Z '#9'c #89783D",'#13 + +#10'"` '#9'c #7A672E",'#13#10'" .'#9'c #76652A",'#13#10'"..'#9'c #78672C",' + +#13#10'" . . . . ",'#13#10'" . .' + +' . . . . + @ # $ . . . . . . ",'#13#10'" . % % % % % & * = - ; & %' + +' % % % > . ",'#13#10'" . % , , , , '' * ) ! ~ { ] , , , ^ . ",'#13#10 + +'" . % / / / ( _ : < [ } | 1 2 / 3 4 . ",'#13#10'" . % , 5 6 7' + +' 8 8 9 0 a b c d e , f . ",'#13#10'" . % g h i j k l l l l l m i n o' + +' p . ",'#13#10'" . % q * * i i i i i i i i * * r p . ",'#13#10'" ' + +' . % s * 8 t t u * v t * t v * w x . ",'#13#10'" . % r * * * * * ' + +'* * * * * * * w y . ",'#13#10'" . % z * ) A * B t v * v t * * d C . ' + +'",'#13#10'" . % D * * * * * * * * * * * * E p . ",'#13#10'" . . . .' + +' F d G H I J K L t v * u t * d x . ",'#13#10'". h * * * * * * * * * * n I *' + +' * * * * r M . ",'#13#10'". * * * * * * * * * * * * N * * * * n O M . ",'#13 + +#10'". * 8 t t u * v t * t v * . P P P P Q , R . ",'#13#10'". * * * * * * * ' + ,'* * * * * S T T T T T U V . ",'#13#10'". * ) A * B t v * v t * * r , , , , ' + +', , y . ",'#13#10'". * * * * * * * * * * * * W T T T T T X y . ",'#13#10'".' + +' * 8 t t * t t v * u t * r , , , , , , V . ",'#13#10'". * * * * * * * * * *' + +' * * Y V Z p p ` .... ",'#13#10'". n * * * * * * * * * * n . . . . . . . .' + +' ",'#13#10'" . . . . . . . . . . . . "};'#13#10#183#1#0 + +#0'/* XPM */'#13#10'static char * menu_unindent_xpm[] = {'#13#10'"18 15 2 1"' + +','#13#10'" '#9'c None",'#13#10'".'#9'c #010101",'#13#10'"........... ' + +'",'#13#10'" ",'#13#10'". . . . . . . . . ",'#13#10'" ' + +' ",'#13#10'" . ..........",'#13#10'" ..... ..........",'#13 + +#10'"...... ",'#13#10'" ..... ........ ",'#13#10'" . .....' + +'... ",'#13#10'" ",'#13#10'". . . . . . . . . ",'#13#10'" ' + +' ",'#13#10'"............. ",'#13#10'" ' + +'",'#13#10'"........... "};'#13#10#197#1#0#0'/* XPM */'#13#10'static c' + +'har * menu_indent_xpm[] = {'#13#10'"18 15 3 1",'#13#10'" '#9'c None",'#13#10 + +'".'#9'c #010101",'#13#10'"+'#9'c #000000",'#13#10'"........... ",'#13 + +#10'" ",'#13#10'". . . . . . . . . ",'#13#10'" ' + +' ",'#13#10'" + ..........",'#13#10'" +.... ..........",'#13#10'" ' + +'...... ",'#13#10'" +.... ........ ",'#13#10'" + ........ ' + +'",'#13#10'" ",'#13#10'". . . . . . . . . ",'#13#10'" ' + +' ",'#13#10'"............. ",'#13#10'" ",'#13 + +#10'"........... "};'#13#10's'#2#0#0'/* XPM */'#10'static char * unreg' + +'isteredcomponent_xpm[] = {'#10'"13 17 18 1",'#10'" '#9'c None",'#10'".'#9'c' + +' #00385B",'#10'"+'#9'c #000000",'#10'"@'#9'c #2982C0",'#10'"#'#9'c #00528C"' + +','#10'"$'#9'c #003E66",'#10'"%'#9'c #6BAAD2",'#10'"&'#9'c #004572",'#10'"*' + +#9'c #4F97CA",'#10'"='#9'c #2A82BF",'#10'"-'#9'c #418FC6",'#10'";'#9'c #0040' + +'6A",'#10'">'#9'c #408FC7",'#10'",'#9'c #66A7D1",'#10'"'''#9'c #00538E",'#10 + +'")'#9'c #8BBBDC",'#10'"!'#9'c #005A99",'#10'"~'#9'c #005896",'#10'" ......' + +'+ ",'#10'" .@#+++##++ ",'#10'"$%#+ .@##+ ",'#10'"&*+ .@#+ ",'#10 + +'".=#+ $-#+ ",'#10'" .##+ ;>#+ ",'#10'" +++ .,''+ ",'#10'" .)!+' + +' ",'#10'" .,~+ ",'#10'" .@#+ ",'#10'" .@#+ ",'#10'" ' + +' ++ ",'#10'" ",'#10'" .. ",'#10'" .,#+ ' + +'",'#10'" ++ ",'#10'" "};'#10#0#0#0 +]); diff --git a/ide/procedurelist.pas b/ide/procedurelist.pas new file mode 100644 index 0000000000..cef563e9b3 --- /dev/null +++ b/ide/procedurelist.pas @@ -0,0 +1,633 @@ +{ + *************************************************************************** + * * + * This source is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This code is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * General Public License for more details. * + * * + * A copy of the GNU General Public License is available on the World * + * Wide Web at . You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + *************************************************************************** + + Procedure List - Lazarus addon + + Author: Graeme Geldenhuys (graemeg@gmail.com) + Inspired by: GExperts (www.gexperts.org) + Last Modified: 2006-06-05 + + Abstract: + The procedure list enables you to view a list of Free Pascal / Lazarus + procedures in the current unit and quickly jump to the implementation of a + given procedure. Include files are also supported. + +} + +unit ProcedureList; + +{$mode objfpc}{$H+} + +interface +uses + Classes, SysUtils, LResources, Forms, + Controls, Graphics, Dialogs, ComCtrls, + ExtCtrls, StdCtrls, CodeTree, CodeToolManager, + CodeAtom; + +type + { TProcedureListForm } + TProcedureListForm = class(TForm) + cbObjects: TComboBox; + edMethods: TEdit; + ImageList1: TImageList; + lblSearch: TLabel; + lblObjects: TLabel; + LV: TListView; + pnlHeader: TPanel; + pnlSearch: TPanel; + pnlObjects: TPanel; + StatusBar: TStatusBar; + TB: TToolBar; + tbAbout: TToolButton; + tbCopy: TToolButton; + ToolButton2: TToolButton; + tbJumpTo: TToolButton; + ToolButton4: TToolButton; + tbFilterAny: TToolButton; + tbFilterStart: TToolButton; + ToolButton7: TToolButton; + tbChangeFont: TToolButton; + ToolButton9: TToolButton; + procedure cbObjectsChange(Sender: TObject); + procedure edMethodsChange(Sender: TObject); + procedure edMethodsKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); + procedure edMethodsKeyPress(Sender: TObject; var Key: char); + procedure FormCreate(Sender: TObject); + procedure FormKeyPress(Sender: TObject; var Key: char); + procedure FormResize(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure LVDblClick(Sender: TObject); + procedure LVSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); + procedure tbAboutClick(Sender: TObject); + procedure tbCopyClick(Sender: TObject); + private + FCaret: TCodeXYPosition; + FMainFilename: string; + FNewTopLine: integer; + { Initialise GUI } + procedure SetupGUI; + { Move editors focus to selected method. } + procedure JumpToSelection; + { Populates Listview based on selected Class and user entered filter. } + procedure PopulateListview; + { Populates only tho cbObjects combo with available classes. } + procedure PopulateObjectsCombo; + procedure AddToListView(pCodeTool: TCodeTool; pNode: TCodeTreeNode); + function PassFilter(pSearchAll: boolean; pProcName, pSearchStr: string; pCodeTool: TCodeTool; pNode: TCodeTreeNode): boolean; + public + property MainFilename: string read FMainFilename; + property Caret: TCodeXYPosition read FCaret; + property NewTopLine: integer read FNewTopLine; + end; + + +procedure Register; + + +implementation +uses + MenuIntf + ,SrcEditorIntf + ,CodeCache + ,PascalParserTool + ,KeywordFuncLists + ,LCLType + ,LazIDEIntf + ,IDECommands + ,Clipbrd + ; + + +const + cProcedureList = 'ProcedureList'; + cAbout = + 'Procedure List (Lazarus addon)' + #10#10 + + 'Author: Graeme Geldenhuys (graemeg@gmail.com)' + #10 + + 'Inspired by: GExperts (www.gexperts.org)'; + + +resourcestring + SProcedureListCaption = 'Procedure List...'; + SAllString = ''; + SNoneString = ''; + SUnknown = 'Unknown'; + SImplementationNotFound = 'Implementation section not found (parser error?)'; + SObjects = '&Objects'; + SSearch = '&Search'; + + +var + CmdProcedureList: TIDECommand; + + +{ This is where it all starts. Gets called from Lazarus. } +procedure ExecuteProcedureList(Sender: TObject); +var + frm: TProcedureListForm; +begin + Assert(Sender<>nil); // removes compiler warning + + frm := TProcedureListForm.Create(nil); + try + frm.ShowModal; + if frm.ModalResult = mrOK then // we need to jump + begin + LazarusIDE.DoOpenFileAndJumpToPos(frm.Caret.Code.Filename, + Point(frm.Caret.X, frm.Caret.Y), frm.NewTopLine, -1, + [ofRegularFile,ofUseCache]); + end; + finally + frm.Free; + end; +end; + + +{ Registers a keyboard shortcut and menu item with Lazarus. } +procedure Register; +var + Key: TIDEShortCut; + Cat: TIDECommandCategory; +begin + Key := IDEShortCut(VK_G,[ssCtrl,ssShift],VK_UNKNOWN,[]); + Cat := IDECommandList.CreateCategory(Nil, + cProcedureList, + SProcedureListCaption, + IDECmdScopeSrcEditOnly); + + CmdProcedureList := RegisterIDECommand(Cat, + cProcedureList, + SProcedureListCaption, + Key,nil,@ExecuteProcedureList); + RegisterIDEMenuCommand(itmCodeToolSearches, + cProcedureList, + SProcedureListCaption, + nil, nil, CmdProcedureList); +end; + + +{ Check, if the given string starts with this substring. Check ignores case. } +function StrStartsWith(sStr, sSubstr: String): Boolean; +begin + sStr := AnsiUpperCase(sStr); + sSubstr := AnsiUpperCase(sSubstr); + + Result := Pos(sSubstr, sStr) = 1; +end; + + +function StrContains(const SubStr, Str: string; CaseSensitive: Boolean): Boolean; +begin + if CaseSensitive then + Result := Pos(SubStr, Str) > 0 + else + Result := Pos(AnsiUpperCase(SubStr), AnsiUpperCase(Str)) > 0; + {$Note Still need to implement this correctly } +// Result := CaseInsensitivePos(SubStr, Str) > 0; +end; + + +function FilterFits(const SubStr, Str: string): boolean; +var + Src: PChar; + PFilter: PChar; + c: Char; + i: Integer; +begin + if SubStr='' then + begin + Result := true; + end + else + begin + Src := PChar(Str); + PFilter := PChar(SubStr); + repeat + c := Src^; + if c <> #0 then + begin + if UpChars[Src^] = UpChars[PFilter^] then + begin + i := 1; + while (UpChars[Src[i]] = UpChars[PFilter[i]]) and (PFilter[i] <> #0) do + inc(i); + if PFilter[i] = #0 then + begin + exit(true); + end; + end; + end + else + exit(false); + inc(Src); + until false; + end; +end; + + +{ TProcedureListForm } + +procedure TProcedureListForm.FormResize(Sender: TObject); +begin + StatusBar.Panels[0].Width := self.ClientWidth - 105; +end; + + +procedure TProcedureListForm.FormShow(Sender: TObject); +begin + edMethods.SetFocus; +end; + + +procedure TProcedureListForm.LVDblClick(Sender: TObject); +begin + JumpToSelection; +end; + + +procedure TProcedureListForm.LVSelectItem(Sender: TObject; Item: TListItem; + Selected: Boolean); +begin + if Item = nil then + Exit; //==> + if Item.SubItems.Count < 4 then + Exit; //==> + StatusBar.Panels[0].Text := Item.SubItems[4]; +end; + + +procedure TProcedureListForm.tbAboutClick(Sender: TObject); +begin + ShowMessage(cAbout); +end; + + +procedure TProcedureListForm.tbCopyClick(Sender: TObject); +begin + if Assigned(LV.Selected) then + Clipboard.AsText := LV.Selected.SubItems[0]; +end; + + +procedure TProcedureListForm.SetupGUI; +begin + self.KeyPreview := True; + self.Position := poDesktopCenter; + + lblObjects.Caption := SObjects; + lblSearch.Caption := SSearch; + + LV.Column[0].Width := 20; + LV.Column[1].Width := 300; + LV.Column[2].Width := 100; + LV.Column[3].Width := 60; + + LV.ReadOnly := True; + LV.RowSelect := True; + LV.SortColumn := 1; + LV.SortType := stText; + LV.HideSelection := False; + + LV.Items.Clear; + + cbObjects.Style := csDropDownList; + cbObjects.Sorted := True; + cbObjects.DropDownCount := 8; +end; + + +procedure TProcedureListForm.JumpToSelection; +var + lItem: TListItem; + CodeBuffer: TCodeBuffer; + ACodeTool: TCodeTool; + lStartPos: integer; +begin + lItem := LV.Selected; + if lItem = nil then + Exit; //==> + if lItem.SubItems[3] = '' then + Exit; //==> + + lStartPos := StrToInt(lItem.SubItems[3]); + + CodeBuffer := CodeToolBoss.FindFile(MainFilename); + if CodeBuffer = nil then + Exit; //==> + + ACodeTool := nil; + CodeToolBoss.Explore(CodeBuffer,ACodeTool,false); + if ACodeTool = nil then + Exit; //==> + + if not ACodeTool.CleanPosToCaretAndTopLine(lStartPos, FCaret, FNewTopLine) then + Exit; //==> + + { This should close the form } + self.ModalResult := mrOK; +end; + + +procedure TProcedureListForm.PopulateListview; +var + lSrcEditor: TSourceEditorInterface; + lCodeBuffer: TCodeBuffer; + lCodeTool: TCodeTool; + lNode: TCodeTreeNode; +begin + LV.BeginUpdate; + try + LV.Items.Clear; + { get active source editor } + lSrcEditor := SourceEditorWindow.ActiveEditor; + if lSrcEditor = nil then + Exit; //==> + lCodeBuffer := lSrcEditor.CodeToolsBuffer as TCodeBuffer; + + { parse source } + CodeToolBoss.Explore(lCodeBuffer,lCodeTool,False); + + { copy the tree } + if (lCodeTool = nil) + or (lCodeTool.Tree = nil) + or (lCodeTool.Tree.Root = nil) then + Exit; //==> + + if Assigned(lCodeTool.Tree) then + begin + { Find the starting point } + lNode := lCodeTool.FindImplementationNode; + if lNode = nil then + begin + { fall back - guess we are working with a program unit } + lNode := lCodeTool.Tree.Root; + end; + + { populate the listview here } + lNode := lNode.FirstChild; + while lNode <> nil do + begin + if lNode.Desc = ctnProcedure then + begin + AddToListView(lCodeTool, lNode); + end; + lNode := lNode.NextBrother; + end; + end; { if } + finally + if LV.Items.Count > 0 then + begin + LV.Selected := LV.Items[0]; + LV.ItemFocused := LV.Items[0]; + end; + LV.EndUpdate; + end; +end; + + +procedure TProcedureListForm.PopulateObjectsCombo; +var + lSrcEditor: TSourceEditorInterface; + lCodeBuffer: TCodeBuffer; + lCodeTool: TCodeTool; + lNode: TCodeTreeNode; + lNodeText: string; +begin + cbObjects.Items.Clear; + cbObjects.Items.Add(SAllString); + cbObjects.Items.Add(SNoneString); + try + { get active source editor } + lSrcEditor := SourceEditorWindow.ActiveEditor; + if lSrcEditor = nil then + Exit; //==> + lCodeBuffer := lSrcEditor.CodeToolsBuffer as TCodeBuffer; + + { parse source } + CodeToolBoss.Explore(lCodeBuffer,lCodeTool,False); + + if (lCodeTool = nil) + or (lCodeTool.Tree = nil) + or (lCodeTool.Tree.Root = nil) then + Exit; //==> + + { copy the tree } + if Assigned(lCodeTool.Tree) then + begin + { Find the starting point } + lNode := lCodeTool.FindImplementationNode; + if lNode = nil then + begin + { fall back - guess we are working with a program unit } + lNode := lCodeTool.Tree.Root; + end; + { populate the Combobox here! } + lNode := lNode.FirstChild; + while lNode <> nil do + begin + if lNode.Desc = ctnProcedure then + begin + lNodeText := lCodeTool.ExtractClassNameOfProcNode(lNode); + cbObjects.Items.Add(lNodeText); + end; + lNode := lNode.NextBrother; + end; + end; + finally + cbObjects.ItemIndex := 0; // select as the default + if cbObjects.Text = '' then + cbObjects.ItemIndex := 1; + end; +end; + + +procedure TProcedureListForm.AddToListView(pCodeTool: TCodeTool; pNode: TCodeTreeNode); +var + lItem: TListItem; + lNodeText: string; + lType: string; + lCaret: TCodeXYPosition; + FSearchAll: boolean; +begin + FSearchAll := cbObjects.Text = SAllString; + lNodeText := pCodeTool.ExtractProcHead(pNode, + [phpWithoutClassKeyword, phpWithoutParamList, phpWithoutBrackets, + phpWithoutSemicolon, phpWithoutClassName]); + + { Must we add this pNode or not? } + if not PassFilter(FSearchAll, lNodeText, edMethods.Text, pCodeTool, pNode) then + Exit; //==> + + { Add new list item } + lItem := LV.Items.Add; + + { procedure name } + lNodeText := pCodeTool.ExtractProcHead(pNode, + [phpWithoutParamList, phpWithoutBrackets, phpWithoutSemicolon]); + lItem.SubItems.Add(lNodeText); + + { type } + lNodeText := pCodeTool.ExtractProcHead(pNode, + [phpWithStart, phpWithoutParamList, phpWithoutBrackets, phpWithoutSemicolon]); + if Pos('procedure', lNodeText) > 0 then + lType := 'Procedure' + else + lType := 'Function'; + lItem.SubItems.Add(lType); + + { line number } + if pCodeTool.CleanPosToCaret(pNode.StartPos, lCaret) then + lItem.SubItems.Add(IntToStr(lCaret.Y)); + + { start pos - used by JumpToSelected() } + lItem.SubItems.Add(IntToStr(pNode.StartPos)); + + { full procedure name used in statusbar } + lNodeText := pCodeTool.ExtractProcHead(pNode, + [phpWithStart,phpWithVarModifiers, + phpWithParameterNames,phpWithDefaultValues,phpWithResultType, + phpWithOfObject,phpWithCallingSpecs,phpWithProcModifiers]); + lItem.SubItems.Add(lNodeText); +end; + + +{ Do we pass all the filter tests to continue? } +function TProcedureListForm.PassFilter(pSearchAll: boolean; pProcName, pSearchStr: string; + pCodeTool: TCodeTool; pNode: TCodeTreeNode): boolean; +var + lClass: string; + + function ClassMatches: boolean; + begin + { lets filter by class selection. } + lClass := pCodeTool.ExtractClassNameOfProcNode(pNode); + if cbObjects.Text = SNoneString then + Result := lClass = '' + else + Result := lClass = cbObjects.Text; + + end; + +begin + {$NOTE Still need to complete this. StartsWith filter not working yet! } + Result := False; + if (Length(pSearchStr) = 0) then // seach string is empty + begin + if pSearchAll then + Result := True + else + Result := ClassMatches; + end + else if not pSearchAll and tbFilterStart.Down and SameText(pSearchStr, Copy(pProcName, 1, Length(pSearchStr))) then + Result := True + else if not pSearchAll and tbFilterAny.Down and ClassMatches and FilterFits(pSearchStr, pProcName) then + Result := True + else if pSearchAll and FilterFits(pSearchStr, pProcName) then + Result := True; +end; + + +procedure TProcedureListForm.FormKeyPress(Sender: TObject; var Key: char); +begin + if Key = #27 then // Escape key + begin + self.ModalResult := mrCancel; + end; +end; + + +procedure TProcedureListForm.FormCreate(Sender: TObject); +begin + if SourceEditorWindow.ActiveEditor = nil then + Exit; //==> + + FMainFilename := SourceEditorWindow.ActiveEditor.Filename; + Caption := Caption + ExtractFileName(FMainFilename); + SetupGUI; + PopulateObjectsCombo; + PopulateListView; + StatusBar.Panels[0].Text := self.MainFilename; +end; + + +procedure TProcedureListForm.edMethodsKeyPress(Sender: TObject; var Key: char); +begin + case Key of + #13: + begin + JumpToSelection; + Key := #0; + end; + #27: + begin + self.ModalResult := mrCancel; + Key := #0; + end; + end; +end; + + +procedure TProcedureListForm.edMethodsChange(Sender: TObject); +begin + PopulateListview; +end; + + +procedure TProcedureListForm.cbObjectsChange(Sender: TObject); +begin + PopulateListview; +end; + + +procedure TProcedureListForm.edMethodsKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + if Key = VK_Down then + begin + if (LV.Items.IndexOf(LV.ItemFocused) + 1) < LV.Items.Count then + LV.ItemFocused := LV.Items[(LV.Items.IndexOf(LV.ItemFocused) + 1)]; + end + else if Key = VK_Up then + begin + if (LV.Items.IndexOf(LV.ItemFocused) - 1) >= 0 then + LV.ItemFocused := LV.Items[(LV.Items.IndexOf(LV.ItemFocused) - 1)]; + end + else if Key = VK_Home then + begin + LV.ItemFocused := LV.Items[0]; + end + else if Key = VK_End then + begin + LV.ItemFocused := LV.Items[LV.Items.Count - 1]; + end; + + if LV.ItemFocused <> nil then + begin + LV.Selected := LV.ItemFocused; + LV.Selected.MakeVisible(True); + end; +end; + + +initialization + {$I procedurelist.lrs} + +end.