diff --git a/harbour/ChangeLog b/harbour/ChangeLog
index b65d066a39..cef1964019 100644
--- a/harbour/ChangeLog
+++ b/harbour/ChangeLog
@@ -16,6 +16,70 @@
The license applies to all entries newer than 2009-04-28.
*/
+2010-06-27 19:34 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
+ * contrib/hbide/toolsutilities.ui
+ + Added "Plugin" "Init at startup" slots.
+
+ * contrib/hbqt/hbqt_hbslots.cpp
+ + Deactivated: one tracelog entry.
+
+ * contrib/hbide/hbide.prg
+ * contrib/hbide/ideactions.prg
+ * contrib/hbide/idedocks.prg
+ * contrib/hbide/ideedit.prg
+ * contrib/hbide/ideeditor.prg
+ * contrib/hbide/idemisc.prg
+ * contrib/hbide/ideplugins.prg
+ * contrib/hbide/ideprojmanager.prg
+ * contrib/hbide/idethemes.prg
+ * contrib/hbide/idetools.prg
+
+ % Fixed: docking widgets had stopped to be resizable.
+
+ + Enhanced: plugins are now supported in .prg format also.
+
+ + REQUESTed all hbQT and hbXBP classes for scripts to be
+ completely functional.
+
+ + Added: "Plugins" combo-box and "Init at startup" checkbox in
+ "Tools & Utilities" dialog below to "Command Line Parameters".
+ If "Init at startup" checkbox is checked then this plugin
+ is initialized at startup. Such defined plugins can be placed
+ on user-defined toolbars and can be executed directly from
+ there.
+
+ "Parameters" editbox can hold the parameters passed to the plugin.
+ The format of such parameters is like command line but with one
+ difference that string parameter are enclosed in double quotes and
+ separated by spaces. For example: "open" 100 100 700 500.
+
+ + Initialized: plugins at the startup which are flagged as such
+ through "Tools & Utilities" interface. It facilitate to hook
+ user defined parameters, object tweakings, etc at the startup.
+ For example, user can setup compiler and or build environment
+ with hb_setEnv() functions.
+
+ + Top-Toolbar icon "Run as Script". This option allow you to run
+ source of current editing instance as a script. It is especially
+ handy to debug isolated dialogs etc on the fly. Below is an
+ example to test a dialog:
+
+ FUNCTION Main()
+ LOCAL oDlg
+ LOCAL nT := 10, nL := 10, nW := 300, nH := 200
+
+ oDlg := QDialog():new()
+ oDlg:move( nT, nL )
+ oDlg:resize( nW, nH )
+
+ oDlg:exec()
+
+ RETURN NIL
+
+ NOTE: no preprocessor is available, so all variable must be self contained.
+
+ Preceived, thoughtof, tested, by Antonio Linares, thanks.
+
2010-06-28 02:29 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* contrib/hbqt/qtwebkit/hbqtwebkit.hbp
+ contrib/hbqt/qtwebkit/hbqtwebkits.hbp
diff --git a/harbour/contrib/hbide/hbide.prg b/harbour/contrib/hbide/hbide.prg
index 0e0fb0d7a4..665bd8fee5 100644
--- a/harbour/contrib/hbide/hbide.prg
+++ b/harbour/contrib/hbide/hbide.prg
@@ -93,6 +93,8 @@ STATIC s_pathSep
PROCEDURE Main( ... )
LOCAL oIde
+ hbide_request()
+
#ifdef HB_IDE_DISTRO
LOCAL cSep := hb_osPathSeparator()
LOCAL cBse := hb_dirBase() + ".."
@@ -536,9 +538,8 @@ METHOD HbIde:create( aParams )
/* Load tags last tagged projects */
::oFN:loadTags( ::oINI:aTaggedProjects )
- #if 0 /* Can be controlled through setup */
+ /* Initialize plugins */
hbide_loadPlugins( Self, "1.0" )
- #endif
DO WHILE .t.
::nEvent := AppEvent( @::mp1, @::mp2, @::oXbp )
@@ -702,6 +703,7 @@ METHOD HbIde:execAction( cKey )
CASE "NewProject"
CASE "LoadProject"
CASE "LaunchProject"
+ CASE "RunAsScript"
CASE "BuildSource"
CASE "Build"
CASE "BuildLaunch"
@@ -959,6 +961,9 @@ METHOD HbIde:execProjectAction( cKey )
CASE "LaunchProject"
::oPM:launchProject()
EXIT
+ CASE "RunAsScript"
+ ::oPM:runAsScript( .t. )
+ EXIT
CASE "BuildSource"
::oPM:buildSource( .t. )
EXIT
diff --git a/harbour/contrib/hbide/ideactions.prg b/harbour/contrib/hbide/ideactions.prg
index b1b7e8dfca..5e6f9948d1 100644
--- a/harbour/contrib/hbide/ideactions.prg
+++ b/harbour/contrib/hbide/ideactions.prg
@@ -182,6 +182,7 @@ METHOD IdeActions:loadActions()
aadd( aAct, { "TB_Save" , "~Save" , "save" , "" , "No", "Yes" } )
aadd( aAct, { "TB_Close" , "~Close" , "close" , "" , "No", "Yes" } )
aadd( aAct, { "TB_Print" , "~Print" , "print" , "" , "No", "Yes" } )
+ aadd( aAct, { "TB_Script" , "Run as script" , "runscript" , "" , "No", "Yes" } )
aadd( aAct, { "TB_Compile" , "Co~mpile" , "compile" , "" , "No", "Yes" } )
aadd( aAct, { "TB_CompilePPO" , "Com~pile to PPO" , "ppo" , "" , "No", "Yes" } )
aadd( aAct, { "TB_BuildSource" , "Build Source" , "buildsource" , "" , "No", "Yes" } )
@@ -341,6 +342,7 @@ METHOD IdeActions:buildToolBar()
oTBar:addItem( ::getAction( "TB_Close" ), , , , , , "Close" )
oTBar:addItem( ::getAction( "TB_Print" ), , , , , , "Print" )
oTBar:addItem( , , , , , nSep )
+ oTBar:addItem( ::getAction( "TB_Script" ), , , , , , "RunAsScript" )
oTBar:addItem( ::getAction( "TB_Compile" ), , , , , , "Compile" )
oTBar:addItem( ::getAction( "TB_CompilePPO" ), , , , , , "CompilePPO" )
oTBar:addItem( ::getAction( "TB_BuildSource" ), , , , , , "BuildSource" )
diff --git a/harbour/contrib/hbide/idedocks.prg b/harbour/contrib/hbide/idedocks.prg
index 1946245ee5..3d42053bbd 100644
--- a/harbour/contrib/hbide/idedocks.prg
+++ b/harbour/contrib/hbide/idedocks.prg
@@ -232,7 +232,7 @@ METHOD IdeDocks:buildDialog()
::oDlg:icon := hbide_image( "hbide" )
::oDlg:title := "Harbour IDE"
// ::oDlg:qtObject := HbQtUI():new( hbide_uic( "mainwindow" ) ):build()
- ::oUI := hbide_getUI( "mainwindow" )
+ ::oDlg:qtObject := hbide_getUI( "mainwindow" )
::oDlg:create( , , , , , .f. )
::oDlg:setStyleSheet( GetStyleSheet( "QMainWindow", ::nAnimantionMode ) )
diff --git a/harbour/contrib/hbide/ideedit.prg b/harbour/contrib/hbide/ideedit.prg
index fac31f635b..332b5248a7 100644
--- a/harbour/contrib/hbide/ideedit.prg
+++ b/harbour/contrib/hbide/ideedit.prg
@@ -2313,6 +2313,7 @@ FUNCTION hbide_isHarbourKeyword( cWord, oIde )
STATIC s_b_ := { ;
'function' => NIL,;
'return' => NIL,;
+ 'request' => NIL,;
'static' => NIL,;
'local' => NIL,;
'default' => NIL,;
diff --git a/harbour/contrib/hbide/ideeditor.prg b/harbour/contrib/hbide/ideeditor.prg
index e81ccd69bd..e1231a2c8f 100644
--- a/harbour/contrib/hbide/ideeditor.prg
+++ b/harbour/contrib/hbide/ideeditor.prg
@@ -1644,6 +1644,12 @@ METHOD IdeEditor:scrollThumbnail()
/*----------------------------------------------------------------------*/
METHOD IdeEditor:qscintilla()
+
+ // hbide_browseSome( Self )
+
+ // hbide_qtDesigner()
+
+
#ifdef HB_WITH_QSCINTILLA
#include "hbqscintilla.ch"
@@ -1712,10 +1718,11 @@ METHOD IdeEditor:qscintilla()
oSci:setAutoCompletionShowSingle( .t. )
oSci:setAutoCompletionFillupsEnabled( .t. )
-HB_TRACE( HB_TR_ALWAYS, time() )
+ HB_TRACE( HB_TR_ALWAYS, time() )
oSci:setText( hb_memoread( "c:\harbour\contrib\hbide\idemisc.prg" ) )
// oSci:setText( hb_memoread( "c:\harbour\contrib\hbide\ideparseexpr.c" ) )
-HB_TRACE( HB_TR_ALWAYS, time(), "after" )
+ HB_TRACE( HB_TR_ALWAYS, time(), "after" )
+
c1 := QColor():new( 0,0,255 )
c2 := QColor():new( 0,12,133 )
c3 := QColor():new( 20,122,144 )
@@ -1749,8 +1756,8 @@ HB_TRACE( HB_TR_ALWAYS, time(), "after" )
qLexer:setColor( QColor():new( 255, 127, 67 ), SCE_FS_KEYWORD )
qLexer:setColor( QColor():new( 255, 0, 127 ), SCE_FS_KEYWORD2 )
- qLexer:setColor( QColor():new( 127, 67 , 255 ), SCE_FS_OPERATOR )
- qLexer:setColor( QColor():new( 255, 0 , 0 ), SCE_FS_BRACE )
+ qLexer:setColor( QColor():new( 127, 67, 255 ), SCE_FS_OPERATOR )
+ qLexer:setColor( QColor():new( 255, 0, 0 ), SCE_FS_BRACE )
qApis := QsciAPIs():new( qLexer )
qApis:load( "c:/temp/cpp.api" )
@@ -1767,4 +1774,38 @@ HB_TRACE( HB_TR_ALWAYS, time(), "after" )
/*----------------------------------------------------------------------*/
+STATIC FUNCTION hbide_qtDesigner()
+
+ #ifdef __DESIGNER__
+ LOCAL n
+ STATIC oEdt, oWM
+
+ oEdt := QDesignerFormEditorInterface():new( ::oDlg:oWidget )
+ HB_TRACE( HB_TR_ALWAYS, 1 )
+ oWM := QDesignerFormWindowManagerInterface():from( oEdt:formWindowManager() )
+ HB_TRACE( HB_TR_ALWAYS, 2 )
+ oWM:createFormWindow( ::oQScintillaDock:oWidget )
+ HB_TRACE( HB_TR_ALWAYS, 3 )
+ ::oQScintillaDock:oWidget:show()
+ HB_TRACE( HB_TR_ALWAYS, 4 )
+ n := oWM:formWindowCount()
+ HB_TRACE( HB_TR_ALWAYS, n )
+
+ /*
+ QDesignerActionEditorInterface * actionEditor () const
+ QDesignerFormWindowManagerInterface * formWindowManager () const
+ QDesignerObjectInspectorInterface * objectInspector () const
+ QDesignerPropertyEditorInterface * propertyEditor () const
+ void setActionEditor ( QDesignerActionEditorInterface * actionEditor )
+ void setObjectInspector ( QDesignerObjectInspectorInterface * objectInspector )
+ void setPropertyEditor ( QDesignerPropertyEditorInterface * propertyEditor )
+ void setWidgetBox ( QDesignerWidgetBoxInterface * widgetBox )
+ QWidget * topLevel () const
+ QDesignerWidgetBoxInterface * widgetBox () const
+ */
+
+ #endif
+ RETURN NIL
+
+/*----------------------------------------------------------------------*/
diff --git a/harbour/contrib/hbide/idemisc.prg b/harbour/contrib/hbide/idemisc.prg
index e9d9f24eef..11f0726c0b 100644
--- a/harbour/contrib/hbide/idemisc.prg
+++ b/harbour/contrib/hbide/idemisc.prg
@@ -2068,7 +2068,7 @@ FUNCTION hbide_parseToolComponents( cCompositeTool )
LOCAL a_
a_:= hb_atokens( cCompositeTool, "," )
- asize( a_, 10 )
+ asize( a_, 12 )
DEFAULT a_[ 1 ] TO ""
DEFAULT a_[ 2 ] TO ""
DEFAULT a_[ 3 ] TO ""
@@ -2079,6 +2079,8 @@ FUNCTION hbide_parseToolComponents( cCompositeTool )
DEFAULT a_[ 8 ] TO "YES"
DEFAULT a_[ 9 ] TO ""
DEFAULT a_[10 ] TO ""
+ DEFAULT a_[11 ] TO ""
+ DEFAULT a_[12 ] TO ""
a_[ 1 ] := alltrim( a_[ 1 ] )
a_[ 2 ] := alltrim( a_[ 2 ] )
a_[ 3 ] := alltrim( a_[ 3 ] )
@@ -2089,6 +2091,8 @@ FUNCTION hbide_parseToolComponents( cCompositeTool )
a_[ 8 ] := alltrim( a_[ 8 ] )
a_[ 9 ] := alltrim( a_[ 9 ] )
a_[10 ] := alltrim( a_[10 ] )
+ a_[11 ] := alltrim( a_[11 ] )
+ a_[12 ] := alltrim( a_[12 ] )
RETURN a_
@@ -2184,9 +2188,8 @@ FUNCTION hbide_getUI( cUI, qParent )
oUI := iif( nModeUI == UI_MODE_FUNC, uiMainwindow( qParent ), NIL )
EXIT
ENDSWITCH
-HB_TRACE( HB_TR_ALWAYS, nModeUI, 0 )
+
IF empty( oUI )
-HB_TRACE( HB_TR_ALWAYS, nModeUI, 1 )
IF nModeUI == UI_MODE_UI
oUI := HbQtUI():new( hbide_ui( cUI ), qParent ):create()
ELSE
@@ -2198,3 +2201,316 @@ HB_TRACE( HB_TR_ALWAYS, nModeUI, 1 )
/*----------------------------------------------------------------------*/
+FUNCTION hbide_request()
+
+ REQUEST HBDbfModel
+ REQUEST HBEvents
+ REQUEST HBQMainWindow
+ REQUEST HBQPlainTextEdit
+ REQUEST HBQSyntaxHighlighter
+ REQUEST HBQTableView
+ REQUEST HBQTextBlockUserData
+ REQUEST HBSlots
+ REQUEST QAbstractButton
+ REQUEST QAbstractItemDelegate
+ REQUEST QAbstractItemModel
+ REQUEST QAbstractItemView
+ REQUEST QAbstractListModel
+ REQUEST QAbstractProxyModel
+ REQUEST QAbstractPrintDialog
+ REQUEST QAbstractScrollArea
+ REQUEST QAbstractSlider
+ REQUEST QAbstractSpinBox
+ REQUEST QAbstractTableModel
+ REQUEST QAbstractTextDocumentLayout
+ REQUEST QAction
+ REQUEST QActionGroup
+ REQUEST QApplication
+ REQUEST QBitArray
+ REQUEST QBitmap
+ REQUEST QBoxLayout
+ REQUEST QBrush
+ REQUEST QBuffer
+ REQUEST QButtonGroup
+ REQUEST QByteArray
+ REQUEST QCalendarWidget
+ REQUEST QChar
+ REQUEST QCheckBox
+ REQUEST QClipboard
+ REQUEST QColor
+ REQUEST QColorDialog
+ REQUEST QComboBox
+ REQUEST QCommandLinkButton
+ REQUEST QCommonStyle
+ REQUEST QCompleter
+ REQUEST QConicalGradient
+ REQUEST QContextMenuEvent
+ REQUEST QCoreApplication
+ REQUEST QCursor
+ REQUEST QDataStream
+ REQUEST QDate
+ REQUEST QDateEdit
+ REQUEST QDateTime
+ REQUEST QDateTimeEdit
+ REQUEST QDesktopWidget
+ REQUEST QDial
+ REQUEST QDialog
+ REQUEST QDir
+ REQUEST QDirModel
+ REQUEST QDockWidget
+ REQUEST QDoubleSpinBox
+ REQUEST QDropEvent
+ REQUEST QDragMoveEvent
+ REQUEST QDragEnterEvent
+ REQUEST QDragLeaveEvent
+ REQUEST QErrorMessage
+ REQUEST QEvent
+ REQUEST QEventLoop
+ REQUEST QFile
+ REQUEST QFileDialog
+ REQUEST QFileInfo
+ REQUEST QFileIconProvider
+ REQUEST QFileSystemModel
+ REQUEST QFocusEvent
+ REQUEST QFocusFrame
+ REQUEST QFont
+ REQUEST QFontComboBox
+ REQUEST QFontDatabase
+ REQUEST QFontDialog
+ REQUEST QFontInfo
+ REQUEST QFontMetrics
+ REQUEST QFontMetricsF
+ REQUEST QFormLayout
+ REQUEST QFrame
+ REQUEST QFtp
+ REQUEST QGradient
+ REQUEST QGridLayout
+ REQUEST QGroupBox
+ REQUEST QHBoxLayout
+ REQUEST QHeaderView
+ REQUEST QHelpEvent
+ REQUEST QHideEvent
+ REQUEST QHttp
+ REQUEST QHttpHeader
+ REQUEST QHttpRequestHeader
+ REQUEST QHttpResponseHeader
+ REQUEST QIcon
+ REQUEST QInputMethodEvent
+ REQUEST QImage
+ REQUEST QImageReader
+ REQUEST QImageWriter
+ REQUEST QInputDialog
+ REQUEST QInputEvent
+ REQUEST QIODevice
+ REQUEST QItemDelegate
+ REQUEST QItemEditorCreatorBase
+ REQUEST QItemEditorFactory
+ REQUEST QItemSelection
+ REQUEST QItemSelectionModel
+ REQUEST QKeyEvent
+ REQUEST QKeySequence
+ REQUEST QLabel
+ REQUEST QLatin1Char
+ REQUEST QLatin1String
+ REQUEST QLayout
+ REQUEST QLayoutItem
+ REQUEST QLCDNumber
+ REQUEST QLine
+ REQUEST QLineF
+ REQUEST QLinearGradient
+ REQUEST QLineEdit
+ REQUEST QList
+ REQUEST QListView
+ REQUEST QListWidget
+ REQUEST QListWidgetItem
+ REQUEST QLocale
+ REQUEST QMainWindow
+ REQUEST QMatrix
+ REQUEST QMdiArea
+ REQUEST QMdiSubWindow
+ REQUEST QMenu
+ REQUEST QMenuBar
+ REQUEST QMessageBox
+ REQUEST QMimeData
+ REQUEST QModelIndex
+ REQUEST QMouseEvent
+ REQUEST QMoveEvent
+ REQUEST QMovie
+ REQUEST QNetworkRequest
+ REQUEST QObject
+ REQUEST QPageSetupDialog
+ REQUEST QPaintDevice
+ REQUEST QPaintEngine
+ REQUEST QPainter
+ REQUEST QPainterPath
+ REQUEST QPaintEvent
+ REQUEST QPalette
+ REQUEST QPen
+ REQUEST QPicture
+ REQUEST QPixmap
+ REQUEST QPlainTextDocumentLayout
+ REQUEST QPlainTextEdit
+ REQUEST QPoint
+ REQUEST QPointF
+ REQUEST QPolygon
+ REQUEST QPolygonF
+ REQUEST QPrintDialog
+ REQUEST QPrintEngine
+ REQUEST QPrinter
+ REQUEST QPrintPreviewDialog
+ REQUEST QProcess
+ REQUEST QProgressBar
+ REQUEST QProgressDialog
+ REQUEST QPushButton
+ REQUEST QRadialGradient
+ REQUEST QRadioButton
+ REQUEST QRect
+ REQUEST QRectF
+ REQUEST QRegion
+ REQUEST QRegExp
+ REQUEST QResizeEvent
+ REQUEST QResource
+ REQUEST QScrollArea
+ REQUEST QScrollBar
+ REQUEST QSessionManager
+ REQUEST QSettings
+ REQUEST QShowEvent
+ REQUEST QSignalMapper
+ REQUEST QSize
+ REQUEST QSizeF
+ REQUEST QSizeGrip
+ REQUEST QSizePolicy
+ REQUEST QSlider
+ REQUEST QSound
+ REQUEST QSpacerItem
+ REQUEST QSpinBox
+ REQUEST QSplashScreen
+ REQUEST QSplitter
+ REQUEST QStackedWidget
+ REQUEST QStandardItem
+ REQUEST QStandardItemModel
+ REQUEST QStatusBar
+ REQUEST QStringList
+ REQUEST QStringListModel
+ REQUEST QStyle
+ REQUEST QStyledItemDelegate
+ REQUEST QStyleFactory
+ REQUEST QStyleHintReturn
+ REQUEST QStyleHintReturnMask
+ REQUEST QStyleHintReturnVariant
+ REQUEST QStyleOption
+ REQUEST QStyleOptionButton
+ REQUEST QStyleOptionComboBox
+ REQUEST QStyleOptionComplex
+ REQUEST QStyleOptionDockWidget
+ REQUEST QStyleOptionFocusRect
+ REQUEST QStyleOptionFrame
+ REQUEST QStyleOptionGroupBox
+ REQUEST QStyleOptionHeader
+ REQUEST QStyleOptionMenuItem
+ REQUEST QStyleOptionProgressBar
+ REQUEST QStyleOptionSizeGrip
+ REQUEST QStyleOptionSlider
+ REQUEST QStyleOptionSpinBox
+ REQUEST QStyleOptionTab
+ REQUEST QStyleOptionTabBarBase
+ REQUEST QStyleOptionTabWidgetFrame
+ REQUEST QStyleOptionTitleBar
+ REQUEST QStyleOptionToolBar
+ REQUEST QStyleOptionToolBox
+ REQUEST QStyleOptionToolButton
+ REQUEST QStyleOptionViewItem
+ REQUEST QStylePainter
+ REQUEST QSyntaxHighlighter
+ REQUEST QSystemTrayIcon
+ REQUEST QTabBar
+ REQUEST QTableView
+ REQUEST QTableWidget
+ REQUEST QTableWidgetItem
+ REQUEST QTabWidget
+ REQUEST QTableWidgetSelectionRange
+ REQUEST QTextBlock
+ REQUEST QTextBlockFormat
+ REQUEST QTextBlockGroup
+ REQUEST QTextBrowser
+ REQUEST QTextBoundaryFinder
+ REQUEST QTextCharFormat
+ REQUEST QTextCodec
+ REQUEST QTextCursor
+ REQUEST QTextDecoder
+ REQUEST QTextDocument
+ REQUEST QTextDocumentFragment
+ REQUEST QTextDocumentWriter
+ REQUEST QTextEdit
+ REQUEST QTextEncoder
+ REQUEST QTextFormat
+ REQUEST QTextFragment
+ REQUEST QTextFrame
+ REQUEST QTextFrameFormat
+ REQUEST QTextImageFormat
+ REQUEST QTextInlineObject
+ REQUEST QTextItem
+ REQUEST QTextLayout
+ REQUEST QTextLength
+ REQUEST QTextLine
+ REQUEST QTextList
+ REQUEST QTextListFormat
+ REQUEST QTextObject
+ REQUEST QTextOption
+ REQUEST QTextStream
+ REQUEST QTextTableFormat
+ REQUEST QThread
+ REQUEST QTime
+ REQUEST QTimeEdit
+ REQUEST QTimer
+ REQUEST QToolBar
+ REQUEST QToolBox
+ REQUEST QToolButton
+ REQUEST QTransform
+ REQUEST QTranslator
+ REQUEST QTreeView
+ REQUEST QTreeWidget
+ REQUEST QTreeWidgetItem
+ REQUEST QUiLoader
+ REQUEST QUrl
+ REQUEST QValidator
+ REQUEST QVariant
+ REQUEST QVBoxLayout
+ REQUEST QWheelEvent
+ REQUEST QWidget
+ REQUEST QWidgetAction
+ REQUEST QWidgetItem
+ REQUEST QWindowsStyle
+ REQUEST QWindowStateChangeEvent
+ REQUEST QWizard
+ REQUEST QWizardPage
+
+ REQUEST Xbp3State
+ REQUEST XbpBitmap
+ REQUEST XbpBrowse
+ REQUEST XbpCheckBox
+ REQUEST XbpClipBoard
+ REQUEST XbpComboBox
+ REQUEST XbpDataRef
+ REQUEST XbpDialog
+ REQUEST XbpFileDialog
+ REQUEST XbpFontDialog
+ REQUEST XbpHtmlViewer
+ REQUEST XbpListBox
+ REQUEST XbpMenuBar
+ REQUEST XbpMLE
+ REQUEST XbpPresSpace
+ REQUEST XbpPrintDialog
+ REQUEST XbpPrinter
+ REQUEST XbpPushButton
+ REQUEST XbpRadioButton
+ REQUEST XbpRtf
+ REQUEST XbpScrollBar
+ REQUEST XbpTabPage
+ REQUEST XbpToolBar
+ REQUEST XbpTreeView
+ REQUEST XbpWindow
+
+ RETURN NIL
+
+/*----------------------------------------------------------------------*/
diff --git a/harbour/contrib/hbide/ideplugins.prg b/harbour/contrib/hbide/ideplugins.prg
index cd2c51bd1a..887f94feee 100644
--- a/harbour/contrib/hbide/ideplugins.prg
+++ b/harbour/contrib/hbide/ideplugins.prg
@@ -78,28 +78,17 @@ STATIC s_aLoaded := { { "", .f. } }
/*----------------------------------------------------------------------*/
FUNCTION hbide_loadPlugins( oIde, cVer )
- LOCAL cPath := hb_dirBase() + hb_osPathSeparator() + "plugins" + hb_osPathSeparator()
- LOCAL dir_, a_, cFile, pHrb, bBlock
+ LOCAL a_, cPlugin
- dir_:= directory( cPath + "*.hrb" )
+ FOR EACH a_ IN oIde:oINI:aTools
+ IF a_[ 12 ] == "YES"
+ hb_fNameSplit( a_[ 11 ], , @cPlugin )
- FOR EACH a_ IN dir_
- hb_fNameSplit( a_[ 1 ], , @cFile )
- pHrb := hb_hrbLoad( HB_HRB_BIND_OVERLOAD, cPath + cFile )
-
- IF ! Empty( pHrb ) .AND. ! Empty( hb_hrbGetFunSym( pHrb, cFile + "_init" ) )
- bBlock := &( "{|...| " + cFile + "_init(...) }" )
-
- IF eval( bBlock, oIde, cVer )
- IF ! Empty( hb_hrbGetFunSym( pHrb, cFile + "_exec" ) )
- aadd( s_aPlugins, { lower( cFile ), &( "{|...| " + cFile + "_exec(...) }" ), pHrb } )
-
- ENDIF
- ENDIF
+ RETURN hbide_loadAPlugin( cPlugin, oIde, cVer )
ENDIF
NEXT
- RETURN bBlock
+ RETURN .f.
/*----------------------------------------------------------------------*/
@@ -124,18 +113,27 @@ FUNCTION hbide_execPlugin( cPlugin, oIde, ... )
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbide_loadAPlugin( cPlugin, oIde, cVer )
- LOCAL cPath, pHrb, bBlock, lLoaded
+ LOCAL pHrb, bBlock, lLoaded, cFileName, cFile
- cPath := hb_dirBase() + hb_osPathSeparator() + "plugins" + hb_osPathSeparator() + cPlugin + ".hrb"
+ 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 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
- IF ( lLoaded := hb_fileExists( cPath ) )
- pHrb := hb_hrbLoad( HB_HRB_BIND_OVERLOAD, cPath )
-
- IF ! Empty( pHrb ) .AND. ! Empty( hb_hrbGetFunSym( pHrb, 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.
@@ -151,3 +149,33 @@ STATIC FUNCTION hbide_loadAPlugin( cPlugin, oIde, cVer )
/*----------------------------------------------------------------------*/
+FUNCTION hbide_runAScript( cBuffer, cCompFlags )
+ LOCAL cFile, pHrb, oErr
+ LOCAL bError := ErrorBlock( {|o| break( o ) } )
+ LOCAL lError := .f.
+
+ HB_SYMBOL_UNUSED( cCompFlags )
+
+ BEGIN SEQUENCE
+ cFile := hb_compileFromBuf( cBuffer, cCompFlags ) //, "-n2", "-w3", "-es2", "-q0" )
+ IF ! Empty( cFile )
+ pHrb := hb_hrbLoad( HB_HRB_BIND_FORCELOCAL, cFile )
+ ENDIF
+ RECOVER USING oErr
+ MsgBox( oErr:description )
+ lError := .t.
+ END SEQUENCE
+
+ IF ! lError .AND. !empty( pHrb )
+ BEGIN SEQUENCE
+ hb_hrbDo( pHrb )
+ RECOVER USING oErr
+ MsgBox( oErr:description )
+ END SEQUENCE
+ ENDIF
+
+ ErrorBlock( bError )
+
+ RETURN NIL
+
+/*----------------------------------------------------------------------*/
diff --git a/harbour/contrib/hbide/ideprojmanager.prg b/harbour/contrib/hbide/ideprojmanager.prg
index 5f690dc69e..fcbf4eb716 100644
--- a/harbour/contrib/hbide/ideprojmanager.prg
+++ b/harbour/contrib/hbide/ideprojmanager.prg
@@ -269,6 +269,7 @@ CLASS IdeProjManager INHERIT IdeObject
METHOD pullHbpData( cHbp )
METHOD synchronizeAlienProject( cProjFileName )
METHOD outputText( cText )
+ METHOD runAsScript()
ENDCLASS
@@ -1571,6 +1572,17 @@ METHOD IdeProjManager:launchProject( cProject, cExe )
/*----------------------------------------------------------------------*/
+METHOD IdeProjManager:runAsScript()
+ LOCAL oEdit
+
+ IF !empty( oEdit := ::oEM:getEditorCurrent() )
+ hbide_runAScript( oEdit:qEdit:toPlainText() )
+ ENDIF
+
+ RETURN Self
+
+/*----------------------------------------------------------------------*/
+
METHOD IdeProjManager:outputText( cText )
::oOutputResult:oWidget:append( cText )
diff --git a/harbour/contrib/hbide/idethemes.prg b/harbour/contrib/hbide/idethemes.prg
index 4361d87756..bf53b2ec45 100644
--- a/harbour/contrib/hbide/idethemes.prg
+++ b/harbour/contrib/hbide/idethemes.prg
@@ -186,7 +186,7 @@ METHOD IdeThemes:create( oIde, cIniFile )
/* These are the supported patterns - rest will be ignore until implemented */
/* Compiler Directives */
- b_:= { "include","define","ifndef","ifdef","else","endif","command","xcommand","translate","xtranslate" }
+ b_:= { "include","define","if","ifndef","ifdef","else","endif","command","xcommand","translate","xtranslate" }
s := ""; aeval( b_, {|e| s += iif( empty( s ), "", "|" ) + "#" + e + "\b" } )
aadd( ::aPatterns, { "PreprocessorDirectives", s, .f. } )
@@ -197,7 +197,7 @@ METHOD IdeThemes:create( oIde, cIniFile )
'switch','endswitch', ;
'do','while','exit','enddo','loop',;
'for','each','next','step','to','in',;
- 'with','object','endwith',;
+ 'with','object','endwith','request',;
'nil','and','or','self',;
'class','endclass','method','data','var','destructor','inline','assign','access',;
'inherit','init','create','virtual','message', 'from', 'setget',;
diff --git a/harbour/contrib/hbide/idetools.prg b/harbour/contrib/hbide/idetools.prg
index 299c97a5cb..02ff1d2d2c 100644
--- a/harbour/contrib/hbide/idetools.prg
+++ b/harbour/contrib/hbide/idetools.prg
@@ -84,6 +84,7 @@ CLASS IdeToolsManager INHERIT IdeObject
DATA aHdr INIT {}
DATA aBtns INIT {}
DATA aToolbars INIT { NIL,NIL,NIL,NIL,NIL }
+ DATA aPlugins INIT {}
ACCESS aTools INLINE ::oINI:aTools
ACCESS aUserToolBars INLINE ::oINI:aUserToolbars
@@ -109,6 +110,7 @@ CLASS IdeToolsManager INHERIT IdeObject
METHOD ini2toolbarControls( nIndex, nMode )
METHOD populateButtonsTable( nIndex )
METHOD buildUserToolbars()
+ METHOD populatePlugins( lClear )
ENDCLASS
@@ -274,6 +276,7 @@ METHOD IdeToolsManager:show()
::oUI:q_listToolbars:setCurrentRow( 0 )
ENDIF
+ ::populatePlugins( .t. )
::clearList()
::populateList( ::oINI:aTools )
::oUI:q_listNames:setCurrentRow( 0 )
@@ -534,6 +537,8 @@ METHOD IdeToolsManager:ini2controls( nIndex )
::oUI:q_buttonSetImage :setIcon( iif( empty( ::aTools[ nIndex, 9 ] ), hbide_image( "open" ), ;
hbide_pathToOsPath( ::aTools[ nIndex, 9 ] ) ) )
::oUI:q_editTooltip :setText( ::aTools[ nIndex, 10 ] )
+ ::oUI:q_comboPlugin :setCurrentIndex( ascan( ::aPlugins, {|e| ::aTools[ nIndex, 11 ] == e } ) - 1 )
+ ::oUI:q_checkPlugInit :setChecked( ::aTools[ nIndex, 12 ] == "YES" )
ELSE
::oUI:q_editName :setText( "" )
@@ -548,6 +553,8 @@ METHOD IdeToolsManager:ini2controls( nIndex )
::oUI:q_editImage :setText( "" )
::oUI:q_buttonSetImage :setIcon( hbide_image( "open" ) )
::oUI:q_editTooltip :setText( "" )
+ ::oUI:q_comboPlugin :setCurrentIndex( -1 )
+ ::oUI:q_checkPlugInit :setChecked( .f. )
ENDIF
@@ -566,14 +573,16 @@ METHOD IdeToolsManager:controls2ini( nIndex )
hbide_pathNormalized( ::oUI:q_editCmdLine:text() ), ;
hbide_pathNormalized( ::oUI:q_editParams:text() ), ;
hbide_pathNormalized( ::oUI:q_editStayIn:text() ), ;
- iif( ::oUI:q_checkCapture:isChecked(), "YES", "" ), ;
+ iif( ::oUI:q_checkCapture :isChecked(), "YES", "" ), ;
iif( ::oUI:q_checkOpenCons:isChecked(), "YES", "" ), ;
;
hb_ntos( ::oUI:q_comboToolbarAsgnd:currentIndex() ), ;
iif( ::oUI:q_checkToolActive:isChecked(), "YES", "NO" ), ;
::oUI:q_editImage:text(), ;
- ::oUI:q_editTooltip:text() ;
- }
+ ::oUI:q_editTooltip:text(), ;
+ ::oUI:q_comboPlugin:currentText(), ;
+ iif( ::oUI:q_checkPlugInit:isChecked(), "YES", "NO" ) ;
+ }
RETURN Self
/*----------------------------------------------------------------------*/
@@ -599,6 +608,28 @@ METHOD IdeToolsManager:populateList( aList )
/*----------------------------------------------------------------------*/
+METHOD IdeToolsManager:populatePlugins( lClear )
+ LOCAL cDir, aDir, aFile
+
+ IF lClear
+ ::oUI:q_comboPlugin:clear()
+ ENDIF
+ ::aPlugins := {}
+
+ cDir := hb_dirBase() + "plugins" + hb_osPathSeparator()
+ aDir := directory( cDir + "*" )
+ IF !empty( aDir )
+ FOR EACH aFile IN aDir
+ ::oUI:q_comboPlugin:addItem( aFile[ 1 ] )
+ aadd( ::aPlugins, aFile[ 1 ] )
+ NEXT
+ ::oUI:q_comboPlugin:setCurrentIndex( -1 )
+ ENDIF
+
+ RETURN Self
+
+/*----------------------------------------------------------------------*/
+
METHOD IdeToolsManager:buildToolsButton()
LOCAL a_, qAct
@@ -688,18 +719,23 @@ METHOD IdeToolsManager:execToolByParams( cCmd, cParams, cStartIn, lCapture, lOpe
/*----------------------------------------------------------------------*/
METHOD IdeToolsManager:execTool( ... )
- LOCAL nIndex, cCmd, cParams, cStayIn, lCapture, lOpen, aParam
+ LOCAL nIndex, cCmd, cParams, cStayIn, lCapture, lOpen, aParam, cPlugin, a_
aParam := hb_aParams()
IF len( aParam ) == 1
IF ( nIndex := ascan( ::aTools, {|e_| e_[ 1 ] == aParam[ 1 ] } ) ) > 0
+ hb_fNameSplit( ::aTools[ nIndex, 11 ], , @cPlugin )
+
cCmd := hbide_pathToOSPath( ::aTools[ nIndex, 2 ] )
cParams := ::aTools[ nIndex, 3 ]
- cParams := iif( "http://" $ lower( cParams ), cParams, hbide_pathToOSPath( cParams ) )
+ cParams := iif( "http://" $ lower( cParams ) .OR. !empty( cPlugin ), cParams, hbide_pathToOSPath( cParams ) )
+ cParams := ::parseParams( cParams )
cStayIn := hbide_pathToOSPath( ::aTools[ nIndex, 4 ] )
lCapture := ::aTools[ nIndex, 5 ] == "YES"
lOpen := ::aTools[ nIndex, 6 ] == "YES"
+
ENDIF
+
ELSEIF len( aParam ) > 1
asize( aParam, 5 )
@@ -716,10 +752,21 @@ METHOD IdeToolsManager:execTool( ... )
cStayIn := hbide_pathToOSPath( aParam[ 3 ] )
lCapture := iif( hb_isLogical( aParam[ 4 ] ), aParam[ 4 ], aParam[ 4 ] == "YES" )
lOpen := iif( hb_isLogical( aParam[ 5 ] ), aParam[ 5 ], aParam[ 5 ] == "YES" )
+
ENDIF
IF hb_isLogical( lCapture )
- ::execToolByParams( cCmd, cParams, cStayIn, lCapture, lOpen )
+ IF !empty( cPlugin )
+ a_:= hb_aTokens( cParams, " " )
+ FOR EACH cParams IN a_
+ cParams := hbide_evalAsis( cParams )
+ NEXT
+ hbide_execPlugin( cPlugin, ::oIde, hb_arrayToParams( a_ ) )
+
+ ELSE
+ ::execToolByParams( cCmd, cParams, cStayIn, lCapture, lOpen )
+
+ ENDIF
ENDIF
RETURN Self
@@ -809,3 +856,4 @@ METHOD IdeToolsManager:macro2value( cMacro )
RETURN cVal
/*----------------------------------------------------------------------*/
+
diff --git a/harbour/contrib/hbide/toolsutilities.ui b/harbour/contrib/hbide/toolsutilities.ui
index 6f3b9cfa1d..f95ffa7281 100644
--- a/harbour/contrib/hbide/toolsutilities.ui
+++ b/harbour/contrib/hbide/toolsutilities.ui
@@ -7,7 +7,7 @@
0
0
602
- 425
+ 478
@@ -74,7 +74,7 @@ p, li { white-space: pre-wrap; }
12
- 392
+ 448
149
24
@@ -87,7 +87,7 @@ p, li { white-space: pre-wrap; }
12
- 278
+ 334
79
16
@@ -149,7 +149,7 @@ p, li { white-space: pre-wrap; }
12
- 376
+ 432
253
16
@@ -175,7 +175,7 @@ p, li { white-space: pre-wrap; }
12
- 296
+ 352
253
20
@@ -209,7 +209,7 @@ p, li { white-space: pre-wrap; }
172
- 392
+ 448
95
24
@@ -245,7 +245,7 @@ p, li { white-space: pre-wrap; }
14
- 320
+ 376
95
16
@@ -257,9 +257,9 @@ p, li { white-space: pre-wrap; }
- 14
- 338
- 251
+ 12
+ 394
+ 253
20
@@ -277,7 +277,7 @@ p, li { white-space: pre-wrap; }
14
- 362
+ 418
109
19
@@ -300,7 +300,7 @@ p, li { white-space: pre-wrap; }
134
- 362
+ 418
131
19
@@ -476,7 +476,7 @@ p, li { white-space: pre-wrap; }
284
284
307
- 131
+ 187
@@ -488,7 +488,7 @@ p, li { white-space: pre-wrap; }
10
16
253
- 107
+ 161
@@ -614,6 +614,42 @@ p, li { white-space: pre-wrap; }
+
+
+
+ 10
+ 280
+ 257
+ 47
+
+
+
+ Plugin
+
+
+
+
+ 12
+ 16
+ 139
+ 22
+
+
+
+
+
+
+ 160
+ 18
+ 93
+ 19
+
+
+
+ Init on startup
+
+
+
diff --git a/harbour/contrib/hbqt/hbqt_hbslots.cpp b/harbour/contrib/hbqt/hbqt_hbslots.cpp
index 84b18d23f8..286a5b65ae 100644
--- a/harbour/contrib/hbqt/hbqt_hbslots.cpp
+++ b/harbour/contrib/hbqt/hbqt_hbslots.cpp
@@ -756,7 +756,7 @@ HBSlots::~HBSlots()
{
if( listBlock[ i ] != NULL )
{
-HB_TRACE( HB_TR_ALWAYS, ( "......HBSlots::~HBSlots()...... [ Un-disConnected Slot ]" ) );
+//HB_TRACE( HB_TR_ALWAYS, ( "......HBSlots::~HBSlots()...... [ Un-disConnected Slot ]" ) );
hb_itemRelease( listBlock.at( i ) );
listBlock[ i ] = NULL;
}