From 580ed68ee08c0bdb37a93be23c565da42f844626 Mon Sep 17 00:00:00 2001 From: Pritpal Bedi Date: Mon, 28 Jun 2010 03:29:19 +0000 Subject: [PATCH] 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. --- harbour/ChangeLog | 64 +++++ harbour/contrib/hbide/hbide.prg | 9 +- harbour/contrib/hbide/ideactions.prg | 2 + harbour/contrib/hbide/idedocks.prg | 2 +- harbour/contrib/hbide/ideedit.prg | 1 + harbour/contrib/hbide/ideeditor.prg | 49 +++- harbour/contrib/hbide/idemisc.prg | 322 ++++++++++++++++++++++- harbour/contrib/hbide/ideplugins.prg | 76 ++++-- harbour/contrib/hbide/ideprojmanager.prg | 12 + harbour/contrib/hbide/idethemes.prg | 4 +- harbour/contrib/hbide/idetools.prg | 60 ++++- harbour/contrib/hbide/toolsutilities.ui | 64 ++++- harbour/contrib/hbqt/hbqt_hbslots.cpp | 2 +- 13 files changed, 610 insertions(+), 57 deletions(-) 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; }