From b4c940fa79621e235df1e54bd5ce6a06d21498a7 Mon Sep 17 00:00:00 2001 From: Pritpal Bedi Date: Tue, 16 Mar 2010 08:51:56 +0000 Subject: [PATCH] 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. --- harbour/ChangeLog | 86 ++ harbour/contrib/hbide/hbide.hbp | 1 + harbour/contrib/hbide/hbide.prg | 27 + harbour/contrib/hbide/ideactions.prg | 1 + harbour/contrib/hbide/idedocks.prg | 70 +- harbour/contrib/hbide/idedocwriter.prg | 620 +++++++++++++ harbour/contrib/hbide/ideeditor.prg | 109 ++- harbour/contrib/hbide/ideharbourhelp.prg | 41 +- harbour/contrib/hbide/idehome.prg | 2 +- harbour/contrib/hbide/idemisc.prg | 6 +- harbour/contrib/hbide/ideobject.prg | 3 + harbour/contrib/hbide/ideprojmanager.prg | 47 +- harbour/contrib/hbide/idestylesheets.prg | 2 +- harbour/contrib/hbide/idethemes.prg | 5 +- harbour/contrib/hbide/resources/arguments.png | Bin 0 -> 169 bytes .../contrib/hbide/resources/description.png | Bin 0 -> 160 bytes .../hbide/resources/docviewgenerator.ui | 819 +++++++++++++----- .../hbide/resources/docviewgenerator.uic | 756 ++++++++++------ harbour/contrib/hbide/resources/docwriter.png | Bin 0 -> 683 bytes harbour/contrib/hbide/resources/docwriter.ui | 688 +++++++++++++++ harbour/contrib/hbide/resources/docwriter.uic | 589 +++++++++++++ harbour/contrib/hbide/resources/editstree.png | Bin 0 -> 920 bytes harbour/contrib/hbide/resources/example.png | Bin 0 -> 165 bytes harbour/contrib/hbide/resources/helpdoc.png | Bin 0 -> 672 bytes harbour/contrib/hbide/resources/load_1.png | Bin 0 -> 849 bytes harbour/contrib/hbide/resources/load_2.png | Bin 0 -> 671 bytes harbour/contrib/hbide/resources/load_3.png | Bin 0 -> 781 bytes harbour/contrib/hbide/resources/panel_8.png | Bin 0 -> 275 bytes harbour/contrib/hbide/resources/projtree.png | Bin 0 -> 920 bytes harbour/contrib/hbide/resources/tabs.png | Bin 210 -> 639 bytes harbour/contrib/hbide/resources/tests.png | Bin 0 -> 167 bytes .../hbide/resources/togglelinenumber.png | Bin 211 -> 439 bytes harbour/contrib/hbide/resources/unload_1.png | Bin 0 -> 842 bytes .../contrib/hbqt/hbqt_hbqplaintextedit.cpp | 50 +- harbour/contrib/hbqt/hbqt_hbslots.cpp | 9 +- harbour/contrib/hbqt/hbqt_hbslots.h | 2 + harbour/contrib/hbxbp/xbptoolbar.prg | 1 + 37 files changed, 3299 insertions(+), 635 deletions(-) create mode 100644 harbour/contrib/hbide/idedocwriter.prg create mode 100644 harbour/contrib/hbide/resources/arguments.png create mode 100644 harbour/contrib/hbide/resources/description.png create mode 100644 harbour/contrib/hbide/resources/docwriter.png create mode 100644 harbour/contrib/hbide/resources/docwriter.ui create mode 100644 harbour/contrib/hbide/resources/docwriter.uic create mode 100644 harbour/contrib/hbide/resources/editstree.png create mode 100644 harbour/contrib/hbide/resources/example.png create mode 100644 harbour/contrib/hbide/resources/helpdoc.png create mode 100644 harbour/contrib/hbide/resources/load_1.png create mode 100644 harbour/contrib/hbide/resources/load_2.png create mode 100644 harbour/contrib/hbide/resources/load_3.png create mode 100644 harbour/contrib/hbide/resources/panel_8.png create mode 100644 harbour/contrib/hbide/resources/projtree.png create mode 100644 harbour/contrib/hbide/resources/tests.png create mode 100644 harbour/contrib/hbide/resources/unload_1.png 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 0000000000000000000000000000000000000000..1b6954a539ebde8cdd023de79d7d3305ce752350 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`1)eUBAr-fhQx*sqEaLvduDpRo z`7bX+CR?V;QGr*|4QihAxIH+z-EwAmnlapbc_PuFC%mIeOKH!C|Ms&CBJNbANp=0W z`6aT)f~P_95XbXolfxzon_s3gY!cs)(N@_j=q+I&v_-U=aR!4eLm{gYgU1&)LGf(M R3qZRWJYD@<);T3K0RYE&Hzoi8 literal 0 HcmV?d00001 diff --git a/harbour/contrib/hbide/resources/description.png b/harbour/contrib/hbide/resources/description.png new file mode 100644 index 0000000000000000000000000000000000000000..eaed9fea5b0de5130f79a45348d12f0834523156 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`>7Fi*Ar-fhQx*sqGXbEOi zc4VHwo2a7THi^;Ti;W&rGgQPCBtOW%;&R(C6P&`JhRS3j3^ HP6 - - - - - - - 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 0000000000000000000000000000000000000000..bf520456f8f83dfbf8decbda8ad23e5d0f0aab71 GIT binary patch literal 683 zcmV;c0#yBpP)6^&83H22}jy2=tHsEaEne9Vo z&MXqdi?ZTukQi8GG0IYLew?ix-OlEYy<4d}bM?P@pAY^&p7(uuBv?_QQmJgnAzCU3 z!Xg%8G4MQ(`8n<`DSbeSB!5piP1D}y+jnx~rNy{8CSX3yW5PFs(eX+2xvbL`i=~{j zhSC9w+B=-?oh7?PbU_dh3P<1%&Y@tv2G_4%i9^bgCs_g%cQ`wlU3>PWPMCoF;zCf$ za}sfL<2Am&r}xVc#%f4=BnjYT_8&NibPDrP@X-YX2fW}rT!OHn3Gd##Mm=p71MCEF^vGe6IfLziY|;$L znkW{0+YsH}3uLL$-Te$EV{Hn+(az}gRU)%=!UPEwL3m~>X7U_Rs5gP4D0FqXU^Juv zY<34zQ(gTh3%-JM^bjPO5d;HTe9dfuQeA-jygbNcS#WlCk_ilAfYoMa47JA-3IEdx zimij6%ZJB*3mZ4@fL5!8R4PsM$$Pzp1C3UM6wfP|mo`EQw}1t4ZO Raxee@002ovPDHLkV1ixII9>n% literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..54315451aa0d09afa026d72ab716d48501454dd2 GIT binary patch literal 920 zcmV;J184k+P)82`Py=bZboUAH-9qnulbkgnY=BaDbZbh~pxplzAgoNh*mgajg3Q2*&bBdDn5 zVkX#!%`KFW3^YM!m@Gd~p*bxZqsG0vU!L!e_dPx5UjOVIemoEF`<~~0e!t&ySiH8e zp{4Vk0anvc3+^jGh0FyM?uwA$A{>(9QiWU-b{#GY&zHHw!k(SUW~N5I$xfdeV;ygw zK04F)a{sIYAP@M(GEjJwQxvq0M|l8A0~(h9jqKg-B+ut;@|011EqqVIKrDysg@Ze`^Nr#;`;ja4vmd9Y|0O!O=09~)7hS}snzGZ-?v-%YatFvA$=^F}8T+ zrY)l<$G%-_Q!i%LO7~qToAN(=#wme%00Q`}orI zq1`Lufx>}Eo<{{x&MiuOf}k~`PoS54yq__U+PUXPG9+5vci_s*2RjoBvU!eN(IObg z76?V1avkZMigZ@Rd`|Uq1lK0000d;Z;h znZF~=-4AL;cWzZyI#MmyW~BK-_54e-h1>}p`PZtr42R+g(h^bngwE7?nkXp*(*iu>tj`p`oW`Os4cxe*az5h*?O5*ZQo zG-~;|y9wGV;YT77hLnZ+WLiXitnSXvZZp%}NsU2UJaFNjbMN_a?mhpb!Mf2j-C#DG zYjrvugE$rng#^Ff-z*MnB^HmpRStg5=snL-2FFrCf1e?vO2KanF?$qfs ziZj0)M#scY1O!n5=(T_=D;0+fNy_=#!2wvU+W^dG3o#!M;P%bJn5M_^biH!;@kbET z-`8-b@F0orhW}0f_JE=y3$FIgU~)ME=h6MhI-rMvO~C9g9uLPCU}R-HcA3!M-}fJY z#e!qcC$Xxf044$1`&iVOQt>4i#qF_g*cFaq;(X@zPl$bDaj^x))+sE|1fbL6N=6E_ zlm?HcmklDJsId$OEepR5CJJ z3XFK&+q<=mJv|=IZnt4Jz@y;vBKSQF90on+eoOeU#DiJp(RVl*nTEaac)V~p>}o(~ zS2yQ!I+Whetnqk2x-pf+#>9Y(l@RJkMW&QwMH5}!Jt%cK)qq#+9b9=?>84mDNrn(5 zPa!&B61AX+gg30cqZ1Y7WoiJ|+QwB^Rqja2Ep0DRbFNAS$h&^y=CIrCCR0hpO%_E7 zjg5`CfA6kpm`I6qLr!jPEz7cT$2lAh3uB|B&64zYoc{n>G6EoT^!}Xy0000fzVeSG5~V`1vUE$uYBr~}-0s|Vw{`B7B(onJIQREE=R4p1&N&Qbo;b4Ih*0H0 zH*2AMAq>tw@!2Q&ZpM->^d$4%R^_^cI~m^)i1KYVpL(Eg?amIv)Z;I;h( zU7aBd{SCl?V{7&M(~1fUwj)iS1cnJAL?PaQ9~vb`K7-DYKHRChkCCgLH{cKMkwE?c zlo}2!JylpxfLLA&mXaki%rYR;kb@`vO$b6jkizYP6L;(CFnqbYjPg!P0CC~jI%{6V zdfup=10_pk88xyDxk%HcB0(DuUqHk|Ya=?ox5|{Q&TnX`Y!JrV97gH8Y*E$Hs+^2; zq6%nL1{_K&B_`3+l(jlP;MT_)*ga#I5P?^(-=e3yyPV-7x#rw!EAkhF>!GIVCFvKC z6lsLbZJ~c|!RmQt)DKpp&DI285X6QhU04i`kDzt$o99eqN?2d+*<_Pm!^0T4808sP zDZq`3UE82wSki*U5AO)X00TcIPLO%X93BBLj(oB((Tn-Mb>|XHQEDYt&e@2a$tThO z>lNBfCNAcq{<#q0hf=Zxl-Wf4$E^{#9cM>s}h$e5v@_9IJJ#B5survYoJ#2$N*w! zvbu*VyZuUxQ}XBcB5v&)Dwo@sx-QIWu8iR&7Rz*7krQ_bLoO>`elt@yEHeEGN*;10 z68IF^EAOx*V+}+!q2FBTX8pJH2SF zccZ3cY-*6?QRdXBJ$PPQv}sE`V$@Lx<3gCtC6W$W63qsu_d7Y90+pFbi=(fZxhZ6SELX0`lc}>Ysqb+bd+&YVtTmkvQNNP_&V*HXsM~>67-{Y%<+v_GHM^4E?SxQm`p9MDq^2M=KalmL`hF1Je zUf1k}x}jk;k^Wu8F-uoz-36GMnu^lrhMlNus7gjqceDigJjdFyh8goVR8@6!zpJb3 z<~D%LM?_KleEir+&=-aEMf~`14TpWDRBR&oU4!TRJ7}7Yjg1^$$6g|vU9S&?LJJPy zQFT>KN0qk*E*FEES;X@AbyT=Zq3b4cn;L4{;#MP(PUkTFaT3$hlaIsUa3>?PM7t`^ z?#nCRP+6{GDc14l>-g@WY`=gL4fV*ZXD~eckYH(#1?a6f=($ttlXuMn=iHV_gJ6)X zD-;SE^(Bwk=qt?6&xI|3q8nTi7y~2OUD-0(M#CVpVISZA-_8vvijraz6BGQ@=@#2; zc^yd65v5qwR-uU+DP&{1+&6kegNU6UMxyq@VxaI`fv4vMWa#P z-QA7Ny!u~P*criK5Ui)CN6~d%BEgc=D64_aEBqx=KLLucFu1p^N#y_l002ovPDHLk FV1hxlJ(mCg literal 0 HcmV?d00001 diff --git a/harbour/contrib/hbide/resources/load_3.png b/harbour/contrib/hbide/resources/load_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3457bc37163106c1d1d50475d530e4dc4937bedb GIT binary patch literal 781 zcmV+o1M>WdP)hFI1Ypm3udNi!Y~XAUDqvg|AT(N|1#O$pIzIJc)O zC*Z}yp}r>4d8)3Xaxu9kI|ay29FK@Nym3S814)u- zR6A%dELiHArqSps6=#vjWGoa#vCi54;iG#i$+`1q8@IG=dnU^=91aJKYy)d1bHEzL z1er`4Ni_mpQ=q0LsESETNMi88-DTw1@gqxi?r0xn4p;^Zb`#84q*(eTQnn{>=T~B$ z%?D!gh(|MsOvxAs+^!<~5A3bjv%4!iTf%Gx%w|$AF=O69mCFZ@ydH((a(ca4XhsAd zre5R9rC}GTuV3Km?(X?2isGLVSP$5B4u3ifPl*Fw*E-Y`Z-!lPf;|t-2qF@HjFDHb znh1?51pV`T9g;9L|S={EN$r6#3h=1n zS?vt#8i|HG?+&4Az8h{=0gCf#;452$SYiObQa=$4P2ls7Y&*%#L;=PA@1QhnDmuNQ zrL?oKKtyR_E&Se%2u}7Q8ckt*>`VCRz~@C|u1Vu~RIlFZzFD=@)?k_j9Q-^e*%T6A z@O9|c%&tUS4b15vXT_z}(sqwmT+0ib_&u(^`55|nU02O9HgUfJ<#0*S@Fo7600000 LNkvXXu0mjfs?%kh literal 0 HcmV?d00001 diff --git a/harbour/contrib/hbide/resources/panel_8.png b/harbour/contrib/hbide/resources/panel_8.png new file mode 100644 index 0000000000000000000000000000000000000000..e28662f76ec6fdb60d7260d5d877a7711b2cf3fa GIT binary patch literal 275 zcmV+u0qp*XP)jv|f5px6r(2O`DM2m&krt^6O(7*3P{;H1qY#fXv;VTLp_G~-RmAk84B(K Z0{|IxY7q~L>Dd4P002ovPDHLkV1hO1Yg7OL literal 0 HcmV?d00001 diff --git a/harbour/contrib/hbide/resources/projtree.png b/harbour/contrib/hbide/resources/projtree.png new file mode 100644 index 0000000000000000000000000000000000000000..5a98c88078af92601d3dc383a87285cc92ad5e88 GIT binary patch literal 920 zcmV;J184k+P)uATew(0GC-*Y)IL^Pb7FW-6m9_RO+9~n8u zpZ99n`bvr8+!h5d@Wbs6XQo5fC~xYNH#91kx@k8V>ngQT9iV#molx7(?PBCcJ1N`r z^O=tM)8;*p0V@U|$_%1U*0CoX|M$)s1cupwkvYe&|NY~VVlrn}SNplyxrG=UGI)yE z|Mvf!Jwm^QjDlOb5-Q0jb3g02+#1L)F$XAYG0L*BIwTWziLqjW*C_0|0Z!M!nVV6#Ufq%q+E5(9fr*QCq(;-0MY%ooN;i&`% zo4VBMrKOWe`G?;%9NV|Jg2VGi+tpu?NazRzW+2A2P?%O3Zs5?lPQ7MXX@HcjsQ=`Zaxo1wJ>$s97JOll1Wy-+rr^Xo%*)QvKho*w)x{zN49RsPW!Lp%^rp@ z5DuONYz}0;JPWFU$HAx~;!aq>p#z`nAbGE^t2*(`p55cKp7FMT)7O9(GlAYenvsz? z3ITs1XiqDQcpnn3*YIm33#+QDz9b(1@^>1KetodWH{{ENhQ%^n2m(G2(A9bpNsXXn zLN>B4tpTKdL?+eaiZTQ|NYgE7G?8^#4`apRZMtAK;NzN;8VxK zV?BW9`g&N@!rg)fv<$q2m22OwB^Wl=yS?sWaN}}siq4#q(vS{6v`Z-P@o?ilf`9g7 z91UZ9Xd6IygbKgKPm$56c)wylu?ZtySWw+`yL8H^v}jy5qp_sXHxQSiN{VyiyVG6X zEP|d0Fc6kt4Bm#M8Ax#1xY281@4gLngxENaPtPmT#DoDu6+x3ClTvhfib}kNQo^2Tzd!{ji8t@>Y&E}0000MzC zV_|S*E^l&Yo9;Xs0006JNklNv%PX$uV}2A;tvwq7+93m$r$NE z8cjNw=wjlJ&B=ik{|R&uCkNvy13`=-DQLiA+*Dv7K?WfedVhDl_qg{QgjNPg2%qE` zpHJTBdA_fbBnihsJytiMR4Nt6$!6bJY3uw^8hzj2Xfzr(sZ=WEsp*+ypV`^j#PhsF zN_l8aO}|gB-zeWz0fZ3vet_=>jE_HKd3l9U2tpwcB5GGC1g$Wn)e4E@T@sn-IzSi- zf>sMvRgqFsUw^6-y?f2Y{vtaI9|&$gVQXuPT&{;gp@5XKJ&FzxMG+#3&^4V{#!SAQ zB+wdU7hVzD4s&yJEG{lGI50@HT1C@!6y+a*l#=c3COb_J&kMN!;2{I2dys1%i82Ms zm#;E1GC~*%qTQHSN|IQ11mC{@Ab0W*UeeMEQKHq+F7z(y` znymj^?+6sY&SdDeyD$xdiHR4ir95sudd$Z2r+mG3k6Nw9(9jUoY86*?NT<^sfnjJ^ zR+_F%hOx0RR##VWmuC3&@(y(OQ7V;i90%LB34#F2vPhXmN1&=2DbpmCGU+Y!Q!Mtw z@GyR5}nO-8djn(R2;{?^WBluKV94s(WY9f%#AKwV5yV&%K(ap{mNE z5#A>Vf{o4J&AO5#34NEYsDQh-&!Z41$NkQK07!5Df`S(-!2kdN07*qoM6N<$g20s$ Al>h($ delta 182 zcmV;n07?J<1kwSJB!8JnL_t(|+GA{JX!y@SCg^Q=!@vkK0Eih695?_r$icyZ5vG8U z7%xN4f3N{S4ugxse6WH&2NJ=OAcg)82f$(*4>({I^L1Fm05<>`z!Vb_gB!4DLIYW0 z@cKgzA`Hke03HS)1C#_9P@H$~0|SN_OdP8L6uST>h|N}P059Yc>broD?a2P8T^Nw! k656?dBm+PMIhtVr01|+Ok$5_IjQ{`u07*qoM6N<$f;>n>2mk;8 diff --git a/harbour/contrib/hbide/resources/tests.png b/harbour/contrib/hbide/resources/tests.png new file mode 100644 index 0000000000000000000000000000000000000000..fc8f8fb79b20cf114673d4bc8a7f016baf6f663a GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`d7dtgAr-fhQx*sqGXbBfo zc4U^g$di0Tsr@oTN<$t)V4Q?0L$L8A6-VceO|2fx|D1EvS-K_9`!w%E(m} z^&xM2dK8#HWF9eK@Rc|!>avqz8K>-n0?so|ZaRq#ADHGD97toRWMG)DW+o^h_3|Uo OW(H4JKbLh*2~7ZRA~${j literal 0 HcmV?d00001 diff --git a/harbour/contrib/hbide/resources/togglelinenumber.png b/harbour/contrib/hbide/resources/togglelinenumber.png index ea93aeca9dcef15a3e04ef5eb392f8c51cd016b4..c850f61f045127baa3c85fd1af809cad2d985f53 100644 GIT binary patch delta 414 zcmV;P0b%~r0k;E?BYy#YNklHp;Fha0eF%^HSzA-foo*0?daxO>1= zY~^NS@c#M>&fmz$&EWt4D}w+p52^uP3~6A^AVZdY?qg7A;$WEdni(wlMea8P&m&ea z+g|u9n8q*w*#+620Sq_){Q%p(|0_ge55rfu?I7`JCN}&o0Dpmf99#^pHcSjWpII2z zU;M?u{FD*y3cN0Wg#o_3=C)fGc5c68yqGW2H*B+7#aSq1G0k{80tl_xBz6k0nmc8JE4XE z4Sf6;qQLhpgm3T)M>L{)0of}s01^WMkT}uNNB|(Bkr!M50I}qx5xaq0sQ>@~07*qo IM6N<$f@Ms%-T(jq delta 184 zcmV;p07w6~1JePJBYyyzNklZ((+wOpi!!ZoO>H@eS=q_0E2Sqat m!(e!%1Nysw0Sh2DI|Bd)p{@Y{#{l;L0000#QL!?rJ@UFg+dpM`qKrYQUiZPG%FISKL%n2 z7EvJ+I9SvKJnBIqx~oIp=xLVKDo|5_Tg>W`G}%e)=WNgRR-ooYQ=}|KV4{h)sCL}HX+dAI7Oy& zgwRX^2At%oZhzXY9r@dkrdtGt31QstgIvndoxDQ~I-OSBx_bxCE1lQj3+@S%{2@3I zdoZPPdwxFjyc!Y;mVn2`#2mESTVNlvBS@}cI0QG5+=cyeS1HAv4HLwwva~jHc`k2I z$BT7k%r#+)VI5>r7Jcpkbh^6HW^bl^UigCyZ0>$Eop~&HT3v=PLFrOUiX}UJB_dcr zuh5`yNihuSWq&E_5Psld=UKQX?9>|2((xJ}%DT!JE}CmJ)vj8bpwdylLCQ*y09kQ4 z$V=FV=ill`6EotJMp#E|sCs<_UaI1Y$BE{>ubwi|OO)0%=NB8b3LXjyjv#OZRvN+_ zxsLh{B0xBtT2Bd-uypK)ZR9PISVCA1YAI@gp-6sF~cV; zUcsVTBt~W9=BJZ*+5Zs3UO%23?dxG8G;CwhZR6S~Spbo;AQWsstc0Tqq*DX|B3Qrh zJ`z-EsQb7NZ=5e^uB50d=y@uNSXi^blC+$Kib#~4pGbmY73>s&H?R~tlb_KKcu?J) zg&*Ty^uF`sM)B7&@f%m)Hv$jji0_={PHmv@($y{y#ZV*abNd&@z*F%FOzvQ zS8?F5n$J$xlc>D-;F%E6+TlR;MYqt@;QQ|~&01%DEX;-^i0f?Y#b?JL{=3e<0jQ2O UEw!9crect().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