2010-03-03 01:00 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)

* contrib/hbqt/hbqt_garbage.h
  * contrib/hbqt/THbQtUI.prg
    ! A massive effort to stream-line GPF at exit.    
      At least now I know that it is caused by the way 
      QLayout has relation with parent and children both.
      To some extent I am been able to cover it, but not 
      completely, at least till now.

  * contrib/hbxbp/xbptreeview.prg
    + Implemented tooltip and changed the way context menu is fired.

  - contrib/hbide/projects/hbide.hbi
    ! Totally abandoned .hbi project protocol.

  * contrib/hbide/resources/environments.ui
  * contrib/hbide/resources/environments.uic
  * contrib/hbide/resources/projectpropertiesex.ui
  * contrib/hbide/resources/projectpropertiesex.uic
  * contrib/hbide/resources/themesex.ui
  * contrib/hbide/resources/themesex.uic
    ! Simplified layouts to cover GPFs at exit.

  * contrib/hbide/hbide.hbp
    + Added ideenviron.prg.

  * contrib/hbide/hbide.prg
  * contrib/hbide/idedocks.prg
  * contrib/hbide/ideeditor.prg
  + contrib/hbide/ideenviron.prg
  * contrib/hbide/idefindreplace.prg
  * contrib/hbide/ideharbourhelp.prg
  * contrib/hbide/idemisc.prg
  * contrib/hbide/ideobject.prg
  * contrib/hbide/ideprojmanager.prg
  * contrib/hbide/idesources.prg
  * contrib/hbide/idethemes.prg

    + Restructured project management.
  
    + Implemented: .hbp as project definition protocol.
      Exploited -3rd= token to keep hbIDE specific data.
      Now you can open any existing .hbp and build it 
      out of the box. You must have set the build env
      beforehand OR take use of hbIDE's .env protocol.

    + Implemented: relative paths. The relative paths are
      are computed downwards and from .hbp location.
      Upper level paths still remain absolute. If your 
      projects structure is well thought of, then this 
      feature means this project tree is transferable 
      across different OS's and drives.

      The relative paths posed many difficulties. The 
      facts had to be resolved while search operations,
      while opening the files from Project Tree, and more.
      Now all are in perfect syncronization.

    + Managed: .hbp filters on source level and are 
      handelled transparently. In Project Tree source
      is shown without filters. Search operations are 
      also transparent. So, an entry like:
        {msvc|bcc}vouch/scandocument.prg 
      is respected by hbIDE.

    ! The other changes:
      - Project Properties dialogs contents.
        It is now very simple to understand and manage.

      - Concept of meta-data is eliminated.

      - The output executable is automatically recognized
        from linker output. So "Destination folder" is 
        kept for only "Launch" option which, in fact, does
        not know where executable is located. "Build & Launch"
        and "Rebuild & Launch" options do not look for
        "Destination folder" at all.

      - Project location is always pulled from .hbp file.
        It is not retained anywhere to make the project 
        portable.

      - Many more facts I cannot recollect at present.

     ; TODO: {hbmk2} slot in hbide.env protocol to pass
       command-line parameters.

     ; NOTE: delete hbide.ini, idesettings.ini, all .hbi's
             and start with clean state.
             
             Regression is highly possible and I am eager 
             to hear from you. This commit is just for 
             stramlining project management, though there 
             few other features implemented less important
             to mention.
This commit is contained in:
Pritpal Bedi
2010-03-03 09:02:05 +00:00
parent 370890e0e1
commit 377582ef4d
23 changed files with 1766 additions and 1451 deletions

View File

@@ -17,6 +17,102 @@
past entries belonging to author(s): Viktor Szakats.
*/
2010-03-03 01:00 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
* contrib/hbqt/hbqt_garbage.h
* contrib/hbqt/THbQtUI.prg
! A massive effort to stream-line GPF at exit.
At least now I know that it is caused by the way
QLayout has relation with parent and children both.
To some extent I am been able to cover it, but not
completely, at least till now.
* contrib/hbxbp/xbptreeview.prg
+ Implemented tooltip and changed the way context menu is fired.
- contrib/hbide/projects/hbide.hbi
! Totally abandoned .hbi project protocol.
* contrib/hbide/resources/environments.ui
* contrib/hbide/resources/environments.uic
* contrib/hbide/resources/projectpropertiesex.ui
* contrib/hbide/resources/projectpropertiesex.uic
* contrib/hbide/resources/themesex.ui
* contrib/hbide/resources/themesex.uic
! Simplified layouts to cover GPFs at exit.
* contrib/hbide/hbide.hbp
+ Added ideenviron.prg.
* contrib/hbide/hbide.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideeditor.prg
+ contrib/hbide/ideenviron.prg
* contrib/hbide/idefindreplace.prg
* contrib/hbide/ideharbourhelp.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideobject.prg
* contrib/hbide/ideprojmanager.prg
* contrib/hbide/idesources.prg
* contrib/hbide/idethemes.prg
+ Restructured project management.
+ Implemented: .hbp as project definition protocol.
Exploited -3rd= token to keep hbIDE specific data.
Now you can open any existing .hbp and build it
out of the box. You must have set the build env
beforehand OR take use of hbIDE's .env protocol.
+ Implemented: relative paths. The relative paths are
are computed downwards and from .hbp location.
Upper level paths still remain absolute. If your
projects structure is well thought of, then this
feature means this project tree is transferable
across different OS's and drives.
The relative paths posed many difficulties. The
facts had to be resolved while search operations,
while opening the files from Project Tree, and more.
Now all are in perfect syncronization.
+ Managed: .hbp filters on source level and are
handelled transparently. In Project Tree source
is shown without filters. Search operations are
also transparent. So, an entry like:
{msvc|bcc}vouch/scandocument.prg
is respected by hbIDE.
! The other changes:
- Project Properties dialogs contents.
It is now very simple to understand and manage.
- Concept of meta-data is eliminated.
- The output executable is automatically recognized
from linker output. So "Destination folder" is
kept for only "Launch" option which, in fact, does
not know where executable is located. "Build & Launch"
and "Rebuild & Launch" options do not look for
"Destination folder" at all.
- Project location is always pulled from .hbp file.
It is not retained anywhere to make the project
portable.
- Many more facts I cannot recollect at present.
; TODO: {hbmk2} slot in hbide.env protocol to pass
command-line parameters.
; NOTE: delete hbide.ini, idesettings.ini, all .hbi's
and start with clean state.
Regression is highly possible and I am eager
to hear from you. This commit is just for
stramlining project management, though there
few other features implemented less important
to mention.
2010-03-03 03:13 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* contrib/hbmisc/hbeditc.c
! One fix to prev right away. (in former strcpy)

View File

@@ -1,19 +1,13 @@
#
# $Id$
#
../hbxbp/hbxbp.hbc
-inc
-w3 -es2 -gc3
-w3
-es2
-gc3
-ohbide
# Trick to make QT 4.6 link using default Harbour build
-ldflag={msvc}-nodefaultlib:msvcrt.lib
-ldflag={msvc}-defaultlib:libcmt.lib
../hbxbp/hbxbp.hbc
hbide.prg
ideobject.prg
idestylesheets.prg
@@ -29,5 +23,8 @@ idethemes.prg
ideprojmanager.prg
idesources.prg
ideharbourhelp.prg
ideenviron.prg
ideparseexpr.c

View File

@@ -79,6 +79,8 @@
#define UNU( x ) HB_SYMBOL_UNUSED( x )
#define __HBIDE_DEBUG__
/*----------------------------------------------------------------------*/
REQUEST HB_QT
@@ -91,6 +93,11 @@ STATIC s_pathSep
PROCEDURE Main( cProjIni )
LOCAL oIde
#ifdef __HBIDE_DEBUG__
hb_setEnv( "HB_TR_DEBUG" , "HB_TR_ALWAYS" )
hb_setEnv( "HB_TR_WINOUT", "YES" )
#endif
/* Testing paths */
#ifdef __TESTING_PATHS__
hbide_dbg( hbmk2_PathMakeRelative( "C:\dev_projects", "C:\dev_sources\vouch\myfile.prg", .f. ) )
@@ -132,6 +139,7 @@ CLASS HbIde
DATA oSkeltnDock
DATA oSkeltnUI
DATA oFindDock
DATA oHL
DATA oUI
@@ -179,6 +187,7 @@ CLASS HbIde
DATA oMenu
DATA oTBar
DATA oStackedWidget
DATA oStackedWidgetMisc
DATA oFont
DATA oProjTree
DATA oEditTree
@@ -279,6 +288,15 @@ CLASS HbIde
METHOD execEditorAction( cKey )
METHOD execWindowsAction( cKey )
/* Methods to be evaluated as macros */
METHOD getWord( lSelect )
METHOD getLine( lSelect )
METHOD getText()
//
METHOD evalMacro( cString )
METHOD fetchAndExecMacro()
METHOD showApplicationCursor( nCursor )
ENDCLASS
/*----------------------------------------------------------------------*/
@@ -301,6 +319,21 @@ METHOD HbIde:new( cProjIni )
/*----------------------------------------------------------------------*/
METHOD HbIde:showApplicationCursor( nCursor )
STATIC qCrs
IF empty( nCursor )
QApplication():restoreOverrideCursor()
ELSE
qCrs := QCursor():new( nCursor )
QApplication():setOverrideCursor( qCrs )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD HbIde:create( cProjIni )
#if 1
LOCAL qPixmap, qSplash, nStart
@@ -310,6 +343,7 @@ METHOD HbIde:create( cProjIni )
qSplash:setWindowFlags( hb_bitOr( Qt_WindowStaysOnTopHint, qSplash:windowFlags() ) )
qSplash:setPixmap( qPixmap )
qSplash:show()
::showApplicationCursor( Qt_BusyCursor )
QApplication():processEvents()
#endif
@@ -348,12 +382,15 @@ METHOD HbIde:create( cProjIni )
/* Load IDE|User defined Themes */
hbide_loadThemes( Self )
/* Harbour Help Object */
::oHL := ideHarbourHelp():new():create( Self )
/* DOCKing windows and ancilliary windows */
::oDK := IdeDocks():new():create( Self )
/* IDE's Main Window */
::oDK:buildDialog()
/* Actions */
::oAC := IdeActions():new( Self ):create()
::oAC := IdeActions():new():create( Self )
/* Docking Widgets */
::oDK:buildDockWidgets()
/* Toolbar */
@@ -425,6 +462,7 @@ METHOD HbIde:create( cProjIni )
DO WHILE .t.
QApplication():processEvents()
IF seconds()-nStart > 5
::showApplicationCursor()
qSplash:close()
qSplash := NIL
EXIT
@@ -493,6 +531,8 @@ METHOD HbIde:create( cProjIni )
hbide_dbg( "Before ::oDlg:destroy()", memory( 1001 ), hbqt_getMemUsed() )
hbide_dbg( " " )
::oHL:destroy()
::oThemes:destroy()
::oFindInFiles:destroy()
::oFR:destroy()
::oPM:destroy()
@@ -593,6 +633,9 @@ METHOD HbIde:execAction( cKey )
CASE "Help"
::oHelpDock:show()
EXIT
CASE "CommandPrompt"
::fetchAndExecMacro()
EXIT
ENDSWITCH
::manageFocusInEditor()
@@ -922,6 +965,7 @@ METHOD HbIde:updateProjectTree( aPrj )
LOCAL oProject, n, oSource, oItem, nProjExists, oP, oParent, cPath
oProject := IdeProject():new( Self, aPrj )
IF empty( oProject:title )
RETURN Self
ENDIF
@@ -966,7 +1010,6 @@ METHOD HbIde:updateProjectTree( aPrj )
/* Reassign all children nodes */
FOR EACH cPath IN oProject:hPaths
oItem := oParent:addItem( cPath:__enumKey() )
oItem:oWidget:setTooltip( cPath:__enumKey() )
aadd( ::aProjData, { oItem, "Path", oParent, cPath:__enumKey(), oProject:title, oProject } )
NEXT
/* Souces */
@@ -977,7 +1020,6 @@ METHOD HbIde:updateProjectTree( aPrj )
IF n > 0
oP := ::aProjData[ n, TRE_OITEM ]
oItem := oP:addItem( oSource:file + oSource:ext )
oItem:oWidget:setTooltip( oSource:file + oSource:ext )
aadd( ::aProjData, { oItem, "Source File", oP, oSource:original, oProject:title } )
ENDIF
NEXT
@@ -987,7 +1029,7 @@ METHOD HbIde:updateProjectTree( aPrj )
/*----------------------------------------------------------------------*/
METHOD HbIde:manageItemSelected( oXbpTreeItem )
LOCAL n, cHbi, aPrj
LOCAL n, cHbp, aPrj
IF oXbpTreeItem == ::oProjRoot
n := -1
@@ -1004,13 +1046,13 @@ METHOD HbIde:manageItemSelected( oXbpTreeItem )
CASE ::aProjData[ n, TRE_TYPE ] == "Project Name"
aPrj := ::aProjData[ n, 5 ]
cHbi := hbide_pathToOSPath( aPrj[ PRJ_PRP_PROPERTIES, 2, PRJ_PRP_LOCATION ] + s_pathSep + ;
aPrj[ PRJ_PRP_PROPERTIES, 2, PRJ_PRP_OUTPUT ] + ".hbi" )
cHbp := hbide_pathToOSPath( aPrj[ PRJ_PRP_PROPERTIES, 2, PRJ_PRP_LOCATION ] + s_pathSep + ;
aPrj[ PRJ_PRP_PROPERTIES, 2, PRJ_PRP_OUTPUT ] + ".hbp" )
::oPM:loadProperties( cHbi, .f., .t., .f. )
::oPM:loadProperties( cHbp, .f., .t., .f. )
CASE ::aProjData[ n, TRE_TYPE ] == "Source File"
::oSM:editSource( ::aProjData[ n, TRE_ORIGINAL ] )
::oSM:editSource( hbide_stripFilter( ::aProjData[ n, TRE_ORIGINAL ] ) )
CASE ::aProjData[ n, TRE_TYPE ] == "Opened Source"
::oEM:setSourceVisible( ::aProjData[ n, TRE_DATA ] )
@@ -1044,9 +1086,9 @@ METHOD HbIde:manageProjectContext( mp1, mp2, oXbpTreeItem )
CASE n == 0 // Source File - nothing to do
CASE n == -2 // "Files"
CASE n == -1 // Project Root
aadd( aPops, { "New Project" , {|| ::oPM:loadProperties( , .t., .t., .t. ) } } )
aadd( aPops, { "New Project" , {|| ::oPM:loadProperties( NIL, .t., .t., .t. ) } } )
aadd( aPops, { "" } )
aadd( aPops, { "Load Project" , {|| ::oPM:loadProperties( , .f., .f., .t. ) } } )
aadd( aPops, { "Load Project" , {|| ::oPM:loadProperties( NIL, .f., .f., .t. ) } } )
aadd( aPops, { "" } )
//
IF !empty( ::oEV:getNames() )
@@ -1062,7 +1104,7 @@ METHOD HbIde:manageProjectContext( mp1, mp2, oXbpTreeItem )
CASE ::aProjData[ n, TRE_TYPE ] == "Project Name"
aPrj := ::aProjData[ n, TRE_DATA ]
cHbi := aPrj[ PRJ_PRP_PROPERTIES, 2, PRJ_PRP_LOCATION ] + s_pathSep + ;
aPrj[ PRJ_PRP_PROPERTIES, 2, PRJ_PRP_OUTPUT ] + ".hbi"
aPrj[ PRJ_PRP_PROPERTIES, 2, PRJ_PRP_OUTPUT ] + ".hbp"
cHbi := hbide_pathToOSPath( cHbi )
//
IF Alltrim( Upper( ::cWrkProject ) ) != Alltrim( Upper( oXbpTreeItem:caption ) )
@@ -1261,13 +1303,59 @@ METHOD HbIde:setCodec( cCodec )
RETURN Self
/*----------------------------------------------------------------------*/
// Macro Compilable Methods
/*----------------------------------------------------------------------*/
FUNCTION testPaths()
METHOD HbIde:getWord( lSelect )
RETURN ::oEM:getWord( lSelect )
hbide_dbg( hbide_pathProc( "C:\dev_sources\vouch\abc.prg", "C:\harbour\contrib\hbide\projects\hbide.hbi" ) )
hbide_dbg( hbide_pathProc( "C:\harbour\contrib\hbide\projects\vouch\abc.prg", "C:\harbour\contrib\hbide\projects\hbide.hbi" ) )
METHOD HbIde:getLine( lSelect )
RETURN ::oEM:getLine( lSelect )
RETURN NIL
METHOD HbIde:getText()
RETURN ::oEM:getText()
/*----------------------------------------------------------------------*/
METHOD HbIde:fetchAndExecMacro()
LOCAL cStr
cStr := hbide_fetchAString( ::oDlg:oWidget, "", "Macro", "Compilation" )
IF !empty( cStr )
::evalMacro( cStr )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD HbIde:evalMacro( cString )
LOCAL bError := ErrorBlock( {|o| break( o ) } )
LOCAL oErr, bBlock, n, cBlock, cParam
IF ( n := at( "|", cString ) ) > 0
cString := substr( cString, n + 1 )
IF ( n := at( "|", cString ) ) == 0
RETURN Self
ENDIF
cParam := substr( cString, 1, n - 1 )
cString := substr( cString, n + 1 )
cBlock := "{|o," + cParam + "|" + cString + " }"
ELSE
cBlock := "{|o| " + cString + " }"
ENDIF
cBlock := strtran( cBlock, "::", "o:" )
bBlock := &( cBlock )
hbide_dbg( cBlock )
BEGIN SEQUENCE
eval( bBlock, self )
RECOVER USING oErr
MsgBox( "Wrongly defined block. Syntax is |var| method_call( var ) --- " + oErr:description )
END SEQUENCE
ErrorBlock( bError )
RETURN Self
/*----------------------------------------------------------------------*/

