2010-07-11 19:29 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)

* contrib/hbide/hbide.hbp
    - Deleted: ideprotos.prg

  - contrib/hbide/plugins/example_gui.hbs
  + contrib/hbide/plugins/hbide_script_qtgui.hbs
    + Added: the prefix "hbide_script_" to hbide callable script files.

  - contrib/hbide/plugins/savebackup.hbs
  + contrib/hbide/plugins/hbide_plugin_savebackup.hbs
    + Added: the prefix "hbide_plugin_" to hbIDE plugin files.

  + contrib/hbide/resources/file-open.png
  * contrib/hbide/hbide.qrc
    + Added: one more image for tool-buttons on "Files" page of "Setup".

  * contrib/hbide/editor.ui
  * contrib/hbide/environments.ui
  * contrib/hbide/setup.ui
    % Modified and Added: some of the components.

  * contrib/hbide/hbide.prg
  * contrib/hbide/ideeditor.prg
  * contrib/hbide/ideenviron.prg
  * contrib/hbide/ideharbourhelp.prg
  * contrib/hbide/idehbprotos.prg
  * contrib/hbide/idemisc.prg
  * contrib/hbide/ideplugins.prg
  * contrib/hbide/ideprojmanager.prg
  * contrib/hbide/idesaveload.prg
  * contrib/hbide/ideskeletons.prg
  * contrib/hbide/idesources.prg
  * contrib/hbide/idethemes.prg
    + Implemented: hbIDE installation independent paths to hold 
      various files and components. Now only hbide.ini reference is 
      required to load all other parameters pointing to next 
      needed locations for various components. It also effectively
      means that hbIDE can be distributed as stand alone single 
      executable ( if linked statically with Qt ) or only with 
      Qt's run-time .dlls. hbIDE now makes no assumptions itself.
      User has to furnish few infos, though, interfaced at a single point.

      The Interface to hold information : <Setup><Files>
 
      The Paths and Files Interpretation:

         0. hbide.ini Path                  - File - Cmd Line: APPDATA|HOME/hbide
         1. Harbour's Root Path             - Path - No Assumptions: should be provided
         2. Hbmk2 Executable Location       - File - Default: hb_getenv("HBIDE_DIR_HBMK2")/hbmk2
         3. Resources [Plugins,Scripts,etc] - Path - Default: _Path_of_hbIDE_ini_
         4. Temporary Files                 - Path - Reserved: TODO
         5. Environments [.env]             - File - Default: _Path_of_hbIDE_ini_dot_env
         6. Keyboard Mappings [.scu]        - File - Default: _Path_of_hbIDE_ini_dot_scu
         7. Code Snippets [.skl]            - File - Default: _Path_of_hbIDE_ini_dot_skl
         8. Syntax Highlighter Themes [.hbt]- File - Default: _Path_of_hbIDE_ini_dot_hbt

      The interface provides for a quick editing of .env.skl.hbt files in-place.
      Interface also provides for viewing facility of hbide.ini file.
 
      Plugins and scripts have gone prefix and usage changes:

         1. _Path_to_Resources/hbide_auto_*.hbs|prg are automatically executed
            just after hbIDE appears on the screen.

         2. _Path_to_Resources/hbide_plugin_*.prg|hbs|hrb can be defined to be 
            executed as per previous instructions.
 
         3. _Path_to_Resources/hbide_protos_* are automatically loaded for 
            code completion lists leading to proto-tips. [New - details below]

    + Implemented: auto loading of code completion lists and proto-tips.
      Any file as hbide_protos_SOMENAME_with_or_without_extention placed in 
      _Resources_ folder will be automatically loaded at startup. These files 
      are plain text files. The following rules apply:

         1. Each proto must be placed on one line.
         2. Blank lines are permissible.
         3. Commands can be placed on multiple lines, 
            each line ending with ";" except the last one, like:
               COPY [TO <(f)>] [SDF] [FIELDS <fields,...>] ;
                    [FOR <for>] [WHILE <while>] [NEXT <next>] ;
                    [RECORD <rec>] [<rest:REST>] [ALL] [CODEPAGE <cp>]
         4. Functions must be opened with a brace without any preceeding space:
               MyFunction ( abd, cde, efg )  =>  Wrong
               MyFunction( abd, cde, efg )   =>  Right

      I must be omitting some more facts which may have been changed|removed.
      Also regression is possible, please make few tests and report back if 
      something went weired.
This commit is contained in:
Pritpal Bedi
2010-07-12 04:41:12 +00:00
parent c6a6d0afea
commit 5aed11e87b
21 changed files with 820 additions and 1915 deletions

View File

@@ -16,6 +16,96 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-07-11 19:29 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbide/hbide.hbp
- Deleted: ideprotos.prg
- contrib/hbide/plugins/example_gui.hbs
+ contrib/hbide/plugins/hbide_script_qtgui.hbs
+ Added: the prefix "hbide_script_" to hbide callable script files.
- contrib/hbide/plugins/savebackup.hbs
+ contrib/hbide/plugins/hbide_plugin_savebackup.hbs
+ Added: the prefix "hbide_plugin_" to hbIDE plugin files.
+ contrib/hbide/resources/file-open.png
* contrib/hbide/hbide.qrc
+ Added: one more image for tool-buttons on "Files" page of "Setup".
* contrib/hbide/editor.ui
* contrib/hbide/environments.ui
* contrib/hbide/setup.ui
% Modified and Added: some of the components.
* contrib/hbide/hbide.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideenviron.prg
* contrib/hbide/ideharbourhelp.prg
* contrib/hbide/idehbprotos.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideplugins.prg
* contrib/hbide/ideprojmanager.prg
* contrib/hbide/idesaveload.prg
* contrib/hbide/ideskeletons.prg
* contrib/hbide/idesources.prg
* contrib/hbide/idethemes.prg
+ Implemented: hbIDE installation independent paths to hold
various files and components. Now only hbide.ini reference is
required to load all other parameters pointing to next
needed locations for various components. It also effectively
means that hbIDE can be distributed as stand alone single
executable ( if linked statically with Qt ) or only with
Qt's run-time .dlls. hbIDE now makes no assumptions itself.
User has to furnish few infos, though, interfaced at a single point.
The Interface to hold information : <Setup><Files>
The Paths and Files Interpretation:
0. hbide.ini Path - File - Cmd Line: APPDATA|HOME/hbide
1. Harbour's Root Path - Path - No Assumptions: should be provided
2. Hbmk2 Executable Location - File - Default: hb_getenv("HBIDE_DIR_HBMK2")/hbmk2
3. Resources [Plugins,Scripts,etc] - Path - Default: _Path_of_hbIDE_ini_
4. Temporary Files - Path - Reserved: TODO
5. Environments [.env] - File - Default: _Path_of_hbIDE_ini_dot_env
6. Keyboard Mappings [.scu] - File - Default: _Path_of_hbIDE_ini_dot_scu
7. Code Snippets [.skl] - File - Default: _Path_of_hbIDE_ini_dot_skl
8. Syntax Highlighter Themes [.hbt]- File - Default: _Path_of_hbIDE_ini_dot_hbt
The interface provides for a quick editing of .env.skl.hbt files in-place.
Interface also provides for viewing facility of hbide.ini file.
Plugins and scripts have gone prefix and usage changes:
1. _Path_to_Resources/hbide_auto_*.hbs|prg are automatically executed
just after hbIDE appears on the screen.
2. _Path_to_Resources/hbide_plugin_*.prg|hbs|hrb can be defined to be
executed as per previous instructions.
3. _Path_to_Resources/hbide_protos_* are automatically loaded for
code completion lists leading to proto-tips. [New - details below]
+ Implemented: auto loading of code completion lists and proto-tips.
Any file as hbide_protos_SOMENAME_with_or_without_extention placed in
_Resources_ folder will be automatically loaded at startup. These files
are plain text files. The following rules apply:
1. Each proto must be placed on one line.
2. Blank lines are permissible.
3. Commands can be placed on multiple lines,
each line ending with ";" except the last one, like:
COPY [TO <(f)>] [SDF] [FIELDS <fields,...>] ;
[FOR <for>] [WHILE <while>] [NEXT <next>] ;
[RECORD <rec>] [<rest:REST>] [ALL] [CODEPAGE <cp>]
4. Functions must be opened with a brace without any preceeding space:
MyFunction ( abd, cde, efg ) => Wrong
MyFunction( abd, cde, efg ) => Right
I must be omitting some more facts which may have been changed|removed.
Also regression is possible, please make few tests and report back if
something went weired.
2010-07-11 22:40 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
- examples/hbdoc2
+ contrib/hbdoc2

View File

@@ -6,27 +6,20 @@
<rect>
<x>0</x>
<y>0</y>
<width>454</width>
<height>544</height>
<width>413</width>
<height>522</height>
</rect>
</property>
<property name="windowTitle">
<string>Editor</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="6">
<widget class="QPlainTextEdit" name="plainEdit"/>
<item row="0" column="0" colspan="8">
<widget class="QPlainTextEdit" name="plainText"/>
</item>
<item row="1" column="0" colspan="4">
<widget class="QLineEdit" name="ediSearch"/>
</item>
<item row="1" column="5">
<widget class="QPushButton" name="buttonCancel">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QToolButton" name="buttonNext">
<property name="text">
@@ -55,10 +48,10 @@
</property>
</widget>
</item>
<item row="2" column="5">
<widget class="QPushButton" name="buttonOk">
<item row="2" column="7">
<widget class="QPushButton" name="buttonClose">
<property name="text">
<string>OK</string>
<string>Close</string>
</property>
</widget>
</item>
@@ -75,6 +68,20 @@
</property>
</spacer>
</item>
<item row="2" column="6">
<widget class="QPushButton" name="buttonSave">
<property name="text">
<string>Save</string>
</property>
</widget>
</item>
<item row="2" column="5">
<widget class="QPushButton" name="buttonSaveAs">
<property name="text">
<string>SaveAs</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>

View File

@@ -14,52 +14,7 @@
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="1" colspan="3">
<widget class="QLineEdit" name="editPathMk2"/>
</item>
<item row="1" column="4">
<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="2" 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="2" column="1" colspan="3">
<widget class="QLineEdit" name="editPathEnv"/>
</item>
<item row="2" column="4">
<widget class="QToolButton" name="buttonPathEnv">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="3" column="0" colspan="5">
<item row="1" column="0" colspan="4">
<widget class="QPlainTextEdit" name="editCompilers">
<property name="toolTip">
<string/>
@@ -83,7 +38,7 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
<item row="4" column="3" colspan="2">
<item row="2" column="2" colspan="2">
<widget class="QPushButton" name="buttonCn">
<property name="text">
<string>Cancel</string>
@@ -93,33 +48,14 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
<item row="1" 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="4" column="0">
<item row="2" column="0">
<widget class="QPushButton" name="buttonSaveExit">
<property name="text">
<string>Save and Close</string>
</property>
</widget>
</item>
<item row="4" column="1">
<item row="2" column="1">
<widget class="QPushButton" name="buttonSave">
<property name="text">
<string>Save</string>

View File

@@ -46,7 +46,6 @@ ideedit.prg
ideplugins.prg
idedict.prg
idebrowse.prg
idehbprotos.prg
docviewgenerator.ui
docwriter.ui

View File

@@ -427,10 +427,7 @@ METHOD HbIde:create( aParams )
HbXbp_SetCodec( ::cWrkCodec )
/* Load IDE|User defined Themes */
hbide_loadThemes( Self )
/* Harbour Help Object */
// ::oHL := ideHarbourHelp():new():create( Self )
::oTH := IdeThemes():new( Self, ::oINI:getThemesFile() ):create()
/* DOCKing windows and ancilliary windows */
::oDK := IdeDocks():new():create( Self )

View File

@@ -66,6 +66,7 @@
<file>resources/fl_prg.png</file>
<file>resources/fl_res.png</file>
<file>resources/fl_txt.png</file>
<file>resources/file-open.png</file>
<file>resources/folder.png</file>
<file>resources/font.png</file>
<file>resources/formview.png</file>

View File

