Generador de Documetación para Gambas2 y Gambas3
Un Front-End para RoboDoc
Cuando conocí java, también encontré a javadoc (no confundir con gambadoc), un generador de documentación que analizaba el código fuente y los comentarios para crear la documentación del programa.
He estado buscando un programa, similar, para que hiciera esa tarea con nuestras aplicaciones realizadas con gambas2 o gambas3, y revisando el cuadro de la wikipedia de generadores de documentación, encontré a RoboDoc. (He traducido (con google traduce) al castellano el manual de instrucciones enlace )
Para poder usarlo con los proyectos de gambas, este programa hay que crear un archivo robodoc.rc.
 Ejemplo de configuración realizada: 
headertypes:
    P  "Procedure"          robo_procedure
    E  "Events"               robo_event  
header markers:
  '****
remark markers:
  '*
end markers:
  '****
  ( En el FrontEnd que he realizado, ademas se ha añadido la serie de palabras claves para Gambas2 y Gambas3, que no lo pongo aqui porque es muy extensa).He creado este Front-End (que añade este archivo de configuración) para que podamos usar RoboDoc, y que nos cree la documentación de nuestros proyectos Gambas.
Programa Ejecutable: FrontEndRoboDoc002.83.gambas [version 0.0.2]
Código Fuente (no ejecutar): frontendRoboDoc-0.0.83.tar.gz [version 0.0.2]
Programa Ejecutable: FrontEndRoboDoc002.83.gambas [version 0.0.2]
Código Fuente (no ejecutar): frontendRoboDoc-0.0.83.tar.gz [version 0.0.2]
Nota Importante:
Es una beta, usarlo con cuidado, hacer copias de seguridad de vuestros proyectos antes de ejecutar el programa.
Podeis ver este video para ver como se utiliza:
El programa crea una nueva carpeta (Hdoc) dentro de la carpeta de nuestro proyecto, y alli podemos encontrar los archivos .html (si hemos elegido la opción de tipo html).
Os dejo aqui un archivo para que veas como hay que "codificar" los comentarios y para ver el resultado en html obtenido por RoboDoc, ver este enlace (ficheros html)
Captura de Pantalla:
Código que la genera:
'****h* Clases/Tableview 
'**** 
'****h* Tableview/Definicion 
'* FUNCTION 
'*   El Control Tableview 
'*   http://www.gambas-es.org/el-control-tableview-vf4-vt37.html 
'* SYNOPSIS 
'*   Mejora del gridviews, para hacerlo editable 
'* INPUTS 
'*   Hereda de un gridview 
'* RESULT 
'*   Retorna un control gridviews editable 
'* SOURCE 
' Codigo fuente ' 
' Gambas class file ' 
' hereda del control Gridviews ' 
INHERITS GridView 
' la clase se exporta: Esto significa que la clase será visible desde un programa principal cuando creemos un componente.  ' 
EXPORT  
' Creamos nuevos eventos o sustituyen a otro ya definido ' 
EVENT Save(Row AS Integer, Column AS Integer, Value AS String) 
EVENT Insert 
EVENT Click 
' creamos controles auxiliares ' 
PRIVATE $hTextBox AS TextBox 
PRIVATE $hComboBox AS ComboBox 
' objeto hEditor: es un objeto que podra ser un combobox o un textbox... ' 
PRIVATE $hEditor AS Object 
PRIVATE $bTextBox AS Boolean 
PRIVATE $iCol AS Integer 
PRIVATE $iRow AS Integer 
' Objeto Watcher: Esta clase implementa un Objeto que puede ver cualquier tipo de control y crear algunas situaciones  ' 
' cuando algo sucede en él.  Esta clase es especialmente útil para saber cuando un UserControl o UserContainer se mueve, cambia de tamaño, mostrar u ocultar.  ' 
PRIVATE $hWatcher AS Watcher 
'**** 
'****m* Tableview/Constructor de Tableview 
'* FUNCTION 
'*   Construye el tableview 
'**** 
'constructor..... 
PUBLIC SUB _new() 
DIM hObs AS Observer 
' llama al observador y al wacther   como nombre del grupo "GridView"   ' 
hObs = NEW Observer(ME) AS "GridView" 
$hWatcher = NEW Watcher(ME) AS "GridView" 
$hComboBox = NEW ComboBox(ME.Window) AS "Editor" 
$hComboBox.Ignore = TRUE 
$hComboBox.Hide 
$hTextBox = NEW TextBox(ME.Window) AS "Editor" 
$hTextBox.Ignore = TRUE 
$hTextBox.Border = FALSE 
$hTextBox.Hide 
END 
'****m* Tableview/SaveEditor() 
'* FUNCTION 
'*  Guarda en la celda lo editado 
'**** 
PRIVATE SUB SaveEditor() 
DIM sText AS String  
IF NOT $hEditor THEN RETURN 
sText = $hEditor.Text 
IF sText = ME[$iRow, $iCol].Text THEN RETURN 
' Raise: Esta orden dispara un evento antes declarado con la palabra clave EVENT. ' 
RAISE Save($iRow, $iCol, sText) 
' refresca la celda.. ' 
ME[$iRow, $iCol].Refresh 
END 
'****m* Tableview/Save() 
'* FUNCTION 
'*  Oculta el editor. 
'**** 
PUBLIC SUB Save() 
HideEditor 
END 
'****m* Tableview/Cancel() 
'* FUNCTION 
'*   Cancela la edicion 
'**** 
PUBLIC SUB Cancel() 
HideEditor(TRUE) 
END 
'****c* Tableview/HideEditor() 
'* FUNCTION 
'*  Oculta el editor. 
'* RESULT 
'*  Retorna el editor, como oculto y null 
'**** 
PRIVATE SUB HideEditor(OPTIONAL bNoSave AS Boolean) 
IF $hEditor THEN 
IF NOT bNoSave THEN SaveEditor  
$hEditor.Hide 
$hEditor = NULL 
ENDIF 
END 
PRIVATE SUB MoveEditor() 
DIM X, Y AS Integer 
IF NOT $hEditor THEN RETURN  
' determina posicion del editor text ' 
X = ME.ScreenX - ME.Window.ScreenX 
Y = ME.ScreenY - ME.Window.ScreenY - ME.Window.ClientY 
'DEBUG $iRow;; $iCol 
' Mueve el objeto $hEditor, a la  posicion de la celda (x,y, y su ancho y altura) ' 
WITH ME[$iRow, $iCol] 
X += .X 
Y += .Y 
$hEditor.Move(X, Y, .Width, .Height) 
END WITH 
'DEBUG 
$hEditor.Font = ME.Font 
$hEditor.Show 
'DEBUG  
END 
PUBLIC SUB GridView_MouseDown() 
HideEditor 
END 
PUBLIC SUB GridView_RowResize(Row AS Integer) 
HideEditor 
END 
PUBLIC SUB GridView_ColumnResize(Column AS Integer) 
HideEditor 
END 
PUBLIC SUB GridView_Scroll() 
HideEditor 
END 
PUBLIC SUB GridView_Resize() 
HideEditor 
END 
PUBLIC SUB GridView_Hide() 
HideEditor 
END 
PUBLIC SUB GridView_Change() 
HideEditor 
END 
PUBLIC SUB Edit(OPTIONAL List AS String[], OPTIONAL ReadOnly AS Boolean) 
' DEBUG  ' 
HideEditor 
$iCol = ME.Column 
$iRow = ME.Row 
IF $iCol < 0 OR $iRow < 0 THEN RETURN 
IF List THEN  
$hComboBox.List = List 
$hComboBox.ReadOnly = ReadOnly 
$hEditor = $hComboBox 
$bTextBox = NOT ReadOnly 
ELSE  
$hEditor = $hTextBox 
$bTextBox = TRUE 
ENDIF 
$hEditor.Text = ME[$iRow, $iCol].Text 
TRY $hEditor.SelectAll 
MoveEditor 
$hEditor.SetFocus   
END 
PUBLIC SUB Editor_Activate() 
SaveEditor 
END 
PUBLIC SUB Editor_Click() 
SaveEditor 
END 
PUBLIC SUB Editor_KeyPress() 
SELECT CASE Key.Code 
' pulsa la tecla Esc ' 
CASE Key.Escape 
$hEditor.Text = ME[$iRow, $iCol].Text 
STOP EVENT 
' pulsa la tecla Flecha hacia arriba ' 
CASE Key.Up 
WHILE ME.Row > 0 
'DEC: quita 1 unidad. 
DEC ME.Row 
RAISE Click 
IF $hEditor THEN 
STOP EVENT 
BREAK 
ENDIF 
WEND 
' pulsa la tecla Flecha hacia abajo ' 
CASE Key.Down 
WHILE ME.Row < (ME.Rows.Count - 1) 
' INC: incrementa 1 unidad ' 
INC ME.Row 
' Esta orden dispara un evento antes declarado con la palabra clave EVENT. En  este caso el Click ' 
RAISE Click 
IF $hEditor THEN 
' para el evento  ' 
STOP EVENT 
BREAK 
ENDIF 
WEND 
' pulsa la tecla Flecha hacia izquierda ' 
CASE Key.Left 
IF $bTextBox AND IF $hEditor.Pos > 0 THEN RETURN  
DO 
IF ME.Column > 0 THEN  
'DEC: Decrementa una variable.  (le quita 1) 
DEC ME.Column 
RAISE Click 
ELSE IF ME.Row > 0 THEN 
ME.MoveTo(ME.Row - 1, ME.Columns.Count - 1)  
RAISE Click 
ELSE 
BREAK 
ENDIF 
IF $hEditor THEN 
TRY $hEditor.Pos = $hEditor.Length 
STOP EVENT 
BREAK 
ENDIF 
LOOP 
' pulsa la tecla Flecha hacia la derecha  ' 
CASE Key.Right 
IF $bTextBox AND IF $hEditor.Pos < $hEditor.Length THEN RETURN 
DO 
IF ME.Column < (ME.Columns.Count - 1) THEN  
INC ME.Column 
RAISE Click 
ELSE IF ME.Row < (ME.Rows.Count - 1) THEN 
ME.MoveTo(ME.Row + 1, 0) 
RAISE Click 
ELSE 
BREAK 
ENDIF 
IF $hEditor THEN 
TRY $hEditor.Pos = 0 
STOP EVENT 
BREAK 
ENDIF 
LOOP 
' pulsa la tecla Enter o Return ' 
CASE Key.Enter, Key.Return 
IF $bTextBox THEN  
DO 
IF ME.Column < (ME.Columns.Count - 1) THEN  
INC ME.Column 
RAISE Click 
ELSE IF ME.Row < (ME.Rows.Count - 1) THEN 
ME.MoveTo(ME.Row + 1, 0) 
RAISE Click 
ELSE  
RAISE Insert 
STOP EVENT 
BREAK 
ENDIF 
IF $hEditor THEN 
TRY $hEditor.Pos = 0 
STOP EVENT 
BREAK 
ENDIF 
LOOP 
ENDIF 
END SELECT  
END 
'****h* Clase/SegundaClase 
'* FUNCTION 
'*   Viendo la cabecera de SegundaClase clase 
'**** 
'****h* SegundaClase/Definicion 
'* FUNCTION 
'*   Esto es una comprobacion de clase 
'*   http://www.gambas-es.org/el-control-tableview-vf4-vt37.html 
'* SYNOPSIS 
'*   Mejora del gridviews, para hacerlo editable 
'* INPUTS 
'*   Hereda de un gridview 
'* RESULT 
'*   Retorna un control gridviews editable 
'****
Espero que os resulte util.
Nota:
Ver este enlace: mapcomen-generador-de-comentarios
Notas:
21/nov/2011: corregido bugs cuando fallaba la copia del icono.
13/nov/2011: Las descargas estan actualizadas a la version 0.0.2.
Se le ha añadido la impresión en la documentación del icono y titulo del proyecto
21/nov/2011: corregido bugs cuando fallaba la copia del icono.