View File

@@ -151,6 +151,23 @@ METHOD IdeDocks:destroy()
LOCAL oUI := ::oIde:oSkeltnUI
LOCAL qTBtn
::disconnect( ::oOutputResult:oWidget , "copyAvailable(bool)" )
::disconnect( ::oEnvironDock:oWidget , "visibilityChanged(bool)" )
::disconnect( ::oPropertiesDock:oWidget, "visibilityChanged(bool)" )
::disconnect( ::oThemesDock:oWidget , "visibilityChanged(bool)" )
::disconnect( ::oDocViewDock:oWidget , "visibilityChanged(bool)" )
::disconnect( ::oFindDock:oWidget , "visibilityChanged(bool)" )
#if 0 /* Not Implemented */
::disconnect( ::oHelpDock:oWidget , "visibilityChanged(bool)" )
::disconnect( ::oDockPT:oWidget , "visibilityChanged(bool)" )
::disconnect( ::oDockED:oWidget , "visibilityChanged(bool)" )
::disconnect( ::oDockB2:oWidget , "visibilityChanged(bool)" )
::disconnect( ::oFuncDock:oWidget , "visibilityChanged(bool)" )
::disconnect( ::oSkeltnDock:oWidget , "visibilityChanged(bool)" )
#endif
/* ?? */
::disconnect( oUI:q_buttonNew , "clicked()" )
::disconnect( oUI:q_buttonRename, "clicked()" )
::disconnect( oUI:q_buttonDelete, "clicked()" )
@@ -170,6 +187,10 @@ METHOD IdeDocks:destroy()
qTBtn := NIL
NEXT
FOR EACH qTBtn IN ::oIde:aMarkTBtns
::disconnect( qTBtn, "clicked()" )
NEXT
RETURN Self
/*----------------------------------------------------------------------*/
@@ -271,7 +292,7 @@ METHOD IdeDocks:execEvent( nMode, p )
CASE nMode == dockDocViewer_visibilityChanged
IF p
::oDocViewDock:qtObject:show()
::oHL:show()
ENDIF
CASE nMode == dockProperties_visibilityChanged
@@ -281,7 +302,7 @@ METHOD IdeDocks:execEvent( nMode, p )
CASE nMode == docEnvironments_visibilityChanged
IF p
::oPM:manageEnvironments()
::oEV:show()
ENDIF
CASE nMode == dockFindInFiles_visibilityChanged
@@ -675,11 +696,6 @@ METHOD IdeDocks:buildProjectTree()
/* Add dock widget to Main Window */
::oDlg:oWidget:addDockWidget_1( Qt_LeftDockWidgetArea, ::oDockPT:oWidget, Qt_Vertical )
IF ::oIde:aIni[ INI_HBIDE, ProjectTreeVisible ] == "NO"
::oIde:lProjTreeVisible := .f.
::oDockPT:hide()
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
@@ -718,11 +734,6 @@ METHOD IdeDocks:buildEditorTree()
/* Add dock widget to Main Window */
::oDlg:oWidget:addDockWidget_1( Qt_LeftDockWidgetArea, ::oDockED:oWidget, Qt_Vertical )
IF ::oIde:aIni[ INI_HBIDE, ProjectTreeVisible ] == "NO"
::oIde:lProjTreeVisible := .f.
::oDockED:hide()
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
@@ -932,14 +943,23 @@ METHOD IdeDocks:buildDocViewer()
::oIde:oDocViewDock := ::getADockWidget( Qt_RightDockWidgetArea, "dockDocViewer", "Harbour Documentation", QDockWidget_DockWidgetFloatable )
::oDlg:oWidget:addDockWidget_1( Qt_RightDockWidgetArea, ::oDocViewDock:oWidget, Qt_Horizontal )
::oDocViewDock:qtObject := ideHarbourHelp():new():create( ::oIde )
::connect( ::oDocViewDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( dockDocViewer_visibilityChanged, p ) } )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeDocks:buildEnvironDock()
::oIde:oEnvironDock := ::getADockWidget( Qt_RightDockWidgetArea, "dockEnvironments", "Compiler Environments", QDockWidget_DockWidgetFloatable )
::oDlg:oWidget:addDockWidget_1( Qt_RightDockWidgetArea, ::oEnvironDock:oWidget, Qt_Horizontal )
::connect( ::oEnvironDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( docEnvironments_visibilityChanged, p ) } )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeDocks:buildSkeletonWidget()
LOCAL oUI
@@ -1146,13 +1166,3 @@ METHOD IdeDocks:toggleBottomDocks()
/*----------------------------------------------------------------------*/
METHOD IdeDocks:buildEnvironDock()
::oIde:oEnvironDock := ::getADockWidget( Qt_RightDockWidgetArea, "dockEnvironments", "Compiler Environments", QDockWidget_DockWidgetFloatable )
::oDlg:oWidget:addDockWidget_1( Qt_RightDockWidgetArea, ::oEnvironDock:oWidget, Qt_Horizontal )
::connect( ::oEnvironDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( docEnvironments_visibilityChanged, p ) } )
RETURN Self
/*----------------------------------------------------------------------*/

View File

@@ -146,6 +146,10 @@ CLASS IdeEditsManager INHERIT IdeObject
METHOD toggleSelectionMode()
METHOD toggleLineNumbers()
METHOD getText()
METHOD getWord( lSelect )
METHOD getLine( lSelect )
ENDCLASS
/*----------------------------------------------------------------------*/
@@ -601,6 +605,39 @@ METHOD IdeEditsManager:toggleLineNumbers()
/*----------------------------------------------------------------------*/
METHOD IdeEditsManager:getText()
LOCAL oEdit, cText := ""
IF !empty( oEdit := ::getEditObjectCurrent() )
cText := oEdit:getText()
ENDIF
RETURN cText
/*----------------------------------------------------------------------*/
METHOD IdeEditsManager:getWord( lSelect )
LOCAL oEdit, cText := ""
IF !empty( oEdit := ::getEditObjectCurrent() )
cText := oEdit:getWord( lSelect )
ENDIF
RETURN cText
/*----------------------------------------------------------------------*/
METHOD IdeEditsManager:getLine( lSelect )
LOCAL oEdit, cText := ""
IF !empty( oEdit := ::getEditObjectCurrent() )
cText := oEdit:getLine( lSelect )
ENDIF
RETURN cText
/*----------------------------------------------------------------------*/
METHOD IdeEditsManager:convertSelection( cKey )
LOCAL oEdit
@@ -1093,7 +1130,7 @@ METHOD IdeEditor:create( oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView )
METHOD IdeEditor:destroy()
LOCAL n, oEdit
hbide_dbg( "IdeEditor:destroy()", 0, ::sourceFile )
//hbide_dbg( "IdeEditor:destroy()", 0, ::sourceFile )
::qHiliter := NIL
@@ -1136,7 +1173,7 @@ hbide_dbg( "IdeEditor:destroy()", 0, ::sourceFile )
::oIde:lDockRVisible := .f.
ENDIF
ENDIF
hbide_dbg( "IdeEditor:destroy()", 1, "-------------------------------------" )
//hbide_dbg( "IdeEditor:destroy()", 1, "-------------------------------------" )
RETURN Self
/*----------------------------------------------------------------------*/
@@ -1394,8 +1431,13 @@ CLASS IdeEdit INHERIT IdeObject
METHOD handleCurrentIndent()
METHOD handlePreviousWord( lUpdatePrevWord )
METHOD loadFuncHelp()
METHOD clickFuncHelp()
METHOD toggleLineNumbers()
METHOD getWord( lSelect )
METHOD getLine( lSelect )
METHOD getText()
ENDCLASS
/*----------------------------------------------------------------------*/
@@ -1544,7 +1586,7 @@ METHOD IdeEdit:execEvent( nMode, oEdit, p, p1 )
EXIT
CASE selectionChanged
hbide_dbg( "selectionChanged()" )
//hbide_dbg( "selectionChanged()" )
::oEditor:qCqEdit := qEdit
::oEditor:qCoEdit := oEdit
@@ -1698,6 +1740,7 @@ METHOD IdeEdit:execKeyEvent( nMode, nEvent, p )
CASE 1001
IF p == QEvent_MouseButtonDblClick
::lCopyWhenDblClicked := .t.
::clickFuncHelp()
ENDIF
EXIT
@@ -1867,6 +1910,60 @@ METHOD IdeEdit:caseInvert()
/*----------------------------------------------------------------------*/
METHOD IdeEdit:getText()
LOCAL qCursor := QTextCursor():configure( ::qEdit:textCursor() )
RETURN qCursor:selectedText()
/*----------------------------------------------------------------------*/
METHOD IdeEdit:getWord( lSelect )
LOCAL cText
LOCAL qCursor := QTextCursor():configure( ::qEdit:textCursor() )
DEFAULT lSelect TO .F.
qCursor:select( QTextCursor_WordUnderCursor )
cText := qCursor:selectedText()
IF lSelect
::qEdit:setTextCursor( qCursor )
ENDIF
RETURN cText
/*----------------------------------------------------------------------*/
METHOD IdeEdit:getLine( lSelect )
LOCAL cText
LOCAL qCursor := QTextCursor():configure( ::qEdit:textCursor() )
DEFAULT lSelect TO .F.
qCursor:select( QTextCursor_LineUnderCursor )
cText := qCursor:selectedText()
IF lSelect
::qEdit:setTextCursor( qCursor )
ENDIF
RETURN cText
/*----------------------------------------------------------------------*/
METHOD IdeEdit:clickFuncHelp()
LOCAL cWord
IF !empty( cWord := ::getWord( .f. ) )
IF !empty( ::oDocViewDock:qtObject )
::oDocViewDock:qtObject:jumpToFunction( cWord )
ENDIF
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeEdit:loadFuncHelp()
LOCAL qEdit, qCursor, qTextBlock, cText, cWord, nCol
@@ -1877,7 +1974,7 @@ METHOD IdeEdit:loadFuncHelp()
cText := qTextBlock:text()
nCol := qCursor:columnNumber()
cWord := hbide_getPreviousWord( cText, nCol )
hbide_dbg( "IdeEdit:loadFuncHelp()", cWord )
IF !empty( cWord )
IF !empty( ::oDocViewDock:qtObject )
::oDocViewDock:qtObject:jumpToFunction( cWord )

View File