@@ -238,18 +238,20 @@ METHOD IdeEditsManager:create( oIde )
/*----------------------------------------------------------------------*/
METHOD IdeEditsManager:updateCompleter()
LOCAL aFun, aHrb, n, s, k_
LOCAL aFun, aHrb, aUsr, n, s, k_
/* Collection of prototypes can be extended to honor plugins and defined in "setup" */
aFun := ::oFN:getFunctionPrototypes()
aHrb := ::oHL:getFunctionPrototypes()
aUsr := hbide_getUserPrototypes()
::disconnect( ::qCompleter, "activated(QString)", {|p| ::execEvent( "qcompleter_activated", p ) } )
::aProtos := {}
aeval( aHrb, {|e| aadd( ::aProtos, e ) } )
aeval( aFun, {|e| aadd( ::aProtos, e ) } )
aeval( aUsr, {|e| aadd( ::aProtos, e ) } )
k_:= {}
FOR EACH s IN ::aProtos

View File

@@ -77,68 +77,45 @@
CLASS IdeEnvironments INHERIT IdeObject
DATA cEnvFile
DATA aNames INIT {}
DATA aEnvrns INIT {}
DATA aShellContents INIT {}
DATA aCommons INIT {}
DATA oUI_1
METHOD new( oIDE, cEnvFile )
METHOD create( oIDE, cEnvFile )
METHOD new( oIDE )
METHOD create( oIDE )
METHOD destroy()
METHOD parse( cEnvFile )
METHOD prepareBatch( cEnvName )
METHOD getNames() INLINE ::aNames
METHOD saveEnv()
METHOD show()
METHOD execEnv( nMode, p )
METHOD fetchNew()
METHOD getHbmk2Commands( cEnvName )
ENDCLASS
/*----------------------------------------------------------------------*/
METHOD IdeEnvironments:new( oIDE, cEnvFile )
::oIDE := oIDE
::cEnvFile := cEnvFile
/*------------------------------------------------------------------------*/
METHOD IdeEnvironments:new( oIde )
::oIde := oIde
RETURN Self
/*----------------------------------------------------------------------*/
/*------------------------------------------------------------------------*/
METHOD IdeEnvironments:create( oIDE, cEnvFile )
LOCAL cPath, cFile
METHOD IdeEnvironments:create( oIde )
DEFAULT oIDE TO ::oIDE
DEFAULT cEnvFile TO ::cEnvFile
DEFAULT oIde TO ::oIde
::oIde := oIde
::oIDE := oIDE
::cEnvFile := cEnvFile
IF empty( ::cEnvFile )
cFile := ::oINI:cPathEnv
cFile := iif( empty( cFile ), cFile, hbide_pathAppendLastSlash( cFile ) )
IF empty( cFile )
cFile := oIde:cProjIni
ENDIF
hb_fNameSplit( cFile, @cPath )
::cEnvFile := cPath + "hbide.env"
ENDIF
hb_fNameSplit( ::cEnvFile, @cPath )
::oIDE:cWrkPathEnv := hbide_pathNormalized( cPath, .f. )
::oIde:oINI:cPathEnv := ::oIDE:cWrkPathEnv
IF !empty( ::cEnvFile ) .AND. hb_fileExists( ::cEnvFile )
::parse( ::cEnvFile )
IF hb_fileExists( ::oINI:getEnvFile() )
::parse( ::oINI:getEnvFile() )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
/*------------------------------------------------------------------------*/
METHOD IdeEnvironments:destroy()
@@ -151,7 +128,7 @@ METHOD IdeEnvironments:destroy()
RETURN Self
/*----------------------------------------------------------------------*/
/*------------------------------------------------------------------------*/
METHOD IdeEnvironments:parse( cEnvFile )
LOCAL s, cPart, cEnv, a_, cKey, cVal
@@ -200,7 +177,7 @@ METHOD IdeEnvironments:parse( cEnvFile )
RETURN Self
/*----------------------------------------------------------------------*/
/*------------------------------------------------------------------------*/
METHOD IdeEnvironments:getHbmk2Commands( cEnvName )
LOCAL n, s, a_, aCmd := {}
@@ -216,7 +193,7 @@ METHOD IdeEnvironments:getHbmk2Commands( cEnvName )
RETURN aCmd
/*----------------------------------------------------------------------*/
/*------------------------------------------------------------------------*/
METHOD IdeEnvironments:prepareBatch( cEnvName )
LOCAL n, s, a_, aCmd := {}
@@ -232,7 +209,7 @@ METHOD IdeEnvironments:prepareBatch( cEnvName )
RETURN hbide_getShellCommandsTempFile( aCmd )
/*----------------------------------------------------------------------*/
/*------------------------------------------------------------------------*/
METHOD IdeEnvironments:show()
@@ -241,87 +218,31 @@ METHOD IdeEnvironments:show()
::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 ) } )
::oUI:q_editCompilers:setFont( ::oFont:oWidget )
#if 0
::oUI:q_editPathEnv:setFont( ::oFont:oWidget )
::oUI:q_editPathMk2:setFont( ::oFont:oWidget )
#endif
ENDIF
::oUI:q_editPathMk2 :setText( ::oINI:cPathMk2 )
::oUI:q_editPathEnv :setText( ::oINI:cPathEnv )
::oUI:q_editCompilers:setPlainText( hb_memoread( hbide_pathFile( ::oINI:cPathEnv, "hbide.env" ) ) )
::oUI:q_editCompilers:setPlainText( hb_memoread( ::oINI:getEnvFile() ) )
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", "*" } }, ::cWrkPathMK2 )
IF !empty( cPath )
hb_fNameSplit( cPath, @cP )
::oIde: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( cP ) // 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
LOCAL cText
cPathMk2 := oUIEnv:q_editPathMk2:text()
cPathEnv := oUIEnv:q_editPathEnv:text()
::oIDE:oINI:cPathMk2 := cPathMk2
::oIDE:oINI:cPathEnv := 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 )
IF !empty( cText := ::oUI:q_editCompilers:toPlainText() )
hb_MemoWrit( ::oINI:getEnvFile(), cText )
::parse( ::oINI:getEnvFile() )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
/*------------------------------------------------------------------------*/
// New Interface to Environments : TODO
/*------------------------------------------------------------------------*/
METHOD IdeEnvironments:fetchNew()
@@ -333,4 +254,4 @@ METHOD IdeEnvironments:fetchNew()
RETURN Self
/*----------------------------------------------------------------------*/
/*------------------------------------------------------------------------*/

View File

@@ -201,7 +201,7 @@ METHOD IdeHarbourHelp:create( oIde )
DEFAULT oIde TO ::oIde
::oIde := oIde
::cPathInstall := ::cWrkHarbour
::cPathInstall := ::oINI:getHarbourPath()
RETURN Self
@@ -463,7 +463,7 @@ METHOD IdeHarbourHelp:execEvent( nMode, p, p1 )
IF hb_dirExists( p )
::oUI:q_editInstall:setStyleSheet( "" )
::cPathInstall := hbide_pathStripLastSlash( hbide_pathNormalized( p, .f. ) )
::oIde:cWrkHarbour := ::cPathInstall
// ::oIde:cWrkHarbour := ::cPathInstall
ELSE
::oUI:q_editInstall:setStyleSheet( getStyleSheet( "PathIsWrong", ::nAnimantionMode ) )
ENDIF
@@ -961,7 +961,7 @@ METHOD IdeHarbourHelp:getFunctionPrototypes()
LOCAL aDocs := {}
LOCAL aProto
IF empty( ::aProtoTypes ) .AND. empty( ::aProtoTypes := hbide_loadHarbourProtos( ::oIde ) )
IF empty( ::aProtoTypes ) //.AND. empty( ::aProtoTypes := hbide_loadHarbourProtos( ::oIde ) )
IF !empty( ::cPathInstall )
IF ! ::lLoadedProto
hbide_fetchSubPaths( @aPaths, ::cPathInstall, .t. )
@@ -993,7 +993,7 @@ METHOD IdeHarbourHelp:getFunctionPrototypes()
NEXT
NEXT
hbide_saveHarbourProtos( ::oIde, aProto )
/* hbide_saveHarbourProtos( ::oIde, aProto ) */
::aProtoTypes := aProto
::lLoadedProto := .t.
ENDIF

File diff suppressed because it is too large Load Diff

View File

@@ -2053,6 +2053,12 @@ FUNCTION hbide_getUI( cUI, qParent )
CASE "mainwindow"
oUI := iif( nModeUI == UI_MODE_FUNC, hbqtui_Mainwindow( qParent ), NIL )
EXIT
CASE "skeletons"
oUI := iif( nModeUI == UI_MODE_FUNC, hbqtui_Skeletons( qParent ), NIL )
EXIT
CASE "editor"
oUI := iif( nModeUI == UI_MODE_FUNC, hbqtui_Editor( qParent ), NIL )
EXIT
ENDSWITCH
IF empty( oUI )

View File

@@ -113,40 +113,43 @@ FUNCTION hbide_execPlugin( cPlugin, oIde, ... )
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbide_loadAPlugin( cPlugin, oIde, cVer )
LOCAL pHrb, bBlock, lLoaded, cFileName, cFile
LOCAL pHrb, bBlock, lLoaded, cFileName, cFile, cPath
cFileName := hb_dirBase() + hb_osPathSeparator() + "plugins" + hb_osPathSeparator() + cPlugin + ".hrb"
IF hb_fileExists( cFileName )
pHrb := hb_hrbLoad( HB_HRB_BIND_OVERLOAD, cFileName )
ELSE
cFileName := hb_dirBase() + hb_osPathSeparator() + "plugins" + hb_osPathSeparator() + cPlugin + ".prg"
IF !empty( cPath := oIde:oINI:getResourcesPath() )
cFileName := cPath + "hbide_plugin_" + cPlugin + ".hrb"
IF hb_fileExists( cFileName )
cFile := hb_memoread( cFileName )
cFile := hb_compileFromBuf( cFile, "-n2", "-w3", "-es2", "-q0" )
IF ! Empty( cFile )
pHrb := hb_hrbLoad( HB_HRB_BIND_OVERLOAD, cFile )
ENDIF
pHrb := hb_hrbLoad( HB_HRB_BIND_OVERLOAD, cFileName )
ELSE
cFileName := hb_dirBase() + hb_osPathSeparator() + "plugins" + hb_osPathSeparator() + cPlugin + ".hbs"
cFileName := cPath + "hbide_plugin_" + cPlugin + ".prg"
IF hb_fileExists( cFileName )
cFile := hb_memoread( cFileName )
cFile := hb_compileFromBuf( cFile, "-n2", "-w3", "-es2", "-q0" )
IF ! Empty( cFile )
pHrb := hb_hrbLoad( HB_HRB_BIND_OVERLOAD, cFile )
ENDIF
ELSE
cFileName := cPath + "hbide_plugin_" + cPlugin + ".hbs"
IF hb_fileExists( cFileName )
cFile := hb_memoread( cFileName )
cFile := hb_compileFromBuf( cFile, "-n2", "-w3", "-es2", "-q0" )
IF ! Empty( cFile )
pHrb := hb_hrbLoad( HB_HRB_BIND_OVERLOAD, cFile )
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF ( lLoaded := ! empty( pHrb ) )
IF ! Empty( hb_hrbGetFunSym( pHrb, cPlugin + "_init" ) )
bBlock := &( "{|...| " + cPlugin + "_init(...) }" )
IF ( lLoaded := ! empty( pHrb ) )
IF ! Empty( hb_hrbGetFunSym( pHrb, cPlugin + "_init" ) )
bBlock := &( "{|...| " + cPlugin + "_init(...) }" )
IF eval( bBlock, oIde, cVer )
IF ! Empty( hb_hrbGetFunSym( pHrb, cPlugin + "_exec" ) )
aadd( s_aPlugins, { cPlugin, &( "{|...| " + cPlugin + "_exec(...) }" ), pHrb } )
lLoaded := .t.
IF eval( bBlock, oIde, cVer )
IF ! Empty( hb_hrbGetFunSym( pHrb, cPlugin + "_exec" ) )
aadd( s_aPlugins, { cPlugin, &( "{|...| " + cPlugin + "_exec(...) }" ), pHrb } )
lLoaded := .t.
ENDIF
ENDIF
ENDIF
ENDIF
@@ -189,20 +192,76 @@ FUNCTION hbide_runAScript( cBuffer, cCompFlags, xParam )
FUNCTION hbide_execAutoScripts()
LOCAL cPath, a_, dir_, cFileName, cBuffer
cPath := hb_dirBase() + hb_osPathSeparator() + "plugins" + hb_osPathSeparator()
a_:= {}
dir_:= directory( cPath + "auto_*.prg" )
aeval( dir_, {|e_| aadd( a_, e_[ 1 ] ) } )
dir_:= directory( cPath + "auto_*.hbs" )
aeval( dir_, {|e_| aadd( a_, e_[ 1 ] ) } )
FOR EACH cFileName IN a_
IF !empty( cBuffer := hb_memoRead( cPath + cFileName ) )
hbide_runAScript( cBuffer, /* No Compiler Flag */, hbide_setIde() )
ENDIF
NEXT
IF !empty( cPath := hbide_setIde():oINI:getResourcesPath() )
a_:= {}
dir_:= directory( cPath + "hbide_auto_*.prg" )
aeval( dir_, {|e_| aadd( a_, e_[ 1 ] ) } )
dir_:= directory( cPath + "hbide_auto_*.hbs" )
aeval( dir_, {|e_| aadd( a_, e_[ 1 ] ) } )
FOR EACH cFileName IN a_
IF !empty( cBuffer := hb_memoRead( cPath + cFileName ) )
hbide_runAScript( cBuffer, /* No Compiler Flag */, hbide_setIde() )
ENDIF
NEXT
ENDIF
RETURN NIL
/*------------------------------------------------------------------------*/
FUNCTION hbide_getUserPrototypes()
LOCAL aProto := {}
LOCAL cPath, aDir, cMask, a_, b_
IF ! empty( cPath := hbide_setIde():oINI:getResourcesPath() )
cMask := cPath + "hbide_protos_*"
IF ! empty( aDir := directory( cMask ) )
FOR EACH a_ IN aDir
b_:= hbide_loadProtoTypes( cPath + a_[ 1 ] )
aeval( b_, {|e| aadd( aProto, e ) } )
NEXT
ENDIF
ENDIF
RETURN aProto
/*------------------------------------------------------------------------*/
FUNCTION hbide_loadPrototypes( cPath )
LOCAL a_, s, nLen, i
LOCAL aProto := {}, b_:={}
IF hb_fileExists( cPath )
a_:= hbide_readSource( cPath )
FOR EACH s IN a_
s := alltrim( s )
IF empty( s )
LOOP
ENDIF
aadd( b_, s )
NEXT
ENDIF
nLen := len( b_ )
FOR EACH s IN b_
i := s:__enumIndex()
IF right( s, 1 ) == ";"
s := substr( s, 1, len( s ) - 1 )
IF i < nLen
b_[ i + 1 ] := s + " " + b_[ i + 1 ]
s := ""
ENDIF
ENDIF
NEXT
FOR EACH s IN b_
IF empty( s )
LOOP
ENDIF
aadd( aProto, s )
NEXT
RETURN aProto
/*------------------------------------------------------------------------*/

