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

+ contrib/hbide/editor.ui
    + Added: to be used a little while.

  * contrib/hbide/setup.ui
    + Added: <Selections><Code Completion>
             1. Completion List with Arguments ?
             2. Complete Code including Arguments ?

  * contrib/hbide/hbide.hbp
  * contrib/hbide/idebrowse.prg
  * contrib/hbide/ideedit.prg
  * contrib/hbide/ideeditor.prg
  * contrib/hbide/idefunctions.prg
  * contrib/hbide/idesaveload.prg
    + Implemented: a better control over code completion feature.
      Now completion list can be presented with argument list intact,
      i.e., hbide_isValidSource( cSourceFile ) can be presented 
      either as (default) hbide_isValidSource     OR
                          hbide_isValidSource( cSourceFile )
      Similarily, code can also be completed including arguments
      list or without it. Please experiment.
This commit is contained in:
Pritpal Bedi
2010-07-07 01:36:09 +00:00
parent e61f14aa97
commit b659d0135d
9 changed files with 573 additions and 24 deletions

View File

@@ -16,6 +16,29 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-07-06 18:29 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
+ contrib/hbide/editor.ui
+ Added: to be used a little while.
* contrib/hbide/setup.ui
+ Added: <Selections><Code Completion>
1. Completion List with Arguments ?
2. Complete Code including Arguments ?
* contrib/hbide/hbide.hbp
* contrib/hbide/idebrowse.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idefunctions.prg
* contrib/hbide/idesaveload.prg
+ Implemented: a better control over code completion feature.
Now completion list can be presented with argument list intact,
i.e., hbide_isValidSource( cSourceFile ) can be presented
either as (default) hbide_isValidSource OR
hbide_isValidSource( cSourceFile )
Similarily, code can also be completed including arguments
list or without it. Please experiment.
2010-07-07 01:46 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* utils/hbmk2/hbmk2.prg
+ -autohbc now has natural defaults, header part will

View File

@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>454</width>
<height>544</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>
<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">
<string>...</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QToolButton" name="buttonPrev">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QToolButton" name="buttonFirst">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QToolButton" name="buttonLast">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="2" column="5">
<widget class="QPushButton" name="buttonOk">
<property name="text">
<string>OK</string>
</property>
</widget>
</item>
<item row="2" column="4">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -43,6 +43,7 @@ idebrowse.prg
docviewgenerator.ui
docwriter.ui
editor.ui
environ.ui
environments.ui
finddialog.ui

View File

@@ -510,6 +510,19 @@ METHOD IdeBrowseManager:loadTables()
FOR EACH cInfo IN ::oINI:aDbuPanelsInfo
aPanel := hb_aTokens( cInfo, "," )
aSize( aPanel, TBL_VRBLS )
DEFAULT aPanel[ TBL_PANEL ] TO ""
DEFAULT aPanel[ TBL_NAME ] TO ""
DEFAULT aPanel[ TBL_ALIAS ] TO ""
DEFAULT aPanel[ TBL_DRIVER ] TO ""
DEFAULT aPanel[ TBL_INDEX ] TO 0
DEFAULT aPanel[ TBL_RECORD ] TO 0
DEFAULT aPanel[ TBL_CURSOR ] TO 0
DEFAULT aPanel[ TBL_GEOMETRY ] TO ""
DEFAULT aPanel[ TBL_NEXT ] TO ""
IF ::isPanel( aPanel[ 1 ] )
IF hb_fileExists( cTable := hbide_pathToOSPath( aPanel[ 2 ] ) )
::setPanel( aPanel[ 1 ] )

View File

