From 67779d503501b7a3b9b0b438e93761bf3df96054 Mon Sep 17 00:00:00 2001
From: michael <michael@freepascal.org>
Date: Wed, 4 Aug 2004 20:59:20 +0000
Subject: [PATCH] + Support for example files

---
 utils/fpdoc/fpde/fpdemsg.pp  |  1 +
 utils/fpdoc/fpde/pgeditor.pp | 35 ++++++++++++++++++++++++++++-------
 2 files changed, 29 insertions(+), 7 deletions(-)

diff --git a/utils/fpdoc/fpde/fpdemsg.pp b/utils/fpdoc/fpde/fpdemsg.pp
index ac29996476..08e42d43f2 100644
--- a/utils/fpdoc/fpde/fpdemsg.pp
+++ b/utils/fpdoc/fpde/fpdemsg.pp
@@ -44,6 +44,7 @@ ResourceString
   SDescription = 'Description';
   SErrors = 'Errors';
   SSeeAlso = 'See Also';
+  SCodeExample = 'Example code File';
   SMakeSkelFromSource = 'Make new document from source file';
   SSkelErrorWithFile = 'makeskel reported an error (%d). Try to load produced file anyway ?';
   SSkelErrorWithoutFile = 'makeskel reported an error (%d) and produced no file.';
diff --git a/utils/fpdoc/fpde/pgeditor.pp b/utils/fpdoc/fpde/pgeditor.pp
index 54b11c69cf..34092020a5 100644
--- a/utils/fpdoc/fpde/pgeditor.pp
+++ b/utils/fpdoc/fpde/pgeditor.pp
@@ -114,6 +114,7 @@ Type
 
   TElementEditor = Class(TFPGtkVBox)
   Private
+    FExampleNode,
     FShortNode,
     FDescrNode,
     FErrorsNode,
@@ -124,6 +125,7 @@ Type
     FDescrMemo,
     FErrorsMemo,
     FSeeAlsoMemo : TFPGtkScrollText;
+    FExample : TFPGtkEntry;
     FCurrentEditable : TFPGtkEditable;
     FModified : Boolean;
     Procedure GetNodes;
@@ -231,11 +233,9 @@ begin
   FLabel:=TFPgtkLabel.Create(SNoElement);
   PackStart(FLabel,False,False,0);
   L:=TFPGtkLabel.Create(SShortDescription);
-  V:=TFPGtkVBox.Create;
   // Short
+  V:=TFPGtkVBox.Create;
   FShortEntry:=TFPGtkEntry.Create;
-//  FShortEntry.ConnectEnterNotify(@OnEnterEditable,Nil);
-//  FShortEntry.ConnectStateChanged(@OnEditableStateChanged,Nil);
   FShortEntry.ConnectFocusInEvent(@OnEditableFocusIn,Nil);
   FShortEntry.ConnectChanged(@OnTextModified,Nil);
   V.PackStart(L,False,False,0);
@@ -245,7 +245,6 @@ begin
   L:=TFPGtkLabel.Create(SErrors);
   V:=TFPGtkVBox.Create;
   FErrorsMemo:=TFPGtkScrollText.Create;
-//  FErrorsMemo.TheText.ConnectEnterNotify(@OnEnterEditable,Nil);
   FErrorsMemo.TheText.ConnectFocusInEvent(@OnEditableFocusIn,Nil);
   FErrorsMemo.TheText.ConnectChanged(@OnTextModified,Nil);
   FErrorsMemo.setusize(400,50);
@@ -253,9 +252,10 @@ begin
   V.PackStart(FErrorsMemo,True,true,0);
   F2:=TFPGtkVPaned.Create;
   F2.Pack1(V,True,True);
+
   // See Also
-  L:=TFPGtkLabel.Create(SSeeAlso);
   V:=TFPGtkVBox.Create;
+  L:=TFPGtkLabel.Create(SSeeAlso);
   FSeeAlsoMemo:=TFPGtkScrollText.Create;
 //  FSeeAlsoMemo.TheText.ConnectEnterNotify(@OnEnterEditable,Nil);
   FSeeAlsoMemo.TheText.ConnectFocusInEvent(@OnEditableFocusIn,Nil);
@@ -278,6 +278,15 @@ begin
   F1.Pack1(V,True,True);
   F1.Pack2(F2,False,True);
   PackStart(F1,true,true,0);
+  // Example
+  V:=TFPGtkVBox.Create;
+  L:=TFPGtkLabel.Create(SCodeExample);
+  FExample:=TFPGtkEntry.Create;
+  FExample.ConnectFocusInEvent(@OnEditableFocusIn,Nil);
+  FExample.ConnectChanged(@OnTextModified,Nil);
+  V.PackStart(L,False,False,0);
+  V.PackStart(FExample,True,true,0);
+  PackStart(V,false,false,0);
 end;
 
 Procedure TElementEditor.SetElement (Value : TDomElement);
@@ -357,6 +366,10 @@ begin
     FDescrMemo.Text:=NodeToString(FDescrNode);
     FErrorsMemo.Text:=NodeToString(FErrorsNode);
     FSeeAlsoMemo.Text:=NodeToString(FSeeAlsoNode);
+    If FExampleNode=Nil then
+      FExample.Text:=''
+    else 
+      FExample.Text:=FExampleNode['file'];
     FModified:=False;
   Finally
     S.Free;
@@ -409,7 +422,9 @@ Function  TElementEditor.CurrentXML : String;
       result:='<'+NodeName+'/>';
   end;
 
-
+Var
+  S : String;
+  
 begin
 //  Writeln('In currentxml');
   Result:='';
@@ -419,6 +434,9 @@ begin
   Result:=Result+GetNodeString('descr',trim(FDescrMemo.Text));
   Result:=Result+GetNodeString('errors',trim(FErrorsMemo.Text));
   Result:=Result+GetNodeString('seealso',trim(FSeeAlsoMemo.Text));
+  S:=Trim(FExample.Text);
+  If (S<>'') then
+    Result:=Result+'<example file="'+S+'"/>';
 //  Writeln('Currentxml : ',Result);
 end;
 
@@ -538,6 +556,7 @@ begin
   FDescrNode:=Nil;
   FErrorsNode:=Nil;
   FSeeAlsoNode:=Nil;
+  FExampleNode:=Nil;
   If Assigned(FElement) then
     begin
     Node:=FElement.FirstChild;
@@ -553,7 +572,9 @@ begin
         else if S='errors' then
           FErrorsNode:=TDomElement(Node)
         else if S='seealso' then
-          FSeeAlsoNode:=TDomElement(Node);
+          FSeeAlsoNode:=TDomElement(Node)
+        else if S='example' then
+          FExampleNode:=TDomElement(Node);
         end;
       Node:=Node.NextSibling;
       end;