View File

@@ -136,8 +136,7 @@ CLASS IdeProject
DATA sources INIT {}
DATA dotHbp INIT ""
DATA compilers INIT ""
DATA cPathMk2 INIT hb_getenv( "HBIDE_DIR_HBMK2" )
DATA cPathEnv INIT hb_DirBase()
DATA cPathHbMk2
DATA hSources INIT {=>}
DATA hPaths INIT {=>}
DATA lPathAbs INIT .F. // Lets try relative paths first . xhp and hbp will be relative anyway
@@ -182,12 +181,7 @@ METHOD IdeProject:new( oIDE, aProps )
::dotHbp := ""
::compilers := ""
IF !empty( oIDE:oINI:cPathMk2 )
::cPathMk2 := oIDE:oINI:cPathMk2
ENDIF
IF !empty( oIDE:oINI:cPathEnv )
::cPathEnv := oIDE:oINI:cPathEnv
ENDIF
::cPathHbMk2 := oIde:oINI:getHbmk2File()
FOR EACH cSource IN ::sources
cSource := hbide_syncProjPath( ::projPath, cSource )
@@ -839,8 +833,8 @@ METHOD IdeProjManager:synchronizeAlienProject( cProjFileName )
ENDIF
cExeHbMk2 := "hbmk2"
IF ! Empty( ::oIDE:oINI:cPathMk2 )
cExeHbMk2 := hbide_DirAddPathSep( ::oIDE:oINI:cPathMk2 ) + cExeHbMk2
IF ! Empty( ::oIDE:oINI:cPathHbMk2 )
cExeHbMk2 := hbide_DirAddPathSep( ::oIDE:oINI:cPathHbMk2 ) + cExeHbMk2
ENDIF
SWITCH lower( cExt )
@@ -1439,12 +1433,7 @@ METHOD IdeProjManager:buildProject( cProject, lLaunch, lRebuild, lPPO, lViaQt )
::cBatch := ::oEV:prepareBatch( ::cWrkEnvironment )
aeval( ::oEV:getHbmk2Commands( ::cWrkEnvironment ), {|e| aadd( aHbp, e ) } )
cExeHbMk2 := "hbmk2"
IF ! Empty( ::oProject:cPathMk2 )
cExeHbMk2 := hbide_DirAddPathSep( ::oProject:cPathMk2 ) + cExeHbMk2
ENDIF
cExeHbMk2 := ::oINI:getHbmk2File()
cCmdParams := hbide_array2cmdParams( aHbp )
::oProcess := HbpProcess():new()
@@ -1633,3 +1622,4 @@ METHOD IdeProjManager:outputText( cText )
RETURN Self
/*----------------------------------------------------------------------*/

View File