@@ -0,0 +1,284 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
*
* Copyright 2009-2010 Pritpal Bedi <pritpal@vouchcac.com>
* 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 <pritpal@vouchcac.com>
* 01Mar2010
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
#include "hbide.ch"
#include "hbqt.ch"
#include "common.ch"
#include "hbclass.ch"
/*----------------------------------------------------------------------*/
//
// Class IdeEnvironments
//
/*----------------------------------------------------------------------*/
CLASS IdeEnvironments INHERIT IdeObject
DATA cEnvFile
DATA aNames INIT {}
DATA aEnvrns INIT {}
DATA aShellContents INIT {}
DATA aCommons INIT {}
METHOD new( oIDE, cEnvFile )
METHOD create( oIDE, cEnvFile )
METHOD destroy()
METHOD parse( cEnvFile )
METHOD prepareBatch( cEnvName )
METHOD getNames() INLINE ::aNames
METHOD saveEnv()
METHOD show()
METHOD execEnv( nMode, p )
ENDCLASS
/*----------------------------------------------------------------------*/
METHOD IdeEnvironments:new( oIDE, cEnvFile )
::oIDE := oIDE
::cEnvFile := cEnvFile
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeEnvironments:create( oIDE, cEnvFile )
DEFAULT oIDE TO ::oIDE
DEFAULT cEnvFile TO ::cEnvFile
::oIDE := oIDE
::cEnvFile := cEnvFile
IF !empty( ::cEnvFile ) .AND. hb_fileExists( ::cEnvFile )
::parse( ::cEnvFile )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeEnvironments:destroy()
hbide_dbg(" ,,,,,, IdeEnvironments:destroy()", 0 )
IF !empty( ::oUI )
hbide_dbg("IdeEnvironments:destroy()", 1 )
::oUI:destroy()
hbide_dbg("IdeEnvironments:destroy()", 2 )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeEnvironments:parse( cEnvFile )
LOCAL s, cPart, cEnv, a_, cKey, cVal
LOCAL aContents := hbide_readSource( cEnvFile )
::aNames := {}
::aEnvrns := {}
a_ := {}
cEnv := ""
FOR EACH s IN aContents
s := alltrim( s )
IF empty( s ) .OR. left( s, 1 ) == "#" /* Remark */
LOOP
ENDIF
IF left( s, 1 ) == "["
s := alltrim( strtran( s, "[", "" ) )
s := alltrim( strtran( s, "]", "" ) )
IF lower( s ) == "common"
cPart := "common"
ELSE
cPart := "environment"
IF ( s != cEnv ) .AND. !empty( cEnv )
aadd( ::aNames, cEnv )
aadd( ::aEnvrns, { cEnv, a_ } )
ENDIF
cEnv := s
a_:= {}
ENDIF
ELSE
IF cPart == "common"
IF hbide_parseKeyValPair( s, @cKey, @cVal )
aadd( ::aCommons, { lower( cKey ), cVal } ) /* Format Later */
ENDIF
ELSEIF cPart == "environment"
IF hbide_parseFilter( s, @cKey, @cVal )
aadd( a_, { lower( cKey ), cVal } )
ENDIF
ENDIF
ENDIF
NEXT
IF !empty( cEnv ) .AND. !empty( a_ )
aadd( ::aNames, cEnv )
aadd( ::aEnvrns, { cKey, a_ } )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeEnvironments:prepareBatch( cEnvName )
LOCAL n, s, a_, aCmd
LOCAL cFile := space( 255 )
IF ( n := ascan( ::aEnvrns, {|e_| e_[ 1 ] == cEnvName } ) ) > 0
aCmd := {}
FOR EACH a_ IN ::aEnvrns[ n, 2 ]
s := a_[ 1 ]
IF s == "content"
aadd( aCmd, a_[ 2 ] )
ENDIF
NEXT
cFile := hbide_getShellCommandsTempFile( aCmd )
ENDIF
RETURN cFile
/*----------------------------------------------------------------------*/
METHOD IdeEnvironments:show()
IF empty( ::oUI )
::oUI := HbQtUI():new( hbide_uic( "environments" ), ::oEnvironDock:oWidget ):build()
::oEnvironDock:qtObject := Self //::oUI
::oEnvironDock:oWidget:setWidget( ::oUI )
::oUI:q_buttonPathMk2:setIcon( hbide_image( "folder" ) )
::oUI:q_buttonPathEnv:setIcon( hbide_image( "folder" ) )
::oUI:signal( "buttonCn" , "clicked()", {|| ::oEnvironDock:hide() } )
::oUI:signal( "buttonSave" , "clicked()", {|| ::saveEnv() } )
::oUI:signal( "buttonSaveExit", "clicked()", {|| ::saveEnv(), ::oEnvironDock:hide() } )
::oUI:signal( "buttonPathMk2" , "clicked()", {|| ::execEnv( 1 ) } )
::oUI:signal( "buttonPathEnv" , "clicked()", {|| ::execEnv( 2 ) } )
ENDIF
::oUI:q_editPathMk2 :setText( ::aINI[ INI_HBIDE, PathMk2 ] )
::oUI:q_editPathEnv :setText( ::aINI[ INI_HBIDE, PathEnv ] )
::oUI:q_editCompilers:setPlainText( hb_memoread( hbide_pathFile( ::aINI[ INI_HBIDE, PathEnv ], "hbide.env" ) ) )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeEnvironments:execEnv( nMode, p )
LOCAL cPath, cP
HB_SYMBOL_UNUSED( p )
DO CASE
CASE nMode == 1
cPath := hbide_fetchAFile( ::oDlg, "Select location of hbmk2", ;
{ { "Harbour Projects Builder - hbmk2", "*.exe" } }, ::cWrkPathMK2 )
IF !empty( cPath )
hb_fNameSplit( cPath, @cP )
::cWrkPathMK2 := cP
::oUI:q_editPathMk2:setText( hbide_pathStripLastSlash( cP ) )
ENDIF
CASE nMode == 2
cPath := hbide_fetchAFile( ::oDlg, "Select location of hbide.env", ;
{ { "Harbour Projects", "*.env" } }, ::cWrkPathEnv )
IF !empty( cPath )
hb_fNameSplit( cPath, @cP )
::oIDE:cWrkPathEnv := cP
::oUI:q_editPathEnv:setText( hbide_pathStripLastSlash( cP ) )
::oUI:q_editCompilers:setPlainText( ;
hb_memoread( hbide_pathFile( ::oUI:q_editPathEnv:text(), "hbide.env" ) ) )
ENDIF
ENDCASE
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeEnvironments:saveEnv()
LOCAL cText, cPathMk2, cPathEnv, cEnvFile
LOCAL oUIEnv := ::oUI
cPathMk2 := oUIEnv:q_editPathMk2:text()
cPathEnv := oUIEnv:q_editPathEnv:text()
::oIDE:aINI[ INI_HBIDE, PathMk2 ] := cPathMk2
::oIDE:aINI[ INI_HBIDE, PathEnv ] := cPathEnv
//
::oIDE:cWrkPathMk2 := cPathMk2
::oIDE:cWrkPathEnv := cPathEnv
IF !empty( cText := oUIEnv:q_editCompilers:toPlainText() )
cEnvFile := hbide_pathFile( cPathEnv, "hbide.env" )
hb_MemoWrit( cEnvFile, cText )
::parse( cEnvFile )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/

View File

@@ -683,7 +683,6 @@ METHOD IdeFindInFiles:buildUI()
::oUI:q_comboExpr:setFocus()
/* Attach all signals */
::connect( ::oUI:oWidget, "rejected()", {|| ::execEvent( "buttonClose" ) } )
//
::oUI:signal( "buttonClose" , "clicked()" , {| | ::execEvent( "buttonClose" ) } )
::oUI:signal( "buttonFolder" , "clicked()" , {| | ::execEvent( "buttonFolder" ) } )
@@ -709,14 +708,6 @@ METHOD IdeFindInFiles:execEvent( cEvent, p )
CASE "buttonClose"
::oFindDock:hide()
#if 0
IF ::lInDockWindow
::oFindDock:hide()
ELSE
::oIde:aIni[ INI_HBIDE, FindInFilesDialogGeometry ] := hbide_posAndSize( ::oUI:oWidget )
::destroy()
ENDIF
#endif
EXIT
CASE "comboFind"
@@ -900,7 +891,7 @@ METHOD IdeFindInFiles:show()
METHOD IdeFindInFiles:find()
LOCAL lPrg, lC, lCpp, lH, lCh, lRc, a_
LOCAL lTabs, lSubF, lSubP, cFolder, qItem, aFilter, cExt, cMask, cWrkFolder
LOCAL lTabs, lSubF, lSubP, cFolder, qItem, aFilter, cExt, cMask, cWrkFolder, cProjPath
LOCAL nStart, nEnd, cSource, aDir, cProjTitle, aProjFiles
LOCAL aOpenSrc := {}
LOCAL aFolderSrc := {}
@@ -977,9 +968,10 @@ METHOD IdeFindInFiles:find()
FOR EACH cProjTitle IN aProjs
a_:= {}
IF !empty( aProjFiles := ::oPM:getSourcesByProjectTitle( cProjTitle ) )
cProjPath := ::oPM:getProjectPathFromTitle( cProjTitle )
FOR EACH cSource IN aProjFiles
IF hbide_isSourceOfType( cSource, aFilter )
aadd( a_, cSource )
aadd( a_, hbide_syncProjPath( cProjPath, hbide_stripFilter( cSource ) ) )
ENDIF
NEXT
ENDIF

View File

@@ -219,7 +219,7 @@ METHOD IdeHarbourHelp:create( oIde )
METHOD IdeHarbourHelp:show()
IF empty( ::oUI )
::oUI := HbQtUI():new( ::resPath + "docviewgenerator.uic", ::oDlg:oWidget ):build()
::oUI := HbQtUI():new( hbide_uic( "docviewgenerator" ) ):build()
::oDocViewDock:oWidget:setWidget( ::oUI )
@@ -239,14 +239,12 @@ METHOD IdeHarbourHelp:show()
METHOD IdeHarbourHelp:destroy()
IF empty( ::oUI )
RETURN Self
IF !empty( ::oUI )
::destroyTrees()
::oUI:destroy()
ENDIF
::destroyTrees()
::oUI:destroy()
RETURN Self
/*----------------------------------------------------------------------*/
@@ -592,6 +590,8 @@ METHOD IdeHarbourHelp:refreshDocTree()
RETURN Self
ENDIF
::showApplicationCursor( Qt_BusyCursor )
/* Clean Environment */
::destroyTrees()
::oUI:q_treeDoc:clear()
@@ -654,6 +654,8 @@ METHOD IdeHarbourHelp:refreshDocTree()
::oUI:q_treeDoc:expandItem( oRoot )
::showApplicationCursor()
RETURN Self
/*----------------------------------------------------------------------*/
@@ -713,20 +715,6 @@ STATIC FUNCTION hbide_buildPathFromSubs( aSubs, nUpto )
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbide_stripRoot( cRoot, cPath )
LOCAL cLRoot, cLPath, cP
cLRoot := hbide_pathNormalized( cRoot, .t. )
cLPath := hbide_pathNormalized( cPath, .t. )
IF left( cLPath, len( cLRoot ) ) == cLRoot
cP := substr( cLPath, len( cRoot ) + 1 )
RETURN cP
ENDIF
RETURN cPath
/*----------------------------------------------------------------------*/
METHOD IdeHarbourHelp:populateIndex()
LOCAL a_, qItem, oFunc, oParent, n
LOCAL aUnq := {}

View File