@@ -234,6 +234,7 @@ CLASS IdeEdit INHERIT IdeObject
METHOD findEx( cText, nFlags, nStart )
METHOD highlightAll( cText )
METHOD unHighlight()
METHOD parseCodeCompletion( cSyntax )
ENDCLASS
@@ -2196,6 +2197,23 @@ METHOD IdeEdit:hidePrototype()
/*----------------------------------------------------------------------*/
METHOD IdeEdit:parseCodeCompletion( cSyntax )
LOCAL cText, n
IF ::oINI:lCompleteArgumented
cText := trim( cSyntax )
ELSE
IF ( n := at( "(", cSyntax ) ) > 0
cText := trim( substr( cSyntax, 1, n - 1 ) )
ELSE
cText := trim( cSyntax )
ENDIF
ENDIF
RETURN cText
/*----------------------------------------------------------------------*/
METHOD IdeEdit:completeCode( p )
LOCAL qCursor := QTextCursor():from( ::qEdit:textCursor() )
@@ -2203,7 +2221,7 @@ METHOD IdeEdit:completeCode( p )
qCursor:movePosition( QTextCursor_StartOfWord )
qCursor:movePosition( QTextCursor_EndOfWord, QTextCursor_KeepAnchor )
qCursor:insertText( p )
qCursor:insertText( ::parseCodeCompletion( p ) )
qCursor:movePosition( QTextCursor_Left )
qCursor:movePosition( QTextCursor_Right )

View File

@@ -175,6 +175,7 @@ CLASS IdeEditsManager INHERIT IdeObject
METHOD spaces2tabs()
METHOD qscintilla()
METHOD setStyleSheet( nMode )
METHOD updateCompleter()
ENDCLASS
@@ -230,9 +231,18 @@ METHOD IdeEditsManager:create( oIde )
aadd( ::aActions, { "" , ::qContextSub:addSeparator() } )
aadd( ::aActions, { "Close Split" , ::qContextSub:addAction( "Close Split Window" ) } )
/* Define code completer */
::oIde:qProtoList := QStringList():new()
::oIde:qCompModel := QStringListModel():new()
::oIde:qCompleter := QCompleter():new()
::connect( ::qCompleter, "activated(QString)", {|p| ::execEvent( qcompleter_activated, p ) } )
::updateCompleter()
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeEditsManager:updateCompleter()
::qCompModel:setStringList( ::qProtoList )
::qCompleter:setModel( ::qCompModel )
@@ -241,7 +251,7 @@ METHOD IdeEditsManager:create( oIde )
::qCompleter:setCompletionMode( QCompleter_PopupCompletion )
::qCompleter:setWrapAround( .f. )
::connect( ::qCompleter, "activated(QString)", {|p| ::execEvent( qcompleter_activated, p ) } )
QListView():from( ::qCompleter:popup() ):setAlternatingRowColors( .t. )
RETURN Self

View File

@@ -592,6 +592,7 @@ METHOD IdeFunctions:consolidateList()
METHOD IdeFunctions:populateTable()
LOCAL oTbl, qItm, a_, n, s, k_:={}
LOCAL qApp := QApplication():new()
::clear( .t. )
::buildHeader()
@@ -608,39 +609,36 @@ METHOD IdeFunctions:populateTable()
oTbl:setItem( n, 0, qItm )
oTbl:setRowHeight( n, 16 )
QApplication():new():processEvents()
qApp:processEvents()
aadd( ::aItems, qItm )
n++
::oUI:q_labelEntries:setText( "Entries: " + hb_ntos( n ) )
NEXT
::qProtoList:clear()
FOR EACH a_ IN ::aList
s := a_[ 2 ]
IF ( n := at( "(", s ) ) == 0
IF ( n := at( " ", s ) ) > 0
aadd( k_, substr( s, 1, n - 1 ) )
ELSE
aadd( k_, trim( s ) )
ENDIF
IF ::oINI:lCompletionWithArgs
aadd( k_, trim( s ) )
ELSE
aadd( k_, substr( s, 1, n - 1 ) )
IF ( n := at( "(", s ) ) == 0
IF ( n := at( " ", s ) ) > 0
aadd( k_, substr( s, 1, n - 1 ) )
ELSE
aadd( k_, trim( s ) )
ENDIF
ELSE
aadd( k_, substr( s, 1, n - 1 ) )
ENDIF
ENDIF
NEXT
asort( k_, , , {|e,f| lower( e ) < lower( f ) } )
::qProtoList:clear()
aeval( k_, {|e| ::qProtoList:append( e ) } )
::qCompModel:setStringList( ::qProtoList )
::qCompleter:setModel( ::qCompModel )
::qCompleter:setModelSorting( QCompleter_CaseInsensitivelySortedModel )
::qCompleter:setCaseSensitivity( Qt_CaseInsensitive )
::qCompleter:setCompletionMode( QCompleter_PopupCompletion )
::qCompleter:setWrapAround( .f. )
QListView():from( ::qCompleter:popup() ):setAlternatingRowColors( .t. )
::oEM:updateCompleter()
RETURN Self