@@ -70,22 +70,6 @@
#include "hbqt.ch"
/*----------------------------------------------------------------------*/
#if 0
#define INI_HBIDE 1
#define INI_PROJECTS 2
#define INI_FILES 3
#define INI_FIND 4
#define INI_REPLACE 5
#define INI_RECENTFILES 6
#define INI_RECENTPROJECTS 7
#define INI_FOLDERS 8
#define INI_VIEWS 9
#define INI_TAGGEDPROJECTS 10
#define INI_GENERAL 11
#define INI_TOOLS 12
#define INI_USERTOOLBARS 13
#define INI_KEYWORDS 14
#endif
#define INI_SECTIONS_COUNT 14
#define INI_HBIDE_VRBLS 30
@@ -112,9 +96,15 @@ CLASS IdeINI INHERIT IdeObject
DATA cIdeTheme INIT ""
DATA cIdeAnimated INIT ""
//
DATA cPathMk2 INIT ""
DATA cPathHrbRoot INIT ""
DATA cPathHbmk2 INIT ""
DATA cPathResources INIT ""
DATA cPathTemp INIT ""
DATA cPathEnv INIT ""
// /* Not used yet but planned for future */
DATA cPathShortcuts INIT ""
DATA cPathSnippets INIT ""
DATA cPathThemes INIT ""
DATA cCurrentProject INIT ""
DATA cCurrentTheme INIT ""
DATA cCurrentCodec INIT ""
@@ -123,8 +113,6 @@ CLASS IdeINI INHERIT IdeObject
DATA cCurrentFolderFind INIT ""
DATA cCurrentReplace INIT ""
DATA cCurrentView INIT ""
DATA cCurrentHarbour INIT ""
DATA cCurrentShortcuts INIT ""
//
DATA cTextFileExtensions INIT ".c,.cpp,.prg,.h,.ch,.txt,.log,.ini,.env,.ppo,.qtp,.hbs," + ;
".cc,.hbc,.hbp,.hbm,.xml,.bat,.sh,.rc,.ui,.uic,.bak,.fmg,.qth"
@@ -172,6 +160,17 @@ CLASS IdeINI INHERIT IdeObject
METHOD load( cHbideIni )
METHOD save( cHbideIni )
METHOD getIniPath()
METHOD getResourcesPath()
METHOD getTempPath()
METHOD getHarbourPath()
METHOD getIniFile()
METHOD getEnvFile()
METHOD getHbmk2File()
METHOD getSnippetsFile()
METHOD getShortcutsFile()
METHOD getThemesFile()
ENDCLASS
/*----------------------------------------------------------------------*/
@@ -189,6 +188,71 @@ METHOD IdeINI:create( oIde )
/*----------------------------------------------------------------------*/
METHOD IdeINI:getINIPath()
LOCAL cPath
hb_fNameSplit( ::oIde:cProjIni, @cPath )
RETURN cPath
/*------------------------------------------------------------------------*/
METHOD IdeINI:getResourcesPath()
LOCAL cPath := iif( empty( ::cPathResources ), ::getINIPath(), ::cPathResources )
RETURN iif( empty( cPath ), cPath, hbide_pathToOSPath( hbide_pathAppendLastSlash( cPath ) ) )
/*------------------------------------------------------------------------*/
METHOD IdeINI:getHarbourPath()
RETURN iif( empty( ::cPathHrbRoot ), ::cPathHrbRoot, hbide_pathToOSPath( hbide_pathAppendLastSlash( ::cPathHrbRoot ) ) )
/*------------------------------------------------------------------------*/
METHOD IdeINI:getTempPath()
RETURN hbide_pathToOSPath( ::cPathTemp )
/*------------------------------------------------------------------------*/
METHOD IdeINI:getINIFile()
RETURN hbide_pathToOSPath( hbide_pathFile( ::getINIPath(), "hbide.ini" ) )
/*------------------------------------------------------------------------*/
METHOD IdeINI:getHbmk2File()
LOCAL cFile
IF empty( ::cPathHbmk2 )
IF empty( cFile := hb_getenv( "HBIDE_DIR_HBMK2" ) )
cFile := "hbmk2"
ELSE
cFile := hbide_pathFile( cFile, "hbmk2" )
ENDIF
ELSE
cFile := ::cPathHbmk2
ENDIF
RETURN hbide_pathToOSPath( cFile )
/*------------------------------------------------------------------------*/
METHOD IdeINI:getEnvFile()
RETURN hbide_pathToOSPath( iif( empty( ::cPathEnv ), hbide_pathFile( ::getINIPath(), "hbide.skl" ), ::cPathEnv ) )
/*------------------------------------------------------------------------*/
METHOD IdeINI:getSnippetsFile()
RETURN hbide_pathToOSPath( iif( empty( ::cPathSnippets ), hbide_pathFile( ::getINIPath(), "hbide.skl" ), ::cPathSnippets ) )
/*------------------------------------------------------------------------*/
METHOD IdeINI:getShortcutsFile()
RETURN hbide_pathToOSPath( iif( empty( ::cPathShortcuts ), hbide_pathFile( ::getINIPath(), "hbide.scu" ), ::cPathShortcuts ) )
/*------------------------------------------------------------------------*/
METHOD IdeINI:getThemesFile()
RETURN hbide_pathToOSPath( iif( empty( ::cPathThemes ), hbide_pathFile( ::getINIPath(), "hbide.hbt" ), ::cPathThemes ) )
/*------------------------------------------------------------------------*/
METHOD IdeINI:save( cHbideIni )
LOCAL j, nTab, pTab, n, txt_, oEdit, nTabs, nn, a_, s
@@ -218,9 +282,15 @@ METHOD IdeINI:save( cHbideIni )
//
aadd( txt_, "IdeTheme" + "=" + ::cIdeTheme )
aadd( txt_, "IdeAnimated" + "=" + ::cIdeAnimated )
aadd( txt_, "PathMk2" + "=" + ::cPathMk2 )
//
aadd( txt_, "PathHrbRoot" + "=" + ::cPathHrbRoot )
aadd( txt_, "PathMk2" + "=" + ::cPathHbMk2 )
aadd( txt_, "PathResources" + "=" + ::cPathResources )
aadd( txt_, "PathTemp" + "=" + ::cPathTemp )
aadd( txt_, "PathEnv" + "=" + ::cPathEnv )
aadd( txt_, "PathShortcuts" + "=" + ::cPathShortcuts )
aadd( txt_, "PathSnippets" + "=" + ::cPathSnippets )
aadd( txt_, "PathThemes" + "=" + ::cPathThemes )
//
aadd( txt_, "CurrentProject" + "=" + ::oIde:cWrkProject )
aadd( txt_, "CurrentTheme" + "=" + ::oIde:cWrkTheme )
@@ -230,8 +300,6 @@ METHOD IdeINI:save( cHbideIni )
aadd( txt_, "CurrentFolderFind" + "=" + ::oIde:cWrkFolderFind )
aadd( txt_, "CurrentReplace" + "=" + ::oIde:cWrkReplace )
aadd( txt_, "CurrentView" + "=" + ::oIde:cWrkView )
aadd( txt_, "CurrentHarbour" + "=" + ::oIde:cWrkHarbour )
aadd( txt_, "CurrentShortcuts" + "=" + ::oIde:cPathShortcuts )
aadd( txt_, "TextFileExtensions" + "=" + ::oINI:cTextFileExtensions )
//
aadd( txt_, "FontName" + "=" + ::cFontName )
@@ -488,9 +556,15 @@ METHOD IdeINI:load( cHbideIni )
//
CASE "IdeTheme" ; ::cIdeTheme := cVal ; EXIT
CASE "IdeAnimated" ; ::cIdeAnimated := cVal ; EXIT
// /* Subject to be identified under this object only */
CASE "PathMk2" ; ::cPathMk2 := cVal ; EXIT
//
CASE "PathHrbRoot" ; ::cPathHrbRoot := cVal ; EXIT
CASE "PathMk2" ; ::cPathHbMk2 := cVal ; EXIT
CASE "PathResources" ; ::cPathResources := cVal ; EXIT
CASE "PathTemp" ; ::cPathTemp := cVal ; EXIT
CASE "PathEnv" ; ::cPathEnv := cVal ; EXIT
CASE "PathShortcuts" ; ::cPathShortcuts := cVal ; EXIT
CASE "PathSnippets" ; ::cPathSnippets := cVal ; EXIT
CASE "PathThemes" ; ::cPathThemes := cVal ; EXIT
//
CASE "CurrentProject" ; ::oIde:cWrkProject := cVal ; EXIT
CASE "CurrentTheme" ; ::oIde:cWrkTheme := cVal ; EXIT
@@ -500,8 +574,6 @@ METHOD IdeINI:load( cHbideIni )
CASE "CurrentFolderFind" ; ::oIde:cWrkFolderFind := cVal ; EXIT
CASE "CurrentReplace" ; ::oIde:cWrkReplace := cVal ; EXIT
CASE "CurrentView" ; ::oIde:cWrkView := cVal ; EXIT
CASE "CurrentHarbour" ; ::oIde:cWrkHarbour := cVal ; EXIT
CASE "CurrentShortcuts" ; ::oIde:cPathShortcuts := cVal ; EXIT
CASE "TextFileExtensions" ; ::oINI:cTextFileExtensions := cVal ; EXIT
//
CASE "FontName" ; ::cFontName := cVal ; EXIT
@@ -688,19 +760,11 @@ FUNCTION hbide_getIniPath( cHbideIni )
/*----------------------------------------------------------------------*/
FUNCTION hbide_loadSkltns( oIde, cPathSkltns )
LOCAL cPath, s, n, cSkltn, cCode
LOCAL s, n, cSkltn, cCode
IF empty( cPathSkltns )
hb_fNameSplit( oIde:cProjIni, @cPath )
cPath += "hbide.skl"
IF hb_fileExists( cPath )
cPathSkltns := cPath
ELSE
cPathSkltns := hb_dirBase() + "hbide.skl"
ENDIF
cPathSkltns := oIde:oINI:getSnippetsFile()
ENDIF
oIde:cPathSkltns := cPathSkltns
IF hb_fileExists( cPathSkltns )
s := hb_memoread( cPathSkltns )
@@ -753,30 +817,16 @@ FUNCTION hbide_saveSkltns( oIde )
aadd( txt_, "" )
NEXT
RETURN hbide_createTarget( oIde:cPathSkltns, txt_ )
RETURN hbide_createTarget( oIde:oINI:getSnippetsFile(), txt_ )
/*----------------------------------------------------------------------*/
FUNCTION hbide_loadShortcuts( oIde, cFileShortcuts )
LOCAL cPath, a_:= {}
LOCAL a_:= {}
IF empty( cFileShortcuts )
cFileShortcuts := oIde:cPathShortcuts
IF empty( cFileShortcuts )
cFileShortcuts := oIde:cProjIni
ENDIF
hb_fNameSplit( cFileShortcuts, @cPath )
cPath += "hbide.scu"
IF hb_fileExists( cPath )
cFileShortcuts := cPath
ELSE
cFileShortcuts := hb_dirBase() + "hbide.scu"
ENDIF
cFileShortcuts := oIde:oINI:getShortcutsFile()
ENDIF
oIde:cPathShortcuts := cFileShortcuts
IF hb_fileExists( cFileShortcuts )
a_:= hb_deSerialize( hb_memoread( cFileShortcuts ) )
ENDIF
@@ -786,24 +836,10 @@ FUNCTION hbide_loadShortcuts( oIde, cFileShortcuts )
/*----------------------------------------------------------------------*/
FUNCTION hbide_saveShortcuts( oIde, a_, cFileShortcuts )
LOCAL cPath
IF empty( cFileShortcuts )
cFileShortcuts := oIde:cPathShortcuts
IF empty( cFileShortcuts )
cFileShortcuts := oIde:cProjIni
ENDIF
hb_fNameSplit( cFileShortcuts, @cPath )
cPath += "hbide.scu"
IF hb_fileExists( cPath )
cFileShortcuts := cPath
ELSE
cFileShortcuts := hb_dirBase() + "hbide.scu"
ENDIF
cFileShortcuts := oIde:oINI:getShortcutsFile()
ENDIF
hb_memowrit( cFileShortcuts, hb_serialize( a_ ) )
RETURN hb_fileExists( cFileShortcuts )
@@ -814,7 +850,7 @@ FUNCTION hbide_loadHarbourProtos( oIde )
HB_SYMBOL_UNUSED( oIde )
RETURN hbide_harbourProtos()
RETURN NIL //hbide_harbourProtos()
/*------------------------------------------------------------------------*/
@@ -869,6 +905,7 @@ CLASS IdeSetup INHERIT IdeObject
DATA aKeyItems INIT {}
DATA nCurThemeSlot INIT 0
DATA aHilighters INIT {}
METHOD new( oIde )
METHOD create( oIde )
@@ -892,6 +929,7 @@ CLASS IdeSetup INHERIT IdeObject
METHOD pushThemeColors( nTheme )
METHOD pushThemesData()
METHOD getThemeData( nTheme )
METHOD viewIt( cFileName, lSaveAs, lSave, lReadOnly, lApplyHiliter )
ENDCLASS
@@ -937,13 +975,21 @@ METHOD IdeSetup:setIcons()
::oUI:q_buttonKeyUp : setIcon( hbide_image( "dc_up" ) )
::oUI:q_buttonKeyDown : setIcon( hbide_image( "dc_down" ) )
::oUI:q_buttonPathIni : setIcon( hbide_image( "open" ) )
/* Paths */
::oUI:q_buttonPathHrbRoot : setIcon( hbide_image( "open" ) )
::oUI:q_buttonPathHbmk2 : setIcon( hbide_image( "open" ) )
::oUI:q_buttonPathSnippets : setIcon( hbide_image( "open" ) )
::oUI:q_buttonPathEnv : setIcon( hbide_image( "open" ) )
::oUI:q_buttonPathResources : setIcon( hbide_image( "open" ) )
::oUI:q_buttonPathTemp : setIcon( hbide_image( "open" ) )
::oUI:q_buttonPathShortcuts : setIcon( hbide_image( "open" ) )
::oUI:q_buttonPathSnippets : setIcon( hbide_image( "open" ) )
::oUI:q_buttonPathThemes : setIcon( hbide_image( "open" ) )
::oUI:q_buttonViewIni : setIcon( hbide_image( "file-open" ) )
::oUI:q_buttonViewEnv : setIcon( hbide_image( "file-open" ) )
::oUI:q_buttonViewSnippets : setIcon( hbide_image( "file-open" ) )
::oUI:q_buttonViewThemes : setIcon( hbide_image( "file-open" ) )
::oUI:q_buttonSelFont : setIcon( hbide_image( "font" ) )
::oUI:q_buttonThmAdd : setIcon( hbide_image( "dc_plus" ) )
@@ -957,45 +1003,59 @@ METHOD IdeSetup:setIcons()
METHOD IdeSetup:disConnectSlots()
::disconnect( ::oUI:q_buttonAddTextExt, "clicked()" )
::disconnect( ::oUI:q_buttonDelTextExt, "clicked()" )
::disconnect( ::oUI:q_buttonAddTextExt , "clicked()" )
::disconnect( ::oUI:q_buttonDelTextExt , "clicked()" )
::disconnect( ::oUI:q_buttonKeyAdd , "clicked()" )
::disconnect( ::oUI:q_buttonKeyDel , "clicked()" )
::disconnect( ::oUI:q_buttonKeyUp , "clicked()" )
::disconnect( ::oUI:q_buttonKeyDown , "clicked()" )
::disconnect( ::oUI:q_buttonKeyAdd , "clicked()" )
::disconnect( ::oUI:q_buttonKeyDel , "clicked()" )
::disconnect( ::oUI:q_buttonKeyUp , "clicked()" )
::disconnect( ::oUI:q_buttonKeyDown , "clicked()" )
::disconnect( ::oUI:q_tableVar , "itemActivated(QTblWItem)" )
::disconnect( ::oUI:q_tableVar , "itemActivated(QTblWItem)" )
::disconnect( ::oUI:q_buttonSelFont , "clicked()" )
::disConnect( ::oUI:q_buttonClose , "clicked()" )
::disConnect( ::oUI:q_buttonOK , "clicked()" )
::disConnect( ::oUI:q_buttonCancel , "clicked()" )
::disConnect( ::oUI:q_treeWidget , "itemSelectionChanged()" )
::disconnect( ::oUI:q_comboStyle , "currentIndexChanged(int)" )
::disconnect( ::oUI:q_buttonSelFont , "clicked()" )
::disConnect( ::oUI:q_buttonClose , "clicked()" )
::disConnect( ::oUI:q_buttonOK , "clicked()" )
::disConnect( ::oUI:q_buttonCancel , "clicked()" )
::disConnect( ::oUI:q_treeWidget , "itemSelectionChanged()" )
::disconnect( ::oUI:q_comboStyle , "currentIndexChanged(int)" )
::disconnect( ::oUI:q_checkAnimated , "stateChanged(int)" )
::disconnect( ::oUI:q_checkAnimated , "stateChanged(int)" )
::disconnect( ::oUI:q_checkHilightLine, "stateChanged(int)" )
::disconnect( ::oUI:q_checkHorzRuler , "stateChanged(int)" )
::disconnect( ::oUI:q_checkLineNumbers, "stateChanged(int)" )
::disconnect( ::oUI:q_checkHilightLine , "stateChanged(int)" )
::disconnect( ::oUI:q_checkHorzRuler , "stateChanged(int)" )
::disconnect( ::oUI:q_checkLineNumbers , "stateChanged(int)" )
::disconnect( ::oUI:q_sliderRed , "valueChanged(int)" )
::disconnect( ::oUI:q_sliderGreen , "valueChanged(int)" )
::disconnect( ::oUI:q_sliderBlue , "valueChanged(int)" )
::disconnect( ::oUI:q_sliderRed , "valueChanged(int)" )
::disconnect( ::oUI:q_sliderGreen , "valueChanged(int)" )
::disconnect( ::oUI:q_sliderBlue , "valueChanged(int)" )
::disconnect( ::oUI:q_radioSec1 , "clicked()" )
::disconnect( ::oUI:q_radioSec2 , "clicked()" )
::disconnect( ::oUI:q_radioSec3 , "clicked()" )
::disconnect( ::oUI:q_radioSec4 , "clicked()" )
::disconnect( ::oUI:q_radioSec5 , "clicked()" )
::disconnect( ::oUI:q_radioSec1 , "clicked()" )
::disconnect( ::oUI:q_radioSec2 , "clicked()" )
::disconnect( ::oUI:q_radioSec3 , "clicked()" )
::disconnect( ::oUI:q_radioSec4 , "clicked()" )
::disconnect( ::oUI:q_radioSec5 , "clicked()" )
::disconnect( ::oUI:q_buttonThmAdd , "clicked()" )
::disconnect( ::oUI:q_buttonThmDel , "clicked()" )
::disconnect( ::oUI:q_buttonThmApp , "clicked()" )
::disconnect( ::oUI:q_buttonThmSav , "clicked()" )
::disconnect( ::oUI:q_buttonThmAdd , "clicked()" )
::disconnect( ::oUI:q_buttonThmDel , "clicked()" )
::disconnect( ::oUI:q_buttonThmApp , "clicked()" )
::disconnect( ::oUI:q_buttonThmSav , "clicked()" )
::disconnect( ::oUI:q_listThemes , "currentRowChanged(int)" )
::disconnect( ::oUI:q_listThemes , "currentRowChanged(int)" )
::disconnect( ::oUI:q_buttonPathHrbRoot , "clicked()" )
::disconnect( ::oUI:q_buttonPathHbmk2 , "clicked()" )
::disconnect( ::oUI:q_buttonPathEnv , "clicked()" )
::disconnect( ::oUI:q_buttonPathResources , "clicked()" )
::disconnect( ::oUI:q_buttonPathTemp , "clicked()" )
::disconnect( ::oUI:q_buttonPathShortcuts , "clicked()" )
::disconnect( ::oUI:q_buttonPathSnippets , "clicked()" )
::disconnect( ::oUI:q_buttonPathThemes , "clicked()" )
::disconnect( ::oUI:q_buttonViewIni , "clicked()" )
::disconnect( ::oUI:q_buttonViewEnv , "clicked()" )
::disconnect( ::oUI:q_buttonViewSnippets , "clicked()" )
::disconnect( ::oUI:q_buttonViewThemes , "clicked()" )
RETURN Self
@@ -1003,45 +1063,59 @@ METHOD IdeSetup:disConnectSlots()
METHOD IdeSetup:connectSlots()
::connect( ::oUI:q_buttonAddTextExt, "clicked()" , {| | ::execEvent( "buttonAddTextext_clicked" ) } )
::connect( ::oUI:q_buttonDelTextExt, "clicked()" , {| | ::execEvent( "buttonDelTextext_clicked" ) } )
::connect( ::oUI:q_buttonAddTextExt , "clicked()" , {| | ::execEvent( "buttonAddTextext_clicked" ) } )
::connect( ::oUI:q_buttonDelTextExt , "clicked()" , {| | ::execEvent( "buttonDelTextext_clicked" ) } )
::connect( ::oUI:q_buttonKeyAdd , "clicked()" , {| | ::execEvent( "buttonKeyAdd_clicked" ) } )
::connect( ::oUI:q_buttonKeyDel , "clicked()" , {| | ::execEvent( "buttonKeyDel_clicked" ) } )
::connect( ::oUI:q_buttonKeyUp , "clicked()" , {| | ::execEvent( "buttonKeyUp_clicked" ) } )
::connect( ::oUI:q_buttonKeyDown , "clicked()" , {| | ::execEvent( "buttonKeyDown_clicked" ) } )
::connect( ::oUI:q_buttonKeyAdd , "clicked()" , {| | ::execEvent( "buttonKeyAdd_clicked" ) } )
::connect( ::oUI:q_buttonKeyDel , "clicked()" , {| | ::execEvent( "buttonKeyDel_clicked" ) } )
::connect( ::oUI:q_buttonKeyUp , "clicked()" , {| | ::execEvent( "buttonKeyUp_clicked" ) } )
::connect( ::oUI:q_buttonKeyDown , "clicked()" , {| | ::execEvent( "buttonKeyDown_clicked" ) } )
::connect( ::oUI:q_tableVar , "itemActivated(QTblWItem)", {|p| ::execEvent( "tableVar_keyPress", p ) } )
::connect( ::oUI:q_tableVar , "itemActivated(QTblWItem)", {|p| ::execEvent( "tableVar_keyPress", p ) } )
::connect( ::oUI:q_buttonSelFont , "clicked()" , {| | ::execEvent( "buttonSelFont_clicked" ) } )
::connect( ::oUI:q_buttonClose , "clicked()" , {| | ::execEvent( "buttonClose_clicked" ) } )
::connect( ::oUI:q_buttonOk , "clicked()" , {| | ::execEvent( "buttonOk_clicked" ) } )
::connect( ::oUI:q_buttonCancel , "clicked()" , {| | ::execEvent( "buttonCancel_clicked" ) } )
::connect( ::oUI:q_treeWidget , "itemSelectionChanged()" , {| | ::execEvent( "treeWidget_itemSelectionChanged" ) } )
::connect( ::oUI:q_comboStyle , "currentIndexChanged(int)", {|i| ::execEvent( "comboStyle_currentIndexChanged", i ) } )
::connect( ::oUI:q_buttonSelFont , "clicked()" , {| | ::execEvent( "buttonSelFont_clicked" ) } )
::connect( ::oUI:q_buttonClose , "clicked()" , {| | ::execEvent( "buttonClose_clicked" ) } )
::connect( ::oUI:q_buttonOk , "clicked()" , {| | ::execEvent( "buttonOk_clicked" ) } )
::connect( ::oUI:q_buttonCancel , "clicked()" , {| | ::execEvent( "buttonCancel_clicked" ) } )
::connect( ::oUI:q_treeWidget , "itemSelectionChanged()" , {| | ::execEvent( "treeWidget_itemSelectionChanged" ) } )
::connect( ::oUI:q_comboStyle , "currentIndexChanged(int)", {|i| ::execEvent( "comboStyle_currentIndexChanged", i ) } )
::connect( ::oUI:q_checkAnimated , "stateChanged(int)" , {|i| ::execEvent( "checkAnimated_stateChanged", i ) } )
::connect( ::oUI:q_checkAnimated , "stateChanged(int)" , {|i| ::execEvent( "checkAnimated_stateChanged", i ) } )
::connect( ::oUI:q_checkHilightLine, "stateChanged(int)" , {|i| ::execEvent( "checkHilightLine_stateChanged", i ) } )
::connect( ::oUI:q_checkHorzRuler , "stateChanged(int)" , {|i| ::execEvent( "checkHorzRuler_stateChanged" , i ) } )
::connect( ::oUI:q_checkLineNumbers, "stateChanged(int)" , {|i| ::execEvent( "checkLineNumbers_stateChanged", i ) } )
::connect( ::oUI:q_checkHilightLine , "stateChanged(int)" , {|i| ::execEvent( "checkHilightLine_stateChanged", i ) } )
::connect( ::oUI:q_checkHorzRuler , "stateChanged(int)" , {|i| ::execEvent( "checkHorzRuler_stateChanged" , i ) } )
::connect( ::oUI:q_checkLineNumbers , "stateChanged(int)" , {|i| ::execEvent( "checkLineNumbers_stateChanged", i ) } )
::connect( ::oUI:q_sliderRed , "valueChanged(int)" , {|i| ::execEvent( "sliderValue_changed", i, "R" ) } )
::connect( ::oUI:q_sliderGreen , "valueChanged(int)" , {|i| ::execEvent( "sliderValue_changed", i, "G" ) } )
::connect( ::oUI:q_sliderBlue , "valueChanged(int)" , {|i| ::execEvent( "sliderValue_changed", i, "B" ) } )
::connect( ::oUI:q_sliderRed , "valueChanged(int)" , {|i| ::execEvent( "sliderValue_changed", i, "R" ) } )
::connect( ::oUI:q_sliderGreen , "valueChanged(int)" , {|i| ::execEvent( "sliderValue_changed", i, "G" ) } )
::connect( ::oUI:q_sliderBlue , "valueChanged(int)" , {|i| ::execEvent( "sliderValue_changed", i, "B" ) } )
::connect( ::oUI:q_radioSec1 , "clicked()" , {| | ::execEvent( "radioSection_clicked", 1 ) } )
::connect( ::oUI:q_radioSec2 , "clicked()" , {| | ::execEvent( "radioSection_clicked", 2 ) } )
::connect( ::oUI:q_radioSec3 , "clicked()" , {| | ::execEvent( "radioSection_clicked", 3 ) } )
::connect( ::oUI:q_radioSec4 , "clicked()" , {| | ::execEvent( "radioSection_clicked", 4 ) } )
::connect( ::oUI:q_radioSec5 , "clicked()" , {| | ::execEvent( "radioSection_clicked", 5 ) } )
::connect( ::oUI:q_radioSec1 , "clicked()" , {| | ::execEvent( "radioSection_clicked", 1 ) } )
::connect( ::oUI:q_radioSec2 , "clicked()" , {| | ::execEvent( "radioSection_clicked", 2 ) } )
::connect( ::oUI:q_radioSec3 , "clicked()" , {| | ::execEvent( "radioSection_clicked", 3 ) } )
::connect( ::oUI:q_radioSec4 , "clicked()" , {| | ::execEvent( "radioSection_clicked", 4 ) } )
::connect( ::oUI:q_radioSec5 , "clicked()" , {| | ::execEvent( "radioSection_clicked", 5 ) } )
::connect( ::oUI:q_buttonThmAdd , "clicked()" , {| | ::execEvent( "buttonThmAdd_clicked" ) } )
::connect( ::oUI:q_buttonThmDel , "clicked()" , {| | ::execEvent( "buttonThmDel_clicked" ) } )
::connect( ::oUI:q_buttonThmApp , "clicked()" , {| | ::execEvent( "buttonThmApp_clicked" ) } )
::connect( ::oUI:q_buttonThmSav , "clicked()" , {| | ::execEvent( "buttonThmSav_clicked" ) } )
::connect( ::oUI:q_buttonThmAdd , "clicked()" , {| | ::execEvent( "buttonThmAdd_clicked" ) } )
::connect( ::oUI:q_buttonThmDel , "clicked()" , {| | ::execEvent( "buttonThmDel_clicked" ) } )
::connect( ::oUI:q_buttonThmApp , "clicked()" , {| | ::execEvent( "buttonThmApp_clicked" ) } )
::connect( ::oUI:q_buttonThmSav , "clicked()" , {| | ::execEvent( "buttonThmSav_clicked" ) } )
::connect( ::oUI:q_listThemes , "currentRowChanged(int)" , {|i| ::execEvent( "listThemes_currentRowChanged", i ) } )
::connect( ::oUI:q_listThemes , "currentRowChanged(int)" , {|i| ::execEvent( "listThemes_currentRowChanged", i ) } )
::connect( ::oUI:q_buttonPathHrbRoot , "clicked()" , {| | ::execEvent( "buttonHrbRoot_clicked" ) } )
::connect( ::oUI:q_buttonPathHbmk2 , "clicked()" , {| | ::execEvent( "buttonHbmk2_clicked" ) } )
::connect( ::oUI:q_buttonPathEnv , "clicked()" , {| | ::execEvent( "buttonEnv_clicked" ) } )
::connect( ::oUI:q_buttonPathResources , "clicked()" , {| | ::execEvent( "buttonResources_clicked" ) } )
::connect( ::oUI:q_buttonPathTemp , "clicked()" , {| | ::execEvent( "buttonTemp_clicked" ) } )
::connect( ::oUI:q_buttonPathShortcuts , "clicked()" , {| | ::execEvent( "buttonShortcuts_clicked" ) } )
::connect( ::oUI:q_buttonPathSnippets , "clicked()" , {| | ::execEvent( "buttonSnippets_clicked" ) } )
::connect( ::oUI:q_buttonPathThemes , "clicked()" , {| | ::execEvent( "buttonThemes_clicked" ) } )
::connect( ::oUI:q_buttonViewIni , "clicked()" , {| | ::execEvent( "buttonViewIni_clicked" ) } )
::connect( ::oUI:q_buttonViewEnv , "clicked()" , {| | ::execEvent( "buttonViewEnv_clicked" ) } )
::connect( ::oUI:q_buttonViewSnippets , "clicked()" , {| | ::execEvent( "buttonViewSnippets_clicked" ) } )
::connect( ::oUI:q_buttonViewThemes , "clicked()" , {| | ::execEvent( "buttonViewThemes_clicked" ) } )
RETURN Self
@@ -1050,11 +1124,11 @@ METHOD IdeSetup:connectSlots()
METHOD IdeSetup:retrieve()
LOCAL a_, i, s, qItm
::oINI:cLineEndingMode := iif( ::oUI:q_radioLineEndCRLF : isChecked(), "CRLF", ;
iif( ::oUI:q_radioLineEndCR : isChecked(), "CR" , ;
iif( ::oUI:q_radioLineEndLF : isChecked(), "LF" , ;
iif( ::oUI:q_radioLineEndOS : isChecked(), "OS" , ;
iif( ::oUI:q_radioLineEndAuto : isChecked(), "AUTO", "CRLF" ) ) ) ) )
::oINI:cLineEndingMode := iif( ::oUI:q_radioLineEndCRLF : isChecked(), "CRLF", ;
iif( ::oUI:q_radioLineEndCR : isChecked(), "CR" , ;
iif( ::oUI:q_radioLineEndLF : isChecked(), "LF" , ;
iif( ::oUI:q_radioLineEndOS : isChecked(), "OS" , ;
iif( ::oUI:q_radioLineEndAuto : isChecked(), "AUTO", "CRLF" ) ) ) ) )
::oINI:lTrimTrailingBlanks := ::oUI:q_checkTrimTrailingBlanks : isChecked()
::oINI:lSaveSourceWhenComp := ::oUI:q_checkSaveSourceWhenComp : isChecked()
@@ -1080,11 +1154,21 @@ METHOD IdeSetup:retrieve()
s := substr( s, 1, len( s ) - 1 )
::oINI:cTextFileExtensions := s
::oINI:nTmpBkpPrd := val( ::oUI:q_editTmpBkpPrd : text() )
::oINI:cBkpPath := ::oUI:q_editBkpPath : text()
::oINI:cBkpSuffix := ::oUI:q_editBkpSuffix : text()
::oINI:lCompletionWithArgs := ::oUI:q_checkListlWithArgs : isChecked()
::oINI:lCompleteArgumented := ::oUI:q_checkCmplInclArgs : isChecked()
::oINI:nTmpBkpPrd := val( ::oUI:q_editTmpBkpPrd : text() )
::oINI:cBkpPath := ::oUI:q_editBkpPath : text()
::oINI:cBkpSuffix := ::oUI:q_editBkpSuffix : text()
::oINI:lCompletionWithArgs := ::oUI:q_checkListlWithArgs : isChecked()
::oINI:lCompleteArgumented := ::oUI:q_checkCmplInclArgs : isChecked()
/* Paths */
::oINI:cPathHrbRoot := ::oUI:q_editPathHrbRoot : text()
::oINI:cPathHbMk2 := ::oUI:q_editPathHbMk2 : text()
::oINI:cPathResources := ::oUI:q_editPathResources : text()
::oINI:cPathTemp := ::oUI:q_editPathTemp : text()
::oINI:cPathEnv := ::oUI:q_editPathEnv : text()
::oINI:cPathShortcuts := ::oUI:q_editPathShortcuts : text()
::oINI:cPathSnippets := ::oUI:q_editPathSnippets : text()
::oINI:cPathThemes := ::oUI:q_editPathThemes : text()
RETURN Self
@@ -1121,6 +1205,19 @@ METHOD IdeSetup:populate()
::oUI:q_editTabSpaces : setText( hb_ntos( ::oIde:nTabSpaces ) )
::oUI:q_editIndentSpaces : setText( hb_ntos( ::oINI:nIndentSpaces ) )
/* Paths */
::oUI:q_editPathIni : setText( ::oIde:cProjIni )
//
::oUI:q_editPathHrbRoot : setText( ::oINI:cPathHrbRoot )
::oUI:q_editPathHbMk2 : setText( ::oINI:cPathHbMk2 )
::oUI:q_editPathResources : setText( ::oINI:cPathResources )
::oUI:q_editPathTemp : setText( ::oINI:cPathTemp )
::oUI:q_editPathEnv : setText( ::oINI:cPathEnv )
::oUI:q_editPathShortcuts : setText( ::oINI:cPathShortcuts )
::oUI:q_editPathSnippets : setText( ::oINI:cPathSnippets )
::oUI:q_editPathThemes : setText( ::oINI:cPathThemes )
/* Variables */
::oUI:q_tableVar:clearContents()
::aKeyItems := {}
FOR EACH a_ IN ::oINI:aKeywords
@@ -1173,6 +1270,8 @@ METHOD IdeSetup:show()
::oUI := hbide_getUI( "setup", ::oDlg:oWidget )
::oUI:setWindowFlags( Qt_Sheet )
::oUI:setMaximumWidth( ::oUI:width() )
::oUI:setMinimumWidth( ::oUI:width() )
::oUI:setMaximumHeight( ::oUI:height() )
@@ -1197,7 +1296,8 @@ METHOD IdeSetup:show()
::populate()
::oIde:setPosByIniEx( ::oUI:oWidget, ::oINI:cSetupDialogGeometry )
::oUI:exec()
//::oUI:exec()
::oUI:show()
RETURN Self
@@ -1205,7 +1305,7 @@ METHOD IdeSetup:show()
METHOD IdeSetup:execEvent( cEvent, p, p1 )
LOCAL qItem, nIndex, qFontDlg, qFont, nOK, nRow, b_, q0, q1, nCol, w0, w1
LOCAL aRGB, nSlot, qFrame, aGrad, n, cCSS, cTheme
LOCAL aRGB, nSlot, qFrame, aGrad, n, cCSS, cTheme, cPath, cBuffer
HB_SYMBOL_UNUSED( p1 )
@@ -1352,6 +1452,7 @@ METHOD IdeSetup:execEvent( cEvent, p, p1 )
IF ( nRow := ::oUI:q_tableVar:currentRow() ) >= 0
HB_TRACE( HB_TR_ALWAYS, "RECEIVING ENTER KEY" )
::oUI:q_tableVar:editItem( p )
hbide_justACall( nRow )
#if 0
IF ::oUI:q_tableVar:currentColumn() == 0
::oUI:q_tableVar:setCurrentCell( ::oUI:q_tableVar:currentRow(), 1 )
@@ -1370,22 +1471,12 @@ METHOD IdeSetup:execEvent( cEvent, p, p1 )
EXIT
CASE "sliderValue_changed"
#if 0
nSlot := iif( ::oUI:q_radioSec1:isChecked(), 1, ;
iif( ::oUI:q_radioSec2:isChecked(), 2, ;
iif( ::oUI:q_radioSec3:isChecked(), 3, ;
iif( ::oUI:q_radioSec4:isChecked(), 4, ;
iif( ::oUI:q_radioSec5:isChecked(), 5, 0 ) ) ) ) )
#endif
nSlot := ::nCurThemeSlot
IF nSlot > 0
qFrame := { ::oUI:q_frameSec1, ::oUI:q_frameSec2, ::oUI:q_frameSec3, ::oUI:q_frameSec4, ::oUI:q_frameSec5 }[ nSlot ]
aRGB := { ::oUI:q_sliderRed:value(), ::oUI:q_sliderGreen:value(), ::oUI:q_sliderBlue:value() }
aRGB := { ::oUI:q_sliderRed:value(), ::oUI:q_sliderGreen:value(), ::oUI:q_sliderBlue:value() }
::populateThemeColors( nSlot, aRGB )
qFrame:setStyleSheet( "background-color: " + hbide_rgbString( aRGB ) + ";" )
ENDIF
@@ -1432,12 +1523,131 @@ METHOD IdeSetup:execEvent( cEvent, p, p1 )
ENDIF
EXIT
CASE "buttonIni_clicked"
EXIT
CASE "buttonHrbRoot_clicked"
IF ! empty( cPath := hbide_fetchADir( ::oDlg, "Harbour's Root Path", ::oINI:cPathHrbRoot ) )
::oINI:cPathHrbRoot := cPath
::oUI:q_editPathHrbRoot:setText( hbide_pathStripLastSlash( cPath ) )
ENDIF
EXIT
CASE "buttonHbmk2_clicked"
IF !empty( cPath := hbide_fetchAFile( ::oDlg, "Location of hbmk2", ;
{ { "Harbour Project Builder - hbmk2", "*" } }, ::oINI:cPathHbMk2 ) )
::oINI:cPathhbMk2 := cPath
::oUI:q_editPathHbMk2:setText( cPath )
ENDIF
EXIT
CASE "buttonEnv_clicked"
IF !empty( cPath := hbide_fetchAFile( ::oDlg, "Environment Definitions File ( .env )", ;
{ { "Environment Files", "*.env" } }, ::oINI:getEnvFile() ) )
::oINI:cPathEnv := cPath
::oUI:q_editPathEnv:setText( cPath )
ENDIF
EXIT
CASE "buttonResources_clicked"
IF ! empty( cPath := hbide_fetchADir( ::oDlg, "Location of Resources ( Plugins, Dialogs, Images, Scripts )", ::oINI:getResourcesPath() ) )
::oINI:cPathResources := cPath
::oUI:q_editPathResources:setText( cPath )
ENDIF
EXIT
CASE "buttonTemp_clicked"
IF ! empty( cPath := hbide_fetchADir( ::oDlg, "Location for Temporary and Transitory Files", ::oINI:getTempPath() ) )
::oINI:cPathTemp := cPath
::oUI:q_editPathTemp:setText( cPath )
ENDIF
EXIT
CASE "buttonShortcuts_clicked"
IF !empty( cPath := hbide_fetchAFile( ::oDlg, "Keyboard Mapping Definitions File ( .scu )", ;
{ { "Keyboard Mappings", "*.scu" } }, ::oINI:getShortcutsFile() ) )
::oINI:cPathShortcuts := cPath
::oUI:q_editPathShortcuts:setText( cPath )
ENDIF
EXIT
CASE "buttonSnippets_clicked"
IF !empty( cPath := hbide_fetchAFile( ::oDlg, "Code Snippets File ( .skl )", ;
{ { "Code Snippets", "*.skl" } }, ::oINI:getSnippetsFile() ) )
::oINI:cPathSnippets := cPath
::oUI:q_editPathSnippets:setText( cPath )
ENDIF
EXIT
CASE "buttonThemes_clicked"
IF !empty( cPath := hbide_fetchAFile( ::oDlg, "Syntax Highlighting Theme File ( .hbt )", ;
{ { "Syntax Theme", "*.hbt" } }, ::oINI:getThemesFile() ) )
::oINI:cPathThemes := cPath
::oUI:q_editPathThemes:setText( cPath )
ENDIF
EXIT
CASE "buttonViewIni_clicked"
::viewIt( ::oINI:getIniFile(), .t., .f., .f., .f. ) /* FileName, shouldSaveAs, shouldSave, shouldReadOnly, applyHiliter */
EXIT
CASE "buttonViewEnv_clicked"
::viewIt( ::oINI:getEnvFile(), .t., .t., .f., .f. )
EXIT
CASE "buttonViewSnippets_clicked"
::viewIt( ::oINI:getSnippetsFile(), .t., .t., .f., .t. )
EXIT
CASE "buttonViewThemes_clicked"
::viewIt( ::oINI:getThemesFile(), .t., .t., .f., .f. )
EXIT
CASE "buttonEditorSaveAs_clicked"
IF ! empty( cBuffer := p:q_plainText:toPlainText() )
IF ! empty( cPath := hbide_saveAFile( ::oDlg, "Save: " + p1, NIL, p1 ) )
hb_memowrit( cPath, cBuffer )
ENDIF
ENDIF
EXIT
CASE "buttonEditorSave_clicked"
IF ! empty( cBuffer := p:q_plainText:toPlainText() )
hb_memowrit( p1, cBuffer )
ENDIF
EXIT
CASE "buttonEditorClose_clicked"
CASE "buttonEditorX_clicked"
::disconnect( p:oWidget , QEvent_Close )
::disconnect( p:q_buttonSaveAs, "clicked()" )
::disconnect( p:q_buttonSave , "clicked()" )
::disconnect( p:q_buttonClose , "clicked()" )
p:close()
p := NIL /* Must Destroy It */
EXIT
ENDSWITCH
RETURN nRow //Self
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeSetup:viewIt( cFileName, lSaveAs, lSave, lReadOnly, lApplyHiliter )
LOCAL oUI
oUI := hbide_getUI( "editor", ::oUI:oWidget )
oUI:setWindowFlags( Qt_Sheet )
oUI:q_plainText:setReadOnly( lReadOnly )
oUI:q_buttonSaveAs:setEnabled( lSaveAs )
oUI:q_buttonSave:setEnabled( lSave )
oUI:q_plainText:setLineWrapMode( QPlainTextEdit_NoWrap )
oUI:q_plainText:setPlainText( hb_memoRead( cFileName ) )
oUI:q_plainText:setFont( ::oIde:oFont:oWidget )
IF lApplyHiliter
aadd( ::aHilighters, ::oTH:setSyntaxHilighting( oUI:q_plainText, "Bare Minimum" ) )
ENDIF
::connect( oUI:oWidget , QEvent_Close, {|| ::execEvent( "buttonEditorX_clicked" , oUI ) } )
::connect( oUI:q_buttonSaveAs, "clicked()" , {|| ::execEvent( "buttonEditorSaveAs_clicked", oUI, cFileName ) } )
::connect( oUI:q_buttonSave , "clicked()" , {|| ::execEvent( "buttonEditorSave_clicked" , oUI, cFileName ) } )
::connect( oUI:q_buttonClose , "clicked()" , {|| ::execEvent( "buttonEditorClose_clicked" , oUI ) } )
oUI:show()
RETURN Self
/*------------------------------------------------------------------------*/
METHOD IdeSetup:pushThemesData()
LOCAL s, a_, qItem