@@ -350,35 +350,53 @@ FUNCTION hbide_fetchHbiStructFromFile( cProject )
/*----------------------------------------------------------------------*/
FUNCTION hbide_strip3rd( s )
LOCAL n
IF ( n := at( "-3rd=", s ) ) > 0
RETURN substr( s, n + 5 )
ENDIF
RETURN s
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbide_pullHbiStruct( a_ )
LOCAL n, s, nPart, cKey, cVal, ss
LOCAL n, s, nPart, cKey, cVal, ss, c3rd
LOCAL aPrp := { "Type", "Title", "Location", "WorkingFolder", "DestinationFolder", ;
"Output", "LaunchParams", "LaunchProgram", "BackupFolder" }
LOCAL a1_0 := afill( array( PRJ_PRP_PRP_VRBLS ), "" )
LOCAL a1_1 := {}
local a2_0 := {}
local a2_1 := {}
local a3_0 := {}
local a3_1 := {}
local a4_0 := {}
local a4_1 := {}
LOCAL a2_0 := {}
LOCAL a2_1 := {}
LOCAL a3_0 := {}
LOCAL a3_1 := {}
LOCAL a4_0 := {}
LOCAL a4_1 := {}
IF ascan( a_, {|e| "-3rd=[ HBIDEVERSION ]" $ e } ) == 0
c3rd := ""
ELSE
c3rd := "-3rd="
ENDIF
IF .t.
FOR EACH ss IN a_
s := alltrim( ss )
IF !empty( s )
DO CASE
CASE s == "[ PROPERTIES ]"
CASE s == c3rd + "[ HBIDEVERSION ]"
nPart := 0
* nPart := PRJ_PRP_VERSION
CASE s == c3rd + "[ PROPERTIES ]"
nPart := PRJ_PRP_PROPERTIES
CASE s == "[ FLAGS ]"
CASE s == c3rd + "[ FLAGS ]"
nPart := PRJ_PRP_FLAGS
CASE s == "[ SOURCES ]"
CASE s == c3rd + "[ SOURCES ]"
nPart := PRJ_PRP_SOURCES
CASE s == "[ METADATA ]"
CASE s == c3rd + "[ METADATA ]"
nPart := PRJ_PRP_METADATA
OTHERWISE
s := hbide_strip3rd( s )
DO CASE
CASE nPart == PRJ_PRP_PROPERTIES
IF ( n := at( "=", s ) ) > 0
@@ -395,6 +413,9 @@ STATIC FUNCTION hbide_pullHbiStruct( a_ )
aadd( a3_0, s )
CASE nPart == PRJ_PRP_METADATA
IF !empty( c3rd )
s := strtran( s, c3rd, "" )
ENDIF
aadd( a4_0, s )
IF !( "#" == left( s,1 ) )
IF ( n := at( "=", s ) ) > 0
@@ -646,10 +667,15 @@ FUNCTION hbide_pathStripLastSlash( cPath )
/*----------------------------------------------------------------------*/
FUNCTION hbide_pathToOSPath( cPath )
LOCAL n
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 )
ENDIF
RETURN cPath
/*----------------------------------------------------------------------*/
@@ -1270,10 +1296,6 @@ FUNCTION hbide_fetchHbpData( cHBPFileName )
aParamList := hbide_HBPGetParamList( cHBPFileName )
hbide_dbg( "hbmk2 files" ) ; AEval( hbide_HBPParamListFilter( aParamList, HBIDE_HBP_PTYPE_FILES ), {| tmp | hbide_dbg( tmp ) } )
hbide_dbg( "hbmk2 options" ) ; AEval( hbide_HBPParamListFilter( aParamList, HBIDE_HBP_PTYPE_OPTIONS ), {| tmp | hbide_dbg( tmp ) } )
hbide_dbg( "hbide comments" ) ; AEval( hbide_HBPParamListFilter( aParamList, HBIDE_HBP_PTYPE_HBIDEPARAMS ), {| tmp | hbide_dbg( tmp ) } )
RETURN { hbide_HBPParamListFilter( aParamList, HBIDE_HBP_PTYPE_OPTIONS ), ;
hbide_HBPParamListFilter( aParamList, HBIDE_HBP_PTYPE_FILES ) }
@@ -1621,3 +1643,82 @@ FUNCTION hbide_isPrevParent( cRoot, cPath )
/*----------------------------------------------------------------------*/
FUNCTION hbide_space2amp( cStr )
RETURN strtran( cStr, " ", chr( 38 ) )
/*----------------------------------------------------------------------*/
FUNCTION hbide_amp2space( cStr )
RETURN strtran( cStr, chr( 38 ), " " )
/*----------------------------------------------------------------------*/
FUNCTION hbide_stripFilter( cSrc )
LOCAL n, n1
DO WHILE .t.
IF ( n := at( "{", cSrc ) ) == 0
EXIT
ENDIF
IF ( n1 := at( "}", cSrc ) ) == 0
EXIT
ENDIF
cSrc := substr( cSrc, 1, n - 1 ) + substr( cSrc, n1 + 1 )
ENDDO
RETURN cSrc
/*----------------------------------------------------------------------*/
FUNCTION hbide_stripRoot( cRoot, cPath )
LOCAL cLRoot, cLPath, cP
IF !empty( cRoot ) .AND. ! ( right( cRoot, 1 ) $ "/\" )
cRoot += "/"
ENDIF
cLRoot := hbide_pathNormalized( cRoot, .t. )
cLPath := hbide_pathNormalized( cPath, .t. )
IF left( cLPath, len( cLRoot ) ) == cLRoot
cP := substr( cLPath, len( cRoot ) + 1 )
RETURN cP
ENDIF
RETURN cPath
/*----------------------------------------------------------------------*/
FUNCTION hbide_syncRoot( cRoot, cPath )
LOCAL cPth, cFile, cExt
LOCAL cPathProc := hbide_pathProc( cRoot, cPath )
hb_fNameSplit( cPath, @cPth, @cFile, @cExt )
//hbide_dbg( "hbide_syncRoot( cRoot, cPath )", cPathProc, hbide_pathToOSpath( cPathProc + "/" + cFile + cExt ) )
RETURN hbide_pathToOSpath( cPathProc + "/" + cFile + cExt )
/*----------------------------------------------------------------------*/
FUNCTION hbide_array2cmdParams( aHbp )
LOCAL cCmd := " "
aeval( aHbp, {|e| cCmd += e + " " } )
RETURN cCmd
/*----------------------------------------------------------------------*/
FUNCTION hbide_syncProjPath( cRoot, cSource )
IF left( cSource, 1 ) $ "./\" .OR. substr( cSource, 2, 1 ) == ":"
RETURN cSource
ENDIF
IF !empty( cRoot ) .AND. ! ( right( cRoot, 1 ) $ "/\" )
cRoot += "/"
ENDIF
RETURN cRoot + cSource
/*----------------------------------------------------------------------*/

View File

@@ -90,6 +90,7 @@ CLASS IdeObject
ACCESS oAC INLINE ::oIde:oAC
ACCESS oSM INLINE ::oIde:oSM
ACCESS oEV INLINE ::oIde:oEV
ACCESS oHL INLINE ::oIde:oHL
ACCESS oFindDock INLINE ::oIde:oFindDock
ACCESS oFindInFiles INLINE ::oIde:oFindInFiles
@@ -163,6 +164,7 @@ CLASS IdeObject
ACCESS oDockB2 INLINE ::oIde:oDockB2
ACCESS oOutputResult INLINE ::oIde:oOutputResult
ACCESS oStackedWidget INLINE ::oIde:oStackedWidget
ACCESS oStackedWidgetMisc INLINE ::oIde:oStackedWidgetMisc
ACCESS oFrame INLINE ::oIde:oFrame
ACCESS oHelpDock INLINE ::oIde:oHelpDock
ACCESS oSkeltnDock INLINE ::oIde:oSkeltnDock
@@ -203,6 +205,7 @@ CLASS IdeObject
METHOD manageFocusInEditor( ... ) INLINE ::oIde:manageFocusInEditor( ... )
METHOD setCodec( ... ) INLINE ::oIde:setCodec( ... )
METHOD updateTitleBar( ... ) INLINE ::oIde:updateTitleBar( ... )
METHOD showApplicationCursor( ... ) INLINE ::oIde:showApplicationCursor( ... )
METHOD editSource( ... ) INLINE ::oSM:editSource( ... )
METHOD getEditorByIndex( ... ) INLINE ::oSM:getEditorByIndex( ... )

File diff suppressed because it is too large Load Diff

View File

@@ -248,7 +248,7 @@ METHOD IdeSourcesManager:closeSource( nTab, lCanCancel, lCanceled )
LOCAL lSave, n, oEditor
DEFAULT nTab TO ::oEM:getTabCurrent()
hbide_dbg( "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", 0 )
//hbide_dbg( "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", 0 )
IF !empty( oEditor := ::oEM:getEditorByTabPosition( nTab ) )
DEFAULT lCanCancel TO .F.
@@ -275,9 +275,9 @@ hbide_dbg( "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", 0 )
RETURN .F.
ENDIF
ENDIF
hbide_dbg( "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", 1, "before: oEditor:destroy()" )
//hbide_dbg( "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", 1, "before: oEditor:destroy()" )
oEditor:destroy()
hbide_dbg( "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", 2, "after: oEditor:destroy()" )
//hbide_dbg( "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", 2, "after: oEditor:destroy()" )
::oIde:updateTitleBar()
ENDIF

View File

@@ -218,7 +218,10 @@ METHOD IdeThemes:create( oIde, cIniFile )
METHOD IdeThemes:destroy()
LOCAL qAct
IF !empty( ::oThemes )
IF !empty( ::oUI )
::qHiliter := NIL
::qEdit := NIL
FOR EACH qAct IN ::aApplyAct
::disconnect( qAct, "triggered(bool)" )
qAct := NIL
@@ -226,7 +229,12 @@ METHOD IdeThemes:destroy()
::qMenuApply := NIL
::aApplyAct := NIL
::oUI:destroy()
::oThemesDock:oWidget:setWidget( QWidget():new() )
hbide_dbg( 0,1,"IdeThemes:destroy()" )
IF !empty( ::oUI )
::oUI:destroy()
hbide_dbg( 1,1,"IdeThemes:destroy()" )
ENDIF
ENDIF
RETURN Self
@@ -424,7 +432,7 @@ METHOD IdeThemes:setSyntaxHilighting( qEdit, cTheme, lNew )
::setForeBackGround( qEdit, cTheme )
qHiliter := HBQSyntaxHighlighter():new()// qEdit:document() )
qHiliter := HBQSyntaxHighlighter():new()
FOR EACH a_ IN ::aPatterns
IF !empty( aAttr := ::getThemeAttribute( a_[ 1 ], cTheme ) )
@@ -442,14 +450,17 @@ METHOD IdeThemes:setSyntaxHilighting( qEdit, cTheme, lNew )
/*----------------------------------------------------------------------*/
METHOD IdeThemes:show()
#if 0
LOCAL qAct
#endif
IF empty( ::oUI )
::lCreating := .t.
::oUI := HbQtUI():new( ::oIde:resPath + "themesex.uic", ::oThemesDock:oWidget ):build()
//::oUI := HbQtUI():new( hbide_uic( "themesex" ), ::oThemesDock:oWidget ):build()
::oUI := HbQtUI():new( hbide_uic( "themesex" ) ):build()
::oThemesDock:qtObject := ::oUI
//::oThemesDock:qtObject := Self
::oThemesDock:oWidget:setWidget( ::oUI )
::oUI:signal( "comboThemes" , "currentIndexChanged(int)", {|i| ::nCurTheme := i+1, ::setTheme( i ) } )
@@ -466,12 +477,11 @@ METHOD IdeThemes:show()
::oUI:signal( "buttonClose" , "clicked()" , {|| ::oThemesDock:hide() } )
* ::oIde:setPosAndSizeByIni( ::oUI:oWidget, ThemesDialogGeometry )
/* Fill Themes Dialog Values */
#if 0
::oUI:setWindowTitle( GetKeyValue( ::aControls, "dialogTitle" ) )
//
::oUI:qObj[ "labelItem" ]:setText( GetKeyValue( ::aControls, "labelItem" , "Item" ) )
::oUI:qObj[ "labelItems" ]:setText( GetKeyValue( ::aControls, "labelItems" , "Items" ) )
::oUI:qObj[ "labelTheme" ]:setText( GetKeyValue( ::aControls, "labelTheme" , "Theme" ) )
//
::oUI:qObj[ "checkItalic" ]:setText( GetKeyValue( ::aControls, "checkItalic" , "Italic" ) )
@@ -483,7 +493,9 @@ METHOD IdeThemes:show()
::oUI:qObj[ "buttonSaveAs" ]:setText( GetKeyValue( ::aControls, "buttonSaveAs" , "SaveAs" ) )
::oUI:qObj[ "buttonClose" ]:setText( GetKeyValue( ::aControls, "buttonClose" , "Close" ) )
::oUI:qObj[ "buttonCopy" ]:setText( GetKeyValue( ::aControls, "buttonCopy" , "Copy" ) )
#endif
#if 0
::qMenuApply := QMenu():new()
//
qAct := QAction():new( ::qMenuApply )
@@ -502,11 +514,12 @@ METHOD IdeThemes:show()
aadd( ::aApplyAct, qAct )
//
::oUI:q_buttonApply:setMenu( ::qMenuApply )
#endif
aeval( ::aThemes, {|e_| ::oUI:qObj[ "comboThemes" ]:addItem( e_[ 1 ] ) } )
aeval( ::aItems , {|e_| ::oUI:qObj[ "comboItems" ]:addItem( e_[ 2 ] ) } )
aeval( ::aThemes, {|e_| ::oUI:q_comboThemes:addItem( e_[ 1 ] ) } )
aeval( ::aItems , {|e_| ::oUI:q_comboItems:addItem( e_[ 2 ] ) } )
::qEdit := ::oUI:qObj[ "plainThemeText" ]
::qEdit := ::oUI:q_plainThemeText
::qEdit:setPlainText( GetSource() )
::qEdit:setLineWrapMode( QTextEdit_NoWrap )
::qEdit:setFont( ::oIde:oFont:oWidget )

View File

@@ -1,44 +0,0 @@
[ PROPERTIES ]
Type = Executable
Title = Harbour-Qt IDE
Location = <IdeSrc>projects
WorkingFolder = <IdeSrc>projects
DestinationFolder = <IdeSrc>projects
Output = hbide
LaunchParams =
LaunchProgram =
BackupFolder =
[ FLAGS ]
../../hbxbp/hbxbp.hbc
-inc
-w3
-es2
-workdir=<IdeSrc>projects/${hb_plat}/${hb_comp}/hbide
[ SOURCES ]
#
<IdeSrc>hbide.prg
<IdeSrc>ideobject.prg
<IdeSrc>idestylesheets.prg
<IdeSrc>idetags.prg
<IdeSrc>idemisc.prg
<IdeSrc>ideactions.prg
<IdeSrc>ideeditor.prg
<IdeSrc>idefindreplace.prg
<IdeSrc>idedocks.prg
<IdeSrc>idesaveload.prg
<IdeSrc>iderequests.prg
<IdeSrc>idethemes.prg
<IdeSrc>ideprojmanager.prg
<IdeSrc>idesources.prg
#
<IdeSrc>ideparseexpr.c
#
<IdeSrc>hbide.ch
<IdeSrc>hbide.ini
[ METADATA ]
#
IdeSrc = hb_dirBase()

View File

@@ -13,8 +13,8 @@
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0" colspan="3">
<widget class="QTabWidget" name="tabWidgetEnv">
<property name="currentIndex">
<number>0</number>
@@ -23,8 +23,72 @@
<attribute name="title">
<string>Environments</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_5">
<item row="2" column="1">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="labelPathMk2">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Path to hbmk2</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="editPathMk2"/>
</item>
<item row="0" column="2">
<widget class="QToolButton" name="buttonPathMk2">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="labelPathEnv">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Path to hbide.env</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="editPathEnv"/>
</item>
<item row="1" column="2">
<widget class="QToolButton" name="buttonPathEnv">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="0" colspan="3">
<widget class="QPlainTextEdit" name="editCompilers">
<property name="toolTip">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
@@ -45,115 +109,39 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayoutHbmk2">
<item>
<widget class="QLabel" name="labelPathHbmk2">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Path to hbmk2</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="editPathMk2"/>
</item>
<item>
<widget class="QToolButton" name="buttonPathMk2">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="1">
<layout class="QHBoxLayout" name="horizontalLayoutEnv">
<item>
<widget class="QLabel" name="labelPathEnv">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Path to hbIDE.env</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="editPathEnv"/>
</item>
<item>
<widget class="QToolButton" name="buttonPathEnv">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayoutEnvButtons">
<item>
<widget class="QPushButton" name="buttonSaveExit">
<property name="text">
<string>Save and Exit</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonSave">
<property name="text">
<string>Save</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonCn">
<property name="text">
<string>Cancel</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
<item row="1" column="0">
<widget class="QPushButton" name="buttonSaveExit">
<property name="text">
<string>Save and Exit</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="buttonSave">
<property name="text">
<string>Save</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="buttonCn">
<property name="text">
<string>Cancel</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>

View File

@@ -1,7 +1,7 @@
/********************************************************************************
** Form generated from reading ui file 'environments.ui'
**
** Created: Wed Feb 24 16:25:24 2010
** Created: Mon Mar 1 13:02:17 2010
** by: Qt User Interface Compiler version 4.5.2
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
@@ -15,7 +15,6 @@
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QGridLayout>
#include <QtGui/QHBoxLayout>
#include <QtGui/QHeaderView>
#include <QtGui/QLabel>
#include <QtGui/QLineEdit>
@@ -23,7 +22,6 @@
#include <QtGui/QPushButton>
#include <QtGui/QTabWidget>
#include <QtGui/QToolButton>
#include <QtGui/QVBoxLayout>
#include <QtGui/QWidget>
QT_BEGIN_NAMESPACE
@@ -31,20 +29,17 @@ QT_BEGIN_NAMESPACE
class Ui_FormEnvironments
{
public:
QVBoxLayout *verticalLayout;
QGridLayout *gridLayout_2;
QTabWidget *tabWidgetEnv;
QWidget *tabCompilers;
QGridLayout *gridLayout_5;
QPlainTextEdit *editCompilers;
QHBoxLayout *horizontalLayoutHbmk2;
QLabel *labelPathHbmk2;
QGridLayout *gridLayout;
QLabel *labelPathMk2;
QLineEdit *editPathMk2;
QToolButton *buttonPathMk2;
QHBoxLayout *horizontalLayoutEnv;
QLabel *labelPathEnv;
QLineEdit *editPathEnv;
QToolButton *buttonPathEnv;
QHBoxLayout *horizontalLayoutEnvButtons;
QPlainTextEdit *editCompilers;
QPushButton *buttonSaveExit;
QPushButton *buttonSave;
QPushButton *buttonCn;
@@ -54,91 +49,76 @@ public:
if (FormEnvironments->objectName().isEmpty())
FormEnvironments->setObjectName(QString::fromUtf8("FormEnvironments"));
FormEnvironments->resize(367, 519);
verticalLayout = new QVBoxLayout(FormEnvironments);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
gridLayout_2 = new QGridLayout(FormEnvironments);
gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2"));
tabWidgetEnv = new QTabWidget(FormEnvironments);
tabWidgetEnv->setObjectName(QString::fromUtf8("tabWidgetEnv"));
tabCompilers = new QWidget();
tabCompilers->setObjectName(QString::fromUtf8("tabCompilers"));
gridLayout_5 = new QGridLayout(tabCompilers);
gridLayout_5->setObjectName(QString::fromUtf8("gridLayout_5"));
editCompilers = new QPlainTextEdit(tabCompilers);
editCompilers->setObjectName(QString::fromUtf8("editCompilers"));
editCompilers->setLineWrapMode(QPlainTextEdit::NoWrap);
gridLayout = new QGridLayout(tabCompilers);
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
labelPathMk2 = new QLabel(tabCompilers);
labelPathMk2->setObjectName(QString::fromUtf8("labelPathMk2"));
labelPathMk2->setMinimumSize(QSize(100, 0));
labelPathMk2->setMaximumSize(QSize(100, 16777215));
gridLayout_5->addWidget(editCompilers, 2, 1, 1, 1);
horizontalLayoutHbmk2 = new QHBoxLayout();
horizontalLayoutHbmk2->setObjectName(QString::fromUtf8("horizontalLayoutHbmk2"));
labelPathHbmk2 = new QLabel(tabCompilers);
labelPathHbmk2->setObjectName(QString::fromUtf8("labelPathHbmk2"));
labelPathHbmk2->setMinimumSize(QSize(100, 0));
labelPathHbmk2->setMaximumSize(QSize(100, 16777215));
horizontalLayoutHbmk2->addWidget(labelPathHbmk2);
gridLayout->addWidget(labelPathMk2, 0, 0, 1, 1);
editPathMk2 = new QLineEdit(tabCompilers);
editPathMk2->setObjectName(QString::fromUtf8("editPathMk2"));
horizontalLayoutHbmk2->addWidget(editPathMk2);
gridLayout->addWidget(editPathMk2, 0, 1, 1, 1);
buttonPathMk2 = new QToolButton(tabCompilers);
buttonPathMk2->setObjectName(QString::fromUtf8("buttonPathMk2"));
buttonPathMk2->setMinimumSize(QSize(0, 0));
horizontalLayoutHbmk2->addWidget(buttonPathMk2);
gridLayout->addWidget(buttonPathMk2, 0, 2, 1, 1);
gridLayout_5->addLayout(horizontalLayoutHbmk2, 0, 1, 1, 1);
horizontalLayoutEnv = new QHBoxLayout();
horizontalLayoutEnv->setObjectName(QString::fromUtf8("horizontalLayoutEnv"));
labelPathEnv = new QLabel(tabCompilers);
labelPathEnv->setObjectName(QString::fromUtf8("labelPathEnv"));
labelPathEnv->setMinimumSize(QSize(100, 0));
labelPathEnv->setMaximumSize(QSize(100, 16777215));
horizontalLayoutEnv->addWidget(labelPathEnv);
gridLayout->addWidget(labelPathEnv, 1, 0, 1, 1);
editPathEnv = new QLineEdit(tabCompilers);
editPathEnv->setObjectName(QString::fromUtf8("editPathEnv"));
horizontalLayoutEnv->addWidget(editPathEnv);
gridLayout->addWidget(editPathEnv, 1, 1, 1, 1);
buttonPathEnv = new QToolButton(tabCompilers);
buttonPathEnv->setObjectName(QString::fromUtf8("buttonPathEnv"));
horizontalLayoutEnv->addWidget(buttonPathEnv);
gridLayout->addWidget(buttonPathEnv, 1, 2, 1, 1);
editCompilers = new QPlainTextEdit(tabCompilers);
editCompilers->setObjectName(QString::fromUtf8("editCompilers"));
editCompilers->setLineWrapMode(QPlainTextEdit::NoWrap);
gridLayout_5->addLayout(horizontalLayoutEnv, 1, 1, 1, 1);
gridLayout->addWidget(editCompilers, 2, 0, 1, 3);
tabWidgetEnv->addTab(tabCompilers, QString());
verticalLayout->addWidget(tabWidgetEnv);
gridLayout_2->addWidget(tabWidgetEnv, 0, 0, 1, 3);
horizontalLayoutEnvButtons = new QHBoxLayout();
horizontalLayoutEnvButtons->setObjectName(QString::fromUtf8("horizontalLayoutEnvButtons"));
buttonSaveExit = new QPushButton(FormEnvironments);
buttonSaveExit->setObjectName(QString::fromUtf8("buttonSaveExit"));
horizontalLayoutEnvButtons->addWidget(buttonSaveExit);
gridLayout_2->addWidget(buttonSaveExit, 1, 0, 1, 1);
buttonSave = new QPushButton(FormEnvironments);
buttonSave->setObjectName(QString::fromUtf8("buttonSave"));
buttonSave->setAutoDefault(false);
buttonSave->setDefault(true);
horizontalLayoutEnvButtons->addWidget(buttonSave);
gridLayout_2->addWidget(buttonSave, 1, 1, 1, 1);
buttonCn = new QPushButton(FormEnvironments);
buttonCn->setObjectName(QString::fromUtf8("buttonCn"));
buttonCn->setAutoDefault(false);
horizontalLayoutEnvButtons->addWidget(buttonCn);
verticalLayout->addLayout(horizontalLayoutEnvButtons);
gridLayout_2->addWidget(buttonCn, 1, 2, 1, 1);
retranslateUi(FormEnvironments);
@@ -152,6 +132,10 @@ public:
void retranslateUi(QWidget *FormEnvironments)
{
FormEnvironments->setWindowTitle(QApplication::translate("FormEnvironments", "Form", 0, QApplication::UnicodeUTF8));
labelPathMk2->setText(QApplication::translate("FormEnvironments", "Path to hbmk2", 0, QApplication::UnicodeUTF8));
buttonPathMk2->setText(QString());
labelPathEnv->setText(QApplication::translate("FormEnvironments", "Path to hbide.env", 0, QApplication::UnicodeUTF8));
buttonPathEnv->setText(QString());
#ifndef QT_NO_TOOLTIP
editCompilers->setToolTip(QApplication::translate("FormEnvironments", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
@@ -165,10 +149,6 @@ public:
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:8pt;\">This opens up the possibility to experiment with different compilers without re-opening the IDE or setting up the envvars manually.</span></p></body></html>", 0, QApplication::UnicodeUTF8));
#endif // QT_NO_TOOLTIP
editCompilers->setStyleSheet(QString());
labelPathHbmk2->setText(QApplication::translate("FormEnvironments", "Path to hbmk2", 0, QApplication::UnicodeUTF8));
buttonPathMk2->setText(QString());
labelPathEnv->setText(QApplication::translate("FormEnvironments", "Path to hbIDE.env", 0, QApplication::UnicodeUTF8));
buttonPathEnv->setText(QString());
tabWidgetEnv->setTabText(tabWidgetEnv->indexOf(tabCompilers), QApplication::translate("FormEnvironments", "Environments", 0, QApplication::UnicodeUTF8));
buttonSaveExit->setText(QApplication::translate("FormEnvironments", "Save and Exit", 0, QApplication::UnicodeUTF8));
buttonSave->setText(QApplication::translate("FormEnvironments", "Save", 0, QApplication::UnicodeUTF8));

View File

@@ -96,27 +96,6 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Working Folder:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="editWrkFolder">
<property name="toolTip">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;Working folder will be used to host HBMK2 compliant &lt;/span&gt;&lt;span style=&quot; font-size:8pt; font-weight:600;&quot;&gt;&amp;lt;Output Name&amp;gt;&lt;/span&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt; plus &lt;/span&gt;&lt;span style=&quot; font-size:8pt; font-weight:600;&quot;&gt;&amp;lt;hbp&amp;gt;&lt;/span&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt; and will be designated as current folder when &lt;/span&gt;&lt;span style=&quot; font-size:8pt; font-weight:600;&quot;&gt;HBMK2&lt;/span&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt; will be invoked.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
@@ -139,33 +118,6 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Compile/Link Flags:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="9" column="1" colspan="2">
<widget class="QPlainTextEdit" name="editFlags">
<property name="toolTip">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;Compiler/Linker flags may include all commands except the source files list. Additional libraries can be included here.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="styleSheet">
<string/>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
@@ -247,37 +199,8 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QToolButton" name="buttonChooseWd">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QToolButton" name="buttonHbp">
<property name="toolTip">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Loading a .hbp project file is essentially a &lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;task of redefining its flow and contents order.&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;hbIDE rewrites the existing .hbp file if the &lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&quot;Project Location&quot; points to same folder &lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;where your such loaded .hbp resides.&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;So&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;take care to change the &quot;Project Location&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;to different folder than home folder of .hbp.&lt;/p&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;This is done at the time of &quot;Build&quot; process.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="buttonXmate">
<property name="toolTip">
@@ -311,6 +234,73 @@ p, li { white-space: pre-wrap; }
</item>
</layout>
</item>
<item row="9" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="12" column="1">
<widget class="QLineEdit" name="editWrkFolder">
<property name="toolTip">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p align=&quot;center&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;Working folder will be used to host HBMK2 compliant &lt;/span&gt;&lt;span style=&quot; font-size:8pt; font-weight:600;&quot;&gt;&amp;lt;Output Name&amp;gt;&lt;/span&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt; plus &lt;/span&gt;&lt;span style=&quot; font-size:8pt; font-weight:600;&quot;&gt;&amp;lt;hbp&amp;gt;&lt;/span&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt; and will be designated as current folder when &lt;/span&gt;&lt;span style=&quot; font-size:8pt; font-weight:600;&quot;&gt;HBMK2&lt;/span&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt; will be invoked.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="12" column="0">
<widget class="QLabel" name="labelInitFolder">
<property name="text">
<string>Start In:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="12" column="2">
<widget class="QToolButton" name="buttonChooseWd">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="5" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="13" column="1">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="tabFiles">
@@ -380,48 +370,13 @@ p, li { white-space: pre-wrap; }
</item>
</layout>
</widget>
<widget class="QWidget" name="tabMeta">
<widget class="QWidget" name="tabFlags">
<attribute name="title">
<string>Meta Data</string>
<string>Flags</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QPlainTextEdit" name="editMetaHelp">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string>background-color: rgb(171, 171, 171);</string>
</property>
<property name="tabChangesFocus">
<bool>true</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
<property name="plainText">
<string>HBIDE will employ the concept of meta-data which will be used to parse the paths or other info supplied to the interface.
Usually meta-key is enclosed in curly braces, but due to the fact that HBMK2 already exploits it, HBIDE will recognize meta-key in angled brackets.
Please enter meta-keys and their values like :
MySourcePath = c:/dev_sources/vouch
in the QTextEdit below. Then whereever you will supply any key anywhere in the input fields of HBIDE interface, just enclose it in angled brackets like :
&lt;MySourcePath&gt;/vouch.prg.
Note that keys are case sensitive. So MySourcePath &lt;&gt; MYSOURCEPath.
HBIDE internally employs few keys which are shown below and are always include in the project. These accompany the value as its relevance and not as literal.
Enjoy
Pritpal Bedi</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPlainTextEdit" name="editMetaData">
<widget class="QPlainTextEdit" name="editFlags">
<property name="toolTip">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;

View File

@@ -1,7 +1,7 @@
/********************************************************************************
** Form generated from reading ui file 'projectpropertiesex.ui'
**
** Created: Wed Feb 24 16:25:25 2010
** Created: Mon Mar 1 01:10:15 2010
** by: Qt User Interface Compiler version 4.5.2
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
@@ -43,12 +43,8 @@ public:
QLineEdit *editPrjTitle;
QLabel *label_3;
QLineEdit *editPrjLoctn;
QLabel *label_4;
QLineEdit *editWrkFolder;
QLabel *label_5;
QLineEdit *editDstFolder;
QLabel *label_9;
QPlainTextEdit *editFlags;
QLabel *label_7;
QLineEdit *editLaunchParams;
QLabel *label_8;
@@ -60,11 +56,15 @@ public:
QToolButton *buttonChoosePrjLoc;
QToolButton *buttonBackup;
QToolButton *buttonChooseDest;
QToolButton *buttonChooseWd;
QHBoxLayout *horizontalLayout_7;
QToolButton *buttonHbp;
QToolButton *buttonXmate;
QSpacerItem *horizontalSpacer;
QSpacerItem *verticalSpacer;
QLineEdit *editWrkFolder;
QLabel *labelInitFolder;
QToolButton *buttonChooseWd;
QSpacerItem *verticalSpacer_2;
QSpacerItem *verticalSpacer_3;
QWidget *tabFiles;
QGridLayout *gridLayout_2;
QPlainTextEdit *editSources;
@@ -72,10 +72,9 @@ public:
QToolButton *buttonSort;
QToolButton *buttonSortZA;
QToolButton *buttonSortOrg;
QWidget *tabMeta;
QWidget *tabFlags;
QGridLayout *gridLayout_3;
QPlainTextEdit *editMetaHelp;
QPlainTextEdit *editMetaData;
QPlainTextEdit *editFlags;
QWidget *tabHbp;
QGridLayout *gridLayout_4;
QPlainTextEdit *editHbp;
@@ -135,17 +134,6 @@ public:
gridLayout->addWidget(editPrjLoctn, 3, 1, 1, 1);
label_4 = new QLabel(tabGeneral);
label_4->setObjectName(QString::fromUtf8("label_4"));
label_4->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_4, 5, 0, 1, 1);
editWrkFolder = new QLineEdit(tabGeneral);
editWrkFolder->setObjectName(QString::fromUtf8("editWrkFolder"));
gridLayout->addWidget(editWrkFolder, 5, 1, 1, 1);
label_5 = new QLabel(tabGeneral);
label_5->setObjectName(QString::fromUtf8("label_5"));
label_5->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
@@ -157,18 +145,6 @@ public:
gridLayout->addWidget(editDstFolder, 6, 1, 1, 1);
label_9 = new QLabel(tabGeneral);
label_9->setObjectName(QString::fromUtf8("label_9"));
label_9->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(label_9, 9, 0, 1, 1);
editFlags = new QPlainTextEdit(tabGeneral);
editFlags->setObjectName(QString::fromUtf8("editFlags"));
editFlags->setLineWrapMode(QPlainTextEdit::NoWrap);
gridLayout->addWidget(editFlags, 9, 1, 1, 2);
label_7 = new QLabel(tabGeneral);
label_7->setObjectName(QString::fromUtf8("label_7"));
label_7->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
@@ -228,18 +204,8 @@ public:
gridLayout->addWidget(buttonChooseDest, 6, 2, 1, 1);
buttonChooseWd = new QToolButton(tabGeneral);
buttonChooseWd->setObjectName(QString::fromUtf8("buttonChooseWd"));
gridLayout->addWidget(buttonChooseWd, 5, 2, 1, 1);
horizontalLayout_7 = new QHBoxLayout();
horizontalLayout_7->setObjectName(QString::fromUtf8("horizontalLayout_7"));
buttonHbp = new QToolButton(tabGeneral);
buttonHbp->setObjectName(QString::fromUtf8("buttonHbp"));
horizontalLayout_7->addWidget(buttonHbp);
buttonXmate = new QToolButton(tabGeneral);
buttonXmate->setObjectName(QString::fromUtf8("buttonXmate"));
@@ -252,6 +218,34 @@ public:
gridLayout->addLayout(horizontalLayout_7, 0, 1, 1, 1);
verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
gridLayout->addItem(verticalSpacer, 9, 1, 1, 1);
editWrkFolder = new QLineEdit(tabGeneral);
editWrkFolder->setObjectName(QString::fromUtf8("editWrkFolder"));
gridLayout->addWidget(editWrkFolder, 12, 1, 1, 1);
labelInitFolder = new QLabel(tabGeneral);
labelInitFolder->setObjectName(QString::fromUtf8("labelInitFolder"));
labelInitFolder->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
gridLayout->addWidget(labelInitFolder, 12, 0, 1, 1);
buttonChooseWd = new QToolButton(tabGeneral);
buttonChooseWd->setObjectName(QString::fromUtf8("buttonChooseWd"));
gridLayout->addWidget(buttonChooseWd, 12, 2, 1, 1);
verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
gridLayout->addItem(verticalSpacer_2, 5, 1, 1, 1);
verticalSpacer_3 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
gridLayout->addItem(verticalSpacer_3, 13, 1, 1, 1);
tabWidget->addTab(tabGeneral, QString());
tabFiles = new QWidget();
tabFiles->setObjectName(QString::fromUtf8("tabFiles"));
@@ -284,29 +278,17 @@ public:
gridLayout_2->addWidget(buttonSortOrg, 0, 4, 1, 1);
tabWidget->addTab(tabFiles, QString());
tabMeta = new QWidget();
tabMeta->setObjectName(QString::fromUtf8("tabMeta"));
gridLayout_3 = new QGridLayout(tabMeta);
tabFlags = new QWidget();
tabFlags->setObjectName(QString::fromUtf8("tabFlags"));
gridLayout_3 = new QGridLayout(tabFlags);
gridLayout_3->setObjectName(QString::fromUtf8("gridLayout_3"));
editMetaHelp = new QPlainTextEdit(tabMeta);
editMetaHelp->setObjectName(QString::fromUtf8("editMetaHelp"));
QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(editMetaHelp->sizePolicy().hasHeightForWidth());
editMetaHelp->setSizePolicy(sizePolicy);
editMetaHelp->setTabChangesFocus(true);
editMetaHelp->setReadOnly(true);
editFlags = new QPlainTextEdit(tabFlags);
editFlags->setObjectName(QString::fromUtf8("editFlags"));
editFlags->setLineWrapMode(QPlainTextEdit::NoWrap);
gridLayout_3->addWidget(editMetaHelp, 0, 0, 1, 1);
gridLayout_3->addWidget(editFlags, 0, 0, 1, 1);
editMetaData = new QPlainTextEdit(tabMeta);
editMetaData->setObjectName(QString::fromUtf8("editMetaData"));
editMetaData->setLineWrapMode(QPlainTextEdit::NoWrap);
gridLayout_3->addWidget(editMetaData, 1, 0, 1, 1);
tabWidget->addTab(tabMeta, QString());
tabWidget->addTab(tabFlags, QString());
tabHbp = new QWidget();
tabHbp->setObjectName(QString::fromUtf8("tabHbp"));
gridLayout_4 = new QGridLayout(tabHbp);
@@ -380,14 +362,6 @@ public:
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:8pt;\">Project location is the folder where project definition file .hbi will be stored. &lt;Project Location&gt; plus &lt;Output Name&gt; will comprise the full file name with .hbp extension.</span></p></body></html>", 0, QApplication::UnicodeUTF8));
#endif // QT_NO_TOOLTIP
label_4->setText(QApplication::translate("FormProjectPropEx", "Working Folder:", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_TOOLTIP
editWrkFolder->setToolTip(QApplication::translate("FormProjectPropEx", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:8pt;\">Working folder will be used to host HBMK2 compliant </span><span style=\" font-size:8pt; font-weight:600;\">&lt;Output Name&gt;</span><span style=\" font-size:8pt;\"> plus </span><span style=\" font-size:8pt; font-weight:600;\">&lt;hbp&gt;</span><span style=\" font-size:8pt;\"> and will be designated as current folder when </span><span style=\" font-size:8pt; font-weight:600;\">HBMK2</span><span style=\" font-size:8pt;\"> will be invoked.</span></p></body></html>", 0, QApplication::UnicodeUTF8));
#endif // QT_NO_TOOLTIP
label_5->setText(QApplication::translate("FormProjectPropEx", "Destination Folder:", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_TOOLTIP
@@ -398,15 +372,6 @@ public:
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Destination folder is a compatibility slot and is reserved to place the &lt;Output&gt; .exe .a .lib. </p>\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">But currently this functionality will be achieved through the -o compiler flag.</p></body></html>", 0, QApplication::UnicodeUTF8));
#endif // QT_NO_TOOLTIP
label_9->setText(QApplication::translate("FormProjectPropEx", "Compile/Link Flags:", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_TOOLTIP
editFlags->setToolTip(QApplication::translate("FormProjectPropEx", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:8pt;\">Compiler/Linker flags may include all commands except the source files list. Additional libraries can be included here.</span></p></body></html>", 0, QApplication::UnicodeUTF8));
#endif // QT_NO_TOOLTIP
editFlags->setStyleSheet(QString());
label_7->setText(QApplication::translate("FormProjectPropEx", "Launch Parameters:", 0, QApplication::UnicodeUTF8));
label_8->setText(QApplication::translate("FormProjectPropEx", "Launch Program:", 0, QApplication::UnicodeUTF8));
label_13->setText(QApplication::translate("FormProjectPropEx", "Backup Location:", 0, QApplication::UnicodeUTF8));
@@ -421,25 +386,6 @@ public:
buttonChoosePrjLoc->setText(QApplication::translate("FormProjectPropEx", "...", 0, QApplication::UnicodeUTF8));
buttonBackup->setText(QApplication::translate("FormProjectPropEx", "...", 0, QApplication::UnicodeUTF8));
buttonChooseDest->setText(QApplication::translate("FormProjectPropEx", "...", 0, QApplication::UnicodeUTF8));
buttonChooseWd->setText(QApplication::translate("FormProjectPropEx", "...", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_TOOLTIP
buttonHbp->setToolTip(QApplication::translate("FormProjectPropEx", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Loading a .hbp project file is essentially a </p>\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">task of redefining its flow and contents order.</p>\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">hbIDE rewrites the existing .hbp file if the </p>\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-"
"block-indent:0; text-indent:0px;\">\"Project Location\" points to same folder </p>\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">where your such loaded .hbp resides.</p>\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">So</p>\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-weight:600;\">take care to change the \"Project Location\"</span></p>\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">to different folder than home folder of .hbp.</p>\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">This is done at the time of \"Build\" proces"
"s.</p></body></html>", 0, QApplication::UnicodeUTF8));
#endif // QT_NO_TOOLTIP
buttonHbp->setText(QApplication::translate("FormProjectPropEx", "...", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_TOOLTIP
buttonXmate->setToolTip(QApplication::translate("FormProjectPropEx", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
@@ -453,6 +399,15 @@ public:
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">So you may need manual editing.</p></body></html>", 0, QApplication::UnicodeUTF8));
#endif // QT_NO_TOOLTIP
buttonXmate->setText(QApplication::translate("FormProjectPropEx", "...", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_TOOLTIP
editWrkFolder->setToolTip(QApplication::translate("FormProjectPropEx", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:8pt;\">Working folder will be used to host HBMK2 compliant </span><span style=\" font-size:8pt; font-weight:600;\">&lt;Output Name&gt;</span><span style=\" font-size:8pt;\"> plus </span><span style=\" font-size:8pt; font-weight:600;\">&lt;hbp&gt;</span><span style=\" font-size:8pt;\"> and will be designated as current folder when </span><span style=\" font-size:8pt; font-weight:600;\">HBMK2</span><span style=\" font-size:8pt;\"> will be invoked.</span></p></body></html>", 0, QApplication::UnicodeUTF8));
#endif // QT_NO_TOOLTIP
labelInitFolder->setText(QApplication::translate("FormProjectPropEx", "Start In:", 0, QApplication::UnicodeUTF8));
buttonChooseWd->setText(QApplication::translate("FormProjectPropEx", "...", 0, QApplication::UnicodeUTF8));
tabWidget->setTabText(tabWidget->indexOf(tabGeneral), QApplication::translate("FormProjectPropEx", "General", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_TOOLTIP
editSources->setToolTip(QApplication::translate("FormProjectPropEx", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
@@ -483,23 +438,8 @@ public:
#endif // QT_NO_TOOLTIP
buttonSortOrg->setText(QString());
tabWidget->setTabText(tabWidget->indexOf(tabFiles), QApplication::translate("FormProjectPropEx", "Sources", 0, QApplication::UnicodeUTF8));
editMetaHelp->setStyleSheet(QApplication::translate("FormProjectPropEx", "background-color: rgb(171, 171, 171);", 0, QApplication::UnicodeUTF8));
editMetaHelp->setPlainText(QApplication::translate("FormProjectPropEx", "HBIDE will employ the concept of meta-data which will be used to parse the paths or other info supplied to the interface.\n"
"\n"
"Usually meta-key is enclosed in curly braces, but due to the fact that HBMK2 already exploits it, HBIDE will recognize meta-key in angled brackets.\n"
"\n"
"Please enter meta-keys and their values like :\n"
" MySourcePath = c:/dev_sources/vouch\n"
"in the QTextEdit below. Then whereever you will supply any key anywhere in the input fields of HBIDE interface, just enclose it in angled brackets like :\n"
" <MySourcePath>/vouch.prg.\n"
"Note that keys are case sensitive. So MySourcePath <> MYSOURCEPath.\n"
"\n"
"HBIDE internally employs few keys which are shown below and are always include in the project. These accompany the value as its relevance and not as literal.\n"
"\n"
"Enjoy\n"
"Pritpal Bedi", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_TOOLTIP
editMetaData->setToolTip(QApplication::translate("FormProjectPropEx", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
editFlags->setToolTip(QApplication::translate("FormProjectPropEx", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
@@ -508,8 +448,8 @@ public:
"ent:0px;\"></p>\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">The expression is evaluated only once and keeps its value until the HBIDE interface is closed. In case of any error, the expression string itself is returned.</p></body></html>", 0, QApplication::UnicodeUTF8));
#endif // QT_NO_TOOLTIP
editMetaData->setStyleSheet(QString());
tabWidget->setTabText(tabWidget->indexOf(tabMeta), QApplication::translate("FormProjectPropEx", "Meta Data", 0, QApplication::UnicodeUTF8));
editFlags->setStyleSheet(QString());
tabWidget->setTabText(tabWidget->indexOf(tabFlags), QApplication::translate("FormProjectPropEx", "Flags", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_TOOLTIP
editHbp->setToolTip(QApplication::translate("FormProjectPropEx", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"

View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FormThemesEx</class>
<widget class="QWidget" name="FormThemesEx">
<class>FormThemes</class>
<widget class="QWidget" name="FormThemes">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>437</width>
<height>403</height>
<width>438</width>
<height>402</height>
</rect>
</property>
<property name="windowTitle">
@@ -15,187 +15,147 @@
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout" stretch="0,1,0,0,0,0">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
<widget class="QLabel" name="labelTheme">
<property name="maximumSize">
<size>
<width>40</width>
<height>16777215</height>
</size>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<property name="spacing">
<number>10</number>
</property>
<item>
<widget class="QLabel" name="labelTheme">
<property name="maximumSize">
<size>
<width>40</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Theme</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboThemes"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QPlainTextEdit" name="plainThemeText"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="spacing">
<number>10</number>
</property>
<item>
<widget class="QLabel" name="labelItem">
<property name="maximumSize">
<size>
<width>40</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Item</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboItems"/>
</item>
<item>
<widget class="QPushButton" name="buttonColor">
<property name="maximumSize">
<size>
<width>120</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Color</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>50</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QCheckBox" name="checkBold">
<property name="text">
<string>Bold</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkItalic">
<property name="text">
<string>Italic</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkUnderline">
<property name="text">
<string>Underline</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>120</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="Line" name="lineSep">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>10</number>
</property>
<item>
<widget class="QPushButton" name="buttonSave">
<property name="text">
<string>Save</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonSaveAs">
<property name="text">
<string>Save As</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonCopy">
<property name="text">
<string>Copy</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonApply">
<property name="text">
<string>Action</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonClose">
<property name="text">
<string>Close</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
<property name="text">
<string>Theme</string>
</property>
</widget>
</item>
<item row="0" column="1" colspan="8">
<widget class="QComboBox" name="comboThemes"/>
</item>
<item row="1" column="0" colspan="9">
<widget class="QPlainTextEdit" name="plainThemeText"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="labelItems">
<property name="maximumSize">
<size>
<width>40</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Items:</string>
</property>
</widget>
</item>
<item row="2" column="1" colspan="6">
<widget class="QComboBox" name="comboItems"/>
</item>
<item row="2" column="7" colspan="2">
<widget class="QPushButton" name="buttonColor">
<property name="maximumSize">
<size>
<width>120</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Color</string>
</property>
</widget>
</item>
<item row="3" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>50</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="1" colspan="2">
<widget class="QCheckBox" name="checkBold">
<property name="text">
<string>Bold</string>
</property>
</widget>
</item>
<item row="3" column="3" colspan="2">
<widget class="QCheckBox" name="checkItalic">
<property name="text">
<string>Italic</string>
</property>
</widget>
</item>
<item row="3" column="5" colspan="2">
<widget class="QCheckBox" name="checkUnderline">
<property name="text">
<string>Underline</string>
</property>
</widget>
</item>
<item row="3" column="7" colspan="2">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>120</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="0" colspan="9">
<widget class="Line" name="lineSep">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<widget class="QPushButton" name="buttonSave">
<property name="text">
<string>Save</string>
</property>
</widget>
</item>
<item row="5" column="2" colspan="2">
<widget class="QPushButton" name="buttonSaveAs">
<property name="text">
<string>Save As</string>
</property>
</widget>
</item>
<item row="5" column="4" colspan="2">
<widget class="QPushButton" name="buttonCopy">
<property name="text">
<string>Copy</string>
</property>
</widget>
</item>
<item row="5" column="6" colspan="2">
<widget class="QPushButton" name="buttonApply">
<property name="text">
<string>Action</string>
</property>
</widget>
</item>
<item row="5" column="8">
<widget class="QPushButton" name="buttonClose">
<property name="text">
<string>Close</string>
</property>
</widget>
</item>
</layout>
</widget>

View File

@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading ui file 'themesex.ui'
**
** Created: Wed Feb 24 21:34:08 2010
** by: Qt User Interface Compiler version 4.5.2
** Created: Tue Mar 2 16:06:43 2010
** by: Qt User Interface Compiler version 4.5.3
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/
@@ -18,208 +18,159 @@
#include <QtGui/QComboBox>
#include <QtGui/QFrame>
#include <QtGui/QGridLayout>
#include <QtGui/QHBoxLayout>
#include <QtGui/QHeaderView>
#include <QtGui/QLabel>
#include <QtGui/QPlainTextEdit>
#include <QtGui/QPushButton>
#include <QtGui/QSpacerItem>
#include <QtGui/QVBoxLayout>
#include <QtGui/QWidget>
QT_BEGIN_NAMESPACE
class Ui_FormThemesEx
class Ui_FormThemes
{
public:
QGridLayout *gridLayout;
QVBoxLayout *verticalLayout;
QHBoxLayout *horizontalLayout_6;
QLabel *labelTheme;
QComboBox *comboThemes;
QHBoxLayout *horizontalLayout_5;
QPlainTextEdit *plainThemeText;
QHBoxLayout *horizontalLayout_4;
QLabel *labelItem;
QLabel *labelItems;
QComboBox *comboItems;
QPushButton *buttonColor;
QHBoxLayout *horizontalLayout_3;
QSpacerItem *horizontalSpacer;
QCheckBox *checkBold;
QCheckBox *checkItalic;
QCheckBox *checkUnderline;
QSpacerItem *horizontalSpacer_2;
QHBoxLayout *horizontalLayout_2;
QFrame *lineSep;
QHBoxLayout *horizontalLayout;
QPushButton *buttonSave;
QPushButton *buttonSaveAs;
QPushButton *buttonCopy;
QPushButton *buttonApply;
QPushButton *buttonClose;
void setupUi(QWidget *FormThemesEx)
void setupUi(QWidget *FormThemes)
{
if (FormThemesEx->objectName().isEmpty())
FormThemesEx->setObjectName(QString::fromUtf8("FormThemesEx"));
FormThemesEx->resize(437, 403);
gridLayout = new QGridLayout(FormThemesEx);
if (FormThemes->objectName().isEmpty())
FormThemes->setObjectName(QString::fromUtf8("FormThemes"));
FormThemes->resize(438, 402);
gridLayout = new QGridLayout(FormThemes);
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
verticalLayout = new QVBoxLayout();
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
verticalLayout->setSizeConstraint(QLayout::SetDefaultConstraint);
horizontalLayout_6 = new QHBoxLayout();
horizontalLayout_6->setSpacing(10);
horizontalLayout_6->setObjectName(QString::fromUtf8("horizontalLayout_6"));
labelTheme = new QLabel(FormThemesEx);
labelTheme = new QLabel(FormThemes);
labelTheme->setObjectName(QString::fromUtf8("labelTheme"));
labelTheme->setMaximumSize(QSize(40, 16777215));
horizontalLayout_6->addWidget(labelTheme);
gridLayout->addWidget(labelTheme, 0, 0, 1, 1);
comboThemes = new QComboBox(FormThemesEx);
comboThemes = new QComboBox(FormThemes);
comboThemes->setObjectName(QString::fromUtf8("comboThemes"));
horizontalLayout_6->addWidget(comboThemes);
gridLayout->addWidget(comboThemes, 0, 1, 1, 8);
verticalLayout->addLayout(horizontalLayout_6);
horizontalLayout_5 = new QHBoxLayout();
horizontalLayout_5->setObjectName(QString::fromUtf8("horizontalLayout_5"));
plainThemeText = new QPlainTextEdit(FormThemesEx);
plainThemeText = new QPlainTextEdit(FormThemes);
plainThemeText->setObjectName(QString::fromUtf8("plainThemeText"));
horizontalLayout_5->addWidget(plainThemeText);
gridLayout->addWidget(plainThemeText, 1, 0, 1, 9);
labelItems = new QLabel(FormThemes);
labelItems->setObjectName(QString::fromUtf8("labelItems"));
labelItems->setMaximumSize(QSize(40, 16777215));
verticalLayout->addLayout(horizontalLayout_5);
gridLayout->addWidget(labelItems, 2, 0, 1, 1);
horizontalLayout_4 = new QHBoxLayout();
horizontalLayout_4->setSpacing(10);
horizontalLayout_4->setObjectName(QString::fromUtf8("horizontalLayout_4"));
labelItem = new QLabel(FormThemesEx);
labelItem->setObjectName(QString::fromUtf8("labelItem"));
labelItem->setMaximumSize(QSize(40, 16777215));
horizontalLayout_4->addWidget(labelItem);
comboItems = new QComboBox(FormThemesEx);
comboItems = new QComboBox(FormThemes);
comboItems->setObjectName(QString::fromUtf8("comboItems"));
horizontalLayout_4->addWidget(comboItems);
gridLayout->addWidget(comboItems, 2, 1, 1, 6);
buttonColor = new QPushButton(FormThemesEx);
buttonColor = new QPushButton(FormThemes);
buttonColor->setObjectName(QString::fromUtf8("buttonColor"));
buttonColor->setMaximumSize(QSize(120, 16777215));
horizontalLayout_4->addWidget(buttonColor);
gridLayout->addWidget(buttonColor, 2, 7, 1, 2);
verticalLayout->addLayout(horizontalLayout_4);
horizontalLayout_3 = new QHBoxLayout();
horizontalLayout_3->setObjectName(QString::fromUtf8("horizontalLayout_3"));
horizontalSpacer = new QSpacerItem(50, 20, QSizePolicy::Fixed, QSizePolicy::Minimum);
horizontalLayout_3->addItem(horizontalSpacer);
gridLayout->addItem(horizontalSpacer, 3, 0, 1, 1);
checkBold = new QCheckBox(FormThemesEx);
checkBold = new QCheckBox(FormThemes);
checkBold->setObjectName(QString::fromUtf8("checkBold"));
horizontalLayout_3->addWidget(checkBold);
gridLayout->addWidget(checkBold, 3, 1, 1, 2);
checkItalic = new QCheckBox(FormThemesEx);
checkItalic = new QCheckBox(FormThemes);
checkItalic->setObjectName(QString::fromUtf8("checkItalic"));
horizontalLayout_3->addWidget(checkItalic);
gridLayout->addWidget(checkItalic, 3, 3, 1, 2);
checkUnderline = new QCheckBox(FormThemesEx);
checkUnderline = new QCheckBox(FormThemes);
checkUnderline->setObjectName(QString::fromUtf8("checkUnderline"));
horizontalLayout_3->addWidget(checkUnderline);
gridLayout->addWidget(checkUnderline, 3, 5, 1, 2);
horizontalSpacer_2 = new QSpacerItem(120, 20, QSizePolicy::Fixed, QSizePolicy::Minimum);
horizontalLayout_3->addItem(horizontalSpacer_2);
gridLayout->addItem(horizontalSpacer_2, 3, 7, 1, 2);
verticalLayout->addLayout(horizontalLayout_3);
horizontalLayout_2 = new QHBoxLayout();
horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2"));
lineSep = new QFrame(FormThemesEx);
lineSep = new QFrame(FormThemes);
lineSep->setObjectName(QString::fromUtf8("lineSep"));
lineSep->setFrameShape(QFrame::HLine);
lineSep->setFrameShadow(QFrame::Sunken);
horizontalLayout_2->addWidget(lineSep);
gridLayout->addWidget(lineSep, 4, 0, 1, 9);
verticalLayout->addLayout(horizontalLayout_2);
horizontalLayout = new QHBoxLayout();
horizontalLayout->setSpacing(10);
horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
buttonSave = new QPushButton(FormThemesEx);
buttonSave = new QPushButton(FormThemes);
buttonSave->setObjectName(QString::fromUtf8("buttonSave"));
horizontalLayout->addWidget(buttonSave);
gridLayout->addWidget(buttonSave, 5, 0, 1, 2);
buttonSaveAs = new QPushButton(FormThemesEx);
buttonSaveAs = new QPushButton(FormThemes);
buttonSaveAs->setObjectName(QString::fromUtf8("buttonSaveAs"));
horizontalLayout->addWidget(buttonSaveAs);
gridLayout->addWidget(buttonSaveAs, 5, 2, 1, 2);
buttonCopy = new QPushButton(FormThemesEx);
buttonCopy = new QPushButton(FormThemes);
buttonCopy->setObjectName(QString::fromUtf8("buttonCopy"));
horizontalLayout->addWidget(buttonCopy);
gridLayout->addWidget(buttonCopy, 5, 4, 1, 2);
buttonApply = new QPushButton(FormThemesEx);
buttonApply = new QPushButton(FormThemes);
buttonApply->setObjectName(QString::fromUtf8("buttonApply"));
horizontalLayout->addWidget(buttonApply);
gridLayout->addWidget(buttonApply, 5, 6, 1, 2);
buttonClose = new QPushButton(FormThemesEx);
buttonClose = new QPushButton(FormThemes);
buttonClose->setObjectName(QString::fromUtf8("buttonClose"));
horizontalLayout->addWidget(buttonClose);
gridLayout->addWidget(buttonClose, 5, 8, 1, 1);
verticalLayout->addLayout(horizontalLayout);
retranslateUi(FormThemes);
verticalLayout->setStretch(1, 1);
gridLayout->addLayout(verticalLayout, 0, 0, 1, 1);
retranslateUi(FormThemesEx);
QMetaObject::connectSlotsByName(FormThemesEx);
QMetaObject::connectSlotsByName(FormThemes);
} // setupUi
void retranslateUi(QWidget *FormThemesEx)
void retranslateUi(QWidget *FormThemes)
{
FormThemesEx->setWindowTitle(QApplication::translate("FormThemesEx", "Form", 0, QApplication::UnicodeUTF8));
labelTheme->setText(QApplication::translate("FormThemesEx", "Theme", 0, QApplication::UnicodeUTF8));
labelItem->setText(QApplication::translate("FormThemesEx", "Item", 0, QApplication::UnicodeUTF8));
buttonColor->setText(QApplication::translate("FormThemesEx", "Color", 0, QApplication::UnicodeUTF8));
checkBold->setText(QApplication::translate("FormThemesEx", "Bold", 0, QApplication::UnicodeUTF8));
checkItalic->setText(QApplication::translate("FormThemesEx", "Italic", 0, QApplication::UnicodeUTF8));
checkUnderline->setText(QApplication::translate("FormThemesEx", "Underline", 0, QApplication::UnicodeUTF8));
buttonSave->setText(QApplication::translate("FormThemesEx", "Save", 0, QApplication::UnicodeUTF8));
buttonSaveAs->setText(QApplication::translate("FormThemesEx", "Save As", 0, QApplication::UnicodeUTF8));
buttonCopy->setText(QApplication::translate("FormThemesEx", "Copy", 0, QApplication::UnicodeUTF8));
buttonApply->setText(QApplication::translate("FormThemesEx", "Action", 0, QApplication::UnicodeUTF8));
buttonClose->setText(QApplication::translate("FormThemesEx", "Close", 0, QApplication::UnicodeUTF8));
Q_UNUSED(FormThemesEx);
FormThemes->setWindowTitle(QApplication::translate("FormThemes", "Form", 0, QApplication::UnicodeUTF8));
labelTheme->setText(QApplication::translate("FormThemes", "Theme", 0, QApplication::UnicodeUTF8));
labelItems->setText(QApplication::translate("FormThemes", "Items:", 0, QApplication::UnicodeUTF8));
buttonColor->setText(QApplication::translate("FormThemes", "Color", 0, QApplication::UnicodeUTF8));
checkBold->setText(QApplication::translate("FormThemes", "Bold", 0, QApplication::UnicodeUTF8));
checkItalic->setText(QApplication::translate("FormThemes", "Italic", 0, QApplication::UnicodeUTF8));
checkUnderline->setText(QApplication::translate("FormThemes", "Underline", 0, QApplication::UnicodeUTF8));
buttonSave->setText(QApplication::translate("FormThemes", "Save", 0, QApplication::UnicodeUTF8));
buttonSaveAs->setText(QApplication::translate("FormThemes", "Save As", 0, QApplication::UnicodeUTF8));
buttonCopy->setText(QApplication::translate("FormThemes", "Copy", 0, QApplication::UnicodeUTF8));
buttonApply->setText(QApplication::translate("FormThemes", "Action", 0, QApplication::UnicodeUTF8));
buttonClose->setText(QApplication::translate("FormThemes", "Close", 0, QApplication::UnicodeUTF8));
Q_UNUSED(FormThemes);
} // retranslateUi
};
namespace Ui {
class FormThemesEx: public Ui_FormThemesEx {};
class FormThemes: public Ui_FormThemes {};
} // namespace Ui
QT_END_NAMESPACE

View File

@@ -77,9 +77,13 @@ CLASS HbQtUI
DATA qParent
DATA pSlots
DATA pEvents
DATA oWidget
DATA cMainWidgetName
DATA qObj INIT hb_hash()
DATA widgets INIT {}
DATA aCommands INIT {}
DATA aSignals INIT {}
DATA aEvents INIT {}
@@ -140,40 +144,83 @@ METHOD HbQtUI:create( cFile, qParent )
METHOD HbQtUI:destroy()
LOCAL a_, i
//LOCAL cNam, cCmd, cWdg, n
::oWidget:hide()
FOR EACH a_ IN ::aSignals
Qt_Slots_disConnect( ::pSlots, a_[ 1 ], a_[ 2 ] )
i := Qt_Slots_disConnect( ::pSlots, a_[ 1 ], a_[ 2 ] )
//hbq_dbg( 300, i, "Qt_Slots_disConnect", a_[ 2 ] )
a_:= NIL
NEXT
::pSlots := NIL
FOR EACH a_ IN ::aEvents
Qt_Events_disConnect( ::pEvents, a_[ 1 ], a_[ 2 ] )
NEXT
::pEvents := NIL
#if 0
FOR EACH a_ IN ::aCommands
IF a_[ 1 ] $ ::qObj
IF ! "splitter" $ lower( a_[ 1 ] )
cNam := a_[ 1 ] ; cCmd := a_[ 2 ]
IF ( "addWidget" $ cCmd ) .OR. ( "addWidget" $ cCmd )
IF ( n := at( "(o[ ", cCmd ) ) > 0
cWdg := substr( cCmd, n + 5 )
IF ( n := at( '"', cWdg ) ) > 0
cWdg := substr( cWdg, 1, n - 1 )
IF "addWidget" $ cCmd
hbide_dbg( 200, cNam, cWdg )
::qObj[ cNam ]:removeWidget( ::qObj[ cWdg ] )
ELSEIF "addLayout" $ cCmd
hbide_dbg( 205, cNam, cWdg )
::qObj[ cNam ]:removeLayout( ::qObj[ cWdg ] )
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
NEXT
#endif
FOR EACH a_ IN ::widgets DESCEND
IF ( i := a_:__enumIndex() ) > 1
IF type( a_[ 3 ] ) == "UI" .AND. !( a_[ 1 ] $ "QHBoxLayout,QVBoxLayout,QGridLayout" )
hbide_dbg( "HbQtUI:destroy( 0 )", pad( a_[ 1 ], 20 ), pad( a_[ 2 ], 20 ), iif( i > 1, pad( ::widgets[ i - 1, 1 ],20 ), NIL ), i, len( ::widgets ) )
::qObj[ a_[ 2 ] ] := NIL
IF type( a_[ 3 ] ) == "UI"
IF !( a_[ 1 ] $ "QHBoxLayout,QVBoxLayout,QGridLayout" )
//hbq_dbg( 400, i, pad( a_[ 1 ], 20 ), pad( a_[ 2 ], 20 ), iif( i > 1, pad( ::widgets[ i - 1, 1 ],20 ), NIL ), i, len( ::widgets ) )
::qObj[ a_[ 2 ] ] := NIL
ENDIF
ELSEIF type( a_[ 3 ] ) != "UI"
//hbq_dbg( 500, 0, pad( a_[ 1 ], 20 ), pad( a_[ 2 ], 20 ), iif( i > 1, pad( ::widgets[ i - 1, 1 ],20 ), NIL ), i, len( ::widgets ) )
ENDIF
ENDIF
NEXT
#if 1
FOR EACH a_ IN ::widgets DESCEND
IF a_:__enumIndex() > 1
IF ( i := a_:__enumIndex() ) > 1
IF type( a_[ 3 ] ) == "UI" .AND. ( a_[ 1 ] $ "QHBoxLayout,QVBoxLayout,QGridLayout" )
hbide_dbg( "HbQtUI:destroy( 1 )", pad( a_[ 1 ], 20 ), pad( a_[ 2 ], 20 ), iif( i > 1, pad( ::widgets[ i - 1, 1 ],20 ), NIL ), i, len( ::widgets ) )
::qObj[ a_[ 2 ] ] := NIL
IF i > 2
//hbq_dbg( 600, i, pad( a_[ 1 ], 20 ), pad( a_[ 2 ], 20 ), iif( i > 1, pad( ::widgets[ i - 1, 1 ],20 ), NIL ), i, len( ::widgets ) )
::qObj[ a_[ 2 ] ] := NIL
ENDIF
ENDIF
ENDIF
NEXT
#endif
::oWidget:close()
::oWidget := NIL
::qObj[ ::cMainWidgetName ] := NIL
::widgets[ 1, 2 ] := NIL
::aEvents := NIL
::aSignals := NIL
//hbq_dbg( 101 )
aeval( ::aSignals, {|e_| iif( ! empty( e_ ), hbide_dbg( e_[ 2 ] ), NIL ) } )// := NIL
::oWidget:close()
//hbq_dbg( 102 )
::oWidget := NIL
//hbq_dbg( 103 )
hbide_justACall( i )
RETURN NIL
/*----------------------------------------------------------------------*/
@@ -344,14 +391,14 @@ METHOD HbQtUI:build( cFileOrBuffer, qParent )
IF n == 0
RETURN Self
ENDIF
s := alltrim( ::org[ n ] )
n := at( "*", s )
s := alltrim( ::org[ n ] )
n := at( "*", s )
cMCls := alltrim( substr( s, 1, n - 1 ) )
cMNam := alltrim( substr( s, n + 1 ) )
hbq_stripFront( @cMCls, "(" )
hbq_stripRear( @cMNam, ")" )
//
hbq_dbg( "Widget ", pad( cMNam, 20 ), pad( cMCls, 20 ), cMCls+"():new()" )
// hbq_dbg( "Widget ", pad( cMNam, 20 ), pad( cMCls, 20 ), cMCls+"():new()" )
// Validator Constructor
aadd( ::widgets, { cMCls, cMNam, cMCls+"()", cMCls+"():new()" } )
@@ -391,12 +438,12 @@ METHOD HbQtUI:build( cFileOrBuffer, qParent )
cNam := substr( s, 1, n - 1 )
aadd( ::widgets, { cCls, cNam, cCls+"()", cCls+"():new"+substr( s, n ) } )
//
hbq_dbg( "Object ", pad( cNam, 20 ), pad( cCls, 20 ), cCls+"():new"+substr( s, n ) )
* hbq_dbg( "Object ", pad( cNam, 20 ), pad( cCls, 20 ), cCls+"():new"+substr( s, n ) )
ELSE
cNam := s
aadd( ::widgets, { cCls, cNam, cCls+"()", cCls+"():new()" } )
//
hbq_dbg( "Object ", pad( cNam, 20 ), pad( cCls,20 ), cCls+"():new()" )
* hbq_dbg( "Object ", pad( cNam, 20 ), pad( cCls,20 ), cCls+"():new()" )
ENDIF
ELSEIF hbq_isObjectNameSet( s )
@@ -408,7 +455,7 @@ METHOD HbQtUI:build( cFileOrBuffer, qParent )
cCmd := ::formatCommand( substr( cText, n + 2 ), .t. )
aadd( aCommands, { cNam, cCmd } )
//
hbq_dbg( "Command ", pad( cNam, 20 ), cCmd )
* hbq_dbg( "Command ", pad( cNam, 20 ), cCmd )
ELSEIF !empty( cText := hbq_pullText( ::org, s:__enumIndex() ) )
n := at( "->", cText )
@@ -416,7 +463,7 @@ METHOD HbQtUI:build( cFileOrBuffer, qParent )
cCmd := ::formatCommand( substr( cText, n + 2 ), .t. )
aadd( aCommands, { cNam, cCmd } )
//
hbq_dbg( "Command ", pad( cNam, 20 ), cCmd )
* hbq_dbg( "Command ", pad( cNam, 20 ), cCmd )
ELSEIF hbq_isValidCmdLine( s ) .AND. !( "->" $ s ) .AND. ( ( n := at( ".", s ) ) > 0 ) /* Assignment to objects on stack */
cNam := substr( s, 1, n - 1 )
@@ -426,7 +473,7 @@ METHOD HbQtUI:build( cFileOrBuffer, qParent )
cCmd := hbq_setObjects( cCmd, ::widgets )
aadd( aCommands, { cNam, cCmd } )
//
hbq_dbg( "Command ", pad( cNam, 20 ), cCmd )
* hbq_dbg( "Command ", pad( cNam, 20 ), cCmd )
ELSEIF !( left( s, 1 ) $ '#/*"' ) .AND. ; /* Assignment with properties from objects */
( ( n := at( ".", s ) ) > 0 ) .AND. ;
@@ -438,7 +485,7 @@ METHOD HbQtUI:build( cFileOrBuffer, qParent )
cCmd := hbq_setObjects( cCmd, ::widgets )
aadd( aCommands, { cNam, cCmd } )
//
hbq_dbg( "Command ", pad( cNam, 20 ), cCmd )
* hbq_dbg( "Command ", pad( cNam, 20 ), cCmd )
ELSEIF ( n := at( "->", s ) ) > 0 /* Assignments or calls to objects on heap */
cNam := substr( s, 1, n - 1 )
@@ -446,7 +493,7 @@ METHOD HbQtUI:build( cFileOrBuffer, qParent )
cCmd := hbq_setObjects( cCmd, ::widgets )
aadd( aCommands, { cNam, cCmd } )
//
hbq_dbg( "Command ", pad( cNam, 20 ), cCmd )
* hbq_dbg( "Command ", pad( cNam, 20 ), cCmd )
ELSEIF ( n := at( "= new", s ) ) > 0
IF ( n1 := at( "*", s ) ) > 0 .AND. n1 < n
@@ -459,13 +506,15 @@ METHOD HbQtUI:build( cFileOrBuffer, qParent )
n := at( "(", cCmd )
cCls := substr( cCmd, 1, n - 1 )
aadd( ::widgets, { cCls, cNam, cCls+"()", cCls+"():new"+substr(cCmd,n) } )
hbq_dbg( "new ", pad( cNam, 20 ), cCmd )
* hbq_dbg( "new ", pad( cNam, 20 ), cCmd )
ENDIF
NEXT
/* Platform is ready */
::cMainWidgetName := cMNam
SWITCH cMCls
CASE "QDialog"
::oWidget := QDialog():new( ::qParent )
@@ -481,12 +530,12 @@ METHOD HbQtUI:build( cFileOrBuffer, qParent )
::qObj[ cMNam ] := ::oWidget
hbq_dbg( "------------------------------------------------------------" )
//hbq_dbg( "------------------------------------------------------------" )
FOR EACH a_ IN ::widgets
IF a_:__enumIndex() > 1
IF type( a_[ 3 ] ) == "UI"
cBlock := "{|o| " + a_[ 4 ] + "}"
hbq_dbg( "Constr ", pad( a_[ 2 ], 20 ), cBlock )
//hbq_dbg( "Constr ", pad( a_[ 2 ], 20 ), cBlock )
bBlock := &( cBlock )
x := eval( bBlock, ::qObj )
@@ -494,11 +543,13 @@ hbq_dbg( "Constr ", pad( a_[ 2 ], 20 ), cBlock )
::qObj[ a_[ 2 ] ] := x
ENDIF
ELSE
hbq_dbg( "----------------------------", a_[ 3 ] )
//hbq_dbg( "----------------------------", a_[ 3 ] )
ENDIF
ENDIF
NEXT
hbq_dbg( "------------------------------------------------------------" )
//hbq_dbg( "------------------------------------------------------------" )
::aCommands := aCommands
FOR EACH a_ IN aCommands
IF a_[ 1 ] $ ::qObj
@@ -539,7 +590,7 @@ hbq_dbg( "------------------------------------------------------------" )
ELSE
cBlock := "{|o,v| o[v]:" + cCmd + "}"
hbq_dbg( pad( a_[ 1 ], 20 ), cBlock )
//hbq_dbg( pad( a_[ 1 ], 20 ), cBlock )
bBlock := &( cBlock )
eval( bBlock, ::qObj, cNam )
@@ -878,3 +929,4 @@ STATIC FUNCTION hbq_getConstants()
/*----------------------------------------------------------------------*/

View File

@@ -99,7 +99,6 @@ extern QT_G_FUNC( hbqt_gcRelease_QHttpHeader );
extern QT_G_FUNC( hbqt_gcRelease_QHttpRequestHeader );
extern QT_G_FUNC( hbqt_gcRelease_QHttpResponseHeader );
extern QT_G_FUNC( hbqt_gcRelease_QIcon );
extern QT_G_FUNC( hbqt_gcRelease_QInputContext );
extern QT_G_FUNC( hbqt_gcRelease_QInputMethodEvent );
extern QT_G_FUNC( hbqt_gcRelease_QImage );
extern QT_G_FUNC( hbqt_gcRelease_QImageReader );
@@ -386,7 +385,6 @@ extern void * hbqt_gcAllocate_QHttpHeader( void * pObj, bool bNew );
extern void * hbqt_gcAllocate_QHttpRequestHeader( void * pObj, bool bNew );
extern void * hbqt_gcAllocate_QHttpResponseHeader( void * pObj, bool bNew );
extern void * hbqt_gcAllocate_QIcon( void * pObj, bool bNew );
extern void * hbqt_gcAllocate_QInputContext( void * pObj, bool bNew );
extern void * hbqt_gcAllocate_QInputMethodEvent( void * pObj, bool bNew );
extern void * hbqt_gcAllocate_QImage( void * pObj, bool bNew );
extern void * hbqt_gcAllocate_QImageReader( void * pObj, bool bNew );

View File

@@ -145,8 +145,10 @@ METHOD XbpTreeView:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::xbpWindow:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::oWidget := QTreeWidget():new( ::pParent )
::oWidget:setMouseTracking( .t. )
::oWidget:setColumnCount( 1 )
::oWidget:setHeaderHidden( .t. )
::oWidget:setContextMenuPolicy( Qt_CustomContextMenu )
#if 0
@@ -169,20 +171,17 @@ METHOD XbpTreeView:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
oW:pPtr := ::oWidget:invisibleRootItem()
::oRootItem:oWidget := oW
/* Window Events */
::oWidget:installEventFilter( ::pEvents )
::connectEvent( ::pWidget, QEvent_ContextMenu, {|e| ::grabEvent( QEvent_ContextMenu, e ) } )
* ::connect( ::pWidget, "currentItemChanged(QTWItem)" , {|p1,p2| ::exeBlock( 1, p1, p2 ) } )
* ::connect( ::pWidget, "itemActivated(QTWItem)" , {|p1,p2| ::exeBlock( 2, p1, p2 ) } )
* ::connect( ::pWidget, "itemChanged(QTWItem)" , {|p1,p2| ::exeBlock( 3, p1, p2 ) } )
::connect( ::pWidget, "itemClicked(QTWItem)" , {|p1,p2| ::exeBlock( 4, p1, p2 ) } )
::connect( ::pWidget, "itemCollapsed(QTWItem)" , {|p1,p2| ::exeBlock( 5, p1, p2 ) } )
::connect( ::pWidget, "itemDoubleClicked(QTWItem)" , {|p1,p2| ::exeBlock( 6, p1, p2 ) } )
* ::connect( ::pWidget, "itemEntered(QTWItem)" , {|p1,p2| ::exeBlock( 7, p1, p2 ) } )
::connect( ::pWidget, "itemExpanded(QTWItem)" , {|p1,p2| ::exeBlock( 8, p1, p2 ) } )
* ::connect( ::pWidget, "itemPressed(QTWItem)" , {|p1,p2| ::exeBlock( 9, p1, p2 ) } )
* ::connect( ::pWidget, "itemSelectionChanged()" , {|p1,p2| ::exeBlock( 10, p1, p2 ) } )
* ::connect( ::pWidget, "currentItemChanged(QTWItem)" , {|p1,p2| ::exeBlock( 1, p1, p2 ) } )
* ::connect( ::pWidget, "itemActivated(QTWItem)" , {|p1,p2| ::exeBlock( 2, p1, p2 ) } )
* ::connect( ::pWidget, "itemChanged(QTWItem)" , {|p1,p2| ::exeBlock( 3, p1, p2 ) } )
::connect( ::pWidget, "itemClicked(QTWItem)" , {|p1,p2| ::exeBlock( 4, p1, p2 ) } )
::connect( ::pWidget, "itemCollapsed(QTWItem)" , {|p1,p2| ::exeBlock( 5, p1, p2 ) } )
::connect( ::pWidget, "itemDoubleClicked(QTWItem)" , {|p1,p2| ::exeBlock( 6, p1, p2 ) } )
::connect( ::pWidget, "itemEntered(QTWItem)" , {|p1,p2| ::exeBlock( 7, p1, p2 ) } )
::connect( ::pWidget, "itemExpanded(QTWItem)" , {|p1,p2| ::exeBlock( 8, p1, p2 ) } )
* ::connect( ::pWidget, "itemPressed(QTWItem)" , {|p1,p2| ::exeBlock( 9, p1, p2 ) } )
* ::connect( ::pWidget, "itemSelectionChanged()" , {|p1,p2| ::exeBlock( 10, p1, p2 ) } )
::connect( ::pWidget, "customContextMenuRequested(QPoint)", {|p1 | ::exeBlock( 21, p1 ) } )
::setPosAndSize()
IF ::visible
@@ -208,7 +207,7 @@ METHOD XbpTreeView:hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams,
/*----------------------------------------------------------------------*/
METHOD XbpTreeView:ExeBlock( nMsg, p1, p2 )
LOCAL oItem, n
LOCAL oItem, n, qPt
HB_SYMBOL_UNUSED( nMsg )
HB_SYMBOL_UNUSED( p1 )
@@ -237,6 +236,8 @@ METHOD XbpTreeView:ExeBlock( nMsg, p1, p2 )
eval( ::sl_itemSelected, oItem, {0,0,0,0}, self )
ENDIF
CASE nMsg == 7 // "itemEntered(QTWItem)"
::oWidget:setToolTip( oItem:caption )
CASE nMsg == 8 // "itemExpanded(QTWItem)"
IF hb_isBlock( ::sl_itemExpanded )
eval( ::sl_itemExpanded, oItem, {0,0,0,0}, self )
@@ -244,6 +245,10 @@ METHOD XbpTreeView:ExeBlock( nMsg, p1, p2 )
CASE nMsg == 9 // "itemPressed(QTWItem)"
CASE nMsg == 10 // "itemSelectionChanged()"
CASE nMsg == 21 // "contextmenu"
qPt := QPoint():from( ::oWidget:mapToGlobal( p1 ) )
::hbContextMenu( { qPt:x(), qPt:y() } )
ENDCASE
RETURN .f.
@@ -266,8 +271,6 @@ METHOD XbpTreeView:destroy()
::disconnect()
FOR i := len( ::aItems ) TO 1 step -1
// aeval( ::aItems[ i ]:aChilds, {|e,j| e := e, ::aItems[ i ]:aChilds[ j ] := NIL } )
// ::aItems[ i ]:oWidget:pPtr := NIL
::aItems[ i ]:destroy()
NEXT
::aItems := NIL