From 805dd75ea7f6e911890e047846d9b9e73659a56f Mon Sep 17 00:00:00 2001 From: drewski207 Date: Tue, 21 Feb 2012 01:47:38 +0000 Subject: [PATCH] added chmmaker to ccr git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2304 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- applications/chmmaker/chmmaker.lpi | 112 +++ applications/chmmaker/chmmaker.lpr | 20 + applications/chmmaker/chmsitemapeditor.lfm | 779 +++++++++++++++++++++ applications/chmmaker/chmsitemapeditor.lrs | 245 +++++++ applications/chmmaker/chmsitemapeditor.pas | 317 +++++++++ applications/chmmaker/unit1.lfm | 380 ++++++++++ applications/chmmaker/unit1.lrs | 107 +++ applications/chmmaker/unit1.pas | 478 +++++++++++++ 8 files changed, 2438 insertions(+) create mode 100644 applications/chmmaker/chmmaker.lpi create mode 100644 applications/chmmaker/chmmaker.lpr create mode 100644 applications/chmmaker/chmsitemapeditor.lfm create mode 100644 applications/chmmaker/chmsitemapeditor.lrs create mode 100644 applications/chmmaker/chmsitemapeditor.pas create mode 100755 applications/chmmaker/unit1.lfm create mode 100755 applications/chmmaker/unit1.lrs create mode 100755 applications/chmmaker/unit1.pas diff --git a/applications/chmmaker/chmmaker.lpi b/applications/chmmaker/chmmaker.lpi new file mode 100644 index 000000000..584eaac52 --- /dev/null +++ b/applications/chmmaker/chmmaker.lpi @@ -0,0 +1,112 @@ + + + + + + + + + + + <ActiveWindowIndexAtStart Value="0"/> + </General> + <VersionInfo> + <Language Value=""/> + <CharSet Value=""/> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + <DestinationDirectory Value="$(ProjPath)/published/"/> + <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> + <UseExcludeFileFilter Value="True"/> + <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/> + </local> + </RunParams> + <RequiredPackages Count="2"> + <Item1> + <PackageName Value="LCL"/> + </Item1> + <Item2> + <PackageName Value="SynEdit"/> + <MinVersion Major="1" Valid="True"/> + </Item2> + </RequiredPackages> + <Units Count="4"> + <Unit0> + <Filename Value="chmmaker.lpr"/> + <IsPartOfProject Value="True"/> + <UnitName Value="chmmaker"/> + <UsageCount Value="20"/> + </Unit0> + <Unit1> + <Filename Value="unit1.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="CHMForm"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="unit1"/> + <IsVisibleTab Value="True"/> + <EditorIndex Value="0"/> + <WindowIndex Value="0"/> + <TopLine Value="1"/> + <CursorPos X="1" Y="1"/> + <UsageCount Value="20"/> + <Loaded Value="True"/> + </Unit1> + <Unit2> + <Filename Value="chmsitemapeditor.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="SitemapEditForm"/> + <ResourceBaseClass Value="Form"/> + <UnitName Value="CHMSiteMapEditor"/> + <UsageCount Value="20"/> + </Unit2> + <Unit3> + <Filename Value="unit1.lfm"/> + <WindowIndex Value="0"/> + <TopLine Value="347"/> + <CursorPos X="43" Y="357"/> + <UsageCount Value="10"/> + <DefaultSyntaxHighlighter Value="LFM"/> + </Unit3> + </Units> + <JumpHistory Count="0" HistoryIndex="-1"/> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <SearchPaths> + <OtherUnitFiles Value="/home/andrew/programming/fpc/packages/chm/src/"/> + </SearchPaths> + <Parsing> + <SyntaxOptions> + <UseAnsiStrings Value="False"/> + </SyntaxOptions> + </Parsing> + <CodeGeneration> + <Optimizations> + <VariablesInRegisters Value="True"/> + </Optimizations> + </CodeGeneration> + <Linking> + <Debugging> + <DebugInfoType Value="dsStabs"/> + </Debugging> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + <Other> + <CompilerPath Value="$(CompPath)"/> + </Other> + </CompilerOptions> +</CONFIG> diff --git a/applications/chmmaker/chmmaker.lpr b/applications/chmmaker/chmmaker.lpr new file mode 100644 index 000000000..dfb3c44d4 --- /dev/null +++ b/applications/chmmaker/chmmaker.lpr @@ -0,0 +1,20 @@ +program chmmaker; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}//{$IFDEF UseCThreads} + cthreads, + {$ENDIF}//{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms + { add your units here }, unit1, CHMSiteMapEditor; + +begin + Application.Initialize; + Application.CreateForm(TCHMForm, CHMForm); + Application.CreateForm(TSitemapEditForm, SitemapEditForm); + if ParamCount = 1 then CHMForm.OpenProject(ParamStr(1)); + Application.Run; +end. + diff --git a/applications/chmmaker/chmsitemapeditor.lfm b/applications/chmmaker/chmsitemapeditor.lfm new file mode 100644 index 000000000..065add4c0 --- /dev/null +++ b/applications/chmmaker/chmsitemapeditor.lfm @@ -0,0 +1,779 @@ +object SitemapEditForm: TSitemapEditForm + Left = 289 + Height = 651 + Top = 161 + Width = 773 + HelpContext = 0 + ActiveControl = SitemapTree + Align = alNone + AllowDropFiles = False + AutoScroll = True + AutoSize = False + BorderIcons = [biSystemMenu, biMinimize, biMaximize] + BorderStyle = bsSizeable + Caption = 'Sitemap Editor' + ChildSizing.LeftRightSpacing = 0 + ChildSizing.TopBottomSpacing = 0 + ChildSizing.HorizontalSpacing = 0 + ChildSizing.VerticalSpacing = 0 + ChildSizing.ControlsPerLine = 0 + ClientHeight = 651 + ClientWidth = 773 + DockSite = False + DragKind = dkDrag + DragMode = dmManual + Enabled = True + Font.Height = 0 + Font.Style = [] + FormStyle = fsNormal + ParentBiDiMode = True + ParentFont = False + Position = poDesigned + ShowInTaskBar = stAlways + UseDockManager = False + LCLVersion = '0.9.27' + WindowState = wsNormal + object Label3: TLabel + Left = 424 + Height = 16 + Top = 16 + Width = 110 + HelpContext = 0 + Align = alNone + Alignment = taLeftJustify + AutoSize = True + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + Caption = 'Global Properties' + DragCursor = crDrag + DragMode = dmManual + Enabled = True + Layout = tlTop + ParentBidiMode = True + ParentColor = False + ParentFont = True + ParentShowHint = True + ShowAccelChar = True + Transparent = True + Visible = True + WordWrap = False + OptimalFill = False + end + object Label4: TLabel + Left = 444 + Height = 16 + Top = 136 + Width = 111 + HelpContext = 0 + Align = alNone + Alignment = taLeftJustify + AutoSize = True + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + Caption = 'Foreground Color' + DragCursor = crDrag + DragMode = dmManual + Enabled = True + Layout = tlTop + ParentBidiMode = True + ParentColor = False + ParentFont = True + ParentShowHint = True + ShowAccelChar = True + Transparent = True + Visible = True + WordWrap = False + OptimalFill = False + end + object Label5: TLabel + Left = 444 + Height = 16 + Top = 176 + Width = 114 + HelpContext = 0 + Align = alNone + Alignment = taLeftJustify + AutoSize = True + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + Caption = 'Background Color' + DragCursor = crDrag + DragMode = dmManual + Enabled = True + Layout = tlTop + ParentBidiMode = True + ParentColor = False + ParentFont = True + ParentShowHint = True + ShowAccelChar = True + Transparent = True + Visible = True + WordWrap = False + OptimalFill = False + end + object ForegroundClrBtn: TColorButton + Left = 600 + Height = 25 + Top = 131 + Width = 75 + HelpContext = 0 + Align = alNone + AllowAllUp = False + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + BorderWidth = 2 + ButtonColorSize = 16 + ButtonColor = clBlack + Color = clBtnFace + Down = False + Enabled = True + Flat = False + GroupIndex = 0 + Layout = blGlyphLeft + Margin = -1 + Spacing = 4 + Transparent = True + Visible = True + ParentFont = True + ParentShowHint = True + end + object BackgroundClrBtn: TColorButton + Left = 600 + Height = 25 + Top = 171 + Width = 75 + HelpContext = 0 + Align = alNone + AllowAllUp = False + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + BorderWidth = 2 + ButtonColorSize = 16 + ButtonColor = clNone + Color = clBtnFace + Down = False + Enabled = True + Flat = False + GroupIndex = 0 + Layout = blGlyphLeft + Margin = -1 + Spacing = 4 + Transparent = True + Visible = True + ParentFont = True + ParentShowHint = True + end + object GroupBox1: TGroupBox + Left = 0 + Height = 651 + Top = 0 + Width = 404 + HelpContext = 0 + Align = alLeft + AutoSize = False + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + Caption = 'Sitemap Tree/List' + ChildSizing.LeftRightSpacing = 0 + ChildSizing.TopBottomSpacing = 0 + ChildSizing.HorizontalSpacing = 0 + ChildSizing.VerticalSpacing = 0 + ChildSizing.ControlsPerLine = 0 + ClientHeight = 634 + ClientWidth = 400 + Ctl3D = False + DockSite = False + DragCursor = crDrag + DragKind = dkDrag + DragMode = dmManual + Enabled = True + ParentBidiMode = True + ParentColor = True + ParentCtl3D = True + ParentFont = True + ParentShowHint = True + TabOrder = 0 + TabStop = False + Visible = True + object Label1: TLabel + Left = 11 + Height = 16 + Top = 467 + Width = 116 + HelpContext = 0 + Align = alNone + Alignment = taLeftJustify + AutoSize = True + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + Caption = 'Local link (in chm)' + DragCursor = crDrag + DragMode = dmManual + Enabled = False + Layout = tlTop + ParentBidiMode = True + ParentColor = False + ParentFont = True + ParentShowHint = True + ShowAccelChar = True + Transparent = True + Visible = True + WordWrap = False + OptimalFill = False + end + object Label2: TLabel + Left = 11 + Height = 16 + Top = 575 + Width = 59 + HelpContext = 0 + Align = alNone + Alignment = taLeftJustify + AutoSize = True + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + Caption = 'Add Item' + DragCursor = crDrag + DragMode = dmManual + Enabled = True + Layout = tlTop + ParentBidiMode = True + ParentColor = False + ParentFont = True + ParentShowHint = True + ShowAccelChar = True + Transparent = True + Visible = True + WordWrap = False + OptimalFill = False + end + object SitemapTree: TTreeView + Tag = 0 + Left = 0 + Height = 405 + Top = 0 + Width = 400 + HelpContext = 0 + Align = alTop + AutoExpand = False + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + BackgroundColor = clWindow + BorderStyle = bsSingle + BorderWidth = 0 + Ctl3D = False + DefaultItemHeight = 17 + DragKind = dkDrag + DragCursor = crDrag + DragMode = dmManual + Enabled = True + ExpandSignType = tvestPlusMinus + HideSelection = True + HotTrack = False + Indent = 15 + ParentCtl3D = True + ParentFont = True + ParentShowHint = True + ReadOnly = False + RightClickSelect = False + RowSelect = False + ScrollBars = ssBoth + SelectionColor = clHighlight + ShowButtons = True + ShowLines = True + ShowRoot = True + SortType = stNone + TabOrder = 0 + ToolTips = True + Visible = True + OnCustomCreateItem = SitemapTreeCustomCreateItem + OnSelectionChanged = SitemapTreeSelectionChanged + Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips] + TreeLineColor = clWindowFrame + TreeLinePenStyle = psPattern + ExpandSignColor = clWindowFrame + end + object DescriptionEdit: TLabeledEdit + Left = 11 + Height = 25 + Top = 435 + Width = 292 + HelpContext = 0 + AutoSelect = False + AutoSize = False + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + CharCase = ecNormal + DragCursor = crDrag + DragMode = dmManual + EchoMode = emNormal + EditLabel.AnchorSideLeft.Control = DescriptionEdit + EditLabel.AnchorSideBottom.Control = DescriptionEdit + EditLabel.Left = 11 + EditLabel.Height = 16 + EditLabel.Top = 416 + EditLabel.Width = 73 + EditLabel.HelpContext = 0 + EditLabel.Caption = 'Description' + EditLabel.DragCursor = crDrag + EditLabel.DragMode = dmManual + EditLabel.ParentColor = False + EditLabel.ParentFont = True + EditLabel.ParentShowHint = True + EditLabel.ShowAccelChar = True + EditLabel.Layout = tlTop + EditLabel.WordWrap = False + Enabled = False + LabelPosition = lpAbove + LabelSpacing = 3 + MaxLength = -1 + ParentColor = False + ParentFont = True + ParentShowHint = True + PasswordChar = #0 + ReadOnly = False + TabOrder = 1 + TabStop = True + Visible = True + OnChange = DescriptionEditChange + end + object DescFromTitleBtn: TButton + Left = 311 + Height = 25 + Top = 435 + Width = 75 + HelpContext = 0 + Align = alNone + AutoSize = False + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.InnerBorder = 4 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + Cancel = False + Caption = 'From Title' + Default = False + DragCursor = crDrag + DragMode = dmManual + Enabled = False + ParentBidiMode = True + ModalResult = 0 + ParentFont = True + ParentShowHint = True + TabOrder = 2 + TabStop = True + Visible = True + end + object LocalCombo: TComboBox + Left = 11 + Height = 27 + Top = 487 + Width = 375 + HelpContext = 0 + TabStop = True + Align = alNone + ArrowKeysTraverseList = True + AutoComplete = False + AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending] + AutoDropDown = False + AutoSelect = False + AutoSize = True + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + CharCase = ecNormal + Ctl3D = False + DragCursor = crDrag + DragMode = dmManual + DropDownCount = 8 + Enabled = False + ItemHeight = 0 + ItemIndex = -1 + ItemWidth = 0 + MaxLength = 0 + OnChange = LocalComboChange + OnKeyUp = LocalComboKeyUp + ParentBidiMode = True + ParentColor = False + ParentCtl3D = True + ParentFont = True + ParentShowHint = True + Sorted = False + Style = csDropDown + TabOrder = 3 + Visible = True + end + object URLEdit: TLabeledEdit + Left = 11 + Height = 25 + Top = 539 + Width = 375 + HelpContext = 0 + AutoSelect = False + AutoSize = False + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + CharCase = ecNormal + DragCursor = crDrag + DragMode = dmManual + EchoMode = emNormal + EditLabel.AnchorSideLeft.Control = URLEdit + EditLabel.AnchorSideBottom.Control = URLEdit + EditLabel.Left = 11 + EditLabel.Height = 16 + EditLabel.Top = 520 + EditLabel.Width = 66 + EditLabel.HelpContext = 0 + EditLabel.Caption = 'URL (http)' + EditLabel.DragCursor = crDrag + EditLabel.DragMode = dmManual + EditLabel.ParentColor = False + EditLabel.ParentFont = True + EditLabel.ParentShowHint = True + EditLabel.ShowAccelChar = True + EditLabel.Layout = tlTop + EditLabel.WordWrap = False + Enabled = False + LabelPosition = lpAbove + LabelSpacing = 3 + MaxLength = -1 + ParentColor = False + ParentFont = True + ParentShowHint = True + PasswordChar = #0 + ReadOnly = False + TabOrder = 4 + TabStop = True + Visible = True + OnChange = URLEditChange + end + object BeforeBtn: TButton + Left = 90 + Height = 25 + Top = 571 + Width = 75 + HelpContext = 0 + Align = alNone + AutoSize = False + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.InnerBorder = 4 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + Cancel = False + Caption = 'Before' + Default = False + DragCursor = crDrag + DragMode = dmManual + Enabled = False + ParentBidiMode = True + ModalResult = 0 + OnClick = BeforeBtnClick + ParentFont = True + ParentShowHint = True + TabOrder = 5 + TabStop = True + Visible = True + end + object AfterBtn: TButton + Left = 170 + Height = 25 + Top = 571 + Width = 75 + HelpContext = 0 + Align = alNone + AutoSize = False + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.InnerBorder = 4 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + Cancel = False + Caption = 'After' + Default = False + DragCursor = crDrag + DragMode = dmManual + Enabled = True + ParentBidiMode = True + ModalResult = 0 + OnClick = AfterBtnClick + ParentFont = True + ParentShowHint = True + TabOrder = 6 + TabStop = True + Visible = True + end + object SubItemBtn: TButton + Left = 90 + Height = 25 + Top = 601 + Width = 155 + HelpContext = 0 + Align = alNone + AutoSize = False + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.InnerBorder = 4 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + Cancel = False + Caption = 'Subitem' + Default = False + DragCursor = crDrag + DragMode = dmManual + Enabled = False + ParentBidiMode = True + ModalResult = 0 + OnClick = SubItemBtnClick + ParentFont = True + ParentShowHint = True + TabOrder = 7 + TabStop = True + Visible = True + end + object DeleteBtn: TButton + Left = 11 + Height = 25 + Top = 601 + Width = 75 + HelpContext = 0 + Align = alNone + AutoSize = False + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.InnerBorder = 4 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + Cancel = False + Caption = 'Delete' + Default = False + DragCursor = crDrag + DragMode = dmManual + Enabled = True + ParentBidiMode = True + ModalResult = 0 + OnClick = DeleteBtnClick + ParentFont = True + ParentShowHint = True + TabOrder = 8 + TabStop = True + Visible = True + end + end + object FontEdit: TLabeledEdit + Left = 444 + Height = 25 + Top = 72 + Width = 232 + HelpContext = 0 + AutoSelect = False + AutoSize = False + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + CharCase = ecNormal + DragCursor = crDrag + DragMode = dmManual + EchoMode = emNormal + EditLabel.AnchorSideLeft.Control = FontEdit + EditLabel.AnchorSideBottom.Control = FontEdit + EditLabel.Left = 444 + EditLabel.Height = 16 + EditLabel.Top = 53 + EditLabel.Width = 29 + EditLabel.HelpContext = 0 + EditLabel.Caption = 'Font' + EditLabel.DragCursor = crDrag + EditLabel.DragMode = dmManual + EditLabel.ParentColor = False + EditLabel.ParentFont = True + EditLabel.ParentShowHint = True + EditLabel.ShowAccelChar = True + EditLabel.Layout = tlTop + EditLabel.WordWrap = False + Enabled = True + LabelPosition = lpAbove + LabelSpacing = 3 + MaxLength = -1 + ParentColor = False + ParentFont = True + ParentShowHint = True + PasswordChar = #0 + ReadOnly = False + TabOrder = 1 + TabStop = True + Visible = True + end + object FolderViewCheck: TCheckBox + Left = 444 + Height = 22 + Top = 212 + Width = 129 + HelpContext = 0 + Align = alNone + AllowGrayed = False + AutoSize = True + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + Caption = 'Use Folder Icons' + Checked = False + DragCursor = crDrag + DragKind = dkDrag + DragMode = dmManual + Enabled = True + ParentColor = True + ParentFont = True + ParentShowHint = True + ParentBidiMode = True + State = cbUnchecked + TabOrder = 2 + TabStop = True + UseOnChange = False + Visible = True + end + object SaveBtn: TButton + Left = 560 + Height = 25 + Top = 616 + Width = 75 + HelpContext = 0 + Align = alNone + AutoSize = False + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.InnerBorder = 4 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + Cancel = False + Caption = 'Save' + Default = False + DragCursor = crDrag + DragMode = dmManual + Enabled = True + ParentBidiMode = True + ModalResult = 1 + OnClick = SaveBtnClick + ParentFont = True + ParentShowHint = True + TabOrder = 3 + TabStop = True + Visible = True + end + object CancelBtn: TButton + Left = 652 + Height = 25 + Top = 616 + Width = 75 + HelpContext = 0 + Align = alNone + AutoSize = False + BorderSpacing.Left = 0 + BorderSpacing.Top = 0 + BorderSpacing.Right = 0 + BorderSpacing.Bottom = 0 + BorderSpacing.Around = 0 + BorderSpacing.InnerBorder = 4 + BorderSpacing.CellAlignHorizontal = ccaFill + BorderSpacing.CellAlignVertical = ccaFill + Cancel = False + Caption = 'Cancel' + Default = False + DragCursor = crDrag + DragMode = dmManual + Enabled = True + ParentBidiMode = True + ModalResult = 2 + OnClick = CancelBtnClick + ParentFont = True + ParentShowHint = True + TabOrder = 4 + TabStop = True + Visible = True + end +end diff --git a/applications/chmmaker/chmsitemapeditor.lrs b/applications/chmmaker/chmsitemapeditor.lrs new file mode 100644 index 000000000..ed9b0fd03 --- /dev/null +++ b/applications/chmmaker/chmsitemapeditor.lrs @@ -0,0 +1,245 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TSitemapEditForm','FORMDATA',[ + 'TPF0'#16'TSitemapEditForm'#15'SitemapEditForm'#4'Left'#3'!'#1#6'Height'#3#139 + +#2#3'Top'#3#161#0#5'Width'#3#5#3#11'HelpContext'#2#0#13'ActiveControl'#7#11 + +'SitemapTree'#5'Align'#7#6'alNone'#14'AllowDropFiles'#8#10'AutoScroll'#9#8'A' + +'utoSize'#8#11'BorderIcons'#11#12'biSystemMenu'#10'biMinimize'#10'biMaximize' + +#0#11'BorderStyle'#7#10'bsSizeable'#7'Caption'#6#14'Sitemap Editor'#28'Child' + +'Sizing.LeftRightSpacing'#2#0#28'ChildSizing.TopBottomSpacing'#2#0#29'ChildS' + +'izing.HorizontalSpacing'#2#0#27'ChildSizing.VerticalSpacing'#2#0#27'ChildSi' + +'zing.ControlsPerLine'#2#0#12'ClientHeight'#3#139#2#11'ClientWidth'#3#5#3#8 + +'DockSite'#8#8'DragKind'#7#6'dkDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'#9 + +#11'Font.Height'#2#0#10'Font.Style'#11#0#9'FormStyle'#7#8'fsNormal'#14'Paren' + +'tBiDiMode'#9#10'ParentFont'#8#8'Position'#7#10'poDesigned'#13'ShowInTaskBar' + +#7#8'stAlways'#14'UseDockManager'#8#10'LCLVersion'#6#6'0.9.27'#11'WindowStat' + +'e'#7#8'wsNormal'#0#6'TLabel'#6'Label3'#4'Left'#3#168#1#6'Height'#2#16#3'Top' + +#2#16#5'Width'#2'n'#11'HelpContext'#2#0#5'Align'#7#6'alNone'#9'Alignment'#7 + +#13'taLeftJustify'#8'AutoSize'#9#18'BorderSpacing.Left'#2#0#17'BorderSpacing' + +'.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom'#2#0#20'Borde' + +'rSpacing.Around'#2#0'!BorderSpacing.CellAlignHorizontal'#7#7'ccaFill'#31'Bo' + +'rderSpacing.CellAlignVertical'#7#7'ccaFill'#7'Caption'#6#17'Global Properti' + +'es'#10'DragCursor'#7#6'crDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'#9#6'Lay' + +'out'#7#5'tlTop'#14'ParentBidiMode'#9#11'ParentColor'#8#10'ParentFont'#9#14 + +'ParentShowHint'#9#13'ShowAccelChar'#9#11'Transparent'#9#7'Visible'#9#8'Word' + +'Wrap'#8#11'OptimalFill'#8#0#0#6'TLabel'#6'Label4'#4'Left'#3#188#1#6'Height' + +#2#16#3'Top'#3#136#0#5'Width'#2'o'#11'HelpContext'#2#0#5'Align'#7#6'alNone'#9 + +'Alignment'#7#13'taLeftJustify'#8'AutoSize'#9#18'BorderSpacing.Left'#2#0#17 + +'BorderSpacing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom' + +#2#0#20'BorderSpacing.Around'#2#0'!BorderSpacing.CellAlignHorizontal'#7#7'cc' + +'aFill'#31'BorderSpacing.CellAlignVertical'#7#7'ccaFill'#7'Caption'#6#16'For' + +'eground Color'#10'DragCursor'#7#6'crDrag'#8'DragMode'#7#8'dmManual'#7'Enabl' + +'ed'#9#6'Layout'#7#5'tlTop'#14'ParentBidiMode'#9#11'ParentColor'#8#10'Parent' + +'Font'#9#14'ParentShowHint'#9#13'ShowAccelChar'#9#11'Transparent'#9#7'Visibl' + +'e'#9#8'WordWrap'#8#11'OptimalFill'#8#0#0#6'TLabel'#6'Label5'#4'Left'#3#188#1 + +#6'Height'#2#16#3'Top'#3#176#0#5'Width'#2'r'#11'HelpContext'#2#0#5'Align'#7#6 + +'alNone'#9'Alignment'#7#13'taLeftJustify'#8'AutoSize'#9#18'BorderSpacing.Lef' + +'t'#2#0#17'BorderSpacing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpaci' + +'ng.Bottom'#2#0#20'BorderSpacing.Around'#2#0'!BorderSpacing.CellAlignHorizon' + +'tal'#7#7'ccaFill'#31'BorderSpacing.CellAlignVertical'#7#7'ccaFill'#7'Captio' + +'n'#6#16'Background Color'#10'DragCursor'#7#6'crDrag'#8'DragMode'#7#8'dmManu' + +'al'#7'Enabled'#9#6'Layout'#7#5'tlTop'#14'ParentBidiMode'#9#11'ParentColor'#8 + +#10'ParentFont'#9#14'ParentShowHint'#9#13'ShowAccelChar'#9#11'Transparent'#9 + +#7'Visible'#9#8'WordWrap'#8#11'OptimalFill'#8#0#0#12'TColorButton'#16'Foregr' + +'oundClrBtn'#4'Left'#3'X'#2#6'Height'#2#25#3'Top'#3#131#0#5'Width'#2'K'#11'H' + +'elpContext'#2#0#5'Align'#7#6'alNone'#10'AllowAllUp'#8#18'BorderSpacing.Left' + +#2#0#17'BorderSpacing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.' + +'Bottom'#2#0#20'BorderSpacing.Around'#2#0'!BorderSpacing.CellAlignHorizontal' + +#7#7'ccaFill'#31'BorderSpacing.CellAlignVertical'#7#7'ccaFill'#11'BorderWidt' + +'h'#2#2#15'ButtonColorSize'#2#16#11'ButtonColor'#7#7'clBlack'#5'Color'#7#9'c' + +'lBtnFace'#4'Down'#8#7'Enabled'#9#4'Flat'#8#10'GroupIndex'#2#0#6'Layout'#7#11 + +'blGlyphLeft'#6'Margin'#2#255#7'Spacing'#2#4#11'Transparent'#9#7'Visible'#9 + +#10'ParentFont'#9#14'ParentShowHint'#9#0#0#12'TColorButton'#16'BackgroundClr' + +'Btn'#4'Left'#3'X'#2#6'Height'#2#25#3'Top'#3#171#0#5'Width'#2'K'#11'HelpCont' + +'ext'#2#0#5'Align'#7#6'alNone'#10'AllowAllUp'#8#18'BorderSpacing.Left'#2#0#17 + +'BorderSpacing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom' + +#2#0#20'BorderSpacing.Around'#2#0'!BorderSpacing.CellAlignHorizontal'#7#7'cc' + +'aFill'#31'BorderSpacing.CellAlignVertical'#7#7'ccaFill'#11'BorderWidth'#2#2 + +#15'ButtonColorSize'#2#16#11'ButtonColor'#7#6'clNone'#5'Color'#7#9'clBtnFace' + +#4'Down'#8#7'Enabled'#9#4'Flat'#8#10'GroupIndex'#2#0#6'Layout'#7#11'blGlyphL' + +'eft'#6'Margin'#2#255#7'Spacing'#2#4#11'Transparent'#9#7'Visible'#9#10'Paren' + +'tFont'#9#14'ParentShowHint'#9#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#2#0#6'H' + +'eight'#3#139#2#3'Top'#2#0#5'Width'#3#148#1#11'HelpContext'#2#0#5'Align'#7#6 + +'alLeft'#8'AutoSize'#8#18'BorderSpacing.Left'#2#0#17'BorderSpacing.Top'#2#0 + +#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom'#2#0#20'BorderSpacing.A' + +'round'#2#0'!BorderSpacing.CellAlignHorizontal'#7#7'ccaFill'#31'BorderSpacin' + +'g.CellAlignVertical'#7#7'ccaFill'#7'Caption'#6#17'Sitemap Tree/List'#28'Chi' + +'ldSizing.LeftRightSpacing'#2#0#28'ChildSizing.TopBottomSpacing'#2#0#29'Chil' + ,'dSizing.HorizontalSpacing'#2#0#27'ChildSizing.VerticalSpacing'#2#0#27'Child' + +'Sizing.ControlsPerLine'#2#0#12'ClientHeight'#3'z'#2#11'ClientWidth'#3#144#1 + +#5'Ctl3D'#8#8'DockSite'#8#10'DragCursor'#7#6'crDrag'#8'DragKind'#7#6'dkDrag' + +#8'DragMode'#7#8'dmManual'#7'Enabled'#9#14'ParentBidiMode'#9#11'ParentColor' + +#9#11'ParentCtl3D'#9#10'ParentFont'#9#14'ParentShowHint'#9#8'TabOrder'#2#0#7 + +'TabStop'#8#7'Visible'#9#0#6'TLabel'#6'Label1'#4'Left'#2#11#6'Height'#2#16#3 + +'Top'#3#211#1#5'Width'#2't'#11'HelpContext'#2#0#5'Align'#7#6'alNone'#9'Align' + +'ment'#7#13'taLeftJustify'#8'AutoSize'#9#18'BorderSpacing.Left'#2#0#17'Borde' + +'rSpacing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom'#2#0 + +#20'BorderSpacing.Around'#2#0'!BorderSpacing.CellAlignHorizontal'#7#7'ccaFil' + +'l'#31'BorderSpacing.CellAlignVertical'#7#7'ccaFill'#7'Caption'#6#19'Local l' + +'ink (in chm)'#10'DragCursor'#7#6'crDrag'#8'DragMode'#7#8'dmManual'#7'Enable' + +'d'#8#6'Layout'#7#5'tlTop'#14'ParentBidiMode'#9#11'ParentColor'#8#10'ParentF' + +'ont'#9#14'ParentShowHint'#9#13'ShowAccelChar'#9#11'Transparent'#9#7'Visible' + +#9#8'WordWrap'#8#11'OptimalFill'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#11#6'He' + +'ight'#2#16#3'Top'#3'?'#2#5'Width'#2';'#11'HelpContext'#2#0#5'Align'#7#6'alN' + +'one'#9'Alignment'#7#13'taLeftJustify'#8'AutoSize'#9#18'BorderSpacing.Left'#2 + +#0#17'BorderSpacing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bo' + +'ttom'#2#0#20'BorderSpacing.Around'#2#0'!BorderSpacing.CellAlignHorizontal'#7 + +#7'ccaFill'#31'BorderSpacing.CellAlignVertical'#7#7'ccaFill'#7'Caption'#6#8 + +'Add Item'#10'DragCursor'#7#6'crDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'#9 + +#6'Layout'#7#5'tlTop'#14'ParentBidiMode'#9#11'ParentColor'#8#10'ParentFont'#9 + +#14'ParentShowHint'#9#13'ShowAccelChar'#9#11'Transparent'#9#7'Visible'#9#8'W' + +'ordWrap'#8#11'OptimalFill'#8#0#0#9'TTreeView'#11'SitemapTree'#3'Tag'#2#0#4 + +'Left'#2#0#6'Height'#3#149#1#3'Top'#2#0#5'Width'#3#144#1#11'HelpContext'#2#0 + +#5'Align'#7#5'alTop'#10'AutoExpand'#8#18'BorderSpacing.Left'#2#0#17'BorderSp' + +'acing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom'#2#0#20 + +'BorderSpacing.Around'#2#0'!BorderSpacing.CellAlignHorizontal'#7#7'ccaFill' + +#31'BorderSpacing.CellAlignVertical'#7#7'ccaFill'#15'BackgroundColor'#7#8'cl' + +'Window'#11'BorderStyle'#7#8'bsSingle'#11'BorderWidth'#2#0#5'Ctl3D'#8#17'Def' + +'aultItemHeight'#2#17#8'DragKind'#7#6'dkDrag'#10'DragCursor'#7#6'crDrag'#8'D' + +'ragMode'#7#8'dmManual'#7'Enabled'#9#14'ExpandSignType'#7#14'tvestPlusMinus' + +#13'HideSelection'#9#8'HotTrack'#8#6'Indent'#2#15#11'ParentCtl3D'#9#10'Paren' + +'tFont'#9#14'ParentShowHint'#9#8'ReadOnly'#8#16'RightClickSelect'#8#9'RowSel' + +'ect'#8#10'ScrollBars'#7#6'ssBoth'#14'SelectionColor'#7#11'clHighlight'#11'S' + +'howButtons'#9#9'ShowLines'#9#8'ShowRoot'#9#8'SortType'#7#6'stNone'#8'TabOrd' + +'er'#2#0#8'ToolTips'#9#7'Visible'#9#18'OnCustomCreateItem'#7#27'SitemapTreeC' + +'ustomCreateItem'#18'OnSelectionChanged'#7#27'SitemapTreeSelectionChanged'#7 + +'Options'#11#17'tvoAutoItemHeight'#16'tvoHideSelection'#21'tvoKeepCollapsedN' + +'odes'#14'tvoShowButtons'#12'tvoShowLines'#11'tvoShowRoot'#11'tvoToolTips'#0 + +#13'TreeLineColor'#7#13'clWindowFrame'#16'TreeLinePenStyle'#7#9'psPattern'#15 + +'ExpandSignColor'#7#13'clWindowFrame'#0#0#12'TLabeledEdit'#15'DescriptionEdi' + +'t'#4'Left'#2#11#6'Height'#2#25#3'Top'#3#179#1#5'Width'#3'$'#1#11'HelpContex' + +'t'#2#0#10'AutoSelect'#8#8'AutoSize'#8#18'BorderSpacing.Left'#2#0#17'BorderS' + +'pacing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom'#2#0#20 + +'BorderSpacing.Around'#2#0'!BorderSpacing.CellAlignHorizontal'#7#7'ccaFill' + +#31'BorderSpacing.CellAlignVertical'#7#7'ccaFill'#8'CharCase'#7#8'ecNormal' + +#10'DragCursor'#7#6'crDrag'#8'DragMode'#7#8'dmManual'#8'EchoMode'#7#8'emNorm' + +'al EditLabel.AnchorSideLeft.Control'#7#15'DescriptionEdit"EditLabel.AnchorS' + +'ideBottom.Control'#7#15'DescriptionEdit'#14'EditLabel.Left'#2#11#16'EditLab' + +'el.Height'#2#16#13'EditLabel.Top'#3#160#1#15'EditLabel.Width'#2'I'#21'EditL' + +'abel.HelpContext'#2#0#17'EditLabel.Caption'#6#11'Description'#20'EditLabel.' + +'DragCursor'#7#6'crDrag'#18'EditLabel.DragMode'#7#8'dmManual'#21'EditLabel.P' + +'arentColor'#8#20'EditLabel.ParentFont'#9#24'EditLabel.ParentShowHint'#9#23 + +'EditLabel.ShowAccelChar'#9#16'EditLabel.Layout'#7#5'tlTop'#18'EditLabel.Wor' + +'dWrap'#8#7'Enabled'#8#13'LabelPosition'#7#7'lpAbove'#12'LabelSpacing'#2#3#9 + +'MaxLength'#2#255#11'ParentColor'#8#10'ParentFont'#9#14'ParentShowHint'#9#12 + +'PasswordChar'#6#1#0#8'ReadOnly'#8#8'TabOrder'#2#1#7'TabStop'#9#7'Visible'#9 + +#8'OnChange'#7#21'DescriptionEditChange'#0#0#7'TButton'#16'DescFromTitleBtn' + +#4'Left'#3'7'#1#6'Height'#2#25#3'Top'#3#179#1#5'Width'#2'K'#11'HelpContext'#2 + +#0#5'Align'#7#6'alNone'#8'AutoSize'#8#18'BorderSpacing.Left'#2#0#17'BorderSp' + +'acing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom'#2#0#20 + +'BorderSpacing.Around'#2#0#25'BorderSpacing.InnerBorder'#2#4'!BorderSpacing.' + +'CellAlignHorizontal'#7#7'ccaFill'#31'BorderSpacing.CellAlignVertical'#7#7'c' + ,'caFill'#6'Cancel'#8#7'Caption'#6#10'From Title'#7'Default'#8#10'DragCursor' + +#7#6'crDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'#8#14'ParentBidiMode'#9#11 + +'ModalResult'#2#0#10'ParentFont'#9#14'ParentShowHint'#9#8'TabOrder'#2#2#7'Ta' + +'bStop'#9#7'Visible'#9#0#0#9'TComboBox'#10'LocalCombo'#4'Left'#2#11#6'Height' + +#2#27#3'Top'#3#231#1#5'Width'#3'w'#1#11'HelpContext'#2#0#7'TabStop'#9#5'Alig' + +'n'#7#6'alNone'#21'ArrowKeysTraverseList'#9#12'AutoComplete'#8#16'AutoComple' + +'teText'#11#22'cbactEndOfLineComplete'#20'cbactSearchAscending'#0#12'AutoDro' + +'pDown'#8#10'AutoSelect'#8#8'AutoSize'#9#18'BorderSpacing.Left'#2#0#17'Borde' + +'rSpacing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom'#2#0 + +#20'BorderSpacing.Around'#2#0'!BorderSpacing.CellAlignHorizontal'#7#7'ccaFil' + +'l'#31'BorderSpacing.CellAlignVertical'#7#7'ccaFill'#8'CharCase'#7#8'ecNorma' + +'l'#5'Ctl3D'#8#10'DragCursor'#7#6'crDrag'#8'DragMode'#7#8'dmManual'#13'DropD' + +'ownCount'#2#8#7'Enabled'#8#10'ItemHeight'#2#0#9'ItemIndex'#2#255#9'ItemWidt' + +'h'#2#0#9'MaxLength'#2#0#8'OnChange'#7#16'LocalComboChange'#7'OnKeyUp'#7#15 + +'LocalComboKeyUp'#14'ParentBidiMode'#9#11'ParentColor'#8#11'ParentCtl3D'#9#10 + +'ParentFont'#9#14'ParentShowHint'#9#6'Sorted'#8#5'Style'#7#10'csDropDown'#8 + +'TabOrder'#2#3#7'Visible'#9#0#0#12'TLabeledEdit'#7'URLEdit'#4'Left'#2#11#6'H' + +'eight'#2#25#3'Top'#3#27#2#5'Width'#3'w'#1#11'HelpContext'#2#0#10'AutoSelect' + +#8#8'AutoSize'#8#18'BorderSpacing.Left'#2#0#17'BorderSpacing.Top'#2#0#19'Bor' + +'derSpacing.Right'#2#0#20'BorderSpacing.Bottom'#2#0#20'BorderSpacing.Around' + +#2#0'!BorderSpacing.CellAlignHorizontal'#7#7'ccaFill'#31'BorderSpacing.CellA' + +'lignVertical'#7#7'ccaFill'#8'CharCase'#7#8'ecNormal'#10'DragCursor'#7#6'crD' + +'rag'#8'DragMode'#7#8'dmManual'#8'EchoMode'#7#8'emNormal EditLabel.AnchorSid' + +'eLeft.Control'#7#7'URLEdit"EditLabel.AnchorSideBottom.Control'#7#7'URLEdit' + +#14'EditLabel.Left'#2#11#16'EditLabel.Height'#2#16#13'EditLabel.Top'#3#8#2#15 + +'EditLabel.Width'#2'B'#21'EditLabel.HelpContext'#2#0#17'EditLabel.Caption'#6 + +#10'URL (http)'#20'EditLabel.DragCursor'#7#6'crDrag'#18'EditLabel.DragMode'#7 + +#8'dmManual'#21'EditLabel.ParentColor'#8#20'EditLabel.ParentFont'#9#24'EditL' + +'abel.ParentShowHint'#9#23'EditLabel.ShowAccelChar'#9#16'EditLabel.Layout'#7 + +#5'tlTop'#18'EditLabel.WordWrap'#8#7'Enabled'#8#13'LabelPosition'#7#7'lpAbov' + +'e'#12'LabelSpacing'#2#3#9'MaxLength'#2#255#11'ParentColor'#8#10'ParentFont' + +#9#14'ParentShowHint'#9#12'PasswordChar'#6#1#0#8'ReadOnly'#8#8'TabOrder'#2#4 + +#7'TabStop'#9#7'Visible'#9#8'OnChange'#7#13'URLEditChange'#0#0#7'TButton'#9 + +'BeforeBtn'#4'Left'#2'Z'#6'Height'#2#25#3'Top'#3';'#2#5'Width'#2'K'#11'HelpC' + +'ontext'#2#0#5'Align'#7#6'alNone'#8'AutoSize'#8#18'BorderSpacing.Left'#2#0#17 + +'BorderSpacing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom' + +#2#0#20'BorderSpacing.Around'#2#0#25'BorderSpacing.InnerBorder'#2#4'!BorderS' + +'pacing.CellAlignHorizontal'#7#7'ccaFill'#31'BorderSpacing.CellAlignVertical' + +#7#7'ccaFill'#6'Cancel'#8#7'Caption'#6#6'Before'#7'Default'#8#10'DragCursor' + +#7#6'crDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'#8#14'ParentBidiMode'#9#11 + +'ModalResult'#2#0#7'OnClick'#7#14'BeforeBtnClick'#10'ParentFont'#9#14'Parent' + +'ShowHint'#9#8'TabOrder'#2#5#7'TabStop'#9#7'Visible'#9#0#0#7'TButton'#8'Afte' + +'rBtn'#4'Left'#3#170#0#6'Height'#2#25#3'Top'#3';'#2#5'Width'#2'K'#11'HelpCon' + +'text'#2#0#5'Align'#7#6'alNone'#8'AutoSize'#8#18'BorderSpacing.Left'#2#0#17 + +'BorderSpacing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom' + +#2#0#20'BorderSpacing.Around'#2#0#25'BorderSpacing.InnerBorder'#2#4'!BorderS' + +'pacing.CellAlignHorizontal'#7#7'ccaFill'#31'BorderSpacing.CellAlignVertical' + +#7#7'ccaFill'#6'Cancel'#8#7'Caption'#6#5'After'#7'Default'#8#10'DragCursor'#7 + +#6'crDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'#9#14'ParentBidiMode'#9#11'Mo' + +'dalResult'#2#0#7'OnClick'#7#13'AfterBtnClick'#10'ParentFont'#9#14'ParentSho' + +'wHint'#9#8'TabOrder'#2#6#7'TabStop'#9#7'Visible'#9#0#0#7'TButton'#10'SubIte' + +'mBtn'#4'Left'#2'Z'#6'Height'#2#25#3'Top'#3'Y'#2#5'Width'#3#155#0#11'HelpCon' + +'text'#2#0#5'Align'#7#6'alNone'#8'AutoSize'#8#18'BorderSpacing.Left'#2#0#17 + +'BorderSpacing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom' + +#2#0#20'BorderSpacing.Around'#2#0#25'BorderSpacing.InnerBorder'#2#4'!BorderS' + +'pacing.CellAlignHorizontal'#7#7'ccaFill'#31'BorderSpacing.CellAlignVertical' + +#7#7'ccaFill'#6'Cancel'#8#7'Caption'#6#7'Subitem'#7'Default'#8#10'DragCursor' + +#7#6'crDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'#8#14'ParentBidiMode'#9#11 + +'ModalResult'#2#0#7'OnClick'#7#15'SubItemBtnClick'#10'ParentFont'#9#14'Paren' + +'tShowHint'#9#8'TabOrder'#2#7#7'TabStop'#9#7'Visible'#9#0#0#7'TButton'#9'Del' + +'eteBtn'#4'Left'#2#11#6'Height'#2#25#3'Top'#3'Y'#2#5'Width'#2'K'#11'HelpCont' + +'ext'#2#0#5'Align'#7#6'alNone'#8'AutoSize'#8#18'BorderSpacing.Left'#2#0#17'B' + +'orderSpacing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom'#2 + +#0#20'BorderSpacing.Around'#2#0#25'BorderSpacing.InnerBorder'#2#4'!BorderSpa' + ,'cing.CellAlignHorizontal'#7#7'ccaFill'#31'BorderSpacing.CellAlignVertical'#7 + +#7'ccaFill'#6'Cancel'#8#7'Caption'#6#6'Delete'#7'Default'#8#10'DragCursor'#7 + +#6'crDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'#9#14'ParentBidiMode'#9#11'Mo' + +'dalResult'#2#0#7'OnClick'#7#14'DeleteBtnClick'#10'ParentFont'#9#14'ParentSh' + +'owHint'#9#8'TabOrder'#2#8#7'TabStop'#9#7'Visible'#9#0#0#0#12'TLabeledEdit'#8 + +'FontEdit'#4'Left'#3#188#1#6'Height'#2#25#3'Top'#2'H'#5'Width'#3#232#0#11'He' + +'lpContext'#2#0#10'AutoSelect'#8#8'AutoSize'#8#18'BorderSpacing.Left'#2#0#17 + +'BorderSpacing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom' + +#2#0#20'BorderSpacing.Around'#2#0'!BorderSpacing.CellAlignHorizontal'#7#7'cc' + +'aFill'#31'BorderSpacing.CellAlignVertical'#7#7'ccaFill'#8'CharCase'#7#8'ecN' + +'ormal'#10'DragCursor'#7#6'crDrag'#8'DragMode'#7#8'dmManual'#8'EchoMode'#7#8 + +'emNormal EditLabel.AnchorSideLeft.Control'#7#8'FontEdit"EditLabel.AnchorSid' + +'eBottom.Control'#7#8'FontEdit'#14'EditLabel.Left'#3#188#1#16'EditLabel.Heig' + +'ht'#2#16#13'EditLabel.Top'#2'5'#15'EditLabel.Width'#2#29#21'EditLabel.HelpC' + +'ontext'#2#0#17'EditLabel.Caption'#6#4'Font'#20'EditLabel.DragCursor'#7#6'cr' + +'Drag'#18'EditLabel.DragMode'#7#8'dmManual'#21'EditLabel.ParentColor'#8#20'E' + +'ditLabel.ParentFont'#9#24'EditLabel.ParentShowHint'#9#23'EditLabel.ShowAcce' + +'lChar'#9#16'EditLabel.Layout'#7#5'tlTop'#18'EditLabel.WordWrap'#8#7'Enabled' + +#9#13'LabelPosition'#7#7'lpAbove'#12'LabelSpacing'#2#3#9'MaxLength'#2#255#11 + +'ParentColor'#8#10'ParentFont'#9#14'ParentShowHint'#9#12'PasswordChar'#6#1#0 + +#8'ReadOnly'#8#8'TabOrder'#2#1#7'TabStop'#9#7'Visible'#9#0#0#9'TCheckBox'#15 + +'FolderViewCheck'#4'Left'#3#188#1#6'Height'#2#22#3'Top'#3#212#0#5'Width'#3 + +#129#0#11'HelpContext'#2#0#5'Align'#7#6'alNone'#11'AllowGrayed'#8#8'AutoSize' + +#9#18'BorderSpacing.Left'#2#0#17'BorderSpacing.Top'#2#0#19'BorderSpacing.Rig' + +'ht'#2#0#20'BorderSpacing.Bottom'#2#0#20'BorderSpacing.Around'#2#0'!BorderSp' + +'acing.CellAlignHorizontal'#7#7'ccaFill'#31'BorderSpacing.CellAlignVertical' + +#7#7'ccaFill'#7'Caption'#6#16'Use Folder Icons'#7'Checked'#8#10'DragCursor'#7 + +#6'crDrag'#8'DragKind'#7#6'dkDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'#9#11 + +'ParentColor'#9#10'ParentFont'#9#14'ParentShowHint'#9#14'ParentBidiMode'#9#5 + +'State'#7#11'cbUnchecked'#8'TabOrder'#2#2#7'TabStop'#9#11'UseOnChange'#8#7'V' + +'isible'#9#0#0#7'TButton'#7'SaveBtn'#4'Left'#3'0'#2#6'Height'#2#25#3'Top'#3 + +'h'#2#5'Width'#2'K'#11'HelpContext'#2#0#5'Align'#7#6'alNone'#8'AutoSize'#8#18 + +'BorderSpacing.Left'#2#0#17'BorderSpacing.Top'#2#0#19'BorderSpacing.Right'#2 + +#0#20'BorderSpacing.Bottom'#2#0#20'BorderSpacing.Around'#2#0#25'BorderSpacin' + +'g.InnerBorder'#2#4'!BorderSpacing.CellAlignHorizontal'#7#7'ccaFill'#31'Bord' + +'erSpacing.CellAlignVertical'#7#7'ccaFill'#6'Cancel'#8#7'Caption'#6#4'Save'#7 + +'Default'#8#10'DragCursor'#7#6'crDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'#9 + +#14'ParentBidiMode'#9#11'ModalResult'#2#1#7'OnClick'#7#12'SaveBtnClick'#10'P' + +'arentFont'#9#14'ParentShowHint'#9#8'TabOrder'#2#3#7'TabStop'#9#7'Visible'#9 + +#0#0#7'TButton'#9'CancelBtn'#4'Left'#3#140#2#6'Height'#2#25#3'Top'#3'h'#2#5 + +'Width'#2'K'#11'HelpContext'#2#0#5'Align'#7#6'alNone'#8'AutoSize'#8#18'Borde' + +'rSpacing.Left'#2#0#17'BorderSpacing.Top'#2#0#19'BorderSpacing.Right'#2#0#20 + +'BorderSpacing.Bottom'#2#0#20'BorderSpacing.Around'#2#0#25'BorderSpacing.Inn' + +'erBorder'#2#4'!BorderSpacing.CellAlignHorizontal'#7#7'ccaFill'#31'BorderSpa' + +'cing.CellAlignVertical'#7#7'ccaFill'#6'Cancel'#8#7'Caption'#6#6'Cancel'#7'D' + +'efault'#8#10'DragCursor'#7#6'crDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'#9 + +#14'ParentBidiMode'#9#11'ModalResult'#2#2#7'OnClick'#7#14'CancelBtnClick'#10 + +'ParentFont'#9#14'ParentShowHint'#9#8'TabOrder'#2#4#7'TabStop'#9#7'Visible'#9 + +#0#0#0 +]); diff --git a/applications/chmmaker/chmsitemapeditor.pas b/applications/chmmaker/chmsitemapeditor.pas new file mode 100644 index 000000000..08915d576 --- /dev/null +++ b/applications/chmmaker/chmsitemapeditor.pas @@ -0,0 +1,317 @@ +unit CHMSiteMapEditor; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, chmsitemap, + ComCtrls, ExtCtrls, StdCtrls, Buttons; + +type + + { TSitemapEditForm } + + TSitemapEditForm = class(TForm) + BeforeBtn: TButton; + AfterBtn: TButton; + DeleteBtn: TButton; + CancelBtn: TButton; + SaveBtn: TButton; + FolderViewCheck: TCheckBox; + ForegroundClrBtn: TColorButton; + BackgroundClrBtn: TColorButton; + Label3: TLabel; + FontEdit: TLabeledEdit; + Label4: TLabel; + Label5: TLabel; + SubItemBtn: TButton; + Label2: TLabel; + URLEdit: TLabeledEdit; + LocalCombo: TComboBox; + DescFromTitleBtn: TButton; + GroupBox1: TGroupBox; + Label1: TLabel; + DescriptionEdit: TLabeledEdit; + SitemapTree: TTreeView; + procedure AfterBtnClick(Sender: TObject); + procedure BeforeBtnClick(Sender: TObject); + procedure CancelBtnClick(Sender: TObject); + procedure DeleteBtnClick(Sender: TObject); + procedure DescriptionEditChange(Sender: TObject); + procedure LocalComboChange(Sender: TObject); + procedure LocalComboKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState + ); + procedure SaveBtnClick(Sender: TObject); + procedure SitemapTreeCustomCreateItem(Sender: TCustomTreeView; + var ATreeNode: TTreenode); + procedure SitemapTreeSelectionChanged(Sender: TObject); + procedure SubItemBtnClick(Sender: TObject); + procedure URLEditChange(Sender: TObject); + private + { private declarations } + FStream: TStream; + FSiteMapType: TSiteMapType; + procedure InitControls; + public + { public declarations } + procedure LoadFromStream(AStream: TStream); + function Execute(AStream: TStream; SiteType: TSiteMapType; AvailableLinks: TStrings): Boolean; + end; + +var + SitemapEditForm: TSitemapEditForm; + +implementation +uses + LCLType; + +type + + { TChmTreeNode } + + TChmTreeNode = class(TTreeNode) + private + FLocal: String; + FURL: String; + public + property URL: String read FURL write FURL; + property Local: String read FLocal write FLocal; + end; + +{ TSitemapEditForm } + +procedure TSitemapEditForm.CancelBtnClick(Sender: TObject); +begin + +end; + +procedure TSitemapEditForm.DeleteBtnClick(Sender: TObject); +begin + SitemapTree.Selected.DeleteChildren; + SitemapTree.Selected.Delete; +end; + +procedure TSitemapEditForm.DescriptionEditChange(Sender: TObject); +begin + if SitemapTree.Selected = nil then Exit; + TChmTreeNode(SitemapTree.Selected).Text := DescriptionEdit.Text; +end; + +procedure TSitemapEditForm.LocalComboChange(Sender: TObject); +begin + if SitemapTree.Selected = nil then Exit; + TChmTreeNode(SitemapTree.Selected).Local := LocalCombo.Text; +end; + +procedure TSitemapEditForm.LocalComboKeyUp(Sender: TObject; var Key: Word; + Shift: TShiftState); +var + I: Integer; + FLine: String; + FLength: Integer; +begin + case Key of + VK_BACK, + VK_DELETE, + VK_LEFT, + VK_RIGHT, + VK_SHIFT, + VK_CONTROL, + VK_UP, + VK_DOWN, + VK_END, + VK_HOME: Exit; + end; + FLength := Length(LocalCombo.Text); + for I := 0 to LocalCombo.Items.Count-1 do begin + FLine := Copy(LocalCombo.Items.Strings[I],1, FLength); + if CompareStr(FLine, LocalCombo.Text) = 0 then + begin + LocalCombo.Text := LocalCombo.Items.Strings[I]; + LocalCombo.SelStart := FLength; + Application.ProcessMessages; + LocalCombo.SelLength := Length(LocalCombo.Text) - FLength; + TChmTreeNode(SitemapTree.Selected).Local := LocalCombo.Text; + end; + + end; +end; + +procedure TSitemapEditForm.SaveBtnClick(Sender: TObject); + procedure AddItem(TreeNode: TChmTreeNode; ChmItems: TChmSiteMapItems); + var + ChmItem: TChmSiteMapItem; + I: Integer; + begin + ChmItem := ChmItems.NewItem; + ChmItem.Text := TreeNode.Text; + ChmItem.URL := TreeNode.URL; + ChmItem.Local := TreeNode.Local; + for I := 0 to TreeNode.Count-1 do begin + AddItem(TChmTreeNode(TreeNode.Items[I]), ChmItem.Children); + end; + end; +var + ChmSitemap: TChmSiteMap; + I: Integer; +begin + ChmSitemap := TChmSiteMap.Create(FSiteMapType); + + for I := 0 to SitemapTree.Items.Count-1 do + if SitemapTree.Items.Item[I].Parent = nil then + AddItem(TChmTreeNode(SitemapTree.Items.Item[I]), ChmSitemap.Items); + + ChmSiteMap.ForegroundColor := LongInt(ForegroundClrBtn.ButtonColor); + ChmSiteMap.BackgroundColor := LongInt(BackgroundClrBtn.ButtonColor); + ChmSiteMap.UseFolderImages := FolderViewCheck.Checked; + ChmSiteMap.Font := FontEdit.Text; + FStream.Position := 0; + ChmSitemap.SaveToStream(FStream); + + ChmSitemap.Free; +end; + +procedure TSitemapEditForm.BeforeBtnClick(Sender: TObject); +var + Item: TTreeNode; +begin + Item := SitemapTree.Items.Insert(SitemapTree.Selected, 'Untitled'); + Item.Selected := True; + SitemapTreeSelectionChanged(Sender); +end; + +procedure TSitemapEditForm.AfterBtnClick(Sender: TObject); +var + Item: TTreeNode; +begin + Item := SitemapTree.Items.Add(SitemapTree.Selected, 'Untitled'); + Item.Selected := True; + SitemapTreeSelectionChanged(Sender); +end; + +procedure TSitemapEditForm.SitemapTreeCustomCreateItem(Sender: TCustomTreeView; + var ATreeNode: TTreenode); +begin + ATreeNode := TChmTreeNode.Create(TTreeView(Sender).Items); +end; + +procedure TSitemapEditForm.SitemapTreeSelectionChanged(Sender: TObject); +var + Value: Boolean; + Item: TChmTreeNode; +begin + Value := SitemapTree.Selected <> nil; + + DeleteBtn.Enabled := Value; + + BeforeBtn.Enabled := Value and (SitemapTree.Selected.Parent = nil) and (SitemapTree.Selected.Index <> 0); + SubItemBtn.Enabled := Value and (FSiteMapType = stTOC); + Label1.Enabled := Value; + DescFromTitleBtn.Enabled := Value; + DescriptionEdit.Enabled := Value; + LocalCombo.Enabled := Value; + URLEdit.Enabled := Value; + + if Value then begin + Item := TChmTreeNode(SitemapTree.Selected); + DescriptionEdit.Text := Item.Text; + LocalCombo.Text := Item.Local; + URLEdit.Text := Item.URL; + end + else begin + DescriptionEdit.Text := ''; + LocalCombo.Text := ''; + URLEdit.Text := ''; + end; +end; + +procedure TSitemapEditForm.SubItemBtnClick(Sender: TObject); +var + Item : TTreeNode; +begin + Item := SitemapTree.Items.AddChild(SitemapTree.Selected, 'Untitled'); + Item.Selected := True; + SitemapTreeSelectionChanged(Sender); +end; + +procedure TSitemapEditForm.URLEditChange(Sender: TObject); +begin + if SitemapTree.Selected = nil then Exit; + TChmTreeNode(SitemapTree.Selected).URL := URLEdit.Text; +end; + +procedure TSitemapEditForm.InitControls; +var + Value: Boolean; +begin + Value := (FSiteMapType = stTOC); + + SubItemBtn.Enabled := Value; + FolderViewCheck.Enabled := Value; + ForegroundClrBtn.Enabled := Value; + BackgroundClrBtn.Enabled := Value; + Label4.Enabled := Value; + Label5.Enabled := Value; +end; + +procedure TSitemapEditForm.LoadFromStream(AStream: TStream); + procedure AddItems(Items: TChmSiteMapItems; ParentItem: TTreeNode); + var + TreeNode: TChmTreeNode; + ChmItem: TChmSiteMapItem; + I: Integer; + begin + for I := 0 to Items.Count-1 do begin + ChmItem := Items.Item[I]; + TreeNode := TChmTreeNode(SitemapTree.Items.AddChild(ParentItem, ChmItem.Text)); + TreeNode.Local := ChmItem.Local; + TreeNode.URL := ChmItem.URL; + AddItems(ChmItem.Children, TreeNode); + end; + end; +var + ChmSiteMap: TChmSiteMap; +begin + ChmSiteMap := TChmSiteMap.Create(FSiteMapType); + AStream. Position := 0; + + if AStream.Size > 0 then; + ChmSiteMap.LoadFromStream(AStream); + + SitemapTree.Items.Clear; + AddItems(ChmSiteMap.Items, nil); + + ForegroundClrBtn.ButtonColor := TColor(ChmSiteMap.ForegroundColor); + BackgroundClrBtn.ButtonColor := TColor(ChmSiteMap.BackgroundColor); + FolderViewCheck.Checked := ChmSiteMap.UseFolderImages; + FontEdit.Text := ChmSiteMap.Font; + + + //ChmSiteMap.Free; +end; + +function TSitemapEditForm.Execute(AStream: TStream; SiteType: TSiteMapType; + AvailableLinks: TStrings): Boolean; +begin + FStream := AStream; + AStream.Position := 0; + FSiteMapType := SiteType; + InitControls; + LoadFromStream(AStream); + + LocalCombo.Items.Assign(AvailableLinks); + + ShowModal; + + while ModalResult = mrNone do + Application.HandleMessage; + + Result := ModalResult = mrOK; +end; + +initialization + {$I chmsitemapeditor.lrs} + +end. + diff --git a/applications/chmmaker/unit1.lfm b/applications/chmmaker/unit1.lfm new file mode 100755 index 000000000..ade2435d8 --- /dev/null +++ b/applications/chmmaker/unit1.lfm @@ -0,0 +1,380 @@ +object CHMForm: TCHMForm + Left = 786 + Height = 511 + Top = 299 + Width = 611 + ActiveControl = FileListBox + AutoScroll = True + Caption = 'Compiled HTML Help Project - [Made with Freepascal]' + ClientHeight = 488 + ClientWidth = 611 + Menu = MainMenu1 + OnClose = FormClose + OnCreate = FormCreate + ShowInTaskBar = stAlways + LCLVersion = '0.9.29' + Visible = True + object StatusBar1: TStatusBar + Left = 0 + Height = 19 + Top = 469 + Width = 611 + Panels = <> + end + object GroupBox1: TGroupBox + Left = 0 + Height = 469 + Top = 0 + Width = 268 + Align = alLeft + Caption = 'Files' + ClientHeight = 452 + ClientWidth = 264 + TabOrder = 0 + object FileListBox: TListBox + Left = 0 + Height = 318 + Top = 0 + Width = 264 + Align = alClient + ItemHeight = 0 + OnDrawItem = FileListBoxDrawItem + Sorted = True + Style = lbOwnerDrawFixed + TabOrder = 0 + TopIndex = -1 + end + object Panel2: TPanel + Left = 0 + Height = 134 + Top = 318 + Width = 264 + Align = alBottom + ClientHeight = 134 + ClientWidth = 264 + TabOrder = 1 + object Label4: TLabel + Left = 16 + Height = 48 + Top = 85 + Width = 232 + Align = alBottom + AutoSize = False + BorderSpacing.Left = 15 + BorderSpacing.Right = 15 + Caption = 'All files must be in the project file directory or a subdirectory.' + ParentColor = False + WordWrap = True + end + object AddFilesBtn: TButton + Left = 11 + Height = 25 + Top = 3 + Width = 81 + BorderSpacing.InnerBorder = 4 + Caption = 'Add Files' + OnClick = AddFilesBtnClick + TabOrder = 0 + end + object RemoveFilesBtn: TButton + Left = 94 + Height = 25 + Top = 3 + Width = 156 + BorderSpacing.InnerBorder = 4 + Caption = 'Remove Selected' + OnClick = RemoveFilesBtnClick + TabOrder = 1 + end + object AutoAddLinksBtn: TButton + Left = 11 + Height = 25 + Top = 59 + Width = 239 + BorderSpacing.InnerBorder = 4 + Caption = 'Auto add HREF files' + Enabled = False + OnClick = AutoAddLinksBtnClick + TabOrder = 2 + end + object AddAllBtn: TButton + Left = 11 + Height = 25 + Top = 32 + Width = 239 + BorderSpacing.InnerBorder = 4 + Caption = 'Add all files in Project Directory' + OnClick = AddAllBtnClick + TabOrder = 3 + end + end + end + object Panel1: TPanel + Left = 268 + Height = 469 + Top = 0 + Width = 343 + Align = alClient + ClientHeight = 469 + ClientWidth = 343 + TabOrder = 1 + object Label1: TLabel + Left = 11 + Height = 16 + Top = 11 + Width = 110 + Caption = 'Table of Contents' + ParentColor = False + end + object Label2: TLabel + Left = 11 + Height = 16 + Top = 59 + Width = 34 + Caption = 'Index' + ParentColor = False + end + object Label3: TLabel + Left = 11 + Height = 16 + Top = 168 + Width = 136 + Caption = 'Compile time options:' + ParentColor = False + end + object Label5: TLabel + Left = 11 + Height = 16 + Top = 108 + Width = 81 + Caption = 'Default Page' + ParentColor = False + end + object Label6: TLabel + Left = 12 + Height = 16 + Top = 356 + Width = 85 + Caption = 'CHM filename' + ParentColor = False + end + object TOCEdit: TFileNameEdit + Left = 10 + Height = 23 + Top = 31 + Width = 203 + OnAcceptFileName = TOCEditAcceptFileName + DialogOptions = [] + Filter = 'Table of Contents Files(*.hhc)|*.hhc|All files|*' + FilterIndex = 0 + HideDirectories = False + ButtonWidth = 23 + NumGlyphs = 1 + AutoSelect = False + AutoSize = False + MaxLength = 0 + TabOrder = 0 + end + object IndexEdit: TFileNameEdit + Left = 10 + Height = 23 + Top = 79 + Width = 203 + OnAcceptFileName = IndexEditAcceptFileName + DialogOptions = [] + Filter = 'Index Files(*.hhk)|*.hhk|All Files|*' + FilterIndex = 0 + HideDirectories = False + ButtonWidth = 23 + NumGlyphs = 1 + AutoSelect = False + AutoSize = False + MaxLength = 0 + TabOrder = 1 + end + object TOCEditBtn: TButton + Left = 247 + Height = 23 + Top = 31 + Width = 51 + BorderSpacing.InnerBorder = 4 + Caption = 'Edit' + OnClick = TOCEditBtnClick + TabOrder = 2 + end + object IndexEditBtn: TButton + Left = 247 + Height = 23 + Top = 80 + Width = 51 + BorderSpacing.InnerBorder = 4 + Caption = 'Edit' + OnClick = IndexEditBtnClick + TabOrder = 3 + end + object FollowLinksCheck: TCheckBox + Left = 19 + Height = 34 + Top = 201 + Width = 202 + Caption = 'Parse *.htm* files to include '#10'linked pages and images' + Enabled = False + TabOrder = 4 + end + object CreateSearchableCHMCheck: TCheckBox + Left = 20 + Height = 22 + Hint = 'Only indexes files added to the project'#10'not files automatically added.' + Top = 240 + Width = 182 + Caption = 'Create a searchable chm' + ParentShowHint = False + ShowHint = True + TabOrder = 5 + end + object DefaultPageCombo: TComboBox + Left = 11 + Height = 29 + Top = 128 + Width = 287 + AutoSelect = False + ItemHeight = 0 + Style = csDropDownList + TabOrder = 6 + end + object CompileBtn: TButton + AnchorSideLeft.Side = asrBottom + AnchorSideRight.Control = CompileViewBtn + Left = 97 + Height = 35 + Top = 420 + Width = 69 + Anchors = [akRight, akBottom] + AutoSize = True + BorderSpacing.Right = 9 + BorderSpacing.InnerBorder = 4 + Caption = 'Compile' + OnClick = CompileBtnClick + TabOrder = 7 + end + object CompileViewBtn: TButton + AnchorSideLeft.Control = CompileBtn + AnchorSideLeft.Side = asrBottom + Left = 175 + Height = 35 + Top = 420 + Width = 129 + Anchors = [akRight, akBottom] + AutoSize = True + BorderSpacing.Right = 13 + BorderSpacing.InnerBorder = 4 + Caption = 'Compile and View' + OnClick = CompileViewBtnClick + TabOrder = 8 + end + object ChmFileNameEdit: TFileNameEdit + Left = 11 + Height = 23 + Top = 380 + Width = 270 + OnAcceptFileName = ChmFileNameEditAcceptFileName + DialogKind = dkSave + DialogTitle = 'Save CHM as...' + DialogOptions = [] + Filter = 'Compressed HTML Help Files|*.chm' + FilterIndex = 0 + HideDirectories = False + ButtonWidth = 23 + NumGlyphs = 1 + AutoSelect = False + AutoSize = False + MaxLength = 0 + TabOrder = 9 + end + object CreateBinaryIndexCkeckBox: TCheckBox + Left = 21 + Height = 22 + Top = 272 + Width = 145 + Caption = 'Create Binary Index' + TabOrder = 10 + end + end + object OpenDialog1: TOpenDialog + Filter = 'Help File Project(*.hfp)|*.hfp' + FilterIndex = 0 + Options = [ofFileMustExist, ofEnableSizing, ofViewDetail] + left = 8 + top = 16 + end + object SaveDialog1: TSaveDialog + Filter = 'Help File Project(*.hfp)|*.hfp' + FilterIndex = 0 + left = 36 + top = 15 + end + object MainMenu1: TMainMenu + left = 68 + top = 15 + object MenuItem1: TMenuItem + Caption = 'Project' + object ProjNewItem: TMenuItem + Caption = 'New' + OnClick = ProjNewItemClick + end + object ProjOpenItem: TMenuItem + Caption = 'Open' + OnClick = ProjOpenItemClick + end + object MenuItem9: TMenuItem + Caption = '-' + end + object ProjSaveItem: TMenuItem + Caption = 'Save' + OnClick = ProjSaveItemClick + end + object ProjSaveAsItem: TMenuItem + Caption = 'Save as' + OnClick = ProjSaveAsItemClick + end + object ProjCloseItem: TMenuItem + Caption = 'Close' + OnClick = ProjCloseItemClick + end + object MenuItem12: TMenuItem + Caption = '-' + end + object ProjQuitItem: TMenuItem + Caption = 'Quit Program' + OnClick = ProjQuitItemClick + end + end + object CompileItem: TMenuItem + Caption = 'Compile' + object CompileProjItem: TMenuItem + Caption = 'Compile Project' + end + object CompileOpenBttn: TMenuItem + Caption = 'Compile and Open chm' + end + end + object MenuItem3: TMenuItem + Caption = 'Help' + object HelpHelpItem: TMenuItem + Caption = 'Help' + end + object MenuItem5: TMenuItem + Caption = '-' + end + object HelpAboutItem: TMenuItem + Caption = 'About' + end + end + end + object OpenDialog2: TOpenDialog + FilterIndex = 0 + Options = [ofAllowMultiSelect, ofEnableSizing, ofViewDetail] + left = 12 + top = 304 + end +end \ No newline at end of file diff --git a/applications/chmmaker/unit1.lrs b/applications/chmmaker/unit1.lrs new file mode 100755 index 000000000..4228b52d8 --- /dev/null +++ b/applications/chmmaker/unit1.lrs @@ -0,0 +1,107 @@ +LazarusResources.Add('TCHMForm','FORMDATA',[ + 'TPF0'#8'TCHMForm'#7'CHMForm'#4'Left'#3#18#3#6'Height'#3#255#1#3'Top'#3'+'#1#5 + +'Width'#3'c'#2#13'ActiveControl'#7#11'FileListBox'#10'AutoScroll'#9#7'Captio' + +'n'#6'3Compiled HTML Help Project - [Made with Freepascal]'#12'ClientHeight' + +#3#232#1#11'ClientWidth'#3'c'#2#4'Menu'#7#9'MainMenu1'#7'OnClose'#7#9'FormCl' + +'ose'#8'OnCreate'#7#10'FormCreate'#13'ShowInTaskBar'#7#8'stAlways'#10'LCLVer' + +'sion'#6#6'0.9.29'#7'Visible'#9#0#10'TStatusBar'#10'StatusBar1'#4'Left'#2#0#6 + +'Height'#2#19#3'Top'#3#213#1#5'Width'#3'c'#2#6'Panels'#14#0#0#0#9'TGroupBox' + +#9'GroupBox1'#4'Left'#2#0#6'Height'#3#213#1#3'Top'#2#0#5'Width'#3#12#1#5'Ali' + +'gn'#7#6'alLeft'#7'Caption'#6#5'Files'#12'ClientHeight'#3#196#1#11'ClientWid' + +'th'#3#8#1#8'TabOrder'#2#0#0#8'TListBox'#11'FileListBox'#4'Left'#2#0#6'Heigh' + +'t'#3'>'#1#3'Top'#2#0#5'Width'#3#8#1#5'Align'#7#8'alClient'#10'ItemHeight'#2 + +#0#10'OnDrawItem'#7#19'FileListBoxDrawItem'#6'Sorted'#9#5'Style'#7#16'lbOwne' + +'rDrawFixed'#8'TabOrder'#2#0#8'TopIndex'#2#255#0#0#6'TPanel'#6'Panel2'#4'Lef' + +'t'#2#0#6'Height'#3#134#0#3'Top'#3'>'#1#5'Width'#3#8#1#5'Align'#7#8'alBottom' + +#12'ClientHeight'#3#134#0#11'ClientWidth'#3#8#1#8'TabOrder'#2#1#0#6'TLabel'#6 + +'Label4'#4'Left'#2#16#6'Height'#2'0'#3'Top'#2'U'#5'Width'#3#232#0#5'Align'#7 + +#8'alBottom'#8'AutoSize'#8#18'BorderSpacing.Left'#2#15#19'BorderSpacing.Righ' + +'t'#2#15#7'Caption'#6'BAll files must be in the project file directory or a ' + +'subdirectory.'#11'ParentColor'#8#8'WordWrap'#9#0#0#7'TButton'#11'AddFilesBt' + +'n'#4'Left'#2#11#6'Height'#2#25#3'Top'#2#3#5'Width'#2'Q'#25'BorderSpacing.In' + +'nerBorder'#2#4#7'Caption'#6#9'Add Files'#7'OnClick'#7#16'AddFilesBtnClick'#8 + +'TabOrder'#2#0#0#0#7'TButton'#14'RemoveFilesBtn'#4'Left'#2'^'#6'Height'#2#25 + +#3'Top'#2#3#5'Width'#3#156#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6 + +#15'Remove Selected'#7'OnClick'#7#19'RemoveFilesBtnClick'#8'TabOrder'#2#1#0#0 + +#7'TButton'#15'AutoAddLinksBtn'#4'Left'#2#11#6'Height'#2#25#3'Top'#2';'#5'Wi' + +'dth'#3#239#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#19'Auto add HRE' + +'F files'#7'Enabled'#8#7'OnClick'#7#20'AutoAddLinksBtnClick'#8'TabOrder'#2#2 + +#0#0#7'TButton'#9'AddAllBtn'#4'Left'#2#11#6'Height'#2#25#3'Top'#2' '#5'Width' + +#3#239#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6'"Add all files in Pr' + +'oject Directory'#7'OnClick'#7#14'AddAllBtnClick'#8'TabOrder'#2#3#0#0#0#0#6 + +'TPanel'#6'Panel1'#4'Left'#3#12#1#6'Height'#3#213#1#3'Top'#2#0#5'Width'#3'W' + +#1#5'Align'#7#8'alClient'#12'ClientHeight'#3#213#1#11'ClientWidth'#3'W'#1#8 + +'TabOrder'#2#1#0#6'TLabel'#6'Label1'#4'Left'#2#11#6'Height'#2#16#3'Top'#2#11 + +#5'Width'#2'n'#7'Caption'#6#17'Table of Contents'#11'ParentColor'#8#0#0#6'TL' + +'abel'#6'Label2'#4'Left'#2#11#6'Height'#2#16#3'Top'#2';'#5'Width'#2'"'#7'Cap' + +'tion'#6#5'Index'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#11#6'H' + +'eight'#2#16#3'Top'#3#168#0#5'Width'#3#136#0#7'Caption'#6#21'Compile time op' + +'tions:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'Left'#2#11#6'Height'#2 + +#16#3'Top'#2'l'#5'Width'#2'Q'#7'Caption'#6#12'Default Page'#11'ParentColor'#8 + +#0#0#6'TLabel'#6'Label6'#4'Left'#2#12#6'Height'#2#16#3'Top'#3'd'#1#5'Width'#2 + +'U'#7'Caption'#6#12'CHM filename'#11'ParentColor'#8#0#0#13'TFileNameEdit'#7 + +'TOCEdit'#4'Left'#2#10#6'Height'#2#23#3'Top'#2#31#5'Width'#3#203#0#16'OnAcce' + +'ptFileName'#7#21'TOCEditAcceptFileName'#13'DialogOptions'#11#0#6'Filter'#6 + +'0Table of Contents Files(*.hhc)|*.hhc|All files|*'#11'FilterIndex'#2#0#15'H' + +'ideDirectories'#8#11'ButtonWidth'#2#23#9'NumGlyphs'#2#1#10'AutoSelect'#8#8 + +'AutoSize'#8#9'MaxLength'#2#0#8'TabOrder'#2#0#0#0#13'TFileNameEdit'#9'IndexE' + +'dit'#4'Left'#2#10#6'Height'#2#23#3'Top'#2'O'#5'Width'#3#203#0#16'OnAcceptFi' + +'leName'#7#23'IndexEditAcceptFileName'#13'DialogOptions'#11#0#6'Filter'#6'$I' + +'ndex Files(*.hhk)|*.hhk|All Files|*'#11'FilterIndex'#2#0#15'HideDirectories' + +#8#11'ButtonWidth'#2#23#9'NumGlyphs'#2#1#10'AutoSelect'#8#8'AutoSize'#8#9'Ma' + +'xLength'#2#0#8'TabOrder'#2#1#0#0#7'TButton'#10'TOCEditBtn'#4'Left'#3#247#0#6 + +'Height'#2#23#3'Top'#2#31#5'Width'#2'3'#25'BorderSpacing.InnerBorder'#2#4#7 + +'Caption'#6#4'Edit'#7'OnClick'#7#15'TOCEditBtnClick'#8'TabOrder'#2#2#0#0#7'T' + +'Button'#12'IndexEditBtn'#4'Left'#3#247#0#6'Height'#2#23#3'Top'#2'P'#5'Width' + +#2'3'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#4'Edit'#7'OnClick'#7#17 + +'IndexEditBtnClick'#8'TabOrder'#2#3#0#0#9'TCheckBox'#16'FollowLinksCheck'#4 + +'Left'#2#19#6'Height'#2'"'#3'Top'#3#201#0#5'Width'#3#202#0#7'Caption'#6'6Par' + +'se *.htm* files to include '#10'linked pages and images'#7'Enabled'#8#8'Tab' + +'Order'#2#4#0#0#9'TCheckBox'#24'CreateSearchableCHMCheck'#4'Left'#2#20#6'Hei' + +'ght'#2#22#4'Hint'#6'FOnly indexes files added to the project'#10'not files ' + +'automatically added.'#3'Top'#3#240#0#5'Width'#3#182#0#7'Caption'#6#23'Creat' + +'e a searchable chm'#14'ParentShowHint'#8#8'ShowHint'#9#8'TabOrder'#2#5#0#0#9 + +'TComboBox'#16'DefaultPageCombo'#4'Left'#2#11#6'Height'#2#29#3'Top'#3#128#0#5 + +'Width'#3#31#1#10'AutoSelect'#8#10'ItemHeight'#2#0#5'Style'#7#14'csDropDownL' + ,'ist'#8'TabOrder'#2#6#0#0#7'TButton'#10'CompileBtn'#19'AnchorSideLeft.Side'#7 + +#9'asrBottom'#23'AnchorSideRight.Control'#7#14'CompileViewBtn'#4'Left'#2'a'#6 + +'Height'#2'#'#3'Top'#3#164#1#5'Width'#2'E'#7'Anchors'#11#7'akRight'#8'akBott' + +'om'#0#8'AutoSize'#9#19'BorderSpacing.Right'#2#9#25'BorderSpacing.InnerBorde' + +'r'#2#4#7'Caption'#6#7'Compile'#7'OnClick'#7#15'CompileBtnClick'#8'TabOrder' + +#2#7#0#0#7'TButton'#14'CompileViewBtn'#22'AnchorSideLeft.Control'#7#10'Compi' + +'leBtn'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3#175#0#6'Height'#2'#' + +#3'Top'#3#164#1#5'Width'#3#129#0#7'Anchors'#11#7'akRight'#8'akBottom'#0#8'Au' + +'toSize'#9#19'BorderSpacing.Right'#2#13#25'BorderSpacing.InnerBorder'#2#4#7 + +'Caption'#6#16'Compile and View'#7'OnClick'#7#19'CompileViewBtnClick'#8'TabO' + +'rder'#2#8#0#0#13'TFileNameEdit'#15'ChmFileNameEdit'#4'Left'#2#11#6'Height'#2 + +#23#3'Top'#3'|'#1#5'Width'#3#14#1#16'OnAcceptFileName'#7#29'ChmFileNameEditA' + +'cceptFileName'#10'DialogKind'#7#6'dkSave'#11'DialogTitle'#6#14'Save CHM as.' + +'..'#13'DialogOptions'#11#0#6'Filter'#6' Compressed HTML Help Files|*.chm'#11 + +'FilterIndex'#2#0#15'HideDirectories'#8#11'ButtonWidth'#2#23#9'NumGlyphs'#2#1 + +#10'AutoSelect'#8#8'AutoSize'#8#9'MaxLength'#2#0#8'TabOrder'#2#9#0#0#9'TChec' + +'kBox'#25'CreateBinaryIndexCkeckBox'#4'Left'#2#21#6'Height'#2#22#3'Top'#3#16 + +#1#5'Width'#3#145#0#7'Caption'#6#19'Create Binary Index'#8'TabOrder'#2#10#0#0 + +#0#11'TOpenDialog'#11'OpenDialog1'#6'Filter'#6#30'Help File Project(*.hfp)|*' + +'.hfp'#11'FilterIndex'#2#0#7'Options'#11#15'ofFileMustExist'#14'ofEnableSizi' + +'ng'#12'ofViewDetail'#0#4'left'#2#8#3'top'#2#16#0#0#11'TSaveDialog'#11'SaveD' + +'ialog1'#6'Filter'#6#30'Help File Project(*.hfp)|*.hfp'#11'FilterIndex'#2#0#4 + +'left'#2'$'#3'top'#2#15#0#0#9'TMainMenu'#9'MainMenu1'#4'left'#2'D'#3'top'#2 + +#15#0#9'TMenuItem'#9'MenuItem1'#7'Caption'#6#7'Project'#0#9'TMenuItem'#11'Pr' + +'ojNewItem'#7'Caption'#6#3'New'#7'OnClick'#7#16'ProjNewItemClick'#0#0#9'TMen' + +'uItem'#12'ProjOpenItem'#7'Caption'#6#4'Open'#7'OnClick'#7#17'ProjOpenItemCl' + +'ick'#0#0#9'TMenuItem'#9'MenuItem9'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#12'Pr' + +'ojSaveItem'#7'Caption'#6#4'Save'#7'OnClick'#7#17'ProjSaveItemClick'#0#0#9'T' + +'MenuItem'#14'ProjSaveAsItem'#7'Caption'#6#7'Save as'#7'OnClick'#7#19'ProjSa' + +'veAsItemClick'#0#0#9'TMenuItem'#13'ProjCloseItem'#7'Caption'#6#5'Close'#7'O' + +'nClick'#7#18'ProjCloseItemClick'#0#0#9'TMenuItem'#10'MenuItem12'#7'Caption' + +#6#1'-'#0#0#9'TMenuItem'#12'ProjQuitItem'#7'Caption'#6#12'Quit Program'#7'On' + +'Click'#7#17'ProjQuitItemClick'#0#0#0#9'TMenuItem'#11'CompileItem'#7'Caption' + +#6#7'Compile'#0#9'TMenuItem'#15'CompileProjItem'#7'Caption'#6#15'Compile Pro' + +'ject'#0#0#9'TMenuItem'#15'CompileOpenBttn'#7'Caption'#6#20'Compile and Open' + +' chm'#0#0#0#9'TMenuItem'#9'MenuItem3'#7'Caption'#6#4'Help'#0#9'TMenuItem'#12 + +'HelpHelpItem'#7'Caption'#6#4'Help'#0#0#9'TMenuItem'#9'MenuItem5'#7'Caption' + +#6#1'-'#0#0#9'TMenuItem'#13'HelpAboutItem'#7'Caption'#6#5'About'#0#0#0#0#11 + +'TOpenDialog'#11'OpenDialog2'#11'FilterIndex'#2#0#7'Options'#11#18'ofAllowMu' + +'ltiSelect'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#2#12#3'top'#3'0'#1 + +#0#0#0 +]); diff --git a/applications/chmmaker/unit1.pas b/applications/chmmaker/unit1.pas new file mode 100755 index 000000000..97541b7d1 --- /dev/null +++ b/applications/chmmaker/unit1.pas @@ -0,0 +1,478 @@ +unit unit1; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, + Buttons, chmwriter, ComCtrls, chmsitemap, SynEdit, Menus, ExtCtrls, CheckLst, + EditBtn, chmfilewriter; + +type + + { TCHMForm } + + TCHMForm = class(TForm) + AddFilesBtn: TButton; + AutoAddLinksBtn: TButton; + AddAllBtn: TButton; + CreateBinaryIndexCkeckBox: TCheckBox; + CompileViewBtn: TButton; + CompileBtn: TButton; + DefaultPageCombo: TComboBox; + ChmFileNameEdit: TFileNameEdit; + FollowLinksCheck: TCheckBox; + CreateSearchableCHMCheck: TCheckBox; + Label3: TLabel; + Label4: TLabel; + Label5: TLabel; + Label6: TLabel; + OpenDialog2: TOpenDialog; + RemoveFilesBtn: TButton; + TOCEditBtn: TButton; + IndexEditBtn: TButton; + IndexEdit: TFileNameEdit; + GroupBox1: TGroupBox; + FileListBox: TListBox; + Label1: TLabel; + Label2: TLabel; + MainMenu1: TMainMenu; + MenuItem1: TMenuItem; + ProjSaveItem: TMenuItem; + ProjSaveAsItem: TMenuItem; + MenuItem12: TMenuItem; + ProjQuitItem: TMenuItem; + CompileItem: TMenuItem; + CompileProjItem: TMenuItem; + CompileOpenBttn: TMenuItem; + ProjCloseItem: TMenuItem; + MenuItem3: TMenuItem; + HelpHelpItem: TMenuItem; + MenuItem5: TMenuItem; + HelpAboutItem: TMenuItem; + ProjNewItem: TMenuItem; + ProjOpenItem: TMenuItem; + MenuItem9: TMenuItem; + OpenDialog1: TOpenDialog; + Panel1: TPanel; + Panel2: TPanel; + SaveDialog1: TSaveDialog; + StatusBar1: TStatusBar; + TOCEdit: TFileNameEdit; + procedure AddAllBtnClick(Sender: TObject); + procedure AddFilesBtnClick(Sender: TObject); + procedure AutoAddLinksBtnClick(Sender: TObject); + procedure Button1Click(Sender: TObject); + procedure Button2Click(Sender: TObject); + procedure ChmFileNameEditAcceptFileName(Sender: TObject; var Value: String); + procedure CompileBtnClick(Sender: TObject); + procedure CompileViewBtnClick(Sender: TObject); + procedure FileListBoxDrawItem(Control: TWinControl; Index: Integer; + ARect: TRect; State: TOwnerDrawState); + procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); + procedure FormCreate(Sender: TObject); + procedure IndexEditAcceptFileName(Sender: TObject; var Value: String); + procedure IndexEditBtnClick(Sender: TObject); + procedure ProjCloseItemClick(Sender: TObject); + procedure ProjNewItemClick(Sender: TObject); + procedure ProjOpenItemClick(Sender: TObject); + procedure ProjQuitItemClick(Sender: TObject); + procedure ProjSaveAsItemClick(Sender: TObject); + procedure ProjSaveItemClick(Sender: TObject); + procedure RemoveFilesBtnClick(Sender: TObject); + procedure TOCEditAcceptFileName(Sender: TObject; var Value: String); + procedure TOCEditBtnClick(Sender: TObject); + private + FModified: Boolean; + procedure AddItems(AParentItem: TTreeNode; ChmItems: TChmSiteMapItems); + + function GetModified: Boolean; + procedure Save(aAs: Boolean); + procedure CloseProject; + + procedure AddFilesToProject(Strings: TStrings); + public + Project: TChmProject; + procedure OpenProject(AFileName: String); + property Modified: Boolean read GetModified write FModified; + end; + +var + CHMForm: TCHMForm; + +implementation +uses CHMSiteMapEditor, Process; +{ TCHMForm } + +procedure TCHMForm.AddItems(AParentItem: TTreeNode; ChmItems: TChmSiteMapItems); + var + Item: TTreeNode; + I: Integer; + begin +{ for I := 0 to ChmItems.Count-1 do begin + Item := TreeView1.Items.AddChild(AParentItem, ChmItems.Item[I].Text); + AddItems(Item, ChmItems.Item[I].Children); + end; + } end; + +procedure TCHMForm.Button1Click(Sender: TObject); +var + SiteMap: TChmSiteMap; + Stream: TMemoryStream; +begin + {SiteMap := TChmSiteMap.Create(stTOC); + OpenDialog1.InitialDir := GetCurrentDir; + if OpenDialog1.Execute = False then Exit; + SiteMap.LoadFromFile(OpenDialog1.FileName); + AddItems(nil, sitemap.Items); + + Stream := TMemoryStream.Create; + + Sitemap.SaveToStream(Stream); + Stream.Position := 0; + + SynEdit1.Lines.LoadFromStream(Stream); + Stream.Free; + } +end; + +procedure TCHMForm.AddFilesBtnClick(Sender: TObject); +begin + if OpenDialog2.Execute = False then exit; + Modified := True; + AddFilesToProject(OpenDialog2.Files); +end; + +procedure TCHMForm.AddAllBtnClick(Sender: TObject); +var + Files: TStrings; + procedure AddDir(ADir: String); + var + SearchRec: TSearchRec; + FileName: String; + FPos: Integer; + begin + // WriteLn('Adding Dir: ', ADir); + if FindFirst(ADir+'*', faAnyFile or faDirectory, SearchRec) = 0 then begin + repeat + if (SearchRec.Attr and faDirectory) <> 0 then begin + FPos := Pos('.', SearchRec.Name); + if (FPos = 0) or (FPos > 2) then begin + AddDir(IncludeTrailingPathDelimiter(ADir+SearchRec.Name)); + end; + end + else begin + FileName := ADir+SearchRec.Name; + FileName := ExtractRelativepath(Project.ProjectDir, FileName); + if Files.IndexOf(FileName) = -1 then + Files.Add(FileName); + end; + until FindNext(SearchRec) <> 0; + FindClose(SearchRec); + end; + end; +begin + if MessageDlg('This will add all files in the project'#10+ + 'Directory recursively. Do you want to continue?', mtConfirmation, [mbYes, mbNo],0) = mrNo then exit; + Modified := True; + Files := TStringList.Create; + Files.AddStrings(FileListBox.Items); + AddDir(Project.ProjectDir); + FileListBox.Items.Assign(Files); + Files.Free; +end; + +procedure TCHMForm.AutoAddLinksBtnClick(Sender: TObject); +begin + Modified := True; +end; + +procedure TCHMForm.Button2Click(Sender: TObject); +var + OutStream: TFileStream; + CHM: TChmWriter; + I: Integer; +begin + { + if OpenDialog1.Execute = False then Exit; + OutStream := TFileStream.Create('/home/andrew/test.chm', fmCreate or fmOpenWrite); + Chm := TChmWriter.Create(OutStream, False); + Chm.FilesToCompress.AddStrings(OpenDialog1.Files); + Chm.GetFileData := @GetData; + Chm.Title := 'test'; + Chm.DefaultPage := 'index.html'; + Chm.Execute; + OutStream.Free; + Chm.Free; + } + + +end; + +procedure TCHMForm.ChmFileNameEditAcceptFileName(Sender: TObject; var Value: String); +begin + if ExtractFileExt(Value) = '' then Value := Value+'.chm'; +end; + +procedure TCHMForm.CompileBtnClick(Sender: TObject); +var + OutFile: TFileStream; +begin + if ChmFileNameEdit.FileName = '' then begin + MessageDlg('You must set a filename for the output CHM file!', mtError, [mbCancel], 0); + Exit; + end; + Save(False); + OutFile := TFileStream.Create(Project.OutputFileName, fmCreate or fmOpenWrite); + Project.WriteChm(OutFile); + OutFile.Free; +end; + + +procedure TCHMForm.CompileViewBtnClick(Sender: TObject); +var + Proc: TProcess; +begin + if ChmFileNameEdit.FileName = '' then begin + MessageDlg('You must set a filename for the output CHM file!', mtError, [mbCancel], 0); + Exit; + end; + CompileBtnClick(Sender); + // open + Proc := TProcess.Create(nil); + Proc.CommandLine := '/home/andrew/programming/lazarus/components/chmhelp/lhelp/lhelp '+ ChmFileNameEdit.FileName; + Proc.Execute; + Proc.Free; + // ... +end; + +procedure TCHMForm.FileListBoxDrawItem(Control: TWinControl; Index: Integer; + ARect: TRect; State: TOwnerDrawState); +begin + if Pos('..', FileListBox.Items.Strings[Index]) > 0 then begin + // These items won't be added to the chm because they are not within the project dir + Dec(ARect.Right); + Dec(ARect.Bottom); + FileListBox.Canvas.Pen.Color := clRed; + FileListBox.Canvas.Frame(ARect); + end; +end; + +procedure TCHMForm.FormClose(Sender: TObject; var CloseAction: TCloseAction); +var + MResult: Integer; +begin + if Modified then begin + MResult := MessageDlg('Project is modified would you like to save the changes?', mtConfirmation, + [mbYes, mbNo, mbCancel], 0); + case MResult of + mrYes: Save(False); + mrNo: CloseAction := caFree; + mrCancel: CloseAction := caNone; + end; + end; +end; + +procedure TCHMForm.FormCreate(Sender: TObject); +begin + CloseProject; +end; + +procedure TCHMForm.IndexEditAcceptFileName(Sender: TObject; var Value: String); +begin + Modified := True; + Value := ExtractRelativepath(Project.ProjectDir, Value); + Project.IndexFileName := Value; +end; + +procedure TCHMForm.IndexEditBtnClick(Sender: TObject); +var + Stream: TStream; + FileName: String; +begin + FileName := IndexEdit.FileName; + if FileName = '' then begin + FileName := Project.ProjectDir+'_index.hhk' + end; + + if FileExists(FileName) then begin + Stream := TFileStream.Create(FileName, fmOpenReadWrite); + end + else begin + Stream := TFileStream.Create(FileName, fmCreate or fmOpenReadWrite); + end; + + if SitemapEditForm.Execute(Stream, stIndex, FileListBox.Items) then IndexEdit.FileName := FileName; + + +end; + +procedure TCHMForm.ProjCloseItemClick(Sender: TObject); +begin + CloseProject; +end; + +procedure TCHMForm.ProjNewItemClick(Sender: TObject); +begin + If SaveDialog1.Execute then begin + if FileExists(SaveDialog1.FileName) + and (MessageDlg('File Already Exists! Ovewrite?', mtWarning, [mbYes, mbNo],0) = mrNo) then Exit; + OpenProject(SaveDialog1.FileName); + Project.SaveToFile(SaveDialog1.FileName); + end; + +end; + +procedure TCHMForm.ProjOpenItemClick(Sender: TObject); +begin + if OpenDialog1.Execute then begin + CloseProject; + OpenProject(OpenDialog1.FileName); + end; +end; + +procedure TCHMForm.ProjQuitItemClick(Sender: TObject); +begin + Close; +end; + +procedure TCHMForm.ProjSaveAsItemClick(Sender: TObject); +begin + Save(True); +end; + +procedure TCHMForm.ProjSaveItemClick(Sender: TObject); +begin + Save(False); +end; + +procedure TCHMForm.RemoveFilesBtnClick(Sender: TObject); +var + I: Integer; +begin + Modified := True; + for I := FileListBox.Items.Count-1 downto 0 do + if FileListBox.Selected[I] then FileListBox.Items.Delete(I); +end; + +procedure TCHMForm.TOCEditAcceptFileName(Sender: TObject; var Value: String); +begin + Modified := True; +end; + +procedure TCHMForm.TOCEditBtnClick(Sender: TObject); +var + Stream: TStream; + FileName: String; +begin + FileName := TOCEdit.FileName; + if FileName = '' then begin + FileName := Project.ProjectDir+'_table_of_contents.hhc' + end; + + if FileExists(FileName) then begin + Stream := TFileStream.Create(FileName, fmOpenReadWrite); + end + else begin + Stream := TFileStream.Create(FileName, fmCreate or fmOpenReadWrite); + end; + + if SitemapEditForm.Execute(Stream, stTOC, FileListBox.Items) then TOCEdit.FileName := FileName; + +end; + +function TCHMForm.GetModified: Boolean; +begin + Result := (Project <> nil) and FModified; +end; + +procedure TCHMForm.Save(aAs: Boolean); +var + SaveName: String; +begin + if aAs or (Project.FileName = '') then + if SaveDialog1.Execute then + Project.FileName := SaveDialog1.FileName; + Project.Files.Assign(FileListBox.Items); + Project.TableOfContentsFileName := TOCEdit.FileName; + Project.IndexFileName := IndexEdit.FileName; + Project.DefaultPage := DefaultPageCombo.Text; + Project.AutoFollowLinks := FollowLinksCheck.Checked; + Project.MakeSearchable := CreateSearchableCHMCheck.Checked; + Project.OutputFileName := ChmFileNameEdit.FileName; + Project.MakeBinaryIndex := CreateBinaryIndexCkeckBox.Checked; + + Project.SaveToFile(Project.FileName); + Modified := False; +end; + +procedure TCHMForm.CloseProject; +begin + FileListBox.Clear; + DefaultPageCombo.Clear; + TOCEdit.Clear; + IndexEdit.Clear; + GroupBox1.Enabled := False; + Panel1.Enabled := False; + CompileItem.Enabled := False; + ProjSaveAsItem.Enabled := False; + ProjSaveItem.Enabled := False; + ProjCloseItem.Enabled := False; + + FollowLinksCheck.Checked := False; + CreateSearchableCHMCheck.Checked := False; + FreeAndNil(Project); +end; + +procedure TCHMForm.OpenProject(AFileName: String); +begin + if not Assigned(Project) then Project := TChmProject.Create; + Project.LoadFromFile(AFileName); + GroupBox1.Enabled := True; + Panel1.Enabled := True; + CompileItem.Enabled := True; + ProjSaveAsItem.Enabled := True; + ProjSaveItem.Enabled := True; + ProjCloseItem.Enabled := True; + + FileListBox.Items.AddStrings(Project.Files); + TOCEdit.FileName := Project.TableOfContentsFileName; + IndexEdit.FileName := Project.IndexFileName; + DefaultPageCombo.Items.Assign(FileListBox.Items); + DefaultPageCombo.Text := Project.DefaultPage; + FollowLinksCheck.Checked := Project.AutoFollowLinks; + CreateSearchableCHMCheck.Checked := Project.MakeSearchable; + ChmFileNameEdit.FileName := Project.OutputFileName; + CreateBinaryIndexCkeckBox.Checked := Project.MakeBinaryIndex; + +end; + +procedure TCHMForm.AddFilesToProject(Strings: TStrings); +var + ADir, BDir: String; + I: Integer; + RelativePath: String; + FileName: String; + NewFileName: String; +begin + Modified := True; + BDir := ExtractFilePath(Project.FileName); + + for I := 0 to Strings.Count-1 do begin + FileName := Strings.Strings[I]; + + RelativePath := ExtractRelativepath(BDir, FileName); + if Pos('..', RelativePath) > 0 then + FileListBox.Items.AddObject(RelativePath, TObject(1)) + else + FileListBox.Items.AddObject(RelativePath, TObject(0)); + end; + +end; + +initialization + {$I unit1.lrs} + +end. +