View File

@@ -162,6 +162,9 @@ CLASS IdeINI INHERIT IdeObject
DATA cBkpPath INIT ""
DATA cBkpSuffix INIT ".bkp"
DATA lCompletionWithArgs INIT .f.
DATA lCompleteArgumented INIT .f.
METHOD new( oIde )
METHOD create( oIde )
METHOD load( cHbideIni )
@@ -248,6 +251,8 @@ METHOD IdeINI:save( cHbideIni )
aadd( txt_, "TmpBkpPrd" + "=" + hb_ntos( ::nTmpBkpPrd ) )
aadd( txt_, "BkpPath" + "=" + ::cBkpPath )
aadd( txt_, "BkpSuffix" + "=" + ::cBkpSuffix )
aadd( txt_, "CodeListWithArgs" + "=" + iif( ::lCompletionWithArgs , "YES", "NO" ) )
aadd( txt_, "CompletionWithArgs" + "=" + iif( ::lCompleteArgumented , "YES", "NO" ) )
aadd( txt_, "[PROJECTS]" )
aadd( txt_, " " )
@@ -504,6 +509,8 @@ METHOD IdeINI:load( cHbideIni )
CASE "TmpBkpPrd" ; ::oINI:nTmpBkpPrd := val( cVal ) ; EXIT
CASE "BkpPath" ; ::oINI:cBkpPath := cVal ; EXIT
CASE "BkpSuffix" ; ::oINI:cBkpSuffix := cVal ; EXIT
CASE "CodeListWithArgs" ; ::oINI:lCompletionWithArgs := cVal != "NO" ; EXIT
CASE "CompletionWithArgs" ; ::oINI:lCompleteArgumented := cVal != "NO" ; EXIT
ENDSWITCH
ENDIF
@@ -795,7 +802,7 @@ CLASS IdeSetup INHERIT IdeObject
DATA oINI
DATA qOrgPalette
DATA aItems INIT {}
DATA aTree INIT { "General", "Selections", "Font", "Paths", "Variables", "Dictionaries" }
DATA aTree INIT { "General", "Selections", "Font", "Paths", "Variables", "Dictionaries", "Themes" }
DATA aStyles INIT { "cleanlooks", "windows", "windowsxp", ;
"windowsvista", "cde", "motif", "plastique", "macintosh" }
DATA aKeyItems INIT {}
@@ -968,6 +975,8 @@ METHOD IdeSetup:retrieve()
::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()
RETURN Self
@@ -1017,9 +1026,11 @@ METHOD IdeSetup:populate()
::oUI:q_listTextExt:setSortingEnabled( .t. )
::oUI:q_listTextExt:sortItems()
::oUI:q_editTmpBkpPrd : setText( hb_ntos( ::oINI:nTmpBkpPrd ) )
::oUI:q_editBkpPath : setText( ::oINI:cBkpPath )
::oUI:q_editBkpSuffix : setText( ::oINI:cBkpSuffix )
::oUI:q_editTmpBkpPrd : setText( hb_ntos( ::oINI:nTmpBkpPrd ) )
::oUI:q_editBkpPath : setText( ::oINI:cBkpPath )
::oUI:q_editBkpSuffix : setText( ::oINI:cBkpSuffix )
::oUI:q_checkListlWithArgs : setChecked( ::oINI:lCompletionWithArgs )
::oUI:q_checkCmplInclArgs : setChecked( ::oINI:lCompleteArgumented )
::connectSlots()
RETURN Self

View File

