diff --git a/harbour/ChangeLog b/harbour/ChangeLog index f0de78981f..6fc078e4b5 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,92 @@ past entries belonging to author(s): Viktor Szakats. */ +2010-03-16 01:15 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) + + contrib/hbide/resources/arguments.png + + contrib/hbide/resources/description.png + * contrib/hbide/resources/docviewgenerator.ui + * contrib/hbide/resources/docviewgenerator.uic + + contrib/hbide/resources/docwriter.png + + contrib/hbide/resources/docwriter.ui + + contrib/hbide/resources/docwriter.uic + + contrib/hbide/resources/editstree.png + + contrib/hbide/resources/example.png + + contrib/hbide/resources/helpdoc.png + + contrib/hbide/resources/load_1.png + + contrib/hbide/resources/load_2.png + + contrib/hbide/resources/load_3.png + + contrib/hbide/resources/panel_8.png + + contrib/hbide/resources/projtree.png + * contrib/hbide/resources/tabs.png + + contrib/hbide/resources/tests.png + * contrib/hbide/resources/togglelinenumber.png + + contrib/hbide/resources/unload_1.png + + Added more images, refind few. + + * contrib/hbqt/hbqt_hbqplaintextedit.cpp + ! More artifacts corrected. + + * contrib/hbqt/hbqt_hbslots.cpp + * contrib/hbqt/hbqt_hbslots.h + + Added more slots. + + * contrib/hbxbp/xbptoolbar.prg + ! Provided the "objectName" TO main toolbar. + + * contrib/hbide/hbide.hbp + * contrib/hbide/hbide.prg + * contrib/hbide/ideactions.prg + * contrib/hbide/idedocks.prg + + contrib/hbide/idedocwriter.prg + * contrib/hbide/ideeditor.prg + * contrib/hbide/ideharbourhelp.prg + * contrib/hbide/idehome.prg + * contrib/hbide/idemisc.prg + * contrib/hbide/ideobject.prg + * contrib/hbide/ideprojmanager.prg + * contrib/hbide/idestylesheets.prg + * contrib/hbide/idethemes.prg + + ! Corrected many artifacts, so many that cannot be mensioned precisely. + + Implemented: basic documentation writer. + + Documentation Writer + -------------------- + 1. Click on "Documentation Writer" icon on the right-toolbar, + 2. Open some source in the editor, + 3. Position cursor somewhere inside a function body, + 4. Click on "Load from current function" icon on the + top-toolbar of "Document Writer" widget, + 5. Look at the contents, few fields will be auto filled + with various info from current function, + 6. Complete the other fields with relevent information, + 7.1 Click on "Save the documentation with current function", + .2 Look at the function body in the editor, + The NANFORUM compliant documentation will be inserted + at the top of function's prototype. + 8.1 Click on "Save written/updated documentation" icon, + and provide the filename to save on disk, + .2 Copy such generated .txt in /harbour/doc/en, + .3 Open "Harbour Document Viewer" and you should be viweing + newly written documentation there. + .4 Such generated file is ready to be uploaded to SVN, + just send it to the list and group will decide if it needs + something extra. + + It is a quick way to generate help. You can keep the documentation + in your sources or can create a tree like Harbour's. I know + there is a lot more to be done in this tool, but at least group + can start using it. + + My humble request is: start writing the documentation. I will polish + this tool in coming week, so be assured that everything which need + be done will be done. You cooperation is more important than this tool. + + ;TODO: Loading existing doc and merging it back after edits, on disk. + Loading doc from source file and replacing old with new one. + And many more, plus, whatever you will demand. + + 2010-03-15 23:57 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/contrib/hbwin/wapi_winuser.c + added new PRG function: diff --git a/harbour/contrib/hbide/hbide.hbp b/harbour/contrib/hbide/hbide.hbp index 642059a8d0..ca0085c235 100644 --- a/harbour/contrib/hbide/hbide.hbp +++ b/harbour/contrib/hbide/hbide.hbp @@ -26,6 +26,7 @@ ideharbourhelp.prg ideenviron.prg idehome.prg idefunctions.prg +idedocwriter.prg ideparseexpr.c diff --git a/harbour/contrib/hbide/hbide.prg b/harbour/contrib/hbide/hbide.prg index cd8d497935..61ad2f040b 100644 --- a/harbour/contrib/hbide/hbide.prg +++ b/harbour/contrib/hbide/hbide.prg @@ -136,6 +136,7 @@ CLASS HbIde DATA oHL /* Harbour Help Manager */ DATA oHM /* panel manager */ DATA oFN /* Functions Tags Manager */ + DATA oDW /* Document Writer Manager */ DATA oThemes DATA oFindInFiles DATA oHelpDock @@ -221,6 +222,7 @@ CLASS HbIde DATA oSearchReplace DATA oFuncDock DATA oDocViewDock + DATA oDocWriteDock DATA oFunctionsDock DATA lProjTreeVisible INIT .t. @@ -301,6 +303,7 @@ CLASS HbIde METHOD evalMacro( cString ) METHOD fetchAndExecMacro() METHOD showApplicationCursor( nCursor ) + METHOD testPainter( qPainter ) ENDCLASS @@ -404,6 +407,9 @@ METHOD HbIde:create( cProjIni ) /* Main Menu */ ::oAC:buildMainMenu() + /* Initialize Doc Writer Manager */ + ::oDW := IdeDocWriter():new( Self ):create() + /* Once create Find/Replace dialog */ ::oFR := IdeFindReplace():new( Self ):create() ::oFindInFiles := IdeFindInFiles():new( Self ):create() @@ -464,6 +470,7 @@ METHOD HbIde:create( cProjIni ) ::oDockB2:hide() ::oDockB:hide() ::oDocViewDock:hide() + ::oDocWriteDock:hide() /* Request Main Window to Appear on the Screen */ ::oHM:refresh() @@ -474,9 +481,12 @@ METHOD HbIde:create( cProjIni ) qSplash:close() qSplash := NIL + //::testPainter() + DO WHILE .t. ::nEvent := AppEvent( @::mp1, @::mp2, @::oXbp ) +//hbide_dbg( "Next", NextAppEvent(), "Last", LastAppEvent(), "Event", ::nEvent ) IF ::nEvent == xbeP_Quit hbide_dbg( "----------------- xbeP_Quit" ) hbide_saveINI( Self ) @@ -533,6 +543,7 @@ METHOD HbIde:create( cProjIni ) hbide_dbg( "Before ::oDlg:destroy()", memory( 1001 ), hbqt_getMemUsed() ) hbide_dbg( " " ) + ::oDW:destroy() ::oEV:destroy() ::oFN:destroy() ::oHM:destroy() @@ -1346,3 +1357,19 @@ hbide_dbg( cBlock ) RETURN Self /*----------------------------------------------------------------------*/ + +METHOD HbIde:testPainter( qPainter ) + LOCAL qP := QPainter():from( qPainter ) + + hbide_dbg( "qPainter:isActive()", qP:isActive() ) + + qP:setPen_2( Qt_red ) + qP:drawEllipse_2( 100,300,100,150 ) + qP:setFont( ::oFont:oWidget ) + qP:drawText_4( 100,300,"Harbour" ) + + //qPainter:fillRect_8( 100, 100, 500, 500, QColor():new( 175, 175, 255 ) ) + + RETURN NIL + +/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/ideactions.prg b/harbour/contrib/hbide/ideactions.prg index 4c27234588..4f03587c74 100644 --- a/harbour/contrib/hbide/ideactions.prg +++ b/harbour/contrib/hbide/ideactions.prg @@ -596,6 +596,7 @@ METHOD IdeActions:buildMainMenu() oSubMenu:oWidget:addSeparator() oSubMenu:oWidget:addAction_4( ::oHelpDock:oWidget:toggleViewAction() ) oSubMenu:oWidget:addAction_4( ::oDocViewDock:oWidget:toggleViewAction() ) + oSubMenu:oWidget:addAction_4( ::oDocWriteDock:oWidget:toggleViewAction() ) oSubMenu:oWidget:addAction_4( ::oFuncDock:oWidget:toggleViewAction() ) oSubMenu:oWidget:addAction_4( ::oFunctionsDock:oWidget:toggleViewAction() ) oSubMenu:oWidget:addAction_4( ::oPropertiesDock:oWidget:toggleViewAction() ) diff --git a/harbour/contrib/hbide/idedocks.prg b/harbour/contrib/hbide/idedocks.prg index fb7b3cc19b..234ccb7242 100644 --- a/harbour/contrib/hbide/idedocks.prg +++ b/harbour/contrib/hbide/idedocks.prg @@ -78,6 +78,7 @@ #define dockProperties_visibilityChanged 304 #define dockDocViewer_visibilityChanged 305 #define docFunctions_visibilityChanged 306 +#define dockDocWriter_visibilityChanged 307 /*----------------------------------------------------------------------*/ @@ -114,6 +115,7 @@ CLASS IdeDocks INHERIT IdeObject METHOD buildPropertiesDock() METHOD buildEnvironDock() METHOD buildDocViewer() + METHOD buildDocWriter() METHOD outputDoubleClicked( lSelected ) METHOD buildStatusBar() METHOD setStatusText( nPart, xValue ) @@ -151,6 +153,7 @@ METHOD IdeDocks:destroy() ::disconnect( ::oPropertiesDock:oWidget, "visibilityChanged(bool)" ) ::disconnect( ::oThemesDock:oWidget , "visibilityChanged(bool)" ) ::disconnect( ::oDocViewDock:oWidget , "visibilityChanged(bool)" ) + ::disconnect( ::oDocWriteDock:oWidget , "visibilityChanged(bool)" ) ::disconnect( ::oFindDock:oWidget , "visibilityChanged(bool)" ) ::disconnect( ::oFunctionsDock:oWidget , "visibilityChanged(bool)" ) #if 0 /* Not Implemented */ @@ -267,17 +270,23 @@ METHOD IdeDocks:buildDockWidgets() ::buildLinkResults() ::buildOutputResults() ::buildDocViewer() + ::buildDocWriter() ::buildFunctionsDock() + /* Bottom Docks */ ::oDlg:oWidget:tabifyDockWidget( ::oDockB:oWidget , ::oDockB1:oWidget ) ::oDlg:oWidget:tabifyDockWidget( ::oDockB1:oWidget , ::oDockB2:oWidget ) - ::oDlg:oWidget:tabifyDockWidget( ::oHelpDock:oWidget , ::oSkeltnDock:oWidget ) - ::oDlg:oWidget:tabifyDockWidget( ::oSkeltnDock:oWidget , ::oFindDock:oWidget ) - ::oDlg:oWidget:tabifyDockWidget( ::oFindDock:oWidget , ::oThemesDock:oWidget ) - ::oDlg:oWidget:tabifyDockWidget( ::oThemesDock:oWidget , ::oPropertiesDock:oWidget ) + /* Right Docks */ + ::oDlg:oWidget:tabifyDockWidget( ::oHelpDock:oWidget , ::oDocViewDock:oWidget ) + ::oDlg:oWidget:tabifyDockWidget( ::oDocViewDock:oWidget , ::oFuncDock:oWidget ) + ::oDlg:oWidget:tabifyDockWidget( ::oFuncDock:oWidget , ::oFunctionsDock:oWidget ) + ::oDlg:oWidget:tabifyDockWidget( ::oFunctionsDock:oWidget , ::oPropertiesDock:oWidget ) ::oDlg:oWidget:tabifyDockWidget( ::oPropertiesDock:oWidget, ::oEnvironDock:oWidget ) - ::oDlg:oWidget:tabifyDockWidget( ::oEnvironDock:oWidget , ::oFuncDock:oWidget ) + ::oDlg:oWidget:tabifyDockWidget( ::oEnvironDock:oWidget , ::oSkeltnDock:oWidget ) + ::oDlg:oWidget:tabifyDockWidget( ::oSkeltnDock:oWidget , ::oThemesDock:oWidget ) + ::oDlg:oWidget:tabifyDockWidget( ::oThemesDock:oWidget , ::oFindDock:oWidget ) + ::oDlg:oWidget:tabifyDockWidget( ::oFindDock:oWidget , ::oDocWriteDock:oWidget ) ::buildToolBarPanels() @@ -317,6 +326,11 @@ METHOD IdeDocks:execEvent( nMode, p ) CASE nMode == 2 /* HelpWidget:contextMenuRequested(qPoint) */ hbide_popupBrwContextMenu( ::qHelpBrw, p ) + CASE nMode == dockDocWriter_visibilityChanged + IF p + ::oDW:show() + ENDIF + CASE nMode == docFunctions_visibilityChanged IF p ::oFN:show() @@ -489,13 +503,13 @@ METHOD IdeDocks:buildToolBarPanels() ::oDlg:oWidget:addToolBar( Qt_LeftToolBarArea, ::qTBarLines ) aBtns := {} - aadd( aBtns, { "movelineup" , "Move Current Line Up" , {|| ::oEM:moveLine( -1 ) } } ) - aadd( aBtns, { "movelinedown" , "Move Current Line Down" , {|| ::oEM:moveLine( 1 ) } } ) - aadd( aBtns, { "deleteline" , "Delete Current Line" , {|| ::oEM:deleteLine() } } ) - aadd( aBtns, { "duplicateline", "Duplicate Current Line" , {|| ::oEM:duplicateLine() } } ) + aadd( aBtns, { "movelineup" , "Move Current Line Up" , {|| ::oEM:moveLine( -1 ) } } ) + aadd( aBtns, { "movelinedown" , "Move Current Line Down" , {|| ::oEM:moveLine( 1 ) } } ) + aadd( aBtns, { "deleteline" , "Delete Current Line" , {|| ::oEM:deleteLine() } } ) + aadd( aBtns, { "duplicateline" , "Duplicate Current Line" , {|| ::oEM:duplicateLine() } } ) aadd( aBtns, {} ) - aadd( aBtns, { "togglelinenumber", "Toggle Line Numbers" , {|| ::oIde:lLineNumbersVisible := ! ::lLineNumbersVisible, ; - ::oEM:toggleLineNumbers() } } ) + aadd( aBtns, { "togglelinenumber", "Toggle Line Numbers" , ; + {|| ::oIde:lLineNumbersVisible := ! ::lLineNumbersVisible, ::oEM:toggleLineNumbers() } } ) FOR EACH a_ IN aBtns IF empty( a_ ) ::qTBarLines:addSeparator() @@ -516,18 +530,18 @@ METHOD IdeDocks:buildToolBarPanels() ::qTBarLines:addSeparator() aBtns := {} - aadd( aBtns, { "toupper" , "To Upper" , {|| ::oEM:convertSelection( "ToUpper" ) } } ) - aadd( aBtns, { "tolower" , "To Lower" , {|| ::oEM:convertSelection( "ToLower" ) } } ) - aadd( aBtns, { "invertcase" , "Invert Case" , {|| ::oEM:convertSelection( "Invert" ) } } ) + aadd( aBtns, { "toupper" , "To Upper" , {|| ::oEM:convertSelection( "ToUpper" ) } } ) + aadd( aBtns, { "tolower" , "To Lower" , {|| ::oEM:convertSelection( "ToLower" ) } } ) + aadd( aBtns, { "invertcase" , "Invert Case" , {|| ::oEM:convertSelection( "Invert" ) } } ) aadd( aBtns, {} ) - aadd( aBtns, { "blockcomment" , "Block Comment" , {|| ::oEM:blockComment() } } ) - aadd( aBtns, { "streamcomment" , "Stream Comment" , {|| ::oEM:streamComment() } } ) + aadd( aBtns, { "blockcomment" , "Block Comment" , {|| ::oEM:blockComment() } } ) + aadd( aBtns, { "streamcomment", "Stream Comment" , {|| ::oEM:streamComment() } } ) aadd( aBtns, {} ) - aadd( aBtns, { "blockindentr" , "Indent Right" , {|| ::oEM:indent( 1 ) } } ) - aadd( aBtns, { "blockindentl" , "Indent Left" , {|| ::oEM:indent( -1 ) } } ) + aadd( aBtns, { "blockindentr" , "Indent Right" , {|| ::oEM:indent( 1 ) } } ) + aadd( aBtns, { "blockindentl" , "Indent Left" , {|| ::oEM:indent( -1 ) } } ) aadd( aBtns, {} ) - aadd( aBtns, { "sgl2dblquote" , "Single to Double Quotes", {|| ::oEM:convertDQuotes() } } ) - aadd( aBtns, { "dbl2sglquote" , "Double to Single Quotes", {|| ::oEM:convertQuotes() } } ) + aadd( aBtns, { "sgl2dblquote" , "Single to Double Quotes", {|| ::oEM:convertDQuotes() } } ) + aadd( aBtns, { "dbl2sglquote" , "Double to Single Quotes", {|| ::oEM:convertQuotes() } } ) FOR EACH a_ IN aBtns IF empty( a_ ) ::qTBarLines:addSeparator() @@ -557,11 +571,12 @@ METHOD IdeDocks:buildToolBarPanels() ::qTBarDocks:setToolButtonStyle( Qt_ToolButtonIconOnly ) aBtns := {} - aadd( aBtns, { ::oDockPT , "projectstree" } ) - aadd( aBtns, { ::oDockED , "tabs" } ) + aadd( aBtns, { ::oDockPT , "projtree" } ) + aadd( aBtns, { ::oDockED , "editstree" } ) aadd( aBtns, {} ) aadd( aBtns, { ::oHelpDock , "help" } ) aadd( aBtns, { ::oDocViewDock , "harbourhelp" } ) + aadd( aBtns, { ::oDocWriteDock , "docwriter" } ) aadd( aBtns, { ::oFuncDock , "dc_function" } ) aadd( aBtns, { ::oFunctionsDock , "ffn" } ) aadd( aBtns, { ::oPropertiesDock, "properties" } ) @@ -883,6 +898,17 @@ METHOD IdeDocks:buildDocViewer() /*----------------------------------------------------------------------*/ +METHOD IdeDocks:buildDocWriter() + + ::oIde:oDocWriteDock := ::getADockWidget( Qt_RightDockWidgetArea, "dockDocWriter", "Documentation Writer", QDockWidget_DockWidgetFloatable ) + ::oDlg:oWidget:addDockWidget_1( Qt_RightDockWidgetArea, ::oDocWriteDock:oWidget, Qt_Horizontal ) + + ::connect( ::oDocWriteDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( dockDocWriter_visibilityChanged, p ) } ) + + RETURN Self + +/*----------------------------------------------------------------------*/ + METHOD IdeDocks:buildFunctionsDock() ::oIde:oFunctionsDock := ::getADockWidget( Qt_RightDockWidgetArea, "dockFunctions", "Projects Functions Lookup", QDockWidget_DockWidgetFloatable ) diff --git a/harbour/contrib/hbide/idedocwriter.prg b/harbour/contrib/hbide/idedocwriter.prg new file mode 100644 index 0000000000..1fdd2ef268 --- /dev/null +++ b/harbour/contrib/hbide/idedocwriter.prg @@ -0,0 +1,620 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * + * Copyright 2010 Pritpal Bedi + * www - http://www.harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + */ +/*----------------------------------------------------------------------*/ +/*----------------------------------------------------------------------*/ +/*----------------------------------------------------------------------*/ +/* + * EkOnkar + * ( The LORD is ONE ) + * + * Harbour-Qt IDE + * + * Pritpal Bedi + * 14Mar2010 + */ +/*----------------------------------------------------------------------*/ +/*----------------------------------------------------------------------*/ +/*----------------------------------------------------------------------*/ + +#include "hbide.ch" +#include "common.ch" +#include "hbclass.ch" +#include "hbqt.ch" + +/*----------------------------------------------------------------------*/ + +#define buttonArgs_clicked 101 +#define buttonDesc_clicked 102 +#define buttonExample_clicked 103 +#define buttonTests_clicked 104 + +#define buttonCloseArgs_clicked 111 +#define buttonCloseDesc_clicked 112 +#define buttonCloseExample_clicked 113 +#define buttonCloseTests_clicked 114 + +#define buttonLoadFromCurFunc_clicked 115 + +#define buttonClear_clicked 116 +#define buttonSaveInFunc_clicked 117 +#define buttonSave_clicked 118 + + +#define qqTemplate 1 +#define qqVersion 2 +#define qqStatus 3 +#define qqCompliance 4 +#define qqCategory 5 +#define qqSubCategory 6 +#define qqName 7 +#define qqExtLink 8 +#define qqOneLiner 9 +#define qqSyntax 10 +#define qqReturns 11 +#define qqSeeAlso 12 +#define qqFiles 13 +#define qqArgs 14 +#define qqDesc 15 +#define qqExamples 16 +#define qqTests 17 + +#define qqNumVrbls 17 + +/*----------------------------------------------------------------------*/ + +FUNCTION hbide_getSVNHeader() + + RETURN "/* " + CRLF + " * $Id:" + CRLF + " */" + CRLF + CRLF + +/*----------------------------------------------------------------------*/ + +FUNCTION hbide_populateParam( txt_, cToken, cParam ) + LOCAL a_ + IF !empty( cParam ) + aadd( txt_, cToken ) + a_:= hbide_memoToArray( cParam ) + aeval( a_, {|e| aadd( txt_, " * " + e ) } ) + ENDIF + RETURN nil + +/*----------------------------------------------------------------------*/ + +FUNCTION hbide_ar2paramList( aArg ) + LOCAL s, cList := "" + FOR EACH s IN aArg + s := alltrim( s ) + cList += s + iif( s:__enumIndex() < len( aArg ), ", ", "" ) + NEXT + RETURN cList + +/*----------------------------------------------------------------------*/ + +FUNCTION hbide_arg2memo( aArg ) + LOCAL s, cMemo := "" + + FOR EACH s IN aArg + cMemo += "<" + s + ">" + iif( s:__enumIndex() < len( aArg ), CRLF, "" ) + NEXT + + RETURN cMemo + +/*----------------------------------------------------------------------*/ + +CLASS IdeDocWriter INHERIT IdeObject + + DATA qHiliter + DATA qHiliter1 + + DATA oEdit + DATA cFuncPtoto INIT "" + DATA nFuncLine INIT 0 + DATA nTagsIndex INIT 0 + DATA cSourceFile INIT "" + + METHOD new( oIde ) + METHOD create( oIde ) + METHOD destroy() + METHOD show() + METHOD execEvent( nMode, p ) + METHOD setImages() + METHOD installSignals() + METHOD setParameters() + METHOD loadCurrentFuncDoc() + METHOD parsePrototype( cProto ) + METHOD clear() + METHOD fillForm( aFacts ) + METHOD buildDocument() + METHOD saveInFunction() + METHOD saveInFile() + + ENDCLASS + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocWriter:new( oIde ) + + ::oIde := oIde + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocWriter:create( oIde ) + + DEFAULT oIde TO ::oIde + ::oIde := oIde + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocWriter:destroy() + + ::oEdit := NIL + + IF !empty( ::oUI ) + ::oUI:destroy() + ENDIF + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocWriter:show() + + IF empty( ::oUI ) + ::oUI := HbQtUI():new( hbide_uic( "docwriter" ) ):build() + + ::oDocWriteDock:oWidget:setWidget( ::oUI ) + + ::setImages() + ::installSignals() + ::setParameters() + ENDIF + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocWriter:setImages() + + ::oUI:q_buttonLoadFromDocFile :setIcon( hbide_image( "load_3" ) ) + ::oUI:q_buttonLoadFromSource :setIcon( hbide_image( "load_2" ) ) + ::oUI:q_buttonLoadFromCurFunc :setIcon( hbide_image( "load_1" ) ) + + ::oUI:q_buttonArgs :setIcon( hbide_image( "arguments" ) ) + ::oUI:q_buttonDesc :setIcon( hbide_image( "description" ) ) + ::oUI:q_buttonExamples :setIcon( hbide_image( "example" ) ) + ::oUI:q_buttonTests :setIcon( hbide_image( "tests" ) ) + + ::oUI:q_buttonClear :setIcon( hbide_image( "clean" ) ) + ::oUI:q_buttonSaveInFunc :setIcon( hbide_image( "unload_1" ) ) + ::oUI:q_buttonSave :setIcon( hbide_image( "helpdoc" ) ) + + ::oUI:q_buttonCloseArgs :setIcon( hbide_image( "closetab" ) ) + ::oUI:q_buttonCloseDesc :setIcon( hbide_image( "closetab" ) ) + ::oUI:q_buttonCloseExamples :setIcon( hbide_image( "closetab" ) ) + ::oUI:q_buttonCloseTests :setIcon( hbide_image( "closetab" ) ) + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocWriter:installSignals() + + ::oUI:signal( "buttonArgs" , "toggled(bool)", {|p| ::execEvent( buttonArgs_clicked , p ) } ) + ::oUI:signal( "buttonDesc" , "toggled(bool)", {|p| ::execEvent( buttonDesc_clicked , p ) } ) + ::oUI:signal( "buttonExamples" , "toggled(bool)", {|p| ::execEvent( buttonExample_clicked , p ) } ) + ::oUI:signal( "buttonTests" , "toggled(bool)", {|p| ::execEvent( buttonTests_clicked , p ) } ) + + ::oUI:signal( "buttonCloseArgs" , "clicked()", {| | ::execEvent( buttonCloseArgs_clicked ) } ) + ::oUI:signal( "buttonCloseDesc" , "clicked()", {| | ::execEvent( buttonCloseDesc_clicked ) } ) + ::oUI:signal( "buttonCloseExamples", "clicked()", {| | ::execEvent( buttonCloseExample_clicked ) } ) + ::oUI:signal( "buttonCloseTests" , "clicked()", {| | ::execEvent( buttonCloseTests_clicked ) } ) + + ::oUI:signal( "buttonClear" , "clicked()", {| | ::execEvent( buttonClear_clicked ) } ) + ::oUI:signal( "buttonSaveInFunc" , "clicked()", {| | ::execEvent( buttonSaveInFunc_clicked ) } ) + ::oUI:signal( "buttonSave" , "clicked()", {| | ::execEvent( buttonSave_clicked ) } ) + + ::oUI:signal( "buttonLoadFromCurFunc", "clicked()", {|| ::execEvent( buttonLoadFromCurFunc_clicked ) } ) + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocWriter:setParameters() + + ::oUI:q_buttonArgs :setCheckable( .t. ) + ::oUI:q_buttonDesc :setCheckable( .t. ) + ::oUI:q_buttonExamples:setCheckable( .t. ) + ::oUI:q_buttonTests :setCheckable( .t. ) + + ::oUI:q_buttonArgs :setChecked( .t. ) + ::oUI:q_buttonDesc :setChecked( .t. ) + ::oUI:q_buttonExamples:setChecked( .f. ) + ::oUI:q_buttonTests :setChecked( .f. ) + + ::oUI:q_frameTests:hide() + ::oUI:q_frameExamples:hide() + + ::oUI:q_comboTemplate:addItem( "Function" ) + ::oUI:q_comboTemplate:addItem( "Procedure" ) + ::oUI:q_comboTemplate:addItem( "Class" ) + + ::qHiliter := ::oThemes:SetSyntaxHilighting( ::oUI:q_plainExamples, "Pritpal's Favourite" ) + ::qHiliter1 := ::oThemes:SetSyntaxHilighting( ::oUI:q_plainTests , "Evening Glamour" ) + + ::oUI:q_plainExamples:setFont( ::oFont:oWidget ) + ::oUI:q_plainTests:setFont( ::oFont:oWidget ) + + ::oUI:q_frameGeneral:setSizePolicy_1( QSizePolicy_Preferred, QSizePolicy_Fixed ) + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocWriter:execEvent( nMode, p ) + + SWITCH nMode + CASE buttonArgs_clicked + IF p + ::oUI:q_frameArgs:show() + ELSE + ::oUI:q_frameArgs:hide() + ENDIF + EXIT + CASE buttonDesc_clicked + IF p + ::oUI:q_frameDesc:show() + ELSE + ::oUI:q_frameDesc:hide() + ENDIF + EXIT + CASE buttonExample_clicked + IF p + ::oUI:q_frameExamples:show() + ELSE + ::oUI:q_frameExamples:hide() + ENDIF + EXIT + CASE buttonTests_clicked + IF p + ::oUI:q_frameTests:show() + ELSE + ::oUI:q_frameTests:hide() + ENDIF + EXIT + + CASE buttonCloseArgs_clicked + ::oUI:q_buttonArgs:setChecked( .f. ) + EXIT + CASE buttonCloseDesc_clicked + ::oUI:q_buttonDesc:setChecked( .f. ) + EXIT + CASE buttonCloseExample_clicked + ::oUI:q_buttonExamples:setChecked( .f. ) + EXIT + CASE buttonCloseTests_clicked + ::oUI:q_buttonTests:setChecked( .f. ) + EXIT + + CASE buttonLoadFromCurFunc_clicked + ::loadCurrentFuncDoc() + EXIT + CASE buttonClear_clicked + ::clear() + EXIT + CASE buttonSaveInFunc_clicked + ::saveInFunction() + EXIT + CASE buttonSave_clicked + ::saveInFile() + EXIT + + ENDSWITCH + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocWriter:clear() + + ::oEdit := NIL + ::cFuncPtoto := "" + ::nFuncLine := 0 + ::nTagsIndex := 0 + ::cSourceFile := "" + + ::fillForm( afill( array( qqNumVrbls ), "" ) ) + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocWriter:fillForm( aFacts ) + + ::oUI:q_editVersion :setText ( aFacts[ qqVersion ] ) + ::oUI:q_editStatus :setText ( aFacts[ qqStatus ] ) + ::oUI:q_editCompliance :setText ( aFacts[ qqCompliance ] ) + ::oUI:q_editCategory :setText ( aFacts[ qqCategory ] ) + ::oUI:q_editSubCategory :setText ( aFacts[ qqSubCategory ] ) + ::oUI:q_editName :setText ( aFacts[ qqName ] ) + ::oUI:q_editExtLink :setText ( aFacts[ qqExtLink ] ) + ::oUI:q_editOneLiner :setText ( aFacts[ qqOneLiner ] ) + ::oUI:q_editSyntax :setText ( aFacts[ qqSyntax ] ) + ::oUI:q_editReturns :setText ( aFacts[ qqReturns ] ) + ::oUI:q_editSeeAlso :setText ( aFacts[ qqSeeAlso ] ) + ::oUI:q_editFiles :setText ( aFacts[ qqFiles ] ) + ::oUI:q_plainArgs :setPlainText ( aFacts[ qqArgs ] ) + ::oUI:q_plainDesc :setPlainText ( aFacts[ qqDesc ] ) + ::oUI:q_plainExamples :setPlainText ( aFacts[ qqExamples ] ) + ::oUI:q_plainTests :setPlainText ( aFacts[ qqTests ] ) + + ::oUI:q_comboTemplate:setCurrentIndex( iif( aFacts[ qqVersion ] == "Procedure", 1, ; + iif( aFacts[ qqVersion ] == "Class", 2, 0 ) ) ) + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocWriter:loadCurrentFuncDoc() + LOCAL oEdit, nCurLine, n, cProto, nProtoLine, aFacts + //LOCAL qCursor, qEdit + + IF !empty( oEdit := ::oEM:getEditObjectCurrent() ) + IF oEdit:isModified() + MsgBox( oEdit:oEditor:sourceFile + " is modified.", "Please save the source first" ) + RETURN Self + ENDIF + + IF !empty( ::aTags ) + nCurLine := oEdit:getLineNo() + IF len( ::aTags ) == 1 + n := 1 + ELSEIF ( n := ascan( ::aTags, {|e_| e_[ 3 ] >= nCurLine } ) ) == 0 + n := len( ::aTags ) + ELSEIF n > 0 + n-- + ENDIF + IF n > 0 + nProtoLine := ::aTags[ n, 3 ] + cProto := oEdit:getLine( nProtoLine ) + + IF !empty( aFacts := ::parsePrototype( cProto ) ) + ::clear() + ::oEdit := oEdit + ::cFuncPtoto := cProto + ::nFuncLine := nProtoLine + ::nTagsIndex := n + ::cSourceFile := oEdit:oEditor:sourceFile + ::fillForm( aFacts ) + ENDIF + ENDIF + ENDIF + ENDIF + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocWriter:parsePrototype( cProto ) + LOCAL aFacts, n, n1, cPre, cArg, aArg, cSyn, cTpl, cFun, s + + IF ( n := at( "(", cProto ) ) > 0 + IF ( n1 := at( ")", cProto ) ) > 0 + cPre := alltrim( substr( cProto, 1, n - 1 ) ) + cArg := alltrim( substr( cProto, n + 1, n1 - n - 1 ) ) + aArg := hb_aTokens( cArg, "," ) + FOR EACH s IN aArg + s := alltrim( s ) + NEXT + n := rat( " ", cPre ) /* and it must be */ + cTpl := alltrim( substr( cPre, 1, n - 1 ) ) + cFun := alltrim( substr( cPre, n + 1 ) ) + + cSyn := cFun + "( " + hbide_ar2paramList( aArg ) + " )" + cSyn := strtran( cSyn, "( )", "()" ) + + aFacts := afill( array( qqNumVrbls ), "" ) + cTpl := lower( cTpl ) + aFacts[ qqTemplate ] := iif( "func" $ cTpl, "Function" , ; + iif( "proc" $ cTpl, "Procedure", ; + iif( "class" $ cTpl, "Class" , "Function" ) ) ) + + aFacts[ qqVersion ] := "" + aFacts[ qqStatus ] := "" + aFacts[ qqCompliance ] := "" + aFacts[ qqCategory ] := "" + aFacts[ qqSubCategory ] := "" + aFacts[ qqName ] := upper( cFun ) + "()" + aFacts[ qqExtLink ] := "" + aFacts[ qqOneLiner ] := "" + aFacts[ qqSyntax ] := cSyn + aFacts[ qqReturns ] := "" + aFacts[ qqSeeAlso ] := "" + aFacts[ qqFiles ] := "" + aFacts[ qqArgs ] := hbide_arg2memo( aArg ) + aFacts[ qqDesc ] := "" + aFacts[ qqExamples ] := "" + aFacts[ qqTests ] := "" + + ENDIF + ENDIF + + RETURN aFacts + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocWriter:saveInFile() + LOCAL cFile, cBuffer + LOCAL txt_ := ::buildDocument() + LOCAL n := ::oUI:q_comboTemplate:currentIndex() + LOCAL cPrefix := iif( n == 0, "fun_", iif( n == 1, "proc_", "class_" ) ) + LOCAL cName := lower( ::oUI:q_editName:text() ) + + cName := strtran( cName, "(", "" ) + cName := strtran( cName, ")", "" ) + cFile := cPrefix + alltrim( cName ) + ".txt" + + cFile := hbide_saveAFile( ::oDlg, "Provide filename to save documentation", ; + { { "Harbour Documentation File", "*.txt" } }, cFile, "txt" ) + IF !empty( cFile ) + cBuffer := hb_memoread( cFile ) + cBuffer := iif( "$Id:" $ cBuffer, cBuffer, hbide_getSVNHeader() + cBuffer ) + cBuffer += CRLF + cBuffer += hbide_arrayToMemo( txt_ ) + + hb_memowrit( cFile, cBuffer ) + MsgBox( cFile + " : is saved", "Save File Alert" ) + ENDIF + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocWriter:saveInFunction() + LOCAL nCurLine, oEdit, txt_:= ::buildDocument() + + /* Bring it on top and make it current */ + ::oSM:editSource( ::cSourceFile, , , , , , .f. ) + + IF !empty( oEdit := ::oEM:getEditObjectCurrent() ) + IF oEdit:isModified() + MsgBox( oEdit:oEditor:sourceFile + " is modified.", "Please save the source first!" ) + RETURN Self + ENDIF + IF oEdit:find( ::cFuncPtoto, 0 ) + nCurLine := oEdit:getLineNo() + IF nCurLine != ::nFuncLine + // This is possible user might have edited the source; just issue warning + MsgBox( "Source is modified, anyway proceeding.", "Documentation Save Alert" ) + ENDIF + oEdit:home() + oEdit:insertText( hbide_arrayToMemo( txt_ ) ) + oEdit:up() + oEdit:deleteLine() + oEdit:qEdit:centerCursor() + ENDIF + ENDIF + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocWriter:buildDocument() + LOCAL s + LOCAL txt_:= {} + LOCAL nIndex := ::oUI:q_comboTemplate:currentIndex() + + aadd( txt_, "/* $DOC$" ) + aadd( txt_, " * $TEMPLATE$" ) + aadd( txt_, " * " + iif( nIndex == 2, "Class", iif( nIndex == 1, "Procedure", "Function" ) ) ) + IF !empty( s := ::oUI:q_editName:text() ) + aadd( txt_, " * $NAME$" ) + aadd( txt_, " * " + s ) + ENDIF + IF !empty( s := ::oUI:q_editOneLiner:text() ) + aadd( txt_, " * $ONELINER$" ) + aadd( txt_, " * " + s ) + ENDIF + IF !empty( s := ::oUI:q_editSyntax:text() ) + aadd( txt_, " * $SYNTAX$" ) + aadd( txt_, " * " + s ) + ENDIF + IF !empty( s := ::oUI:q_editReturns:text() ) + aadd( txt_, " * $RETURNS$" ) + aadd( txt_, " * " + s ) + ENDIF + + hbide_populateParam( @txt_, " * $ARGUMENTS$" , ::oUI:q_plainArgs:toPlainText() ) + hbide_populateParam( @txt_, " * $DESCRIPTION$", ::oUI:q_plainDesc:toPlainText() ) + hbide_populateParam( @txt_, " * $EXAMPLES$" , ::oUI:q_plainExamples:toPlainText() ) + hbide_populateParam( @txt_, " * $TESTS$" , ::oUI:q_plainTests:toPlainText() ) + + IF !empty( s := ::oUI:q_editCategory:text() ) + aadd( txt_, " * $CATEGORY$" ) + aadd( txt_, " * " + s ) + ENDIF + IF !empty( s := ::oUI:q_editSubCategory:text() ) + aadd( txt_, " * $SUBCATEGORY$" ) + aadd( txt_, " * " + s ) + ENDIF + IF !empty( s := ::oUI:q_editVersion:text() ) + aadd( txt_, " * $VERSION$" ) + aadd( txt_, " * " + s ) + ENDIF + IF !empty( s := ::oUI:q_editStatus:text() ) + aadd( txt_, " * $STATUS$" ) + aadd( txt_, " * " + s ) + ENDIF + IF !empty( s := ::oUI:q_editCompliance:text() ) + aadd( txt_, " * $PLATFORMS$" ) + aadd( txt_, " * " + s ) + ENDIF + IF !empty( s := ::oUI:q_editExtLink:text() ) + aadd( txt_, " * $EXTERNALLINK$" ) + aadd( txt_, " * " + s ) + ENDIF + IF !empty( s := ::oUI:q_editSeeAlso:text() ) + aadd( txt_, " * $SEEALSO$" ) + aadd( txt_, " * " + s ) + ENDIF + IF !empty( s := ::oUI:q_editFiles:text() ) + aadd( txt_, " * $FILES$" ) + aadd( txt_, " * " + s ) + ENDIF + aadd( txt_, " * $END$" ) + aadd( txt_, "*/" ) + + RETURN txt_ + +/*----------------------------------------------------------------------*/ + + diff --git a/harbour/contrib/hbide/ideeditor.prg b/harbour/contrib/hbide/ideeditor.prg index 6bc9758356..de8bd670ab 100644 --- a/harbour/contrib/hbide/ideeditor.prg +++ b/harbour/contrib/hbide/ideeditor.prg @@ -151,7 +151,7 @@ CLASS IdeEditsManager INHERIT IdeObject METHOD getText() METHOD getWord( lSelect ) - METHOD getLine( lSelect ) + METHOD getLine( nLine, lSelect ) ENDCLASS @@ -640,10 +640,10 @@ METHOD IdeEditsManager:getWord( lSelect ) /*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:getLine( lSelect ) +METHOD IdeEditsManager:getLine( nLine, lSelect ) LOCAL oEdit, cText := "" IF !empty( oEdit := ::getEditObjectCurrent() ) - cText := oEdit:getLine( lSelect ) + cText := oEdit:getLine( nLine, lSelect ) ENDIF RETURN cText @@ -886,18 +886,18 @@ METHOD IdeEditsManager:gotoMark( nIndex ) RETURN Self /*----------------------------------------------------------------------*/ -/////// -METHOD IdeEditsManager:goto() - LOCAL qGo, nLine, qCursor, qEdit, nRows - IF ! empty( qEdit := ::oEM:getEditCurrent() ) - qCursor := QTextCursor():configure( qEdit:textCursor() ) - nLine := qCursor:blockNumber() - nRows := qEdit:blockCount() +METHOD IdeEditsManager:goto() + LOCAL qGo, nLine, qCursor, nRows, oEdit + + IF ! empty( oEdit := ::oEM:getEditObjectCurrent() ) + qCursor := QTextCursor():configure( oEdit:qEdit:textCursor() ) + nLine := qCursor:blockNumber() + nRows := oEdit:qEdit:blockCount() qGo := QInputDialog():new( ::oDlg:oWidget ) qGo:setIntMinimum( 1 ) - qGo:setIntMaximum( nRows ) + qGo:setIntMaximum( nRows + 1 ) qGo:setIntValue( nLine + 1 ) qGo:setLabelText( "Goto Line Number [1-" + hb_ntos( nRows ) + "]" ) qGo:setWindowTitle( "Harbour-Qt" ) @@ -906,17 +906,9 @@ METHOD IdeEditsManager:goto() qGo:exec() ::aIni[ INI_HBIDE, GotoDialogGeometry ] := hbide_posAndSize( qGo ) - nLine := qGo:intValue() - nLine - - qGo:pPtr := NIL - - IF nLine < 0 - qCursor:movePosition( QTextCursor_Up, QTextCursor_MoveAnchor, abs( nLine ) + 1 ) - ELSEIF nLine > 0 - qCursor:movePosition( QTextCursor_Down, QTextCursor_MoveAnchor, nLine - 1 ) - ENDIF - qEdit:setTextCursor( qCursor ) + oEdit:goto( qGo:intValue() ) ENDIF + RETURN nLine /*----------------------------------------------------------------------*/ @@ -1366,7 +1358,7 @@ CLASS IdeEdit INHERIT IdeObject METHOD create( oEditor, nMode ) METHOD destroy() METHOD execEvent( nMode, oEdit, p, p1 ) - METHOD execKeyEvent( nMode, nEvent, p ) + METHOD execKeyEvent( nMode, nEvent, p, p1 ) METHOD connectEditSignals( oEdit ) METHOD disconnectEditSignals( oEdit ) @@ -1390,11 +1382,12 @@ CLASS IdeEdit INHERIT IdeObject METHOD handlePreviousWord( lUpdatePrevWord ) METHOD loadFuncHelp() METHOD clickFuncHelp() + METHOD goto( nLine ) METHOD gotoFunction() METHOD toggleLineNumbers() METHOD getWord( lSelect ) - METHOD getLine( lSelect ) + METHOD getLine( nLine, lSelect ) METHOD getText() METHOD getSelectedText() METHOD getColumnNo() @@ -1410,9 +1403,14 @@ CLASS IdeEdit INHERIT IdeObject METHOD setLineNumbersBkColor( nR, nG, nB ) METHOD setCurrentLineColor( nR, nG, nB ) + METHOD getCursor() INLINE QTextCursor():from( ::qEdit:textCursor() ) METHOD down() METHOD up() + METHOD home() + METHOD find( cText, nPosFrom ) METHOD refresh() + METHOD isModified() INLINE ::oEditor:qDocument:isModified() + ENDCLASS /*----------------------------------------------------------------------*/ @@ -1463,7 +1461,7 @@ METHOD IdeEdit:create( oEditor, nMode ) Qt_Events_Connect( ::pEvents, ::qEdit, QEvent_FocusOut , {| | ::execKeyEvent( 105, QEvent_FocusOut ) } ) Qt_Events_Connect( ::pEvents, ::qEdit, QEvent_MouseButtonDblClick, {|p| ::execKeyEvent( 103, QEvent_MouseButtonDblClick, p ) } ) - ::qEdit:hbSetEventBlock( {|p| ::execKeyEvent( 115, 1001, p ) } ) + ::qEdit:hbSetEventBlock( {|p,p1| ::execKeyEvent( 115, 1001, p, p1 ) } ) ::qTimer := QTimer():new() ::qTimer:setInterval( 2000 ) @@ -1652,12 +1650,14 @@ METHOD IdeEdit:execEvent( nMode, oEdit, p, p1 ) /*----------------------------------------------------------------------*/ -METHOD IdeEdit:execKeyEvent( nMode, nEvent, p ) +METHOD IdeEdit:execKeyEvent( nMode, nEvent, p, p1 ) LOCAL key, kbm, txt, qEvent LOCAL lAlt := .f. LOCAL lCtrl := .f. LOCAL lShift := .f. + p1 := p1 + SWITCH nEvent CASE QEvent_KeyPress @@ -1754,6 +1754,9 @@ METHOD IdeEdit:execKeyEvent( nMode, nEvent, p ) ::gotoFunction() ENDIF EXIT + CASE Qt_Key_F1 + ::gotoFunction() + EXIT ENDSWITCH EXIT @@ -1773,11 +1776,14 @@ METHOD IdeEdit:execKeyEvent( nMode, nEvent, p ) ::lCopyWhenDblClicked := .t. EXIT - CASE 1001 IF p == QEvent_MouseButtonDblClick ::lCopyWhenDblClicked := .f. /* not intuitive */ ::clickFuncHelp() + + ELSEIF p == QEvent_Paint + // ::oIde:testPainter( p1 ) + ENDIF EXIT @@ -1834,6 +1840,7 @@ METHOD IdeEdit:toggleLineNumbers() METHOD IdeEdit:gotoMark( nIndex ) IF len( ::aBookMarks ) >= nIndex ::qEdit:hbGotoBookmark( ::aBookMarks[ nIndex ] ) + ::qEdit:centerCursor() ENDIF RETURN Self @@ -1885,6 +1892,26 @@ METHOD IdeEdit:setCurrentLineColor( nR, nG, nB ) ::qEdit:hbSetCurrentLineColor( QColor():new( nR, nG, nB ) ) RETURN Self +/*----------------------------------------------------------------------*/ +/* TO BE EXTENDED */ +METHOD IdeEdit:find( cText, nPosFrom ) + LOCAL lFound, nPos + LOCAL qCursor := ::getCursor() + + nPos := qCursor:position() + IF hb_isNumeric( nPosFrom ) + qCursor:setPosition( nPosFrom ) + ENDIF + ::qEdit:setTextCursor( qCursor ) + IF ( lFound := ::qEdit:find( cText, QTextDocument_FindCaseSensitively ) ) + ::qEdit:centerCursor() + ELSE + qCursor:setPosition( nPos ) + ::qEdit:setTextCursor( qCursor ) + ENDIF + + RETURN lFound + /*----------------------------------------------------------------------*/ METHOD IdeEdit:refresh() @@ -1893,6 +1920,16 @@ METHOD IdeEdit:refresh() /*----------------------------------------------------------------------*/ +METHOD IdeEdit:home() + LOCAL qCursor := ::getCursor() + + qCursor:movePosition( QTextCursor_StartOfBlock ) + ::qEdit:setTextCursor( qCursor ) + + RETURN Self + +/*----------------------------------------------------------------------*/ + METHOD IdeEdit:down() LOCAL qCursor := QTextCursor():configure( ::qEdit:textCursor() ) @@ -2019,14 +2056,30 @@ METHOD IdeEdit:getWord( lSelect ) /*----------------------------------------------------------------------*/ -METHOD IdeEdit:getLine( lSelect ) +METHOD IdeEdit:goto( nLine ) + LOCAL qCursor := QTextCursor():configure( ::qEdit:textCursor() ) + + qCursor:movePosition( QTextCursor_Start ) + qCursor:movePosition( QTextCursor_Down, QTextCursor_MoveAnchor, nLine - 1 ) + ::qEdit:setTextCursor( qCursor ) + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeEdit:getLine( nLine, lSelect ) LOCAL cText, qCursor := QTextCursor():configure( ::qEdit:textCursor() ) + DEFAULT nLine TO qCursor:blockNumber() + 1 DEFAULT lSelect TO .F. + IF nLine != qCursor:blockNumber() + 1 + qCursor:movePosition( QTextCursor_Start ) + qCursor:movePosition( QTextCursor_Down, QTextCursor_MoveAnchor, nLine - 1 ) + ENDIF + qCursor:select( QTextCursor_LineUnderCursor ) cText := qCursor:selectedText() - IF lSelect ::qEdit:setTextCursor( qCursor ) ENDIF diff --git a/harbour/contrib/hbide/ideharbourhelp.prg b/harbour/contrib/hbide/ideharbourhelp.prg index e6bcba65a8..d78ce4da79 100644 --- a/harbour/contrib/hbide/ideharbourhelp.prg +++ b/harbour/contrib/hbide/ideharbourhelp.prg @@ -331,10 +331,10 @@ METHOD IdeHarbourHelp:setImages() oUI:q_buttonInstall:setIcon( hbide_image( "dc_folder" ) ) - oUI:q_buttonArgPlus:setIcon( hbide_image( "dc_plus" ) ) - oUI:q_buttonArgMinus:setIcon( hbide_image( "dc_delete" ) ) - oUI:q_buttonArgUp:setIcon( hbide_image( "dc_up" ) ) - oUI:q_buttonArgDown:setIcon( hbide_image( "dc_down" ) ) + //oUI:q_buttonArgPlus:setIcon( hbide_image( "dc_plus" ) ) + //oUI:q_buttonArgMinus:setIcon( hbide_image( "dc_delete" ) ) + //oUI:q_buttonArgUp:setIcon( hbide_image( "dc_up" ) ) + //oUI:q_buttonArgDown:setIcon( hbide_image( "dc_down" ) ) RETURN Self @@ -356,11 +356,6 @@ METHOD IdeHarbourHelp:setTooltips() oUI:q_buttonInstall:setToolTip( "Select Harbour Installation Path" ) - oUI:q_buttonArgPlus:setToolTip( "Add new argument" ) - oUI:q_buttonArgMinus:setToolTip( "Delete argument" ) - oUI:q_buttonArgUp:setToolTip( "Up one position" ) - oUI:q_buttonArgDown:setToolTip( "Down one position" ) - RETURN Self /*----------------------------------------------------------------------*/ @@ -372,6 +367,7 @@ METHOD IdeHarbourHelp:setParameters() oUI:q_treeCategory:setHeaderHidden( .t. ) oUI:q_editInstall:setText( ::cWrkHarbour ) + #if 0 ::qHiliter := ::oThemes:SetSyntaxHilighting( oUI:q_plainExamples, "Bare Minimum" ) oUI:q_plainExamples:setFont( ::oFont:oWidget ) @@ -382,6 +378,7 @@ METHOD IdeHarbourHelp:setParameters() oUI:q_plainExamples:setLineWrapMode( QTextEdit_NoWrap ) oUI:q_plainTests:setLineWrapMode( QTextEdit_NoWrap ) + #endif oUI:q_treeDoc:expandsOnDoubleClick( .f. ) @@ -403,12 +400,14 @@ METHOD IdeHarbourHelp:installSignals() ::oUI:signal( "buttonRefresh" , "clicked()" , {| | ::execEvent( buttonRefresh_clicked ) } ) ::oUI:signal( "buttonPrint" , "clicked()" , {| | ::execEvent( buttonPrint_clicked ) } ) ::oUI:signal( "buttonPdf" , "clicked()" , {| | ::execEvent( buttonPdf_clicked ) } ) + + ::oUI:signal( "browserView" , "anchorClicked(QUrl)" , {|p| ::execEvent( browserView_anchorClicked, p ) } ) + ::oUI:signal( "tabWidgetContents", "currentChanged(int)" , {|p| ::execEvent( tabWidgetContents_currentChanged, p ) } ) + ::oUI:signal( "editInstall" , "textChanged(QString)" , {|p| ::execEvent( editInstall_textChanged, p ) } ) ::oUI:signal( "editIndex" , "textChanged(QString)" , {|p| ::execEvent( editIndex_textChanged, p ) } ) ::oUI:signal( "editIndex" , "returnPressed()" , {| | ::execEvent( editIndex_returnPressed ) } ) ::oUI:signal( "listIndex" , "itemDoubleClicked(QLWItem)", {|p| ::execEvent( listIndex_ItemDoubleClicked, p ) } ) - ::oUI:signal( "browserView" , "anchorClicked(QUrl)" , {|p| ::execEvent( browserView_anchorClicked, p ) } ) - ::oUI:signal( "tabWidgetContents", "currentChanged(int)" , {|p| ::execEvent( tabWidgetContents_currentChanged, p ) } ) RETURN Self @@ -1006,26 +1005,6 @@ METHOD IdeHarbourHelp:populateFuncDetails( n ) nIndex := ascan( ::aFunctions, {|e_| e_[ 4 ] == oTWItem } ) oFunc := ::aFunctions[ nIndex, 3 ] - ::oUI:q_editTemplate :setText( iif( empty( oFunc:cTemplate ), "FUNCTION", oFunc:cTemplate ) ) - ::oUI:q_editName :setText( oFunc:cName ) - ::oUI:q_editCategory :setText( oFunc:cCategory ) - ::oUI:q_editSubCategory :setText( oFunc:cSubCategory ) - ::oUI:q_editOneLiner :setText( oFunc:cOneLiner ) - ::oUI:q_editSeeAlso :setText( oFunc:cSeaAlso ) - ::oUI:q_editStatus :setText( oFunc:cStatus ) - ::oUI:q_editPlatforms :setText( oFunc:cPlatforms ) - - ::oUI:q_editReturns :setText( hbide_arrayToMemoEx( oFunc:aReturns ) ) //TODO : a line - - ::oUI:q_plainSyntax :setPlainText( hbide_arrayToMemoEx2( oFunc:aSyntax ) ) - ::oUI:q_plainFiles :setPlainText( hbide_arrayToMemoEx2( oFunc:aFiles ) ) - ::oUI:q_plainDescription:setPlainText( hbide_arrayToMemoEx2( oFunc:aDescription ) ) - ::oUI:q_plainExamples :setPlainText( hbide_arrayToMemoEx2( oFunc:aExamples ) ) - ::oUI:q_plainTests :setPlainText( hbide_arrayToMemoEx2( oFunc:aTests ) ) - ::oUI:q_plainArguments :setPlainText( hbide_arrayToMemoEx2( oFunc:aArguments ) ) - - ::oUI:q_editTextPath :setText( ::aFunctions[ nIndex, 1 ] ) - ::buildView( oFunc ) RETURN Self diff --git a/harbour/contrib/hbide/idehome.prg b/harbour/contrib/hbide/idehome.prg index c0f23472eb..3848c7a6d7 100644 --- a/harbour/contrib/hbide/idehome.prg +++ b/harbour/contrib/hbide/idehome.prg @@ -343,7 +343,7 @@ METHOD IdeHome:addProjectsInfo( aHtm ) dir_ := directory( a_[ 1 ] ) cIcon := hbide_imageForProjectType( prp_[ PRJ_PRP_TYPE ] ) - aadd( aHtm, ' ' ) + aadd( aHtm, ' ' ) aadd( aHtm, ' ' ) aadd( aHtm, ' ' + hbide_htmlImgAnchor( 'prj-' + prp_[ PRJ_PRP_TITLE ], 'resources/' + cIcon + '.png' ) + ' ' ) aadd( aHtm, ' ' + hbide_htmlAnchor( 'prj-' + prp_[ PRJ_PRP_TITLE ], prp_[ PRJ_PRP_TITLE ], a_[ 1 ] ) ) diff --git a/harbour/contrib/hbide/idemisc.prg b/harbour/contrib/hbide/idemisc.prg index 9435d4788c..a455d01757 100644 --- a/harbour/contrib/hbide/idemisc.prg +++ b/harbour/contrib/hbide/idemisc.prg @@ -669,8 +669,10 @@ FUNCTION hbide_pathStripLastSlash( cPath ) FUNCTION hbide_pathToOSPath( cPath ) LOCAL n - cPath := strtran( cPath, "/" , hb_osPathSeparator() ) - cPath := strtran( cPath, "\" , hb_osPathSeparator() ) + cPath := strtran( cPath, "//" , hb_osPathSeparator() ) + cPath := strtran( cPath, "/" , hb_osPathSeparator() ) + cPath := strtran( cPath, "\\" , hb_osPathSeparator() ) + cPath := strtran( cPath, "\" , hb_osPathSeparator() ) IF ( n := at( ":", cPath ) ) > 0 cPath := upper( substr( cPath, 1, n - 1 ) ) + substr( cPath, n ) diff --git a/harbour/contrib/hbide/ideobject.prg b/harbour/contrib/hbide/ideobject.prg index 9e047e1a3a..462e511470 100644 --- a/harbour/contrib/hbide/ideobject.prg +++ b/harbour/contrib/hbide/ideobject.prg @@ -93,11 +93,13 @@ CLASS IdeObject ACCESS oHL INLINE ::oIde:oHL ACCESS oHM INLINE ::oIde:oHM ACCESS oFN INLINE ::oIde:oFN + ACCESS oDW INLINE ::oIde:oDW ACCESS oFindDock INLINE ::oIde:oFindDock ACCESS oFindInFiles INLINE ::oIde:oFindInFiles ACCESS aMeta INLINE ::oIde:aMeta + ACCESS aTags INLINE ::oIde:aTags ACCESS oFont INLINE ::oIde:oFont ACCESS oThemes INLINE ::oIde:oThemes @@ -179,6 +181,7 @@ CLASS IdeObject ACCESS oEnvironDock INLINE ::oIde:oEnvironDock ACCESS oSearchReplace INLINE ::oIde:oSearchReplace ACCESS oDocViewDock INLINE ::oIde:oDocViewDock + ACCESS oDocWriteDock INLINE ::oIde:oDocWriteDock ACCESS oFunctionsDock INLINE ::oIde:oFunctionsDock ACCESS lProjTreeVisible INLINE ::oIde:lProjTreeVisible diff --git a/harbour/contrib/hbide/ideprojmanager.prg b/harbour/contrib/hbide/ideprojmanager.prg index 0ef11e737a..f445a2d777 100644 --- a/harbour/contrib/hbide/ideprojmanager.prg +++ b/harbour/contrib/hbide/ideprojmanager.prg @@ -674,10 +674,8 @@ METHOD IdeProjManager:fetchProperties() METHOD IdeProjManager:buildInterface() LOCAL cLukupPng - ::oUI := HbQtUI():new( ::resPath + "projectpropertiesex.uic" ):build() - + ::oUI := HbQtUI():new( hbide_uic( "projectpropertiesex" ) ):build() ::oPropertiesDock:oWidget:setWidget( ::oUI ) - //::oPropertiesDock:qtObject := ::oUI ::oUI:q_comboPrjType:addItem( "Executable" ) ::oUI:q_comboPrjType:addItem( "Library" ) @@ -1274,7 +1272,7 @@ METHOD IdeProjManager:showOutput( cOutput, mp2, oProcess ) /*----------------------------------------------------------------------*/ METHOD IdeProjManager:finished( nExitCode, nExitStatus, oProcess ) - LOCAL cTmp, n, n1, cTkn, cExe := "" + LOCAL cTmp, n, n1, cTkn, cExe hbide_justACall( oProcess ) @@ -1287,21 +1285,34 @@ METHOD IdeProjManager:finished( nExitCode, nExitStatus, oProcess ) ferase( ::cBatch ) - cTmp := ::oOutputResult:oWidget:toPlainText() - IF ( n := at( "-out:", cTmp ) ) > 0 - n1 := hb_at( " ", cTmp, n ) - cExe := substr( cExe, n + 5, n1 - n - 5 ) -hbide_dbg( cTmp ) - ELSE - cTkn := "hbmk2: Target up to date: " - IF ( n := at( cTkn, cTmp ) ) > 0 - n1 := hb_at( ".exe", cTmp, n + len( cTkn ) ) - cExe := substr( cTmp, n + len( cTkn ), n1 - n - len( cTkn ) + 4 ) -hbide_dbg( cExe ) - ENDIF - ENDIF - IF ::lLaunch + cTmp := ::oOutputResult:oWidget:toPlainText() + cExe := "" + IF empty( cExe ) + cTkn := "hbmk2: Linking... " + IF ( n := at( cTkn, cTmp ) ) > 0 + n1 := hb_at( ".exe", cTmp, n + len( cTkn ) ) + cExe := substr( cTmp, n + len( cTkn ), n1 - n - len( cTkn ) + 4 ) +hbide_dbg( 1, cTkn, cExe ) + ENDIF + ENDIF + IF empty( cExe ) + cTkn := "hbmk2: Target up to date: " + IF ( n := at( cTkn, cTmp ) ) > 0 + n1 := hb_at( ".exe", cTmp, n + len( cTkn ) ) + cExe := substr( cTmp, n + len( cTkn ), n1 - n - len( cTkn ) + 4 ) +hbide_dbg( 2, cTkn, cExe ) + ENDIF + ENDIF + IF empty( cExe ) + cTkn := "-out:" + IF ( n := at( cTkn, cTmp ) ) > 0 + n1 := hb_at( ".exe", cTmp, n + len( cTkn ) ) + cExe := substr( cTmp, n + len( cTkn ), n1 - n - len( cTkn ) + 4 ) +hbide_dbg( 3, cTkn, cExe ) + ENDIF + ENDIF + IF nExitCode == 0 ::launchProject( ::cProjectInProcess, cExe ) ELSE diff --git a/harbour/contrib/hbide/idestylesheets.prg b/harbour/contrib/hbide/idestylesheets.prg index 391ca6f13d..866b902cae 100644 --- a/harbour/contrib/hbide/idestylesheets.prg +++ b/harbour/contrib/hbide/idestylesheets.prg @@ -311,7 +311,7 @@ FUNCTION GetStyleSheet( cWidget ) aadd( txt_, ' border: 1px solid darkgray; ' ) aadd( txt_, ' } ' ) aadd( txt_, 'QDockWidget::title { ' ) - aadd( txt_, ' background-color: lightgray; ' ) + aadd( txt_, ' background-color: rgb(212,208,200); ' ) aadd( txt_, ' padding-left: 10px; ' ) aadd( txt_, ' padding-top: 4px; ' ) aadd( txt_, ' } ' ) diff --git a/harbour/contrib/hbide/idethemes.prg b/harbour/contrib/hbide/idethemes.prg index 5010f1ad62..91ef22ac32 100644 --- a/harbour/contrib/hbide/idethemes.prg +++ b/harbour/contrib/hbide/idethemes.prg @@ -583,9 +583,8 @@ METHOD IdeThemes:setAttributes() ::oUI:qObj[ "checkItalic" ]:setChecked( aAttr[ THM_ATR_ITALIC ] ) ::oUI:qObj[ "checkBold" ]:setChecked( aAttr[ THM_ATR_BOLD ] ) ::oUI:qObj[ "checkUnderline" ]:setChecked( aAttr[ THM_ATR_ULINE ] ) - - ::oUI:qObj[ "buttonColor" ]:setStyleSheet( "color: " + Attr2RGBfnRev( aAttr ) + ";" + ; - "background-color: " + Attr2RGBfn( aAttr ) + ";" ) + ::oUI:qObj[ "buttonColor" ]:setStyleSheet( "color: " + Attr2RGBfnRev( aAttr ) + ";" + ; + "background-color: " + Attr2RGBfn( aAttr ) + ";" ) ENDIF RETURN Self diff --git a/harbour/contrib/hbide/resources/arguments.png b/harbour/contrib/hbide/resources/arguments.png new file mode 100644 index 0000000000..1b6954a539 Binary files /dev/null and b/harbour/contrib/hbide/resources/arguments.png differ diff --git a/harbour/contrib/hbide/resources/description.png b/harbour/contrib/hbide/resources/description.png new file mode 100644 index 0000000000..eaed9fea5b Binary files /dev/null and b/harbour/contrib/hbide/resources/description.png differ diff --git a/harbour/contrib/hbide/resources/docviewgenerator.ui b/harbour/contrib/hbide/resources/docviewgenerator.ui index 73dcf0963e..fdcac175f8 100644 --- a/harbour/contrib/hbide/resources/docviewgenerator.ui +++ b/harbour/contrib/hbide/resources/docviewgenerator.ui @@ -96,16 +96,6 @@ - - - - - - - false - - - @@ -237,229 +227,600 @@ - - - General - - - - - - Template: - - - - - - - - - - Name - - - - - - - - - - Category: - - - - - - - - - - Sub-Category: - - - - - - - - - - One-Liner - - - - - - - - - - Syntax: - - - - - - - - - - Returns: - - - - - - - - - - Status: - - - - - - - - - - Platforms: - - - - - - - - - - Files: - - - - - - - - - - See Also: - - - - - - - - - - .txt path: - - - - - - - - - - - Args - - - - - - Name: - - - - - - - Description: - - - - - - - - 150 - 16777215 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - - - - - - - - Desc - - - - - - - - - - Examples - - - - - - - - Tests + Write - + + + 0 + + + 0 + + + 0 + - + + + + 0 + 30 + + + + + 16777215 + 30 + + + + QFrame::Panel + + + QFrame::Raised + + + + 2 + + + 5 + + + 4 + + + + + Load from current function + + + ... + + + false + + + + + + + Load from .txt file + + + ... + + + false + + + + + + + Load from source ( .prg,.c,.c++ ) file + + + ... + + + false + + + + + + + Toggle Arguments Section + + + ... + + + false + + + + + + + Toggle Descriptions Section + + + ... + + + false + + + + + + + Toggle Examples Section + + + ... + + + false + + + + + + + Toggle Tests Section + + + ... + + + false + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Save written/updated documentation + + + ... + + + false + + + + + + + + + + QFrame::NoFrame + + + true + + + + + 0 + 0 + 369 + 625 + + + + + 3 + + + 0 + + + 0 + + + 0 + + + 9 + + + + + Qt::Vertical + + + 2 + + + + + 16777215 + 268 + + + + QFrame::NoFrame + + + QFrame::Plain + + + + 4 + + + 4 + + + 0 + + + 2 + + + + + Template: + + + + + + + Version: + + + + + + + Status: + + + + + + + Compliance: + + + + + + + + + + Version of this document contents + + + + + + + Status should usually be described as one character + + + + + + + Describe comatibility with other language + + + + + + + Category: + + + + + + + Sub-category: + + + + + + + Category should describe main area this function belongs to + + + + + + + + + + Name: + + + + + + + External Link: + + + + + + + Name of the function, and if appropriate, with open/close parenthis. + + + + + + + External link, i.e., http://www.trolltech.com/ + + + + + + + One Liner: + + + + + + + A brief description this function accomlishes + + + + + + + Syntax: + + + + + + + Syntax, or prototype as to how this function will be called + + + + + + + Returns: + + + + + + + Variable name with hungarian notation with brief description as what this function returns + + + + + + + See Also: + + + + + + + A comma separated list of related functions/keywords + + + + + + + + QFrame::NoFrame + + + QFrame::Raised + + + + 2 + + + 4 + + + 0 + + + 2 + + + + + Arguments: + + + + + + + ... + + + true + + + + + + + One argument per line in the form - argName description + + + + + + + + QFrame::NoFrame + + + QFrame::Raised + + + + 2 + + + 4 + + + 0 + + + 2 + + + + + Description: + + + + + + + ... + + + true + + + + + + + Detailed description as musch as possible to convey to the user what should be kept in mind when this function is called. + + + + + + + + QFrame::NoFrame + + + QFrame::Raised + + + + 2 + + + 4 + + + 0 + + + 2 + + + + + Examples: + + + + + + + ... + + + true + + + + + + + A real-time source code which could be compiled out of this box. + + + QPlainTextEdit::NoWrap + + + + + + + + + 0 + 0 + + + + QFrame::NoFrame + + + QFrame::Raised + + + + 2 + + + 4 + + + 0 + + + 2 + + + + + Tests: + + + + + + + ... + + + true + + + + + + + Compilable code out of the box which could be used to test this function + + + QPlainTextEdit::NoWrap + + + + + + + + + + diff --git a/harbour/contrib/hbide/resources/docviewgenerator.uic b/harbour/contrib/hbide/resources/docviewgenerator.uic index b08281ff41..416be60a4c 100644 --- a/harbour/contrib/hbide/resources/docviewgenerator.uic +++ b/harbour/contrib/hbide/resources/docviewgenerator.uic @@ -1,7 +1,7 @@ /******************************************************************************** ** Form generated from reading ui file 'docviewgenerator.ui' ** -** Created: Fri Feb 26 00:25:50 2010 +** Created: Mon Mar 15 11:47:01 2010 ** by: Qt User Interface Compiler version 4.5.2 ** ** WARNING! All changes made in this file will be lost when recompiling ui file! @@ -14,6 +14,8 @@ #include #include #include +#include +#include #include #include #include @@ -21,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -45,7 +48,6 @@ public: QToolButton *buttonPrint; QToolButton *buttonPdf; QSpacerItem *horizontalSpacer_2; - QToolButton *buttonSave; QToolButton *buttonExit; QHBoxLayout *horizontalLayout; QLabel *labelInstall; @@ -69,51 +71,68 @@ public: QWidget *tabView; QGridLayout *gridLayout_8; QTextBrowser *browserView; - QWidget *tabGeneral; - QGridLayout *gridLayout_2; - QLabel *label; - QLineEdit *editTemplate; - QLabel *label_2; - QLineEdit *editName; - QLabel *label_3; - QLineEdit *editCategory; - QLabel *label_4; - QLineEdit *editSubCategory; - QLabel *label_5; - QLineEdit *editOneLiner; - QLabel *label_6; - QPlainTextEdit *plainSyntax; - QLabel *label_8; - QLineEdit *editReturns; - QLabel *label_12; - QLineEdit *editStatus; - QLabel *label_13; - QLineEdit *editPlatforms; - QLabel *label_14; - QPlainTextEdit *plainFiles; - QLabel *label_15; - QLineEdit *editSeeAlso; - QLabel *label_9; - QLineEdit *editTextPath; - QWidget *tabArguments; - QGridLayout *gridLayout_3; - QLabel *labelArgName; - QLabel *labelArgDesc; - QListWidget *listArguments; - QToolButton *buttonArgPlus; - QPlainTextEdit *plainArgDesc; - QToolButton *buttonArgMinus; - QToolButton *buttonArgUp; - QToolButton *buttonArgDown; - QPlainTextEdit *plainArguments; - QWidget *tabDesc; - QGridLayout *gridLayout_4; - QPlainTextEdit *plainDescription; - QWidget *tabExamples; - QGridLayout *gridLayout_5; - QPlainTextEdit *plainExamples; QWidget *tabTests; + QGridLayout *gridLayout_12; + QFrame *frameButtons; + QHBoxLayout *horizontalLayout_2; + QToolButton *buttonLoadFromCurFunc; + QToolButton *buttonLoadFromDocFile; + QToolButton *buttonLoadFromSource; + QToolButton *buttonArgs; + QToolButton *buttonDesc; + QToolButton *buttonExamples; + QToolButton *buttonTests; + QSpacerItem *horizontalSpacer; + QToolButton *buttonSave; + QScrollArea *scrollArea; + QWidget *scrollAreaWidgetContents; + QVBoxLayout *verticalLayout_4; + QSplitter *splitter_2; + QFrame *frameGeneral; QGridLayout *gridLayout_6; + QLabel *labelTemplate; + QLabel *labelVersion; + QLabel *labelStatus; + QLabel *label_7; + QComboBox *comboTemplate; + QLineEdit *editVersion; + QLineEdit *editStatus; + QLineEdit *editCompliance; + QLabel *labelCategory; + QLabel *labelSubCategory; + QLineEdit *editCategory; + QLineEdit *editSubCategory; + QLabel *labelName; + QLabel *labelExtLink; + QLineEdit *editName; + QLineEdit *editExtLink; + QLabel *labelOneLiner; + QLineEdit *editOneLiner; + QLabel *labelSyntax; + QLineEdit *editSyntax; + QLabel *labelReturns; + QLineEdit *editReturns; + QLabel *labelSeeAlso; + QLineEdit *editSeeAlso; + QFrame *frameArgs; + QGridLayout *gridLayout_7; + QLabel *labelArgs; + QToolButton *buttonCloseArgs; + QPlainTextEdit *plainArgs; + QFrame *frameDesc; + QGridLayout *gridLayout_9; + QLabel *labelDesc; + QToolButton *buttonCloseDesc; + QPlainTextEdit *plainDesc; + QFrame *frameExamples; + QGridLayout *gridLayout_10; + QLabel *labelExamples; + QToolButton *buttonCloseExamples; + QPlainTextEdit *plainExamples; + QFrame *frameTests; + QGridLayout *gridLayout_11; + QLabel *labelTests; + QToolButton *buttonCloseTests; QPlainTextEdit *plainTests; void setupUi(QWidget *FormDocViewer) @@ -170,12 +189,6 @@ public: horizontalLayout_3->addItem(horizontalSpacer_2); - buttonSave = new QToolButton(FormDocViewer); - buttonSave->setObjectName(QString::fromUtf8("buttonSave")); - buttonSave->setAutoRaise(false); - - horizontalLayout_3->addWidget(buttonSave); - buttonExit = new QToolButton(FormDocViewer); buttonExit->setObjectName(QString::fromUtf8("buttonExit")); buttonExit->setAutoRaise(false); @@ -278,211 +291,329 @@ public: gridLayout_8->addWidget(browserView, 0, 0, 1, 1); tabWidgetElements->addTab(tabView, QString()); - tabGeneral = new QWidget(); - tabGeneral->setObjectName(QString::fromUtf8("tabGeneral")); - gridLayout_2 = new QGridLayout(tabGeneral); - gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2")); - label = new QLabel(tabGeneral); - label->setObjectName(QString::fromUtf8("label")); - - gridLayout_2->addWidget(label, 0, 0, 1, 1); - - editTemplate = new QLineEdit(tabGeneral); - editTemplate->setObjectName(QString::fromUtf8("editTemplate")); - - gridLayout_2->addWidget(editTemplate, 0, 1, 1, 1); - - label_2 = new QLabel(tabGeneral); - label_2->setObjectName(QString::fromUtf8("label_2")); - - gridLayout_2->addWidget(label_2, 0, 2, 1, 1); - - editName = new QLineEdit(tabGeneral); - editName->setObjectName(QString::fromUtf8("editName")); - - gridLayout_2->addWidget(editName, 0, 3, 1, 1); - - label_3 = new QLabel(tabGeneral); - label_3->setObjectName(QString::fromUtf8("label_3")); - - gridLayout_2->addWidget(label_3, 1, 2, 1, 1); - - editCategory = new QLineEdit(tabGeneral); - editCategory->setObjectName(QString::fromUtf8("editCategory")); - - gridLayout_2->addWidget(editCategory, 1, 3, 1, 1); - - label_4 = new QLabel(tabGeneral); - label_4->setObjectName(QString::fromUtf8("label_4")); - - gridLayout_2->addWidget(label_4, 2, 2, 1, 1); - - editSubCategory = new QLineEdit(tabGeneral); - editSubCategory->setObjectName(QString::fromUtf8("editSubCategory")); - - gridLayout_2->addWidget(editSubCategory, 2, 3, 1, 1); - - label_5 = new QLabel(tabGeneral); - label_5->setObjectName(QString::fromUtf8("label_5")); - - gridLayout_2->addWidget(label_5, 3, 0, 1, 1); - - editOneLiner = new QLineEdit(tabGeneral); - editOneLiner->setObjectName(QString::fromUtf8("editOneLiner")); - - gridLayout_2->addWidget(editOneLiner, 3, 1, 1, 3); - - label_6 = new QLabel(tabGeneral); - label_6->setObjectName(QString::fromUtf8("label_6")); - - gridLayout_2->addWidget(label_6, 4, 0, 1, 1); - - plainSyntax = new QPlainTextEdit(tabGeneral); - plainSyntax->setObjectName(QString::fromUtf8("plainSyntax")); - - gridLayout_2->addWidget(plainSyntax, 4, 1, 1, 3); - - label_8 = new QLabel(tabGeneral); - label_8->setObjectName(QString::fromUtf8("label_8")); - - gridLayout_2->addWidget(label_8, 5, 0, 1, 1); - - editReturns = new QLineEdit(tabGeneral); - editReturns->setObjectName(QString::fromUtf8("editReturns")); - - gridLayout_2->addWidget(editReturns, 5, 1, 1, 3); - - label_12 = new QLabel(tabGeneral); - label_12->setObjectName(QString::fromUtf8("label_12")); - - gridLayout_2->addWidget(label_12, 6, 2, 1, 1); - - editStatus = new QLineEdit(tabGeneral); - editStatus->setObjectName(QString::fromUtf8("editStatus")); - - gridLayout_2->addWidget(editStatus, 6, 3, 1, 1); - - label_13 = new QLabel(tabGeneral); - label_13->setObjectName(QString::fromUtf8("label_13")); - - gridLayout_2->addWidget(label_13, 7, 2, 1, 1); - - editPlatforms = new QLineEdit(tabGeneral); - editPlatforms->setObjectName(QString::fromUtf8("editPlatforms")); - - gridLayout_2->addWidget(editPlatforms, 7, 3, 1, 1); - - label_14 = new QLabel(tabGeneral); - label_14->setObjectName(QString::fromUtf8("label_14")); - - gridLayout_2->addWidget(label_14, 8, 0, 1, 1); - - plainFiles = new QPlainTextEdit(tabGeneral); - plainFiles->setObjectName(QString::fromUtf8("plainFiles")); - - gridLayout_2->addWidget(plainFiles, 8, 1, 1, 3); - - label_15 = new QLabel(tabGeneral); - label_15->setObjectName(QString::fromUtf8("label_15")); - - gridLayout_2->addWidget(label_15, 9, 0, 1, 1); - - editSeeAlso = new QLineEdit(tabGeneral); - editSeeAlso->setObjectName(QString::fromUtf8("editSeeAlso")); - - gridLayout_2->addWidget(editSeeAlso, 9, 1, 1, 3); - - label_9 = new QLabel(tabGeneral); - label_9->setObjectName(QString::fromUtf8("label_9")); - - gridLayout_2->addWidget(label_9, 10, 0, 1, 1); - - editTextPath = new QLineEdit(tabGeneral); - editTextPath->setObjectName(QString::fromUtf8("editTextPath")); - - gridLayout_2->addWidget(editTextPath, 10, 1, 1, 3); - - tabWidgetElements->addTab(tabGeneral, QString()); - tabArguments = new QWidget(); - tabArguments->setObjectName(QString::fromUtf8("tabArguments")); - gridLayout_3 = new QGridLayout(tabArguments); - gridLayout_3->setObjectName(QString::fromUtf8("gridLayout_3")); - labelArgName = new QLabel(tabArguments); - labelArgName->setObjectName(QString::fromUtf8("labelArgName")); - - gridLayout_3->addWidget(labelArgName, 0, 0, 1, 1); - - labelArgDesc = new QLabel(tabArguments); - labelArgDesc->setObjectName(QString::fromUtf8("labelArgDesc")); - - gridLayout_3->addWidget(labelArgDesc, 0, 2, 1, 1); - - listArguments = new QListWidget(tabArguments); - listArguments->setObjectName(QString::fromUtf8("listArguments")); - listArguments->setMaximumSize(QSize(150, 16777215)); - - gridLayout_3->addWidget(listArguments, 1, 0, 4, 1); - - buttonArgPlus = new QToolButton(tabArguments); - buttonArgPlus->setObjectName(QString::fromUtf8("buttonArgPlus")); - - gridLayout_3->addWidget(buttonArgPlus, 1, 1, 1, 1); - - plainArgDesc = new QPlainTextEdit(tabArguments); - plainArgDesc->setObjectName(QString::fromUtf8("plainArgDesc")); - - gridLayout_3->addWidget(plainArgDesc, 1, 2, 4, 1); - - buttonArgMinus = new QToolButton(tabArguments); - buttonArgMinus->setObjectName(QString::fromUtf8("buttonArgMinus")); - - gridLayout_3->addWidget(buttonArgMinus, 2, 1, 1, 1); - - buttonArgUp = new QToolButton(tabArguments); - buttonArgUp->setObjectName(QString::fromUtf8("buttonArgUp")); - - gridLayout_3->addWidget(buttonArgUp, 3, 1, 1, 1); - - buttonArgDown = new QToolButton(tabArguments); - buttonArgDown->setObjectName(QString::fromUtf8("buttonArgDown")); - - gridLayout_3->addWidget(buttonArgDown, 4, 1, 1, 1); - - plainArguments = new QPlainTextEdit(tabArguments); - plainArguments->setObjectName(QString::fromUtf8("plainArguments")); - plainArguments->setReadOnly(false); - - gridLayout_3->addWidget(plainArguments, 5, 0, 1, 3); - - tabWidgetElements->addTab(tabArguments, QString()); - tabDesc = new QWidget(); - tabDesc->setObjectName(QString::fromUtf8("tabDesc")); - gridLayout_4 = new QGridLayout(tabDesc); - gridLayout_4->setObjectName(QString::fromUtf8("gridLayout_4")); - plainDescription = new QPlainTextEdit(tabDesc); - plainDescription->setObjectName(QString::fromUtf8("plainDescription")); - - gridLayout_4->addWidget(plainDescription, 0, 0, 1, 1); - - tabWidgetElements->addTab(tabDesc, QString()); - tabExamples = new QWidget(); - tabExamples->setObjectName(QString::fromUtf8("tabExamples")); - gridLayout_5 = new QGridLayout(tabExamples); - gridLayout_5->setObjectName(QString::fromUtf8("gridLayout_5")); - plainExamples = new QPlainTextEdit(tabExamples); - plainExamples->setObjectName(QString::fromUtf8("plainExamples")); - - gridLayout_5->addWidget(plainExamples, 0, 0, 1, 1); - - tabWidgetElements->addTab(tabExamples, QString()); tabTests = new QWidget(); tabTests->setObjectName(QString::fromUtf8("tabTests")); - gridLayout_6 = new QGridLayout(tabTests); - gridLayout_6->setObjectName(QString::fromUtf8("gridLayout_6")); - plainTests = new QPlainTextEdit(tabTests); - plainTests->setObjectName(QString::fromUtf8("plainTests")); + gridLayout_12 = new QGridLayout(tabTests); + gridLayout_12->setObjectName(QString::fromUtf8("gridLayout_12")); + gridLayout_12->setContentsMargins(0, 0, 0, -1); + frameButtons = new QFrame(tabTests); + frameButtons->setObjectName(QString::fromUtf8("frameButtons")); + frameButtons->setMinimumSize(QSize(0, 30)); + frameButtons->setMaximumSize(QSize(16777215, 30)); + frameButtons->setFrameShape(QFrame::Panel); + frameButtons->setFrameShadow(QFrame::Raised); + horizontalLayout_2 = new QHBoxLayout(frameButtons); + horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2")); + horizontalLayout_2->setContentsMargins(-1, 2, 5, 4); + buttonLoadFromCurFunc = new QToolButton(frameButtons); + buttonLoadFromCurFunc->setObjectName(QString::fromUtf8("buttonLoadFromCurFunc")); + buttonLoadFromCurFunc->setAutoRaise(false); - gridLayout_6->addWidget(plainTests, 0, 0, 1, 1); + horizontalLayout_2->addWidget(buttonLoadFromCurFunc); + + buttonLoadFromDocFile = new QToolButton(frameButtons); + buttonLoadFromDocFile->setObjectName(QString::fromUtf8("buttonLoadFromDocFile")); + buttonLoadFromDocFile->setAutoRaise(false); + + horizontalLayout_2->addWidget(buttonLoadFromDocFile); + + buttonLoadFromSource = new QToolButton(frameButtons); + buttonLoadFromSource->setObjectName(QString::fromUtf8("buttonLoadFromSource")); + buttonLoadFromSource->setAutoRaise(false); + + horizontalLayout_2->addWidget(buttonLoadFromSource); + + buttonArgs = new QToolButton(frameButtons); + buttonArgs->setObjectName(QString::fromUtf8("buttonArgs")); + buttonArgs->setAutoRaise(false); + + horizontalLayout_2->addWidget(buttonArgs); + + buttonDesc = new QToolButton(frameButtons); + buttonDesc->setObjectName(QString::fromUtf8("buttonDesc")); + buttonDesc->setAutoRaise(false); + + horizontalLayout_2->addWidget(buttonDesc); + + buttonExamples = new QToolButton(frameButtons); + buttonExamples->setObjectName(QString::fromUtf8("buttonExamples")); + buttonExamples->setAutoRaise(false); + + horizontalLayout_2->addWidget(buttonExamples); + + buttonTests = new QToolButton(frameButtons); + buttonTests->setObjectName(QString::fromUtf8("buttonTests")); + buttonTests->setAutoRaise(false); + + horizontalLayout_2->addWidget(buttonTests); + + horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); + + horizontalLayout_2->addItem(horizontalSpacer); + + buttonSave = new QToolButton(frameButtons); + buttonSave->setObjectName(QString::fromUtf8("buttonSave")); + buttonSave->setAutoRaise(false); + + horizontalLayout_2->addWidget(buttonSave); + + + gridLayout_12->addWidget(frameButtons, 0, 0, 1, 1); + + scrollArea = new QScrollArea(tabTests); + scrollArea->setObjectName(QString::fromUtf8("scrollArea")); + scrollArea->setFrameShape(QFrame::NoFrame); + scrollArea->setWidgetResizable(true); + scrollAreaWidgetContents = new QWidget(); + scrollAreaWidgetContents->setObjectName(QString::fromUtf8("scrollAreaWidgetContents")); + scrollAreaWidgetContents->setGeometry(QRect(0, 0, 369, 625)); + verticalLayout_4 = new QVBoxLayout(scrollAreaWidgetContents); + verticalLayout_4->setSpacing(3); + verticalLayout_4->setObjectName(QString::fromUtf8("verticalLayout_4")); + verticalLayout_4->setContentsMargins(0, 0, 0, 9); + splitter_2 = new QSplitter(scrollAreaWidgetContents); + splitter_2->setObjectName(QString::fromUtf8("splitter_2")); + splitter_2->setOrientation(Qt::Vertical); + splitter_2->setHandleWidth(2); + frameGeneral = new QFrame(splitter_2); + frameGeneral->setObjectName(QString::fromUtf8("frameGeneral")); + frameGeneral->setMaximumSize(QSize(16777215, 268)); + frameGeneral->setFrameShape(QFrame::NoFrame); + frameGeneral->setFrameShadow(QFrame::Plain); + gridLayout_6 = new QGridLayout(frameGeneral); + gridLayout_6->setObjectName(QString::fromUtf8("gridLayout_6")); + gridLayout_6->setVerticalSpacing(2); + gridLayout_6->setContentsMargins(-1, 4, 4, 0); + labelTemplate = new QLabel(frameGeneral); + labelTemplate->setObjectName(QString::fromUtf8("labelTemplate")); + + gridLayout_6->addWidget(labelTemplate, 0, 0, 1, 1); + + labelVersion = new QLabel(frameGeneral); + labelVersion->setObjectName(QString::fromUtf8("labelVersion")); + + gridLayout_6->addWidget(labelVersion, 0, 1, 1, 1); + + labelStatus = new QLabel(frameGeneral); + labelStatus->setObjectName(QString::fromUtf8("labelStatus")); + + gridLayout_6->addWidget(labelStatus, 0, 2, 1, 1); + + label_7 = new QLabel(frameGeneral); + label_7->setObjectName(QString::fromUtf8("label_7")); + + gridLayout_6->addWidget(label_7, 0, 3, 1, 1); + + comboTemplate = new QComboBox(frameGeneral); + comboTemplate->setObjectName(QString::fromUtf8("comboTemplate")); + + gridLayout_6->addWidget(comboTemplate, 1, 0, 1, 1); + + editVersion = new QLineEdit(frameGeneral); + editVersion->setObjectName(QString::fromUtf8("editVersion")); + + gridLayout_6->addWidget(editVersion, 1, 1, 1, 1); + + editStatus = new QLineEdit(frameGeneral); + editStatus->setObjectName(QString::fromUtf8("editStatus")); + + gridLayout_6->addWidget(editStatus, 1, 2, 1, 1); + + editCompliance = new QLineEdit(frameGeneral); + editCompliance->setObjectName(QString::fromUtf8("editCompliance")); + + gridLayout_6->addWidget(editCompliance, 1, 3, 1, 1); + + labelCategory = new QLabel(frameGeneral); + labelCategory->setObjectName(QString::fromUtf8("labelCategory")); + + gridLayout_6->addWidget(labelCategory, 2, 0, 1, 2); + + labelSubCategory = new QLabel(frameGeneral); + labelSubCategory->setObjectName(QString::fromUtf8("labelSubCategory")); + + gridLayout_6->addWidget(labelSubCategory, 2, 2, 1, 2); + + editCategory = new QLineEdit(frameGeneral); + editCategory->setObjectName(QString::fromUtf8("editCategory")); + + gridLayout_6->addWidget(editCategory, 3, 0, 1, 2); + + editSubCategory = new QLineEdit(frameGeneral); + editSubCategory->setObjectName(QString::fromUtf8("editSubCategory")); + + gridLayout_6->addWidget(editSubCategory, 3, 2, 1, 2); + + labelName = new QLabel(frameGeneral); + labelName->setObjectName(QString::fromUtf8("labelName")); + + gridLayout_6->addWidget(labelName, 4, 0, 1, 2); + + labelExtLink = new QLabel(frameGeneral); + labelExtLink->setObjectName(QString::fromUtf8("labelExtLink")); + + gridLayout_6->addWidget(labelExtLink, 4, 2, 1, 2); + + editName = new QLineEdit(frameGeneral); + editName->setObjectName(QString::fromUtf8("editName")); + + gridLayout_6->addWidget(editName, 5, 0, 1, 2); + + editExtLink = new QLineEdit(frameGeneral); + editExtLink->setObjectName(QString::fromUtf8("editExtLink")); + + gridLayout_6->addWidget(editExtLink, 5, 2, 1, 2); + + labelOneLiner = new QLabel(frameGeneral); + labelOneLiner->setObjectName(QString::fromUtf8("labelOneLiner")); + + gridLayout_6->addWidget(labelOneLiner, 6, 0, 1, 4); + + editOneLiner = new QLineEdit(frameGeneral); + editOneLiner->setObjectName(QString::fromUtf8("editOneLiner")); + + gridLayout_6->addWidget(editOneLiner, 7, 0, 1, 4); + + labelSyntax = new QLabel(frameGeneral); + labelSyntax->setObjectName(QString::fromUtf8("labelSyntax")); + + gridLayout_6->addWidget(labelSyntax, 8, 0, 1, 4); + + editSyntax = new QLineEdit(frameGeneral); + editSyntax->setObjectName(QString::fromUtf8("editSyntax")); + + gridLayout_6->addWidget(editSyntax, 9, 0, 1, 4); + + labelReturns = new QLabel(frameGeneral); + labelReturns->setObjectName(QString::fromUtf8("labelReturns")); + + gridLayout_6->addWidget(labelReturns, 10, 0, 1, 4); + + editReturns = new QLineEdit(frameGeneral); + editReturns->setObjectName(QString::fromUtf8("editReturns")); + + gridLayout_6->addWidget(editReturns, 11, 0, 1, 4); + + labelSeeAlso = new QLabel(frameGeneral); + labelSeeAlso->setObjectName(QString::fromUtf8("labelSeeAlso")); + + gridLayout_6->addWidget(labelSeeAlso, 12, 0, 1, 4); + + editSeeAlso = new QLineEdit(frameGeneral); + editSeeAlso->setObjectName(QString::fromUtf8("editSeeAlso")); + + gridLayout_6->addWidget(editSeeAlso, 13, 0, 1, 4); + + splitter_2->addWidget(frameGeneral); + frameArgs = new QFrame(splitter_2); + frameArgs->setObjectName(QString::fromUtf8("frameArgs")); + frameArgs->setFrameShape(QFrame::NoFrame); + frameArgs->setFrameShadow(QFrame::Raised); + gridLayout_7 = new QGridLayout(frameArgs); + gridLayout_7->setObjectName(QString::fromUtf8("gridLayout_7")); + gridLayout_7->setVerticalSpacing(2); + gridLayout_7->setContentsMargins(-1, 2, 4, 0); + labelArgs = new QLabel(frameArgs); + labelArgs->setObjectName(QString::fromUtf8("labelArgs")); + + gridLayout_7->addWidget(labelArgs, 0, 0, 1, 1); + + buttonCloseArgs = new QToolButton(frameArgs); + buttonCloseArgs->setObjectName(QString::fromUtf8("buttonCloseArgs")); + buttonCloseArgs->setAutoRaise(true); + + gridLayout_7->addWidget(buttonCloseArgs, 0, 1, 1, 1); + + plainArgs = new QPlainTextEdit(frameArgs); + plainArgs->setObjectName(QString::fromUtf8("plainArgs")); + + gridLayout_7->addWidget(plainArgs, 1, 0, 1, 2); + + splitter_2->addWidget(frameArgs); + frameDesc = new QFrame(splitter_2); + frameDesc->setObjectName(QString::fromUtf8("frameDesc")); + frameDesc->setFrameShape(QFrame::NoFrame); + frameDesc->setFrameShadow(QFrame::Raised); + gridLayout_9 = new QGridLayout(frameDesc); + gridLayout_9->setObjectName(QString::fromUtf8("gridLayout_9")); + gridLayout_9->setVerticalSpacing(2); + gridLayout_9->setContentsMargins(-1, 2, 4, 0); + labelDesc = new QLabel(frameDesc); + labelDesc->setObjectName(QString::fromUtf8("labelDesc")); + + gridLayout_9->addWidget(labelDesc, 0, 0, 1, 1); + + buttonCloseDesc = new QToolButton(frameDesc); + buttonCloseDesc->setObjectName(QString::fromUtf8("buttonCloseDesc")); + buttonCloseDesc->setAutoRaise(true); + + gridLayout_9->addWidget(buttonCloseDesc, 0, 1, 1, 1); + + plainDesc = new QPlainTextEdit(frameDesc); + plainDesc->setObjectName(QString::fromUtf8("plainDesc")); + + gridLayout_9->addWidget(plainDesc, 1, 0, 1, 2); + + splitter_2->addWidget(frameDesc); + frameExamples = new QFrame(splitter_2); + frameExamples->setObjectName(QString::fromUtf8("frameExamples")); + frameExamples->setFrameShape(QFrame::NoFrame); + frameExamples->setFrameShadow(QFrame::Raised); + gridLayout_10 = new QGridLayout(frameExamples); + gridLayout_10->setObjectName(QString::fromUtf8("gridLayout_10")); + gridLayout_10->setVerticalSpacing(2); + gridLayout_10->setContentsMargins(-1, 2, 4, 0); + labelExamples = new QLabel(frameExamples); + labelExamples->setObjectName(QString::fromUtf8("labelExamples")); + + gridLayout_10->addWidget(labelExamples, 0, 0, 1, 1); + + buttonCloseExamples = new QToolButton(frameExamples); + buttonCloseExamples->setObjectName(QString::fromUtf8("buttonCloseExamples")); + buttonCloseExamples->setAutoRaise(true); + + gridLayout_10->addWidget(buttonCloseExamples, 0, 1, 1, 1); + + plainExamples = new QPlainTextEdit(frameExamples); + plainExamples->setObjectName(QString::fromUtf8("plainExamples")); + plainExamples->setLineWrapMode(QPlainTextEdit::NoWrap); + + gridLayout_10->addWidget(plainExamples, 1, 0, 1, 2); + + splitter_2->addWidget(frameExamples); + frameTests = new QFrame(splitter_2); + frameTests->setObjectName(QString::fromUtf8("frameTests")); + frameTests->setMinimumSize(QSize(0, 0)); + frameTests->setFrameShape(QFrame::NoFrame); + frameTests->setFrameShadow(QFrame::Raised); + gridLayout_11 = new QGridLayout(frameTests); + gridLayout_11->setObjectName(QString::fromUtf8("gridLayout_11")); + gridLayout_11->setVerticalSpacing(2); + gridLayout_11->setContentsMargins(-1, 2, 4, 0); + labelTests = new QLabel(frameTests); + labelTests->setObjectName(QString::fromUtf8("labelTests")); + + gridLayout_11->addWidget(labelTests, 0, 0, 1, 1); + + buttonCloseTests = new QToolButton(frameTests); + buttonCloseTests->setObjectName(QString::fromUtf8("buttonCloseTests")); + buttonCloseTests->setAutoRaise(true); + + gridLayout_11->addWidget(buttonCloseTests, 0, 1, 1, 1); + + plainTests = new QPlainTextEdit(frameTests); + plainTests->setObjectName(QString::fromUtf8("plainTests")); + plainTests->setLineWrapMode(QPlainTextEdit::NoWrap); + + gridLayout_11->addWidget(plainTests, 1, 0, 1, 2); + + splitter_2->addWidget(frameTests); + + verticalLayout_4->addWidget(splitter_2); + + scrollArea->setWidget(scrollAreaWidgetContents); + + gridLayout_12->addWidget(scrollArea, 1, 0, 1, 1); tabWidgetElements->addTab(tabTests, QString()); splitter->addWidget(tabWidgetElements); @@ -509,7 +640,6 @@ public: buttonRefresh->setText(QString()); buttonPrint->setText(QString()); buttonPdf->setText(QString()); - buttonSave->setText(QString()); buttonExit->setText(QString()); labelInstall->setText(QApplication::translate("FormDocViewer", "Harbour Installation Root:", 0, QApplication::UnicodeUTF8)); buttonInstall->setText(QString()); @@ -518,29 +648,101 @@ public: tabWidgetContents->setTabText(tabWidgetContents->indexOf(tabByName), QApplication::translate("FormDocViewer", "Index", 0, QApplication::UnicodeUTF8)); tabWidgetContents->setTabText(tabWidgetContents->indexOf(tabByCategory), QApplication::translate("FormDocViewer", "Category", 0, QApplication::UnicodeUTF8)); tabWidgetElements->setTabText(tabWidgetElements->indexOf(tabView), QApplication::translate("FormDocViewer", "View", 0, QApplication::UnicodeUTF8)); - label->setText(QApplication::translate("FormDocViewer", "Template:", 0, QApplication::UnicodeUTF8)); - label_2->setText(QApplication::translate("FormDocViewer", "Name", 0, QApplication::UnicodeUTF8)); - label_3->setText(QApplication::translate("FormDocViewer", "Category:", 0, QApplication::UnicodeUTF8)); - label_4->setText(QApplication::translate("FormDocViewer", "Sub-Category:", 0, QApplication::UnicodeUTF8)); - label_5->setText(QApplication::translate("FormDocViewer", "One-Liner", 0, QApplication::UnicodeUTF8)); - label_6->setText(QApplication::translate("FormDocViewer", "Syntax:", 0, QApplication::UnicodeUTF8)); - label_8->setText(QApplication::translate("FormDocViewer", "Returns:", 0, QApplication::UnicodeUTF8)); - label_12->setText(QApplication::translate("FormDocViewer", "Status:", 0, QApplication::UnicodeUTF8)); - label_13->setText(QApplication::translate("FormDocViewer", "Platforms:", 0, QApplication::UnicodeUTF8)); - label_14->setText(QApplication::translate("FormDocViewer", "Files:", 0, QApplication::UnicodeUTF8)); - label_15->setText(QApplication::translate("FormDocViewer", "See Also:", 0, QApplication::UnicodeUTF8)); - label_9->setText(QApplication::translate("FormDocViewer", ".txt path:", 0, QApplication::UnicodeUTF8)); - tabWidgetElements->setTabText(tabWidgetElements->indexOf(tabGeneral), QApplication::translate("FormDocViewer", "General", 0, QApplication::UnicodeUTF8)); - labelArgName->setText(QApplication::translate("FormDocViewer", "Name:", 0, QApplication::UnicodeUTF8)); - labelArgDesc->setText(QApplication::translate("FormDocViewer", "Description:", 0, QApplication::UnicodeUTF8)); - buttonArgPlus->setText(QString()); - buttonArgMinus->setText(QString()); - buttonArgUp->setText(QString()); - buttonArgDown->setText(QString()); - tabWidgetElements->setTabText(tabWidgetElements->indexOf(tabArguments), QApplication::translate("FormDocViewer", "Args", 0, QApplication::UnicodeUTF8)); - tabWidgetElements->setTabText(tabWidgetElements->indexOf(tabDesc), QApplication::translate("FormDocViewer", "Desc", 0, QApplication::UnicodeUTF8)); - tabWidgetElements->setTabText(tabWidgetElements->indexOf(tabExamples), QApplication::translate("FormDocViewer", "Examples", 0, QApplication::UnicodeUTF8)); - tabWidgetElements->setTabText(tabWidgetElements->indexOf(tabTests), QApplication::translate("FormDocViewer", "Tests", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonLoadFromCurFunc->setToolTip(QApplication::translate("FormDocViewer", "Load from current function", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonLoadFromCurFunc->setText(QApplication::translate("FormDocViewer", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonLoadFromDocFile->setToolTip(QApplication::translate("FormDocViewer", "Load from .txt file", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonLoadFromDocFile->setText(QApplication::translate("FormDocViewer", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonLoadFromSource->setToolTip(QApplication::translate("FormDocViewer", "Load from source ( .prg,.c,.c++ ) file", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonLoadFromSource->setText(QApplication::translate("FormDocViewer", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonArgs->setToolTip(QApplication::translate("FormDocViewer", "Toggle Arguments Section", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonArgs->setText(QApplication::translate("FormDocViewer", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonDesc->setToolTip(QApplication::translate("FormDocViewer", "Toggle Descriptions Section", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonDesc->setText(QApplication::translate("FormDocViewer", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonExamples->setToolTip(QApplication::translate("FormDocViewer", "Toggle Examples Section", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonExamples->setText(QApplication::translate("FormDocViewer", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonTests->setToolTip(QApplication::translate("FormDocViewer", "Toggle Tests Section", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonTests->setText(QApplication::translate("FormDocViewer", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonSave->setToolTip(QApplication::translate("FormDocViewer", "Save written/updated documentation", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonSave->setText(QApplication::translate("FormDocViewer", "...", 0, QApplication::UnicodeUTF8)); + labelTemplate->setText(QApplication::translate("FormDocViewer", "Template:", 0, QApplication::UnicodeUTF8)); + labelVersion->setText(QApplication::translate("FormDocViewer", "Version:", 0, QApplication::UnicodeUTF8)); + labelStatus->setText(QApplication::translate("FormDocViewer", "Status:", 0, QApplication::UnicodeUTF8)); + label_7->setText(QApplication::translate("FormDocViewer", "Compliance:", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + editVersion->setToolTip(QApplication::translate("FormDocViewer", "Version of this document contents", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_TOOLTIP + editStatus->setToolTip(QApplication::translate("FormDocViewer", "Status should usually be described as one character", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_TOOLTIP + editCompliance->setToolTip(QApplication::translate("FormDocViewer", "Describe comatibility with other language", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelCategory->setText(QApplication::translate("FormDocViewer", "Category:", 0, QApplication::UnicodeUTF8)); + labelSubCategory->setText(QApplication::translate("FormDocViewer", "Sub-category:", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + editCategory->setToolTip(QApplication::translate("FormDocViewer", "Category should describe main area this function belongs to", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelName->setText(QApplication::translate("FormDocViewer", "Name:", 0, QApplication::UnicodeUTF8)); + labelExtLink->setText(QApplication::translate("FormDocViewer", "External Link:", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + editName->setToolTip(QApplication::translate("FormDocViewer", "Name of the function, and if appropriate, with open/close parenthis.", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_TOOLTIP + editExtLink->setToolTip(QApplication::translate("FormDocViewer", "External link, i.e., http://www.trolltech.com/", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelOneLiner->setText(QApplication::translate("FormDocViewer", "One Liner:", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + editOneLiner->setToolTip(QApplication::translate("FormDocViewer", "A brief description this function accomlishes", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelSyntax->setText(QApplication::translate("FormDocViewer", "Syntax:", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + editSyntax->setToolTip(QApplication::translate("FormDocViewer", "Syntax, or prototype as to how this function will be called", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelReturns->setText(QApplication::translate("FormDocViewer", "Returns:", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + editReturns->setToolTip(QApplication::translate("FormDocViewer", "Variable name with hungarian notation with brief description as what this function returns", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelSeeAlso->setText(QApplication::translate("FormDocViewer", "See Also:", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + editSeeAlso->setToolTip(QApplication::translate("FormDocViewer", "A comma separated list of related functions/keywords ", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelArgs->setText(QApplication::translate("FormDocViewer", "Arguments:", 0, QApplication::UnicodeUTF8)); + buttonCloseArgs->setText(QApplication::translate("FormDocViewer", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + plainArgs->setToolTip(QApplication::translate("FormDocViewer", "One argument per line in the form - argName description", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelDesc->setText(QApplication::translate("FormDocViewer", "Description:", 0, QApplication::UnicodeUTF8)); + buttonCloseDesc->setText(QApplication::translate("FormDocViewer", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + plainDesc->setToolTip(QApplication::translate("FormDocViewer", "Detailed description as musch as possible to convey to the user what should be kept in mind when this function is called.", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelExamples->setText(QApplication::translate("FormDocViewer", "Examples:", 0, QApplication::UnicodeUTF8)); + buttonCloseExamples->setText(QApplication::translate("FormDocViewer", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + plainExamples->setToolTip(QApplication::translate("FormDocViewer", "A real-time source code which could be compiled out of this box.", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelTests->setText(QApplication::translate("FormDocViewer", "Tests:", 0, QApplication::UnicodeUTF8)); + buttonCloseTests->setText(QApplication::translate("FormDocViewer", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + plainTests->setToolTip(QApplication::translate("FormDocViewer", "Compilable code out of the box which could be used to test this function", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + tabWidgetElements->setTabText(tabWidgetElements->indexOf(tabTests), QApplication::translate("FormDocViewer", "Write", 0, QApplication::UnicodeUTF8)); Q_UNUSED(FormDocViewer); } // retranslateUi diff --git a/harbour/contrib/hbide/resources/docwriter.png b/harbour/contrib/hbide/resources/docwriter.png new file mode 100644 index 0000000000..bf520456f8 Binary files /dev/null and b/harbour/contrib/hbide/resources/docwriter.png differ diff --git a/harbour/contrib/hbide/resources/docwriter.ui b/harbour/contrib/hbide/resources/docwriter.ui new file mode 100644 index 0000000000..7a7803ba19 --- /dev/null +++ b/harbour/contrib/hbide/resources/docwriter.ui @@ -0,0 +1,688 @@ + + + FormDocWriter + + + + 0 + 0 + 445 + 584 + + + + + 0 + 0 + + + + Form + + + + 0 + + + 2 + + + 0 + + + 0 + + + 0 + + + + + QFrame::NoFrame + + + true + + + + + 0 + -78 + 423 + 657 + + + + + 3 + + + 0 + + + 0 + + + 0 + + + 9 + + + + + Qt::Vertical + + + 2 + + + + + 0 + 300 + + + + + 16777215 + 300 + + + + QFrame::NoFrame + + + QFrame::Plain + + + + 4 + + + 4 + + + 0 + + + 2 + + + + + Template: + + + + + + + Version: + + + + + + + Status: + + + + + + + Compliance: + + + + + + + + + + Version of this document contents + + + + + + + Status should usually be described as one character + + + + + + + Describe comatibility with other language + + + + + + + Category: + + + + + + + Sub-category: + + + + + + + Category should describe main area this function belongs to + + + + + + + + + + Name: + + + + + + + External Link: + + + + + + + Name of the function, and if appropriate, with open/close parenthis. + + + + + + + External link, i.e., http://www.trolltech.com/ + + + + + + + One Liner: + + + + + + + A brief description this function accomlishes + + + + + + + Syntax: + + + + + + + Syntax, or prototype as to how this function will be called + + + + + + + Returns: + + + + + + + Variable name with hungarian notation with brief description as what this function returns + + + + + + + See Also: + + + + + + + A comma separated list of related functions/keywords + + + + + + + Files: + + + + + + + A comma separated list of relevant files, i.e., hbrtl.lib, hbqt.lib. + + + + + + + + QFrame::NoFrame + + + QFrame::Raised + + + + 2 + + + 4 + + + 0 + + + 2 + + + + + Arguments: + + + + + + + ... + + + true + + + + + + + One argument per line in the form - argName description + + + QPlainTextEdit::NoWrap + + + + + + + + QFrame::NoFrame + + + QFrame::Raised + + + + 2 + + + 4 + + + 0 + + + 2 + + + + + Description: + + + + + + + ... + + + true + + + + + + + Detailed description as musch as possible to convey to the user what should be kept in mind when this function is called. + + + QPlainTextEdit::NoWrap + + + + + + + + QFrame::NoFrame + + + QFrame::Raised + + + + 2 + + + 4 + + + 0 + + + 2 + + + + + Examples: + + + + + + + ... + + + true + + + + + + + A real-time source code which could be compiled out of this box. + + + QPlainTextEdit::NoWrap + + + + + + + + + 0 + 0 + + + + QFrame::NoFrame + + + QFrame::Raised + + + + 2 + + + 4 + + + 0 + + + 2 + + + + + Tests: + + + + + + + ... + + + true + + + + + + + Compilable code out of the box which could be used to test this function + + + QPlainTextEdit::NoWrap + + + + + + + + + + + + + + + + 0 + 30 + + + + + 16777215 + 30 + + + + QFrame::Panel + + + QFrame::Raised + + + + 2 + + + 5 + + + 4 + + + + + Load from current function + + + ... + + + true + + + + + + + Load from .txt file + + + ... + + + true + + + + + + + Load from source ( .prg,.c,.c++ ) file + + + ... + + + true + + + + + + + Toggle Arguments Section + + + ... + + + true + + + + + + + Toggle Descriptions Section + + + ... + + + true + + + + + + + Toggle Examples Section + + + ... + + + true + + + + + + + Toggle Tests Section + + + ... + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Clear form - note that it will not save current document. + + + ... + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Save the documentation with function in source + + + ... + + + true + + + + + + + Save written/updated documentation + + + ... + + + true + + + + + + + + + + + diff --git a/harbour/contrib/hbide/resources/docwriter.uic b/harbour/contrib/hbide/resources/docwriter.uic new file mode 100644 index 0000000000..bb656e566e --- /dev/null +++ b/harbour/contrib/hbide/resources/docwriter.uic @@ -0,0 +1,589 @@ +/******************************************************************************** +** Form generated from reading ui file 'docwriter.ui' +** +** Created: Mon Mar 15 18:50:32 2010 +** by: Qt User Interface Compiler version 4.5.2 +** +** WARNING! All changes made in this file will be lost when recompiling ui file! +********************************************************************************/ + +#ifndef DOCWRITER_H +#define DOCWRITER_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_FormDocWriter +{ +public: + QGridLayout *gridLayout_5; + QScrollArea *scrollArea; + QWidget *scrollAreaWidgetContents; + QVBoxLayout *verticalLayout; + QSplitter *splitter; + QFrame *frameGeneral; + QGridLayout *gridLayout; + QLabel *labelTemplate; + QLabel *labelVersion; + QLabel *labelStatus; + QLabel *label_5; + QComboBox *comboTemplate; + QLineEdit *editVersion; + QLineEdit *editStatus; + QLineEdit *editCompliance; + QLabel *labelCategory; + QLabel *labelSubCategory; + QLineEdit *editCategory; + QLineEdit *editSubCategory; + QLabel *labelName; + QLabel *labelExtLink; + QLineEdit *editName; + QLineEdit *editExtLink; + QLabel *labelOneLiner; + QLineEdit *editOneLiner; + QLabel *labelSyntax; + QLineEdit *editSyntax; + QLabel *labelReturns; + QLineEdit *editReturns; + QLabel *labelSeeAlso; + QLineEdit *editSeeAlso; + QLabel *labelFiles; + QLineEdit *editFiles; + QFrame *frameArgs; + QGridLayout *gridLayout_2; + QLabel *labelArgs; + QToolButton *buttonCloseArgs; + QPlainTextEdit *plainArgs; + QFrame *frameDesc; + QGridLayout *gridLayout_3; + QLabel *labelDesc; + QToolButton *buttonCloseDesc; + QPlainTextEdit *plainDesc; + QFrame *frameExamples; + QGridLayout *gridLayout_4; + QLabel *labelExamples; + QToolButton *buttonCloseExamples; + QPlainTextEdit *plainExamples; + QFrame *frameTests; + QGridLayout *gridLayout_6; + QLabel *labelTests; + QToolButton *buttonCloseTests; + QPlainTextEdit *plainTests; + QFrame *frameButtons; + QHBoxLayout *horizontalLayout; + QToolButton *buttonLoadFromCurFunc; + QToolButton *buttonLoadFromDocFile; + QToolButton *buttonLoadFromSource; + QToolButton *buttonArgs; + QToolButton *buttonDesc; + QToolButton *buttonExamples; + QToolButton *buttonTests; + QSpacerItem *horizontalSpacer; + QToolButton *buttonClear; + QSpacerItem *horizontalSpacer_2; + QToolButton *buttonSaveInFunc; + QToolButton *buttonSave; + + void setupUi(QWidget *FormDocWriter) + { + if (FormDocWriter->objectName().isEmpty()) + FormDocWriter->setObjectName(QString::fromUtf8("FormDocWriter")); + FormDocWriter->resize(445, 584); + FormDocWriter->setMinimumSize(QSize(0, 0)); + gridLayout_5 = new QGridLayout(FormDocWriter); + gridLayout_5->setObjectName(QString::fromUtf8("gridLayout_5")); + gridLayout_5->setVerticalSpacing(0); + gridLayout_5->setContentsMargins(0, 2, 0, 0); + scrollArea = new QScrollArea(FormDocWriter); + scrollArea->setObjectName(QString::fromUtf8("scrollArea")); + scrollArea->setFrameShape(QFrame::NoFrame); + scrollArea->setWidgetResizable(true); + scrollAreaWidgetContents = new QWidget(); + scrollAreaWidgetContents->setObjectName(QString::fromUtf8("scrollAreaWidgetContents")); + scrollAreaWidgetContents->setGeometry(QRect(0, -78, 423, 657)); + verticalLayout = new QVBoxLayout(scrollAreaWidgetContents); + verticalLayout->setSpacing(3); + verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); + verticalLayout->setContentsMargins(0, 0, 0, 9); + splitter = new QSplitter(scrollAreaWidgetContents); + splitter->setObjectName(QString::fromUtf8("splitter")); + splitter->setOrientation(Qt::Vertical); + splitter->setHandleWidth(2); + frameGeneral = new QFrame(splitter); + frameGeneral->setObjectName(QString::fromUtf8("frameGeneral")); + frameGeneral->setMinimumSize(QSize(0, 300)); + frameGeneral->setMaximumSize(QSize(16777215, 300)); + frameGeneral->setFrameShape(QFrame::NoFrame); + frameGeneral->setFrameShadow(QFrame::Plain); + gridLayout = new QGridLayout(frameGeneral); + gridLayout->setObjectName(QString::fromUtf8("gridLayout")); + gridLayout->setVerticalSpacing(2); + gridLayout->setContentsMargins(-1, 4, 4, 0); + labelTemplate = new QLabel(frameGeneral); + labelTemplate->setObjectName(QString::fromUtf8("labelTemplate")); + + gridLayout->addWidget(labelTemplate, 0, 0, 1, 1); + + labelVersion = new QLabel(frameGeneral); + labelVersion->setObjectName(QString::fromUtf8("labelVersion")); + + gridLayout->addWidget(labelVersion, 0, 1, 1, 1); + + labelStatus = new QLabel(frameGeneral); + labelStatus->setObjectName(QString::fromUtf8("labelStatus")); + + gridLayout->addWidget(labelStatus, 0, 2, 1, 1); + + label_5 = new QLabel(frameGeneral); + label_5->setObjectName(QString::fromUtf8("label_5")); + + gridLayout->addWidget(label_5, 0, 3, 1, 1); + + comboTemplate = new QComboBox(frameGeneral); + comboTemplate->setObjectName(QString::fromUtf8("comboTemplate")); + + gridLayout->addWidget(comboTemplate, 1, 0, 1, 1); + + editVersion = new QLineEdit(frameGeneral); + editVersion->setObjectName(QString::fromUtf8("editVersion")); + + gridLayout->addWidget(editVersion, 1, 1, 1, 1); + + editStatus = new QLineEdit(frameGeneral); + editStatus->setObjectName(QString::fromUtf8("editStatus")); + + gridLayout->addWidget(editStatus, 1, 2, 1, 1); + + editCompliance = new QLineEdit(frameGeneral); + editCompliance->setObjectName(QString::fromUtf8("editCompliance")); + + gridLayout->addWidget(editCompliance, 1, 3, 1, 1); + + labelCategory = new QLabel(frameGeneral); + labelCategory->setObjectName(QString::fromUtf8("labelCategory")); + + gridLayout->addWidget(labelCategory, 2, 0, 1, 2); + + labelSubCategory = new QLabel(frameGeneral); + labelSubCategory->setObjectName(QString::fromUtf8("labelSubCategory")); + + gridLayout->addWidget(labelSubCategory, 2, 2, 1, 2); + + editCategory = new QLineEdit(frameGeneral); + editCategory->setObjectName(QString::fromUtf8("editCategory")); + + gridLayout->addWidget(editCategory, 3, 0, 1, 2); + + editSubCategory = new QLineEdit(frameGeneral); + editSubCategory->setObjectName(QString::fromUtf8("editSubCategory")); + + gridLayout->addWidget(editSubCategory, 3, 2, 1, 2); + + labelName = new QLabel(frameGeneral); + labelName->setObjectName(QString::fromUtf8("labelName")); + + gridLayout->addWidget(labelName, 4, 0, 1, 2); + + labelExtLink = new QLabel(frameGeneral); + labelExtLink->setObjectName(QString::fromUtf8("labelExtLink")); + + gridLayout->addWidget(labelExtLink, 4, 2, 1, 2); + + editName = new QLineEdit(frameGeneral); + editName->setObjectName(QString::fromUtf8("editName")); + + gridLayout->addWidget(editName, 5, 0, 1, 2); + + editExtLink = new QLineEdit(frameGeneral); + editExtLink->setObjectName(QString::fromUtf8("editExtLink")); + + gridLayout->addWidget(editExtLink, 5, 2, 1, 2); + + labelOneLiner = new QLabel(frameGeneral); + labelOneLiner->setObjectName(QString::fromUtf8("labelOneLiner")); + + gridLayout->addWidget(labelOneLiner, 6, 0, 1, 4); + + editOneLiner = new QLineEdit(frameGeneral); + editOneLiner->setObjectName(QString::fromUtf8("editOneLiner")); + + gridLayout->addWidget(editOneLiner, 7, 0, 1, 4); + + labelSyntax = new QLabel(frameGeneral); + labelSyntax->setObjectName(QString::fromUtf8("labelSyntax")); + + gridLayout->addWidget(labelSyntax, 8, 0, 1, 4); + + editSyntax = new QLineEdit(frameGeneral); + editSyntax->setObjectName(QString::fromUtf8("editSyntax")); + + gridLayout->addWidget(editSyntax, 9, 0, 1, 4); + + labelReturns = new QLabel(frameGeneral); + labelReturns->setObjectName(QString::fromUtf8("labelReturns")); + + gridLayout->addWidget(labelReturns, 10, 0, 1, 4); + + editReturns = new QLineEdit(frameGeneral); + editReturns->setObjectName(QString::fromUtf8("editReturns")); + + gridLayout->addWidget(editReturns, 11, 0, 1, 4); + + labelSeeAlso = new QLabel(frameGeneral); + labelSeeAlso->setObjectName(QString::fromUtf8("labelSeeAlso")); + + gridLayout->addWidget(labelSeeAlso, 12, 0, 1, 4); + + editSeeAlso = new QLineEdit(frameGeneral); + editSeeAlso->setObjectName(QString::fromUtf8("editSeeAlso")); + + gridLayout->addWidget(editSeeAlso, 13, 0, 1, 4); + + labelFiles = new QLabel(frameGeneral); + labelFiles->setObjectName(QString::fromUtf8("labelFiles")); + + gridLayout->addWidget(labelFiles, 14, 0, 1, 4); + + editFiles = new QLineEdit(frameGeneral); + editFiles->setObjectName(QString::fromUtf8("editFiles")); + + gridLayout->addWidget(editFiles, 15, 0, 1, 4); + + splitter->addWidget(frameGeneral); + frameArgs = new QFrame(splitter); + frameArgs->setObjectName(QString::fromUtf8("frameArgs")); + frameArgs->setFrameShape(QFrame::NoFrame); + frameArgs->setFrameShadow(QFrame::Raised); + gridLayout_2 = new QGridLayout(frameArgs); + gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2")); + gridLayout_2->setVerticalSpacing(2); + gridLayout_2->setContentsMargins(-1, 2, 4, 0); + labelArgs = new QLabel(frameArgs); + labelArgs->setObjectName(QString::fromUtf8("labelArgs")); + + gridLayout_2->addWidget(labelArgs, 0, 0, 1, 1); + + buttonCloseArgs = new QToolButton(frameArgs); + buttonCloseArgs->setObjectName(QString::fromUtf8("buttonCloseArgs")); + buttonCloseArgs->setAutoRaise(true); + + gridLayout_2->addWidget(buttonCloseArgs, 0, 1, 1, 1); + + plainArgs = new QPlainTextEdit(frameArgs); + plainArgs->setObjectName(QString::fromUtf8("plainArgs")); + plainArgs->setLineWrapMode(QPlainTextEdit::NoWrap); + + gridLayout_2->addWidget(plainArgs, 1, 0, 1, 2); + + splitter->addWidget(frameArgs); + frameDesc = new QFrame(splitter); + frameDesc->setObjectName(QString::fromUtf8("frameDesc")); + frameDesc->setFrameShape(QFrame::NoFrame); + frameDesc->setFrameShadow(QFrame::Raised); + gridLayout_3 = new QGridLayout(frameDesc); + gridLayout_3->setObjectName(QString::fromUtf8("gridLayout_3")); + gridLayout_3->setVerticalSpacing(2); + gridLayout_3->setContentsMargins(-1, 2, 4, 0); + labelDesc = new QLabel(frameDesc); + labelDesc->setObjectName(QString::fromUtf8("labelDesc")); + + gridLayout_3->addWidget(labelDesc, 0, 0, 1, 1); + + buttonCloseDesc = new QToolButton(frameDesc); + buttonCloseDesc->setObjectName(QString::fromUtf8("buttonCloseDesc")); + buttonCloseDesc->setAutoRaise(true); + + gridLayout_3->addWidget(buttonCloseDesc, 0, 1, 1, 1); + + plainDesc = new QPlainTextEdit(frameDesc); + plainDesc->setObjectName(QString::fromUtf8("plainDesc")); + plainDesc->setLineWrapMode(QPlainTextEdit::NoWrap); + + gridLayout_3->addWidget(plainDesc, 1, 0, 1, 2); + + splitter->addWidget(frameDesc); + frameExamples = new QFrame(splitter); + frameExamples->setObjectName(QString::fromUtf8("frameExamples")); + frameExamples->setFrameShape(QFrame::NoFrame); + frameExamples->setFrameShadow(QFrame::Raised); + gridLayout_4 = new QGridLayout(frameExamples); + gridLayout_4->setObjectName(QString::fromUtf8("gridLayout_4")); + gridLayout_4->setVerticalSpacing(2); + gridLayout_4->setContentsMargins(-1, 2, 4, 0); + labelExamples = new QLabel(frameExamples); + labelExamples->setObjectName(QString::fromUtf8("labelExamples")); + + gridLayout_4->addWidget(labelExamples, 0, 0, 1, 1); + + buttonCloseExamples = new QToolButton(frameExamples); + buttonCloseExamples->setObjectName(QString::fromUtf8("buttonCloseExamples")); + buttonCloseExamples->setAutoRaise(true); + + gridLayout_4->addWidget(buttonCloseExamples, 0, 1, 1, 1); + + plainExamples = new QPlainTextEdit(frameExamples); + plainExamples->setObjectName(QString::fromUtf8("plainExamples")); + plainExamples->setLineWrapMode(QPlainTextEdit::NoWrap); + + gridLayout_4->addWidget(plainExamples, 1, 0, 1, 2); + + splitter->addWidget(frameExamples); + frameTests = new QFrame(splitter); + frameTests->setObjectName(QString::fromUtf8("frameTests")); + frameTests->setMinimumSize(QSize(0, 0)); + frameTests->setFrameShape(QFrame::NoFrame); + frameTests->setFrameShadow(QFrame::Raised); + gridLayout_6 = new QGridLayout(frameTests); + gridLayout_6->setObjectName(QString::fromUtf8("gridLayout_6")); + gridLayout_6->setVerticalSpacing(2); + gridLayout_6->setContentsMargins(-1, 2, 4, 0); + labelTests = new QLabel(frameTests); + labelTests->setObjectName(QString::fromUtf8("labelTests")); + + gridLayout_6->addWidget(labelTests, 0, 0, 1, 1); + + buttonCloseTests = new QToolButton(frameTests); + buttonCloseTests->setObjectName(QString::fromUtf8("buttonCloseTests")); + buttonCloseTests->setAutoRaise(true); + + gridLayout_6->addWidget(buttonCloseTests, 0, 1, 1, 1); + + plainTests = new QPlainTextEdit(frameTests); + plainTests->setObjectName(QString::fromUtf8("plainTests")); + plainTests->setLineWrapMode(QPlainTextEdit::NoWrap); + + gridLayout_6->addWidget(plainTests, 1, 0, 1, 2); + + splitter->addWidget(frameTests); + + verticalLayout->addWidget(splitter); + + scrollArea->setWidget(scrollAreaWidgetContents); + + gridLayout_5->addWidget(scrollArea, 1, 0, 2, 1); + + frameButtons = new QFrame(FormDocWriter); + frameButtons->setObjectName(QString::fromUtf8("frameButtons")); + frameButtons->setMinimumSize(QSize(0, 30)); + frameButtons->setMaximumSize(QSize(16777215, 30)); + frameButtons->setFrameShape(QFrame::Panel); + frameButtons->setFrameShadow(QFrame::Raised); + horizontalLayout = new QHBoxLayout(frameButtons); + horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); + horizontalLayout->setContentsMargins(-1, 2, 5, 4); + buttonLoadFromCurFunc = new QToolButton(frameButtons); + buttonLoadFromCurFunc->setObjectName(QString::fromUtf8("buttonLoadFromCurFunc")); + buttonLoadFromCurFunc->setAutoRaise(true); + + horizontalLayout->addWidget(buttonLoadFromCurFunc); + + buttonLoadFromDocFile = new QToolButton(frameButtons); + buttonLoadFromDocFile->setObjectName(QString::fromUtf8("buttonLoadFromDocFile")); + buttonLoadFromDocFile->setAutoRaise(true); + + horizontalLayout->addWidget(buttonLoadFromDocFile); + + buttonLoadFromSource = new QToolButton(frameButtons); + buttonLoadFromSource->setObjectName(QString::fromUtf8("buttonLoadFromSource")); + buttonLoadFromSource->setAutoRaise(true); + + horizontalLayout->addWidget(buttonLoadFromSource); + + buttonArgs = new QToolButton(frameButtons); + buttonArgs->setObjectName(QString::fromUtf8("buttonArgs")); + buttonArgs->setAutoRaise(true); + + horizontalLayout->addWidget(buttonArgs); + + buttonDesc = new QToolButton(frameButtons); + buttonDesc->setObjectName(QString::fromUtf8("buttonDesc")); + buttonDesc->setAutoRaise(true); + + horizontalLayout->addWidget(buttonDesc); + + buttonExamples = new QToolButton(frameButtons); + buttonExamples->setObjectName(QString::fromUtf8("buttonExamples")); + buttonExamples->setAutoRaise(true); + + horizontalLayout->addWidget(buttonExamples); + + buttonTests = new QToolButton(frameButtons); + buttonTests->setObjectName(QString::fromUtf8("buttonTests")); + buttonTests->setAutoRaise(true); + + horizontalLayout->addWidget(buttonTests); + + horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); + + horizontalLayout->addItem(horizontalSpacer); + + buttonClear = new QToolButton(frameButtons); + buttonClear->setObjectName(QString::fromUtf8("buttonClear")); + buttonClear->setAutoRaise(true); + + horizontalLayout->addWidget(buttonClear); + + horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); + + horizontalLayout->addItem(horizontalSpacer_2); + + buttonSaveInFunc = new QToolButton(frameButtons); + buttonSaveInFunc->setObjectName(QString::fromUtf8("buttonSaveInFunc")); + buttonSaveInFunc->setAutoRaise(true); + + horizontalLayout->addWidget(buttonSaveInFunc); + + buttonSave = new QToolButton(frameButtons); + buttonSave->setObjectName(QString::fromUtf8("buttonSave")); + buttonSave->setAutoRaise(true); + + horizontalLayout->addWidget(buttonSave); + + + gridLayout_5->addWidget(frameButtons, 0, 0, 1, 2); + + + retranslateUi(FormDocWriter); + + QMetaObject::connectSlotsByName(FormDocWriter); + } // setupUi + + void retranslateUi(QWidget *FormDocWriter) + { + FormDocWriter->setWindowTitle(QApplication::translate("FormDocWriter", "Form", 0, QApplication::UnicodeUTF8)); + labelTemplate->setText(QApplication::translate("FormDocWriter", "Template:", 0, QApplication::UnicodeUTF8)); + labelVersion->setText(QApplication::translate("FormDocWriter", "Version:", 0, QApplication::UnicodeUTF8)); + labelStatus->setText(QApplication::translate("FormDocWriter", "Status:", 0, QApplication::UnicodeUTF8)); + label_5->setText(QApplication::translate("FormDocWriter", "Compliance:", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + editVersion->setToolTip(QApplication::translate("FormDocWriter", "Version of this document contents", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_TOOLTIP + editStatus->setToolTip(QApplication::translate("FormDocWriter", "Status should usually be described as one character", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_TOOLTIP + editCompliance->setToolTip(QApplication::translate("FormDocWriter", "Describe comatibility with other language", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelCategory->setText(QApplication::translate("FormDocWriter", "Category:", 0, QApplication::UnicodeUTF8)); + labelSubCategory->setText(QApplication::translate("FormDocWriter", "Sub-category:", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + editCategory->setToolTip(QApplication::translate("FormDocWriter", "Category should describe main area this function belongs to", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelName->setText(QApplication::translate("FormDocWriter", "Name:", 0, QApplication::UnicodeUTF8)); + labelExtLink->setText(QApplication::translate("FormDocWriter", "External Link:", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + editName->setToolTip(QApplication::translate("FormDocWriter", "Name of the function, and if appropriate, with open/close parenthis.", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_TOOLTIP + editExtLink->setToolTip(QApplication::translate("FormDocWriter", "External link, i.e., http://www.trolltech.com/", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelOneLiner->setText(QApplication::translate("FormDocWriter", "One Liner:", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + editOneLiner->setToolTip(QApplication::translate("FormDocWriter", "A brief description this function accomlishes", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelSyntax->setText(QApplication::translate("FormDocWriter", "Syntax:", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + editSyntax->setToolTip(QApplication::translate("FormDocWriter", "Syntax, or prototype as to how this function will be called", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelReturns->setText(QApplication::translate("FormDocWriter", "Returns:", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + editReturns->setToolTip(QApplication::translate("FormDocWriter", "Variable name with hungarian notation with brief description as what this function returns", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelSeeAlso->setText(QApplication::translate("FormDocWriter", "See Also:", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + editSeeAlso->setToolTip(QApplication::translate("FormDocWriter", "A comma separated list of related functions/keywords ", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelFiles->setText(QApplication::translate("FormDocWriter", "Files:", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + editFiles->setToolTip(QApplication::translate("FormDocWriter", "A comma separated list of relevant files, i.e., hbrtl.lib, hbqt.lib.", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelArgs->setText(QApplication::translate("FormDocWriter", "Arguments:", 0, QApplication::UnicodeUTF8)); + buttonCloseArgs->setText(QApplication::translate("FormDocWriter", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + plainArgs->setToolTip(QApplication::translate("FormDocWriter", "One argument per line in the form - argName description", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelDesc->setText(QApplication::translate("FormDocWriter", "Description:", 0, QApplication::UnicodeUTF8)); + buttonCloseDesc->setText(QApplication::translate("FormDocWriter", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + plainDesc->setToolTip(QApplication::translate("FormDocWriter", "Detailed description as musch as possible to convey to the user what should be kept in mind when this function is called.", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelExamples->setText(QApplication::translate("FormDocWriter", "Examples:", 0, QApplication::UnicodeUTF8)); + buttonCloseExamples->setText(QApplication::translate("FormDocWriter", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + plainExamples->setToolTip(QApplication::translate("FormDocWriter", "A real-time source code which could be compiled out of this box.", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + labelTests->setText(QApplication::translate("FormDocWriter", "Tests:", 0, QApplication::UnicodeUTF8)); + buttonCloseTests->setText(QApplication::translate("FormDocWriter", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + plainTests->setToolTip(QApplication::translate("FormDocWriter", "Compilable code out of the box which could be used to test this function", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP +#ifndef QT_NO_TOOLTIP + buttonLoadFromCurFunc->setToolTip(QApplication::translate("FormDocWriter", "Load from current function", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonLoadFromCurFunc->setText(QApplication::translate("FormDocWriter", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonLoadFromDocFile->setToolTip(QApplication::translate("FormDocWriter", "Load from .txt file", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonLoadFromDocFile->setText(QApplication::translate("FormDocWriter", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonLoadFromSource->setToolTip(QApplication::translate("FormDocWriter", "Load from source ( .prg,.c,.c++ ) file", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonLoadFromSource->setText(QApplication::translate("FormDocWriter", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonArgs->setToolTip(QApplication::translate("FormDocWriter", "Toggle Arguments Section", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonArgs->setText(QApplication::translate("FormDocWriter", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonDesc->setToolTip(QApplication::translate("FormDocWriter", "Toggle Descriptions Section", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonDesc->setText(QApplication::translate("FormDocWriter", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonExamples->setToolTip(QApplication::translate("FormDocWriter", "Toggle Examples Section", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonExamples->setText(QApplication::translate("FormDocWriter", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonTests->setToolTip(QApplication::translate("FormDocWriter", "Toggle Tests Section", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonTests->setText(QApplication::translate("FormDocWriter", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonClear->setToolTip(QApplication::translate("FormDocWriter", "Clear form - note that it will not save current document.", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonClear->setText(QApplication::translate("FormDocWriter", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonSaveInFunc->setToolTip(QApplication::translate("FormDocWriter", "Save the documentation with function in source", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonSaveInFunc->setText(QApplication::translate("FormDocWriter", "...", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + buttonSave->setToolTip(QApplication::translate("FormDocWriter", "Save written/updated documentation", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + buttonSave->setText(QApplication::translate("FormDocWriter", "...", 0, QApplication::UnicodeUTF8)); + Q_UNUSED(FormDocWriter); + } // retranslateUi + +}; + +namespace Ui { + class FormDocWriter: public Ui_FormDocWriter {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // DOCWRITER_H diff --git a/harbour/contrib/hbide/resources/editstree.png b/harbour/contrib/hbide/resources/editstree.png new file mode 100644 index 0000000000..54315451aa Binary files /dev/null and b/harbour/contrib/hbide/resources/editstree.png differ diff --git a/harbour/contrib/hbide/resources/example.png b/harbour/contrib/hbide/resources/example.png new file mode 100644 index 0000000000..1443b84092 Binary files /dev/null and b/harbour/contrib/hbide/resources/example.png differ diff --git a/harbour/contrib/hbide/resources/helpdoc.png b/harbour/contrib/hbide/resources/helpdoc.png new file mode 100644 index 0000000000..07eadfd63b Binary files /dev/null and b/harbour/contrib/hbide/resources/helpdoc.png differ diff --git a/harbour/contrib/hbide/resources/load_1.png b/harbour/contrib/hbide/resources/load_1.png new file mode 100644 index 0000000000..a90bfc1b20 Binary files /dev/null and b/harbour/contrib/hbide/resources/load_1.png differ diff --git a/harbour/contrib/hbide/resources/load_2.png b/harbour/contrib/hbide/resources/load_2.png new file mode 100644 index 0000000000..18bfb66a2f Binary files /dev/null and b/harbour/contrib/hbide/resources/load_2.png differ diff --git a/harbour/contrib/hbide/resources/load_3.png b/harbour/contrib/hbide/resources/load_3.png new file mode 100644 index 0000000000..3457bc3716 Binary files /dev/null and b/harbour/contrib/hbide/resources/load_3.png differ diff --git a/harbour/contrib/hbide/resources/panel_8.png b/harbour/contrib/hbide/resources/panel_8.png new file mode 100644 index 0000000000..e28662f76e Binary files /dev/null and b/harbour/contrib/hbide/resources/panel_8.png differ diff --git a/harbour/contrib/hbide/resources/projtree.png b/harbour/contrib/hbide/resources/projtree.png new file mode 100644 index 0000000000..5a98c88078 Binary files /dev/null and b/harbour/contrib/hbide/resources/projtree.png differ diff --git a/harbour/contrib/hbide/resources/tabs.png b/harbour/contrib/hbide/resources/tabs.png index ea670821c0..6c4a2023c7 100644 Binary files a/harbour/contrib/hbide/resources/tabs.png and b/harbour/contrib/hbide/resources/tabs.png differ diff --git a/harbour/contrib/hbide/resources/tests.png b/harbour/contrib/hbide/resources/tests.png new file mode 100644 index 0000000000..fc8f8fb79b Binary files /dev/null and b/harbour/contrib/hbide/resources/tests.png differ diff --git a/harbour/contrib/hbide/resources/togglelinenumber.png b/harbour/contrib/hbide/resources/togglelinenumber.png index ea93aeca9d..c850f61f04 100644 Binary files a/harbour/contrib/hbide/resources/togglelinenumber.png and b/harbour/contrib/hbide/resources/togglelinenumber.png differ diff --git a/harbour/contrib/hbide/resources/unload_1.png b/harbour/contrib/hbide/resources/unload_1.png new file mode 100644 index 0000000000..6419be41b7 Binary files /dev/null and b/harbour/contrib/hbide/resources/unload_1.png differ diff --git a/harbour/contrib/hbqt/hbqt_hbqplaintextedit.cpp b/harbour/contrib/hbqt/hbqt_hbqplaintextedit.cpp index 81216b645a..f257b6cc99 100644 --- a/harbour/contrib/hbqt/hbqt_hbqplaintextedit.cpp +++ b/harbour/contrib/hbqt/hbqt_hbqplaintextedit.cpp @@ -259,25 +259,25 @@ void HBQPlainTextEdit::mouseDoubleClickEvent( QMouseEvent *event ) void HBQPlainTextEdit::paintEvent( QPaintEvent * event ) { - QPainter painter( viewport() ); + QPainter * painter = new QPainter( viewport() ); - int curBlock = textCursor().blockNumber(); + int curBlock = textCursor().blockNumber(); - QTextBlock block = firstVisibleBlock(); - int blockNumber = block.blockNumber(); - int height = ( int ) blockBoundingRect( block ).height(); - int top = ( int ) blockBoundingGeometry( block ).translated( contentOffset() ).top(); - int bottom = top + height; + QTextBlock tblock = firstVisibleBlock(); + int blockNumber = tblock.blockNumber(); + int height = ( int ) blockBoundingRect( tblock ).height(); + int top = ( int ) blockBoundingGeometry( tblock ).translated( contentOffset() ).top(); + int bottom = top + height; - while( block.isValid() && top <= event->rect().bottom() ) + while( tblock.isValid() && top <= event->rect().bottom() ) { - if( block.isVisible() && bottom >= event->rect().top() ) + if( tblock.isVisible() && bottom >= event->rect().top() ) { int index = bookMarksGoto.indexOf( blockNumber + 1 ); if( index != -1 ) { QRect r( 0, top, viewport()->width(), height ); - painter.fillRect( r, brushForBookmark( index ) ); + painter->fillRect( r, brushForBookmark( index ) ); } else if( curBlock == blockNumber && m_currentLineColor.isValid() ) { @@ -286,17 +286,29 @@ void HBQPlainTextEdit::paintEvent( QPaintEvent * event ) QRect r = HBQPlainTextEdit::cursorRect(); r.setX( 0 ); r.setWidth( viewport()->width() ); - painter.fillRect( r, QBrush( m_currentLineColor ) ); + painter->fillRect( r, QBrush( m_currentLineColor ) ); } } } - block = block.next(); + tblock = tblock.next(); top = bottom; - bottom = top + height;//( int ) blockBoundingRect( block ).height(); + bottom = top + height; ++blockNumber; } this->hbPaintColumnSelection( event ); - painter.end(); + + #if 1 /* A day wasted - I could not find how I can execute paiting from within prg code */ + if( block ) + { + PHB_ITEM p1 = hb_itemPutNI( NULL, QEvent::Paint ); + PHB_ITEM p2 = hb_itemPutPtr( NULL, painter ); + hb_vmEvalBlockV( block, 2, p1, p2 ); + hb_itemRelease( p1 ); + hb_itemRelease( p2 ); + } + #endif + + painter->end(); QPlainTextEdit::paintEvent( event ); } @@ -331,6 +343,7 @@ void HBQPlainTextEdit::lineNumberAreaPaintEvent( QPaintEvent *event ) int blockNumber = block.blockNumber(); int top = ( int ) blockBoundingGeometry( block ).translated( contentOffset() ).top(); int bottom = top +( int ) blockBoundingRect( block ).height(); + int off = fontMetrics().height() / 4; while( block.isValid() && top <= event->rect().bottom() ) { @@ -339,17 +352,12 @@ void HBQPlainTextEdit::lineNumberAreaPaintEvent( QPaintEvent *event ) QString number = QString::number( blockNumber + 1 ); painter.setPen( ( blockNumber + 1 ) % 10 == 0 ? Qt::red : Qt::black ); painter.drawText( 0, top, lineNumberArea->width()-2, fontMetrics().height(), Qt::AlignRight, number ); + int index = bookMarksGoto.indexOf( number.toInt() ); if( index != -1 ) { - //painter.drawText( 0, top, 30, fontMetrics().height(), Qt::AlignCenter, "+" ); - //painter.setBrush( QBrush( Qt::yellow, Qt::SolidPattern ) ); painter.setBrush( brushForBookmark( index ) ); - #if 0 - painter.drawEllipse( 5, top + ( fontMetrics().height()/4 ), - fontMetrics().height()/2, fontMetrics().height()/2 ); - #endif - painter.drawRect( 5, top+2, fontMetrics().height()-4, fontMetrics().height()-4 ); + painter.drawRect( 5, top + off, off * 2, off * 2 ); } } block = block.next(); diff --git a/harbour/contrib/hbqt/hbqt_hbslots.cpp b/harbour/contrib/hbqt/hbqt_hbslots.cpp index f663252c79..b72460ce9d 100644 --- a/harbour/contrib/hbqt/hbqt_hbslots.cpp +++ b/harbour/contrib/hbqt/hbqt_hbslots.cpp @@ -230,8 +230,9 @@ static bool connect_signal( QString signal, QObject * object, HBSlots * t_slots /* QCompleter */ if( signal == ( QString ) "activated(QModelIndex)" ) return object->connect( object, SIGNAL( activated( const QModelIndex & ) ), t_slots, SLOT( activated( const QModelIndex & ) ), Qt::AutoConnection ); if( signal == ( QString ) "highlighted(QModelIndex)" ) return object->connect( object, SIGNAL( highlighted( const QModelIndex & ) ), t_slots, SLOT( highlighted( const QModelIndex & ) ), Qt::AutoConnection ); + /* QAbstractButton */ + if( signal == ( QString ) "toggled(bool)" ) return object->connect( object, SIGNAL( toggled( bool ) ), t_slots, SLOT( toggled( bool ) ), Qt::AutoConnection ); /* New */ - return false; } @@ -398,7 +399,10 @@ static bool disconnect_signal( QObject * object, const char * signal ) /* QCompleter */ if( signal == ( QString ) "activated(QModelIndex)" ) return object->disconnect( SIGNAL( activated( const QModelIndex & ) ) ); if( signal == ( QString ) "highlighted(QModelIndex)" ) return object->disconnect( SIGNAL( highlighted( const QModelIndex & ) ) ); + /* QAbstractButton */ + if( signal == ( QString ) "toggled(bool)" ) return object->disconnect( SIGNAL( toggled( bool ) ) ); /* new */ + return false; } @@ -1017,9 +1021,10 @@ void HBSlots::visibilityChanged( bool visible ) /* QCompleter */ void HBSlots::activated( const QModelIndex & index ) { hbqt_SlotsExecModel( this, qobject_cast( sender() ), "activated(QModelIndex)", index ); } void HBSlots::highlighted( const QModelIndex & index ) { hbqt_SlotsExecModel( this, qobject_cast( sender() ), "highlighted(QModelIndex)", index ); } +/* QAbstractButton */ +void HBSlots::toggled( bool checked ) { hbqt_SlotsExecBool( this, qobject_cast( sender() ), "toggled(bool)", checked ); } /* Latest */ - /*----------------------------------------------------------------------*/ /* * Harbour function to connect signals with slots diff --git a/harbour/contrib/hbqt/hbqt_hbslots.h b/harbour/contrib/hbqt/hbqt_hbslots.h index b359589171..0a49ef8b52 100644 --- a/harbour/contrib/hbqt/hbqt_hbslots.h +++ b/harbour/contrib/hbqt/hbqt_hbslots.h @@ -280,6 +280,8 @@ public slots: /* QCompleter */ void activated( const QModelIndex & index ); void highlighted( const QModelIndex & index ); + /* QAbstractButton */ + void toggled( bool checked ); /* Latest */ }; diff --git a/harbour/contrib/hbxbp/xbptoolbar.prg b/harbour/contrib/hbxbp/xbptoolbar.prg index b932cc8953..aaedb48f27 100644 --- a/harbour/contrib/hbxbp/xbptoolbar.prg +++ b/harbour/contrib/hbxbp/xbptoolbar.prg @@ -153,6 +153,7 @@ METHOD XbpToolbar:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) ::oParent := oPar ::oWidget := QToolBar():new( ::oParent:oWidget ) + ::oWidget:setObjectName( "XBPTOOLBARMAIN" ) ::oParent:oWidget:addToolBar_1( ::oWidget ) IF ::imageWidth > 0 .and. ::imageHeight > 0