View File

@@ -71,18 +71,6 @@
/*----------------------------------------------------------------------*/
#define buttonNew_clicked 101
#define buttonRename_clicked 102
#define buttonDelete_clicked 103
#define buttonClear_clicked 104
#define buttonGetSel_clicked 105
#define buttonUpdate_clicked 106
#define listNames_itemSelectionChanged 107
#define oTree_itemSelected 108
#define oTree_contextMenu 109
/*----------------------------------------------------------------------*/
CLASS IdeSkeletons INHERIT IdeObject
DATA oRoot
@@ -95,7 +83,7 @@ CLASS IdeSkeletons INHERIT IdeObject
METHOD create( oIde )
METHOD destroy()
METHOD show()
METHOD execEvent( nMode, p )
METHOD execEvent( cEvent, p )
METHOD postSkeleton( cSkeleton )
METHOD selectByMenuAndPostText( qEdit )
METHOD getText( cSkeleton )
@@ -156,40 +144,38 @@ METHOD IdeSkeletons:destroy()
METHOD IdeSkeletons:show()
IF empty( ::oUI )
// ::oUI := HbQtUI():new( hbide_uic( "skeletons" ) ):build()
::oUI := hbqtui_Skeletons()
::oUI := hbide_getUI( "skeletons" )
::oSkeltnDock:oWidget:setWidget( ::oUI:oWidget )
::connect( ::oUI:q_buttonNew , "clicked()" , {|| ::execEvent( buttonNew_clicked ) } )
::connect( ::oUI:q_buttonRename, "clicked()" , {|| ::execEvent( buttonRename_clicked ) } )
::connect( ::oUI:q_buttonDelete, "clicked()" , {|| ::execEvent( buttonDelete_clicked ) } )
::connect( ::oUI:q_buttonClear , "clicked()" , {|| ::execEvent( buttonClear_clicked ) } )
::connect( ::oUI:q_buttonGetSel, "clicked()" , {|| ::execEvent( buttonGetSel_clicked ) } )
::connect( ::oUI:q_buttonUpdate, "clicked()" , {|| ::execEvent( buttonUpdate_clicked ) } )
::connect( ::oUI:q_listNames , "itemSelectionChanged()", {|| ::execEvent( listNames_itemSelectionChanged ) } )
::connect( ::oUI:q_buttonNew , "clicked()" , {|| ::execEvent( "buttonNew_clicked" ) } )
::connect( ::oUI:q_buttonRename, "clicked()" , {|| ::execEvent( "buttonRename_clicked" ) } )
::connect( ::oUI:q_buttonDelete, "clicked()" , {|| ::execEvent( "buttonDelete_clicked" ) } )
::connect( ::oUI:q_buttonClear , "clicked()" , {|| ::execEvent( "buttonClear_clicked" ) } )
::connect( ::oUI:q_buttonGetSel, "clicked()" , {|| ::execEvent( "buttonGetSel_clicked" ) } )
::connect( ::oUI:q_buttonUpdate, "clicked()" , {|| ::execEvent( "buttonUpdate_clicked" ) } )
::connect( ::oUI:q_listNames , "itemSelectionChanged()", {|| ::execEvent( "listNames_itemSelectionChanged" ) } )
//::oUI:q_editCode:setFontFamily( "Courier New" )
//::oUI:q_editCode:setFontPointSize( 10 )
::oUI:q_editCode:setFont( ::oFont:oWidget )
ENDIF
::refreshList()
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeSkeletons:execEvent( nMode, p )
METHOD IdeSkeletons:execEvent( cEvent, p )
LOCAL cName, qItem, cCode, n, cOpt
LOCAL aPops := {}
HB_SYMBOL_UNUSED( p )
SWITCH nMode
SWITCH cEvent
CASE buttonNew_clicked
CASE "buttonNew_clicked"
IF !empty( cName := hbide_fetchAString( ::oUI:q_listNames, "", "Name", "New Skeleton" ) )
::oUI:q_listNames:addItem( cName )
aadd( ::oIde:aSkltns, { cName, "" } )
@@ -197,33 +183,33 @@ METHOD IdeSkeletons:execEvent( nMode, p )
ENDIF
EXIT
CASE buttonRename_clicked
CASE "buttonRename_clicked"
qItem := QListWidgetItem():configure( ::oUI:q_listNames:currentItem() )
qItem:setText( ::rename( qItem:text() ) )
EXIT
CASE buttonDelete_clicked
CASE "buttonDelete_clicked"
qItem := QListWidgetItem():from( ::oUI:q_listNames:currentItem() )
::delete( qItem:text() )
EXIT
CASE buttonClear_clicked
CASE "buttonClear_clicked"
::oUI:q_editCode:clear()
EXIT
CASE buttonGetSel_clicked
CASE "buttonGetSel_clicked"
IF !empty( cCode := ::oEM:getSelectedText() )
// TODO: Format cCode
::oUI:q_editCode:setPlainText( cCode )
ENDIF
EXIT
CASE buttonUpdate_clicked
CASE "buttonUpdate_clicked"
qItem := QListWidgetItem():configure( ::oUI:q_listNames:currentItem() )
::save( qItem:text(), ::oUI:q_editCode:toPlainText() )
EXIT
CASE listNames_itemSelectionChanged
CASE "listNames_itemSelectionChanged"
qItem := QListWidgetItem():configure( ::oUI:q_listNames:currentItem() )
cName := qItem:text()
IF ( n := ascan( ::aSkltns, {|e_| e_[ 1 ] == cName } ) ) > 0
@@ -231,7 +217,7 @@ METHOD IdeSkeletons:execEvent( nMode, p )
ENDIF
EXIT
CASE oTree_contextMenu
CASE "oTree_contextMenu"
IF p[ 3 ]:caption == "Skeletons"
// Root node - nothing to do.
ELSE
@@ -249,7 +235,7 @@ METHOD IdeSkeletons:execEvent( nMode, p )
ENDIF
EXIT
CASE oTree_itemSelected
CASE "oTree_itemSelected"
::oIde:manageFocusInEditor()
::postSkeleton( p:caption )
EXIT
@@ -504,8 +490,8 @@ METHOD IdeSkeletons:showTree()
::oTree:oWidget:setIconSize( QSize():new( 12,12 ) )
::oTree:oWidget:setIndentation( 12 )
::oTree:itemSelected := {|oItem | ::execEvent( oTree_itemSelected, oItem ) }
::oTree:hbContextMenu := {|mp1, mp2, oXbp| ::execEvent( oTree_contextMenu , { mp1, mp2, oXbp } ) }
::oTree:itemSelected := {|oItem | ::execEvent( "oTree_itemSelected", oItem ) }
::oTree:hbContextMenu := {|mp1, mp2, oXbp| ::execEvent( "oTree_contextMenu" , { mp1, mp2, oXbp } ) }
::oRoot := ::oTree:rootItem:addItem( "Skeletons" )