@@ -576,6 +576,45 @@
</widget>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox_22">
<property name="geometry">
<rect>
<x>10</x>
<y>158</y>
<width>331</width>
<height>71</height>
</rect>
</property>
<property name="title">
<string> Code Completion</string>
</property>
<widget class="QCheckBox" name="checkListlWithArgs">
<property name="geometry">
<rect>
<x>12</x>
<y>20</y>
<width>307</width>
<height>19</height>
</rect>
</property>
<property name="text">
<string>Show code completion list with arguments ?</string>
</property>
</widget>
<widget class="QCheckBox" name="checkCmplInclArgs">
<property name="geometry">
<rect>
<x>12</x>
<y>42</y>
<width>307</width>
<height>19</height>
</rect>
</property>
<property name="text">
<string>Complete the code including arguments body ?</string>
</property>
</widget>
</widget>
</widget>
</widget>
<widget class="QWidget" name="pageFontEtc">
@@ -1578,6 +1617,360 @@
</widget>
</widget>
</widget>
<widget class="QWidget" name="page">
<widget class="QGroupBox" name="groupBox_21">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>351</width>
<height>365</height>
</rect>
</property>
<property name="title">
<string/>
</property>
<widget class="QListWidget" name="listThemes">
<property name="geometry">
<rect>
<x>10</x>
<y>8</y>
<width>99</width>
<height>135</height>
</rect>
</property>
</widget>
<widget class="QFrame" name="frameVert">
<property name="geometry">
<rect>
<x>118</x>
<y>8</y>
<width>65</width>
<height>135</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
<widget class="QFrame" name="frameHorz">
<property name="geometry">
<rect>
<x>193</x>
<y>9</y>
<width>149</width>
<height>133</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
<widget class="QLineEdit" name="editSec1">
<property name="geometry">
<rect>
<x>12</x>
<y>174</y>
<width>49</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_19">
<property name="geometry">
<rect>
<x>12</x>
<y>152</y>
<width>53</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Sections</string>
</property>
</widget>
<widget class="QLineEdit" name="editSec2">
<property name="geometry">
<rect>
<x>12</x>
<y>202</y>
<width>49</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="editSec3">
<property name="geometry">
<rect>
<x>12</x>
<y>230</y>
<width>49</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="editSec4">
<property name="geometry">
<rect>
<x>12</x>
<y>258</y>
<width>49</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="editSec5">
<property name="geometry">
<rect>
<x>12</x>
<y>286</y>
<width>49</width>
<height>20</height>
</rect>
</property>
</widget>
<widget class="QSlider" name="sldrRed1">
<property name="geometry">
<rect>
<x>118</x>
<y>176</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QSlider" name="sldrGreen1">
<property name="geometry">
<rect>
<x>196</x>
<y>176</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QSlider" name="sldrBlue1">
<property name="geometry">
<rect>
<x>274</x>
<y>176</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QSlider" name="sldrRed2">
<property name="geometry">
<rect>
<x>118</x>
<y>204</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QSlider" name="sldrGreen2">
<property name="geometry">
<rect>
<x>196</x>
<y>204</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QSlider" name="sldrBlue2">
<property name="geometry">
<rect>
<x>274</x>
<y>204</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QSlider" name="sldrRed3">
<property name="geometry">
<rect>
<x>118</x>
<y>232</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QSlider" name="sldrGreen3">
<property name="geometry">
<rect>
<x>196</x>
<y>232</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QSlider" name="sldrBlue3">
<property name="geometry">
<rect>
<x>274</x>
<y>232</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QSlider" name="sldrRed4">
<property name="geometry">
<rect>
<x>118</x>
<y>260</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QSlider" name="sldrGreen4">
<property name="geometry">
<rect>
<x>196</x>
<y>260</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QSlider" name="sldrBlue4">
<property name="geometry">
<rect>
<x>274</x>
<y>260</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QSlider" name="sldrRed5">
<property name="geometry">
<rect>
<x>118</x>
<y>288</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QSlider" name="sldrGreen5">
<property name="geometry">
<rect>
<x>196</x>
<y>288</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QSlider" name="sldrBlue5">
<property name="geometry">
<rect>
<x>274</x>
<y>288</y>
<width>65</width>
<height>16</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<widget class="QLabel" name="label_20">
<property name="geometry">
<rect>
<x>144</x>
<y>156</y>
<width>27</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Red</string>
</property>
</widget>
<widget class="QLabel" name="label_21">
<property name="geometry">
<rect>
<x>216</x>
<y>156</y>
<width>37</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Green</string>
</property>
</widget>
<widget class="QLabel" name="label_22">
<property name="geometry">
<rect>
<x>298</x>
<y>156</y>
<width>31</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Blue</string>
</property>
</widget>
</widget>
</widget>
</widget>
<widget class="QPushButton" name="buttonClose">
<property name="geometry">