View File

@@ -221,7 +221,7 @@ METHOD IdeSourcesManager:saveSource( nTab, lCancel, lAs )
lNew := Empty( cSource ) .OR. lAs
IF lNew
cNewFile := ::selectSource( 'save', ;
iif( !Empty( cSource ), cSource, hb_dirBase() + "projects\" ),;
iif( !Empty( cSource ), cSource, hb_dirBase() + "projects" + hb_osPathSeparator() ),;
"Save " + oEdit:oTab:caption + " as..." )
IF empty( cNewFile )
// will check later what decision to take
@@ -239,7 +239,6 @@ METHOD IdeSourcesManager:saveSource( nTab, lCancel, lAs )
* If the burn process fails, we should change the name of the previous file.
* 01/01/2010 - 21:24:41 - vailtom
*/
//cBuffer := oEdit:qEdit:toPlainText()
cBuffer := oEdit:prepareBufferToSave( oEdit:qEdit:toPlainText() )
//
IF !hb_memowrit( cFileToSave, cBuffer )

View File

@@ -80,30 +80,12 @@
#define THM_NUM_ATTRBS 6
#define applyMenu_triggered_applyToCurrentTab 1
#define applyMenu_triggered_setAsDefault 2
#define applyMenu_triggered_applyToAllTabs 3
#define listThemes_currentRowChanged 4
#define listItems_currentRowChanged 5
/*----------------------------------------------------------------------*/
FUNCTION hbide_loadThemes( oIde )
IF empty( oIde:cIniThemes )
oIde:cIniThemes := hb_dirBase() + "hbide.hbt"
ENDIF
oIde:oTH := IdeThemes():new( oIde, oIde:cIniThemes ):create()
RETURN nil
/*----------------------------------------------------------------------*/
CLASS IdeThemes INHERIT IdeObject
VAR lDefault INIT .t.
VAR cIniFile INIT ""
VAR cThemesFile INIT ""
VAR aIni INIT {}
VAR aThemes INIT {}
@@ -123,14 +105,14 @@ CLASS IdeThemes INHERIT IdeObject
VAR oSL
VAR cSelTheme
METHOD new( oIde, cIniFile )
METHOD create( oIde, cIniFile )
METHOD new( oIde, cThemesFile )
METHOD create( oIde, cThemesFile )
METHOD destroy()
METHOD setWrkTheme( cTheme )
METHOD contains( cTheme )
METHOD load( cFile )
METHOD save( lAsk )
METHOD execEvent( nMode, p )
METHOD execEvent( cEvent, p )
METHOD getThemeAttribute( cAttr, cTheme )
METHOD buildSyntaxFormat( aAttr )
METHOD setForeBackGround( qEdit, cTheme )
@@ -158,30 +140,30 @@ CLASS IdeThemes INHERIT IdeObject
/*----------------------------------------------------------------------*/
METHOD IdeThemes:new( oIde, cIniFile )
METHOD IdeThemes:new( oIde, cThemesFile )
::oIde := oIde
::cIniFile := cIniFile
::cThemesFile := cThemesFile
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeThemes:create( oIde, cIniFile )
METHOD IdeThemes:create( oIde, cThemesFile )
LOCAL s, b_
DEFAULT oIde TO ::oIde
DEFAULT cIniFile TO ::cIniFile
DEFAULT cThemesFile TO ::cThemesFile
::oIde := oIde
::cIniFile := cIniFile
::cThemesFile := cThemesFile
/* next always load default themes */
::aIni := hbide_loadDefaultThemes()
::parseINI()
/* first load user defined themes */
::load( ::cIniFile )
::load( ::cThemesFile )
/* These are the supported patterns - rest will be ignore until implemented */
@@ -250,15 +232,14 @@ METHOD IdeThemes:destroy()
/*----------------------------------------------------------------------*/
METHOD IdeThemes:execEvent( nMode, p )
METHOD IdeThemes:execEvent( cEvent, p )
LOCAL oEditor, a_
HB_SYMBOL_UNUSED( p )
DO CASE
CASE nMode == listItems_currentRowChanged
SWITCH cEvent
CASE "listItems_currentRowChanged"
::nCurItem := p+1
IF ::nCurItem == 13
::updateCurrentLineColor()
ELSEIF ::nCurItem == 16
@@ -266,25 +247,25 @@ METHOD IdeThemes:execEvent( nMode, p )
ELSE
::setAttributes( p )
ENDIF
CASE nMode == listThemes_currentRowChanged
EXIT
CASE "listThemes_currentRowChanged"
::nCurTheme := p+1
::setTheme( p )
CASE nMode == applyMenu_triggered_applyToAllTabs
EXIT
CASE "applyMenu_triggered_applyToAllTabs"
FOR EACH a_ IN ::aTabs
a_[ TAB_OEDITOR ]:applyTheme( ::aThemes[ ::nCurTheme, 1 ] )
NEXT
CASE nMode == applyMenu_triggered_applyToCurrentTab
EXIT
CASE "applyMenu_triggered_applyToCurrentTab"
IF !empty( oEditor := ::oEM:getEditorCurrent() )
oEditor:applyTheme( ::aThemes[ ::nCurTheme, 1 ] )
ENDIF
CASE nMode == applyMenu_triggered_setAsDefault
EXIT
CASE "applyMenu_triggered_setAsDefault"
::setWrkTheme( ::aThemes[ ::nCurTheme, 1 ] )
ENDCASE
EXIT
ENDSWITCH
RETURN Self
@@ -323,31 +304,20 @@ METHOD IdeThemes:load( cFile )
/*----------------------------------------------------------------------*/
METHOD IdeThemes:save( lAsk )
LOCAL cFile, cINI
LOCAL cFile
DEFAULT lAsk TO .f.
IF ::lDefault
lAsk := .t.
ENDIF
IF lAsk
cFile := hbide_saveAFile( ::oIde:oDlg, ;
"Select a File to Save Themes (.hbt)", ;
{ { "Harbour IDE Themes", "*.hbt" } }, ;
::cIniFile, ;
"hbt" )
cFile := hbide_saveAFile( ::oDlg, "Select a file to Save Theme ( .hbt )", ;
{ { "Syntax Themes", "*.hbt" } }, ::oINI:getThemesFile(), "hbt" )
ELSE
cFile := ::cIniFile
cFile := ::oINI:getThemesFile()
ENDIF
IF !empty( cFile )
cINI := ::buildINI()
hb_memowrit( cFile, cINI )
IF hb_FileExists( cFile )
::oIde:cIniThemes := cFile
::cIniFile := cFile
ENDIF
hb_memowrit( cFile, ::buildINI() )
ENDIF
RETURN Self
@@ -550,16 +520,16 @@ METHOD IdeThemes:show()
::oThemesDock:oWidget:setWidget( ::oUI )
::oUI:signal( "listThemes" , "currentRowChanged(int)" , {|i| ::execEvent( listThemes_currentRowChanged, i ) } )
::oUI:signal( "listItems" , "currentRowChanged(int)" , {|i| ::execEvent( listItems_currentRowChanged, i ) } )
::oUI:signal( "listThemes" , "currentRowChanged(int)" , {|i| ::execEvent( "listThemes_currentRowChanged", i ) } )
::oUI:signal( "listItems" , "currentRowChanged(int)" , {|i| ::execEvent( "listItems_currentRowChanged", i ) } )
::oUI:signal( "buttonColor" , "clicked()" , {| | ::updateColor() } )
::oUI:signal( "buttonSave" , "clicked()" , {| | ::save( .f. ) } )
::oUI:signal( "buttonSaveAs" , "clicked()" , {| | ::save( .t. ) } )
::oUI:signal( "buttonCopy" , "clicked()" , {| | ::copy( .t. ) } )
::oUI:signal( "buttonApply" , "clicked()" , {| | ::execEvent( applyMenu_triggered_applyToCurrentTab ) } )
::oUI:signal( "buttonApplyAll", "clicked()" , {| | ::execEvent( applyMenu_triggered_applyToAllTabs ) } )
::oUI:signal( "buttonDefault" , "clicked()" , {| | ::execEvent( applyMenu_triggered_setAsDefault ) } )
::oUI:signal( "buttonApply" , "clicked()" , {| | ::execEvent( "applyMenu_triggered_applyToCurrentTab" ) } )
::oUI:signal( "buttonApplyAll", "clicked()" , {| | ::execEvent( "applyMenu_triggered_applyToAllTabs" ) } )
::oUI:signal( "buttonDefault" , "clicked()" , {| | ::execEvent( "applyMenu_triggered_setAsDefault" ) } )
::oUI:signal( "checkItalic" , "stateChanged(int)" , {|i| ::updateAttribute( THM_ATR_ITALIC, i ) } )
::oUI:signal( "checkBold" , "stateChanged(int)" , {|i| ::updateAttribute( THM_ATR_BOLD , i ) } )
@@ -987,10 +957,10 @@ STATIC FUNCTION GetSource()
aadd( txt_, ' METHOD new() ' )
aadd( txt_, ' ENDCLASS ' )
aadd( txt_, '/*----------------------------------------------------------------------*/ ' )
aadd( txt_, 'METHOD IdeThemes:new( oIde, cIniFile ) ' )
aadd( txt_, 'METHOD IdeThemes:new( oIde, cThemesFile ) ' )
aadd( txt_, ' ' )
aadd( txt_, ' ::oIde := oIde ' )
aadd( txt_, ' ::cIniFile := cIniFile ' )
aadd( txt_, ' ::cThemesFile := cThemesFile ' )
aadd( txt_, ' ' )
aadd( txt_, ' RETURN Self ' )
aadd( txt_, '/*----------------------------------------------------------------------*/ ' )

Binary file not shown.

After

Width:  |  Height:  |  Size: 797 B

View File

@@ -865,20 +865,20 @@
<property name="geometry">
<rect>
<x>14</x>
<y>72</y>
<width>89</width>
<y>86</y>
<width>259</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>hbmk2 executable</string>
<string>hbmk2 executable ( D: _harbour_root_bin_hbmk2 )</string>
</property>
</widget>
<widget class="QLineEdit" name="editPathHbmk2">
<property name="geometry">
<rect>
<x>14</x>
<y>88</y>
<y>102</y>
<width>259</width>
<height>20</height>
</rect>
@@ -888,20 +888,20 @@
<property name="geometry">
<rect>
<x>14</x>
<y>122</y>
<width>139</width>
<y>278</y>
<width>259</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Snippets ( hbide.skl )</string>
<string>Snippets ( D: _ini_path_hbide.skl )</string>
</property>
</widget>
<widget class="QLineEdit" name="editPathSnippets">
<property name="geometry">
<rect>
<x>14</x>
<y>140</y>
<y>296</y>
<width>259</width>
<height>20</height>
</rect>
@@ -911,20 +911,20 @@
<property name="geometry">
<rect>
<x>14</x>
<y>176</y>
<width>197</width>
<y>200</y>
<width>261</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Environments ( hbide.env )</string>
<string>Environments ( D: _ini_path_hbide.env )</string>
</property>
</widget>
<widget class="QLineEdit" name="editPathEnv">
<property name="geometry">
<rect>
<x>14</x>
<y>194</y>
<y>218</y>
<width>261</width>
<height>20</height>
</rect>
@@ -934,7 +934,7 @@
<property name="geometry">
<rect>
<x>14</x>
<y>18</y>
<y>12</y>
<width>99</width>
<height>16</height>
</rect>
@@ -947,7 +947,7 @@
<property name="geometry">
<rect>
<x>14</x>
<y>34</y>
<y>28</y>
<width>259</width>
<height>20</height>
</rect>
@@ -957,20 +957,20 @@
<property name="geometry">
<rect>
<x>14</x>
<y>232</y>
<width>143</width>
<y>238</y>
<width>257</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Shortcuts ( hbide.scu )</string>
<string>Shortcuts ( D: _ini_path_hbide.scu )</string>
</property>
</widget>
<widget class="QLineEdit" name="editPathShortcuts">
<property name="geometry">
<rect>
<x>14</x>
<y>250</y>
<y>256</y>
<width>261</width>
<height>20</height>
</rect>
@@ -980,45 +980,32 @@
<property name="geometry">
<rect>
<x>14</x>
<y>290</y>
<width>183</width>
<y>318</y>
<width>259</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Syntax Themes ( hbide.thm )</string>
<string>Syntax Themes ( D: _ini_path_hbide.hbt )</string>
</property>
</widget>
<widget class="QLineEdit" name="editPathThemes">
<property name="geometry">
<rect>
<x>14</x>
<y>308</y>
<y>336</y>
<width>261</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QToolButton" name="buttonPathIni">
<property name="geometry">
<rect>
<x>284</x>
<y>34</y>
<width>25</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
<widget class="QToolButton" name="buttonPathHbmk2">
<property name="geometry">
<rect>
<x>284</x>
<y>88</y>
<y>102</y>
<width>25</width>
<height>20</height>
<height>21</height>
</rect>
</property>
<property name="text">
@@ -1029,7 +1016,7 @@
<property name="geometry">
<rect>
<x>284</x>
<y>140</y>
<y>296</y>
<width>25</width>
<height>20</height>
</rect>
@@ -1042,7 +1029,7 @@
<property name="geometry">
<rect>
<x>284</x>
<y>194</y>
<y>218</y>
<width>25</width>
<height>20</height>
</rect>
@@ -1055,7 +1042,7 @@
<property name="geometry">
<rect>
<x>284</x>
<y>250</y>
<y>256</y>
<width>25</width>
<height>20</height>
</rect>
@@ -1068,7 +1055,7 @@
<property name="geometry">
<rect>
<x>284</x>
<y>308</y>
<y>336</y>
<width>25</width>
<height>20</height>
</rect>
@@ -1077,11 +1064,11 @@
<string>...</string>
</property>
</widget>
<widget class="QToolButton" name="toolButton">
<widget class="QToolButton" name="buttonViewIni">
<property name="geometry">
<rect>
<x>314</x>
<y>34</y>
<y>28</y>
<width>25</width>
<height>20</height>
</rect>
@@ -1094,7 +1081,7 @@
<property name="geometry">
<rect>
<x>314</x>
<y>140</y>
<y>296</y>
<width>25</width>
<height>21</height>
</rect>
@@ -1107,7 +1094,7 @@
<property name="geometry">
<rect>
<x>314</x>
<y>194</y>
<y>218</y>
<width>25</width>
<height>20</height>
</rect>
@@ -1120,7 +1107,7 @@
<property name="geometry">
<rect>
<x>314</x>
<y>308</y>
<y>336</y>
<width>25</width>
<height>20</height>
</rect>
@@ -1129,6 +1116,114 @@
<string>...</string>
</property>
</widget>
<widget class="QToolButton" name="buttonPathHrbRoot">
<property name="geometry">
<rect>
<x>284</x>
<y>64</y>
<width>25</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
<widget class="QLineEdit" name="editPathHrbRoot">
<property name="geometry">
<rect>
<x>14</x>
<y>64</y>
<width>259</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_27">
<property name="geometry">
<rect>
<x>14</x>
<y>48</y>
<width>259</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Harbour Root</string>
</property>
</widget>
<widget class="QLineEdit" name="editPathResources">
<property name="geometry">
<rect>
<x>14</x>
<y>142</y>
<width>259</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QToolButton" name="buttonPathResources">
<property name="geometry">
<rect>
<x>284</x>
<y>142</y>
<width>25</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
<widget class="QLabel" name="label_28">
<property name="geometry">
<rect>
<x>14</x>
<y>126</y>
<width>259</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Resources ( Plugins, Images, Dialogs, Scripts, etc. )</string>
</property>
</widget>
<widget class="QLineEdit" name="editPathTemp">
<property name="geometry">
<rect>
<x>14</x>
<y>180</y>
<width>259</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QToolButton" name="buttonPathTemp">
<property name="geometry">
<rect>
<x>284</x>
<y>180</y>
<width>25</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
<widget class="QLabel" name="label_29">
<property name="geometry">
<rect>
<x>14</x>
<y>164</y>
<width>259</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Temporary and Transitory Files Path</string>
</property>
</widget>
</widget>
</widget>
<widget class="QWidget" name="pageVariables">