diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 36cb52007c..5340f0b797 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,50 @@ past entries belonging to author(s): Viktor Szakats. */ +2010-02-08 08:50 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) + * contrib/hbide/hbide.prg + * contrib/hbide/ideactions.prg + * contrib/hbide/idedocks.prg + * contrib/hbide/ideeditor.prg + * contrib/hbide/ideobject.prg + * contrib/hbide/idesources.prg + + * contrib/hbqt/generator/qt45.qtp + + * contrib/hbqt/hbqt.h + + * contrib/hbqt/hbqt_hbqplaintextedit.cpp + * contrib/hbqt/hbqt_hbqplaintextedit.h + * contrib/hbqt/hbqt_hbqsyntaxhighlighter.cpp + * contrib/hbqt/hbqt_hbqsyntaxhighlighter.h + + * contrib/hbqt/qtgui/filelist.mk + * contrib/hbqt/qtgui/HBQPlainTextEdit.cpp + * contrib/hbqt/qtgui/HBQSyntaxHighlighter.cpp + + contrib/hbqt/qtgui/QStackedWidget.cpp + * contrib/hbqt/qtgui/THBQPlainTextEdit.prg + * contrib/hbqt/qtgui/THBQSyntaxHighlighter.prg + + contrib/hbqt/qtgui/TQStackedWidget.prg + + * contrib/hbqt/qth/HBQPlainTextEdit.qth + * contrib/hbqt/qth/HBQSyntaxHighLighter.qth + + contrib/hbqt/qth/QStackedWidget.qth + + + Added one more class in hbQT. + + Prepared to present multiple-views of tabbed-editor. + The term multiple-view is a bit confusing. The concept + I am thinking of is to present stacked tabs of common interest + together switchable from "Editor" tree-presentation or from + a combo-box containing such different "views". + A better name to this feature is requested. + % Code shifting, normalization. + + Started to have block(column)copy and paste operation. + But appears it is a huge task, probably leading to + rewriting the whole HBQPlainTextEdit() class. + I must confess that the more I try in the direction, + the more I am in troubles. Reason: Qt does not provide + any inbuild mechanism to achieve it. + 2010-02-08 16:49 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * include/hbdefs.h + Readded HB_U8 and HB_I8. Currently mapped to HB_BYTE/HB_CHAR, diff --git a/harbour/contrib/hbide/hbide.prg b/harbour/contrib/hbide/hbide.prg index 8fc2ba80b2..1ba1d69360 100644 --- a/harbour/contrib/hbide/hbide.prg +++ b/harbour/contrib/hbide/hbide.prg @@ -155,6 +155,7 @@ CLASS HbIde DATA oSBar DATA oMenu DATA oTBar + DATA oStackedWidget DATA oFont DATA oProjTree DATA oEditTree @@ -183,6 +184,7 @@ CLASS HbIde DATA lDockRVisible INIT .f. DATA lDockBVisible INIT .f. DATA lTabCloseRequested INIT .f. + DATA isColumnSelectionEnabled INIT .f. DATA cWrkProject INIT "" DATA cWrkTheme INIT "" @@ -243,6 +245,8 @@ CLASS HbIde METHOD execEditorAction( cKey ) METHOD execWindowsAction( cKey ) + DATA oFrame + ENDCLASS /*----------------------------------------------------------------------*/ @@ -318,19 +322,6 @@ METHOD HbIde:create( cProjIni ) /* Load Environments */ ::oEV := IdeEnvironments():new( Self, hbide_pathToOSPath( ::aINI[ INI_HBIDE, PathEnv ] + ::pathSep + "hbide.env" ) ):create() - /* Prepare Editor's Tabs */ - ::oEM:prepareTabWidget() - - /* Attach GRID Layout to Editor Area - Futuristic */ - ::qLayout := QGridLayout():new() - ::qLayout:setContentsMargins( 0,0,0,0 ) - ::qLayout:setHorizontalSpacing( 0 ) - ::qLayout:setVerticalSpacing( 0 ) - // - ::oDa:oWidget:setLayout( ::qLayout ) - // - ::qLayout:addWidget_1( ::oDa:oTabWidget:oWidget, 0, 0, 1, 1 ) - /* Just to spare some GC calls */ ::qCursor := QTextCursor():new() ::qBrushWrkProject := QBrush():new( "QColor", QColor():new( 255,0,0 ) ) @@ -344,9 +335,7 @@ METHOD HbIde:create( cProjIni ) ::cWrkProject := ::aINI[ INI_HBIDE, CurrentProject ] ::oPM:populate() ::oSM:loadSources() - #if 0 /* Must not be greyed as we have more options there */ - ::updateProjectMenu() - #endif + ::updateTitleBar() /* Set some last settings */ ::oPM:setCurrentProject( ::cWrkProject, .f. ) @@ -481,6 +470,7 @@ METHOD HbIde:execAction( cKey ) CASE "Copy" CASE "Paste" CASE "SelectAll" + CASE "SelectionMode" CASE "DuplicateLine" CASE "DeleteLine" CASE "MoveLineUp" @@ -548,6 +538,10 @@ METHOD HbIde:execEditorAction( cKey ) CASE "SelectAll" ::oEM:selectAll() EXIT + CASE "SelectionMode" + ::isColumnSelectionEnabled := ! ::isColumnSelectionEnabled + ::oEM:toggleSelectionMode() + EXIT CASE "DuplicateLine" ::oEM:duplicateLine() EXIT @@ -603,7 +597,8 @@ METHOD HbIde:execEditorAction( cKey ) EXIT CASE "MatchPairs" // - ::oDockFind:show() + //::oDockFind:show() + ::oStackedWidget:oWidget:setCurrentIndex( iif( ::oStackedWidget:oWidget:currentIndex() == 1, 0, 1 ) ) EXIT CASE "InsertSeparator" ::oEM:insertSeparator() diff --git a/harbour/contrib/hbide/ideactions.prg b/harbour/contrib/hbide/ideactions.prg index 82eefc06aa..98fc315514 100644 --- a/harbour/contrib/hbide/ideactions.prg +++ b/harbour/contrib/hbide/ideactions.prg @@ -142,8 +142,7 @@ METHOD IdeActions:buildActions() IF !( hb_hHasKey( ::hActions, a_[ ACT_NAME ] ) ) qAction := QAction():new( ::qDlg ) - qAction:setCheckable( iif( empty( a_[ ACT_CHECKABLE ] ), .F., ; - iif( upper( a_[ ACT_CHECKABLE ] ) == "YES", .T., .F. ) ) ) + qAction:setCheckable( iif( empty( a_[ ACT_CHECKABLE ] ), .F., upper( a_[ ACT_CHECKABLE ] ) == "YES" ) ) qAction:setText( strtran( a_[ ACT_TEXT ], "~", "&" ) ) IF !empty( a_[ ACT_IMAGE ] ) qAction:setIcon( ::resPath + a_[ ACT_IMAGE ] + ".png" ) @@ -194,7 +193,7 @@ METHOD IdeActions:loadActions() aadd( aAct, { "TB_Copy" , "~Copy" , "copy" , "" , "No", "Yes" } ) aadd( aAct, { "TB_Paste" , "~Paste" , "paste" , "" , "No", "Yes" } ) aadd( aAct, { "TB_SelectAll" , "Select ~All" , "selectall" , "" , "No", "Yes" } ) - aadd( aAct, { "TB_SelectionMode" , "Toggle Selection Mode" , "stream" , "" , "No", "Yes" } ) + aadd( aAct, { "TB_SelectionMode" , "Toggle Selection Mode" , "stream" , "" , "Yes", "Yes" } ) aadd( aAct, { "TB_Find" , "~Find / Replace" , "find" , "" , "No", "Yes" } ) aadd( aAct, { "TB_Search" , "Search" , "search" , "" , "No", "Yes" } ) aadd( aAct, { "TB_SetMark" , "Toggle Mark" , "placeremovemark", "" , "No", "Yes" } ) diff --git a/harbour/contrib/hbide/idedocks.prg b/harbour/contrib/hbide/idedocks.prg index 73ddad6b7f..ef2123c638 100644 --- a/harbour/contrib/hbide/idedocks.prg +++ b/harbour/contrib/hbide/idedocks.prg @@ -80,6 +80,8 @@ CLASS IdeDocks INHERIT IdeObject METHOD create( oIde ) METHOD destroy() METHOD buildDialog() + METHOD buildTabWidget() + METHOD buildStackWidget() METHOD buildDockWidgets() METHOD buildProjectTree() METHOD buildEditorTree() @@ -127,22 +129,15 @@ METHOD IdeDocks:destroy() METHOD IdeDocks:buildDialog() - #if 1 ::oIde:oDlg := XbpDialog():new() ::oDlg:icon := ::resPath + "vr.png" ::oDlg:title := "Harbour-Qt IDE" #ifdef HBIDE_USE_UIC - ::oDlg:qtObject := HbQtUI():new( ::resPath + "mainwindow.uic" ):build() + ::oDlg:qtObject := HbQtUI():new( ::resPath + "mainwindow.uic" ):build() #else - ::oDlg:qtObject := HbQtUI():new( ::resPath + "mainwindow.ui" ):create() + ::oDlg:qtObject := HbQtUI():new( ::resPath + "mainwindow.ui" ):create() #endif ::oDlg:create( , , , , , .f. ) - #else - ::oIde:oDlg := XbpDialog():new( , , {10,10}, {1100,700}, , .f. ) - ::oDlg:icon := ::resPath + "vr.png" - ::oDlg:title := "Harbour-Qt IDE" - ::oDlg:create() - #endif ::oDlg:setStyleSheet( GetStyleSheet( "QMainWindow" ) ) @@ -157,6 +152,82 @@ METHOD IdeDocks:buildDialog() ::oIde:setPosAndSizeByIni( ::oDlg:oWidget, MainWindowGeometry ) ::oDlg:Show() + /* Attach GRID Layout to Editor Area - Futuristic */ + ::oIde:qLayout := QGridLayout():new() + ::oIde:qLayout:setContentsMargins( 0,0,0,0 ) + ::oIde:qLayout:setHorizontalSpacing( 0 ) + ::oIde:qLayout:setVerticalSpacing( 0 ) + // + + #if 0 + ::buildTabWidget() + ::qLayout:addWidget_1( ::oDa:oTabWidget:oWidget, 0, 0, 1, 1 ) + #else + ::buildStackWidget() + ::qLayout:addWidget_1( ::oStackedWidget:oWidget, 0, 0, 1, 1 ) + ::buildTabWidget() + #endif + + ::oDa:oWidget:setLayout( ::oIde:qLayout ) + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocks:buildStackWidget() + + /* Its parent will be drawing area and pages will be XbpTabWidgets() */ + + ::oIde:oStackedWidget := XbpWindow():new( ::oDa ) + ::oStackedWidget:oWidget := QStackedWidget():new( ::oDa:oWidget ) + ::oStackedWidget:oWidget:setObjectName( "myStackedWidget" ) + ::oDa:addChild( ::oStackedWidget ) + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeDocks:buildTabWidget() + #if 0 + + ::oIde:oDa:oTabWidget := XbpTabWidget():new():create( ::oDa, , {0,0}, {10,10}, , .t. ) + ::oIde:qTabWidget := ::oDa:oTabWidget:oWidget + + ::qTabWidget:setUsesScrollButtons( .f. ) + ::qTabWidget:setMovable( .t. ) + + ::qTabWidget:setContextMenuPolicy( Qt_CustomContextMenu ) + ::connect( ::qTabWidget, "customContextMenuRequested(QPoint)", {|p| ::exeEvent( 1, p ) } ) + + #else + #if 0 + ::oIde:oFrame := XbpWindow():new( ::oIde:oStackedWidget ) + ::oFrame:oWidget := QWidget():new( ::oIde:oStackedWidget:oWidget ) + ::oStackedWidget:addChild( ::oFrame ) + ::oFrame:oTabWidget := XbpTabWidget():new():create( ::oFrame, , {0,0}, {200,200}, , .t. ) + ::oIde:qTabWidget := ::oIde:oFrame:oTabWidget:oWidget + ::qTabWidget:setUsesScrollButtons( .f. ) + ::qTabWidget:setMovable( .t. ) + ::oStackedWidget:oWidget:addWidget( ::oFrame:oWidget ) + ::oStackedWidget:oWidget:setCurrentIndex( 1 ) + #else /* Below Works */ + LOCAL oTabWidget + STATIC qTabWidget + + oTabWidget := XbpTabWidget():new():create( ::oIde:oStackedWidget , {0,0}, {10,10}, , .t. ) + ::oIde:oDa:oTabWidget := oTabWidget /* Important - Look deep why it be so */ + ::oIde:qTabWidget := oTabWidget:oWidget + ::qTabWidget:setUsesScrollButtons( .f. ) + ::qTabWidget:setMovable( .t. ) + ::oStackedWidget:oWidget:addWidget( ::qTabWidget ) + + qTabWidget := QTabWidget():new( ::oStackedWidget:oWidget ) + ::oStackedWidget:oWidget:addWidget( qTabWidget ) + + ::oStackedWidget:oWidget:setCurrentIndex( 0 ) + #endif + #endif + RETURN Self /*----------------------------------------------------------------------*/ @@ -181,7 +252,7 @@ METHOD IdeDocks:buildDockWidgets() METHOD IdeDocks:buildProjectTree() LOCAL i - ::oIde:oDockPT := XbpWindow():new( ::oDa ) + ::oIde:oDockPT := XbpWindow():new() ::oDockPT:oWidget := QDockWidget():new( ::oDlg:oWidget ) ::oDockPT:oWidget:setObjectName( "dockProjectTree" ) ::oDlg:addChild( ::oDockPT ) @@ -193,7 +264,7 @@ METHOD IdeDocks:buildProjectTree() ::oIde:oProjTree := XbpTreeView():new() ::oProjTree:hasLines := .T. ::oProjTree:hasButtons := .T. - ::oProjTree:create( ::oDa, , { 0,0 }, { 10,10 }, , .t. ) + ::oProjTree:create( ::oDockPT, , { 0,0 }, { 10,10 }, , .t. ) ::oProjTree:setStyleSheet( GetStyleSheet( "QTreeWidgetHB" ) ) @@ -231,7 +302,7 @@ METHOD IdeDocks:buildProjectTree() METHOD IdeDocks:buildEditorTree() - ::oIde:oDockED := XbpWindow():new( ::oDa ) + ::oIde:oDockED := XbpWindow():new() ::oDockED:oWidget := QDockWidget():new( ::oDlg:oWidget ) ::oDockED:oWidget:setObjectName( "dockEditorTabs" ) ::oDlg:addChild( ::oDockED ) @@ -243,9 +314,7 @@ METHOD IdeDocks:buildEditorTree() ::oIde:oEditTree := XbpTreeView():new() ::oEditTree:hasLines := .T. ::oEditTree:hasButtons := .T. - ::oEditTree:create( ::oDa, , { 0,0 }, { 10,10 }, , .t. ) - - * ::oEditTree:setStyleSheet( GetStyleSheet( "QTreeWidget" ) ) + ::oEditTree:create( ::oDockED, , { 0,0 }, { 10,10 }, , .t. ) //::oEditTree:itemMarked := {|oItem| ::manageItemSelected( 0, oItem ), ::oCurProjItem := oItem } ::oEditTree:itemMarked := {|oItem| ::oIde:oCurProjItem := oItem, ::oIde:manageFocusInEditor() } @@ -273,7 +342,7 @@ METHOD IdeDocks:buildEditorTree() METHOD IdeDocks:buildFuncList() - ::oIde:oDockR := XbpWindow():new( ::oDa ) + ::oIde:oDockR := XbpWindow():new() ::oDockR:oWidget := QDockWidget():new( ::oDlg:oWidget ) ::oDockR:oWidget:setObjectName( "dockFuncList" ) ::oDlg:addChild( ::oDockR ) @@ -283,7 +352,6 @@ METHOD IdeDocks:buildFuncList() ::oDockR:oWidget:setFocusPolicy( Qt_NoFocus ) ::oIde:oFuncList := XbpListBox():new( ::oDockR ):create( , , { 0,0 }, { 100,400 }, , .t. ) - * ::oFuncList:setStyleSheet( GetStyleSheet( "QListView" ) ) //::oFuncList:ItemMarked := {|mp1, mp2, oXbp| ::gotoFunction( mp1, mp2, oXbp ) } ::oFuncList:ItemSelected := {|mp1, mp2, oXbp| ::oIde:gotoFunction( mp1, mp2, oXbp ) } @@ -310,7 +378,7 @@ METHOD IdeDocks:buildFuncList() METHOD IdeDocks:buildCompileResults() - ::oIde:oDockB := XbpWindow():new( ::oDa ) + ::oIde:oDockB := XbpWindow():new() ::oDockB:oWidget := QDockWidget():new( ::oDlg:oWidget ) ::oDockB:oWidget:setObjectName( "dockCompileResults" ) ::oDlg:addChild( ::oDockB ) @@ -331,7 +399,7 @@ METHOD IdeDocks:buildCompileResults() METHOD IdeDocks:buildLinkResults() - ::oIde:oDockB1 := XbpWindow():new( ::oDa ) + ::oIde:oDockB1 := XbpWindow():new() ::oDockB1:oWidget := QDockWidget():new( ::oDlg:oWidget ) ::oDockB1:oWidget:setObjectName( "dockLinkResults" ) ::oDlg:addChild( ::oDockB1 ) @@ -352,7 +420,7 @@ METHOD IdeDocks:buildLinkResults() METHOD IdeDocks:buildOutputResults() - ::oIde:oDockB2 := XbpWindow():new( ::oDa ) + ::oIde:oDockB2 := XbpWindow():new() ::oDockB2:oWidget := QDockWidget():new( ::oDlg:oWidget ) ::oDockB2:oWidget:setObjectName( "dockOutputResults" ) ::oDlg:addChild( ::oDockB2 ) diff --git a/harbour/contrib/hbide/ideeditor.prg b/harbour/contrib/hbide/ideeditor.prg index a99eb4cf63..c3f97c3ccb 100644 --- a/harbour/contrib/hbide/ideeditor.prg +++ b/harbour/contrib/hbide/ideeditor.prg @@ -68,6 +68,7 @@ #include "hbclass.ch" #include "hbqt.ch" #include "hbide.ch" +#include "xbp.ch" /*----------------------------------------------------------------------*/ @@ -96,7 +97,6 @@ CLASS IdeEditsManager INHERIT IdeObject METHOD new( oIde ) METHOD create( oIde ) METHOD destroy() - METHOD prepareTabWidget() METHOD removeSourceInTree( cSourceFile ) METHOD addSourceInTree( cSourceFile ) METHOD exeEvent( nMode, p ) @@ -141,6 +141,7 @@ CLASS IdeEditsManager INHERIT IdeObject METHOD streamComment() METHOD blockComment() METHOD indent( nStep ) + METHOD toggleSelectionMode() ENDCLASS @@ -202,22 +203,6 @@ METHOD IdeEditsManager:destroy() /*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:prepareTabWidget() - - ::oIde:oDa:oTabWidget := XbpTabWidget():new():create( ::oDa, , {0,0}, {10,10}, , .t. ) - ::oIde:oTabWidget := ::oDa:oTabWidget - ::oIde:qTabWidget := ::oDa:oTabWidget:oWidget - - ::qTabWidget:setUsesScrollButtons( .f. ) - ::qTabWidget:setMovable( .t. ) - - ::qTabWidget:setContextMenuPolicy( Qt_CustomContextMenu ) - ::connect( ::qTabWidget, "customContextMenuRequested(QPoint)", {|p| ::exeEvent( 1, p ) } ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - METHOD IdeEditsManager:removeSourceInTree( cSourceFile ) LOCAL n @@ -512,6 +497,15 @@ METHOD IdeEditsManager:selectAll() /*----------------------------------------------------------------------*/ +METHOD IdeEditsManager:toggleSelectionMode() + + IF !empty( ::qCurEdit ) + ::qCurEdit:highlightSelectedColumns( ::isColumnSelectionEnabled ) + ENDIF + RETURN Self + +/*----------------------------------------------------------------------*/ + METHOD IdeEditsManager:duplicateLine() LOCAL qEdit IF !empty( qEdit := ::getEditCurrent() ) @@ -1133,6 +1127,7 @@ METHOD IdeEditor:split( nOrient, oEditP ) METHOD IdeEditor:destroy() LOCAL n, oEdit + hbide_dbg( "IdeEditor:destroy()", 0 ) ::disconnect( ::qDocument, "blockCountChanged(int)" ) ::disconnect( ::qDocument, "contentsChange(int,int,int)" ) @@ -1345,6 +1340,7 @@ CLASS IdeEdit INHERIT IdeObject DATA qBrushMark INIT QBrush():new( "QColor", QColor():new( 0,255,255 ) ) DATA qActionTab DATA qLastCursor INIT QTextCursor():new() + DATA qSelColor INIT QColor():new( 255,0,255 ) DATA qCursorMark DATA qMarkUData INIT HBQTextBlockUserData():new() @@ -1638,9 +1634,14 @@ METHOD IdeEdit:execEvent( nMode, oEdit, p, p1 ) ::oEditor:qCqEdit := qEdit ::oEditor:qCoEdit := oEdit + qCursor := QTextCursor():configure( qEdit:TextCursor() ) + + /* Book Marks reach-out buttons */ ::relayMarkButtons() - qCursor := QTextCursor():configure( qEdit:TextCursor() ) + /* An experimental move but seems a lot is required to achieve column selection */ +* qEdit:highlightSelectedColumns( ::isColumnSelectionEnabled ) + ::oDK:setStatusText( SB_PNL_SELECTEDCHARS, len( qCursor:selectedText() ) ) EXIT diff --git a/harbour/contrib/hbide/ideobject.prg b/harbour/contrib/hbide/ideobject.prg index 3dee7c337c..15161a3a9e 100644 --- a/harbour/contrib/hbide/ideobject.prg +++ b/harbour/contrib/hbide/ideobject.prg @@ -103,10 +103,11 @@ CLASS IdeObject ACCESS qDlg INLINE ::oIde:oDlg:oWidget ACCESS oDA INLINE ::oIde:oDA + ACCESS qLayout INLINE ::oIde:qLayout ACCESS qCurEdit INLINE ::oIde:qCurEdit ACCESS qCurDocument INLINE ::oIde:qCurDocument ACCESS oCurEditor INLINE ::oIde:oCurEditor - ACCESS qTabWidget INLINE ::oIde:oDA:oTabWidget:oWidget + ACCESS qTabWidget INLINE ::oIde:qTabWidget ACCESS qBrushWrkProject INLINE ::oIde:qBrushWrkProject ACCESS cWrkProject INLINE ::oIde:cWrkProject @@ -148,11 +149,14 @@ CLASS IdeObject ACCESS oLinkResult INLINE ::oIde:oLinkResult ACCESS oDockB2 INLINE ::oIde:oDockB2 ACCESS oOutputResult INLINE ::oIde:oOutputResult + ACCESS oStackedWidget INLINE ::oIde:oStackedWidget + ACCESS oFrame INLINE ::oIde:oFrame ACCESS lProjTreeVisible INLINE ::oIde:lProjTreeVisible ACCESS lDockRVisible INLINE ::oIde:lDockRVisible ACCESS lDockBVisible INLINE ::oIde:lDockBVisible ACCESS lTabCloseRequested INLINE ::oIde:lTabCloseRequested + ACCESS isColumnSelectionEnabled INLINE ::oIde:isColumnSelectionEnabled ACCESS aMarkTBtns INLINE ::oIde:aMarkTBtns diff --git a/harbour/contrib/hbide/idesources.prg b/harbour/contrib/hbide/idesources.prg index 5cc456a657..8296e457de 100644 --- a/harbour/contrib/hbide/idesources.prg +++ b/harbour/contrib/hbide/idesources.prg @@ -420,7 +420,7 @@ METHOD IdeSourcesManager:openSource() METHOD IdeSourcesManager:selectSource( cMode, cFile, cTitle ) LOCAL oDlg, cPath - oDlg := XbpFileDialog():new():create( ::oDa, , { 10,10 } ) + oDlg := XbpFileDialog():new():create( ::oDlg, , { 10,10 } ) IF cMode == "open" oDlg:title := "Select a Source File" diff --git a/harbour/contrib/hbqt/generator/qt45.qtp b/harbour/contrib/hbqt/generator/qt45.qtp index 3d3a2ffc41..90197bf9e6 100644 --- a/harbour/contrib/hbqt/generator/qt45.qtp +++ b/harbour/contrib/hbqt/generator/qt45.qtp @@ -193,6 +193,7 @@ QSpacerItem.qth QSpinBox.qth QSplashScreen.qth QSplitter.qth +QStackedWidget.qth QStandardItem.qth QStandardItemModel.qth QStatusBar.qth diff --git a/harbour/contrib/hbqt/hbqt.h b/harbour/contrib/hbqt/hbqt.h index e6c1b61678..5983c4e6e2 100644 --- a/harbour/contrib/hbqt/hbqt.h +++ b/harbour/contrib/hbqt/hbqt.h @@ -270,6 +270,7 @@ extern void * hbqt_pPtrFromItem( PHB_ITEM pObj ); #define hbqt_par_QSpinBox( n ) ( ( QSpinBox * ) hbqt_gcpointer( n ) ) #define hbqt_par_QSplashScreen( n ) ( ( QSplashScreen * ) hbqt_gcpointer( n ) ) #define hbqt_par_QSplitter( n ) ( ( QSplitter * ) hbqt_gcpointer( n ) ) +#define hbqt_par_QStackedWidget( n ) ( ( QStackedWidget * ) hbqt_gcpointer( n ) ) #define hbqt_par_QStandardItem( n ) ( ( QStandardItem * ) hbqt_gcpointer( n ) ) #define hbqt_par_QStandardItemModel( n ) ( ( QStandardItemModel * ) hbqt_gcpointer( n ) ) #define hbqt_par_QStatusBar( n ) ( ( QStatusBar * ) hbqt_gcpointer( n ) ) diff --git a/harbour/contrib/hbqt/hbqt_hbqplaintextedit.cpp b/harbour/contrib/hbqt/hbqt_hbqplaintextedit.cpp index e9f364ebaf..8524a1fcf8 100644 --- a/harbour/contrib/hbqt/hbqt_hbqplaintextedit.cpp +++ b/harbour/contrib/hbqt/hbqt_hbqplaintextedit.cpp @@ -86,6 +86,10 @@ HBQPlainTextEdit::HBQPlainTextEdit( QWidget * parent ) : QPlainTextEdit( parent numberBlock = true; lineNumberArea = new LineNumberArea( this ); + columnBegins = -1; + columnEnds = -1; + isColumnSelectionEnabled = false; + connect( this, SIGNAL( blockCountChanged( int ) ) , this, SLOT( updateLineNumberAreaWidth( int ) ) ); connect( this, SIGNAL( updateRequest( const QRect &, int ) ), this, SLOT( updateLineNumberArea( const QRect &, int ) ) ); @@ -142,6 +146,8 @@ void HBQPlainTextEdit::paintEvent( QPaintEvent * event ) painter.fillRect( r, QBrush( m_currentLineColor ) ); } } + this->paintColumnSelection( event ); + painter.end(); QPlainTextEdit::paintEvent( event ); } @@ -533,6 +539,63 @@ void HBQPlainTextEdit::convertDQuotes() insertPlainText( txt ); } + +void HBQPlainTextEdit::paintColumnSelection( QPaintEvent *event ) +{ + QTextCursor c = textCursor(); + + if( isColumnSelectionEnabled && c.hasSelection() ) + { + if( columnBegins >= 0 && columnEnds >= 0 ) + { + QTextBlock b = c.document()->findBlock( c.selectionStart() ); + QTextBlock e = c.document()->findBlock( c.selectionEnd() ); + + if( b.isVisible() || e.isVisible() ) + { + if( b.isVisible() ) + { + QPainter p( viewport() ); + + if( b.isValid() && b.isVisible() ) + { + int fontWidth = fontMetrics().averageCharWidth(); + + int x = ( columnBegins + 1 ) * fontWidth; + int w = ( c.columnNumber() - columnBegins ) * fontWidth; + QRect r( x, 0, w, viewport()->height() ); + + p.fillRect( r, QBrush( QColor( 175, 255, 175 ) ) ); + } + } + } + } + } +} + +void HBQPlainTextEdit::highlightSelectedColumns( bool yes ) +{ + if( yes ) + { + isColumnSelectionEnabled = true; + + QTextCursor c = textCursor(); + if( columnBegins == -1 && c.hasSelection() ) + { + int b = c.document()->findBlock( c.selectionStart() ).position(); + columnBegins = c.selectionStart() - b; + columnEnds = c.columnNumber(); + } + } + else + { + columnBegins = -1; + columnEnds = -1; + isColumnSelectionEnabled = false; + } + update(); +} + void HBQPlainTextEdit::insertTab( int mode ) { QTextCursor cursor = textCursor(); diff --git a/harbour/contrib/hbqt/hbqt_hbqplaintextedit.h b/harbour/contrib/hbqt/hbqt_hbqplaintextedit.h index 28c7195d0b..afa854ec7e 100644 --- a/harbour/contrib/hbqt/hbqt_hbqplaintextedit.h +++ b/harbour/contrib/hbqt/hbqt_hbqplaintextedit.h @@ -118,6 +118,10 @@ private: QTextEdit::ExtraSelection selection; void braceHighlight(); + int columnBegins; + int columnEnds; + bool isColumnSelectionEnabled; + protected: bool event( QEvent * event ); void resizeEvent( QResizeEvent * event ); @@ -144,10 +148,12 @@ public slots: void duplicateLine(); void replaceSelection( const QString & txt ); void insertTab( int mode ); + void highlightSelectedColumns( bool yes ); private slots: void slotCursorPositionChanged(); void updateLineNumberArea( const QRect &, int ); + void paintColumnSelection( QPaintEvent * ); }; diff --git a/harbour/contrib/hbqt/hbqt_hbqsyntaxhighlighter.cpp b/harbour/contrib/hbqt/hbqt_hbqsyntaxhighlighter.cpp index d9325130cc..141f4896f0 100644 --- a/harbour/contrib/hbqt/hbqt_hbqsyntaxhighlighter.cpp +++ b/harbour/contrib/hbqt/hbqt_hbqsyntaxhighlighter.cpp @@ -138,6 +138,11 @@ void HBQSyntaxHighlighter::hbSetSingleLineCommentFormat( const QTextCharFormat & singleLineCommentFormat = format; } +void HBQSyntaxHighlighter::hbSetFormatColumnSelection( int start, int count, const QColor & color ) +{ + setFormat( start, count, color ); +} + void HBQSyntaxHighlighter::highlightBlock( const QString &text ) { #if 0 @@ -159,6 +164,7 @@ void HBQSyntaxHighlighter::highlightBlock( const QString &text ) } } #endif +//HB_TRACE( HB_TR_ALWAYS, ( "SYNTSX HIGHLIGHTING" ) ); int index = 0; diff --git a/harbour/contrib/hbqt/hbqt_hbqsyntaxhighlighter.h b/harbour/contrib/hbqt/hbqt_hbqsyntaxhighlighter.h index 6e5c33e878..5b947e1e31 100644 --- a/harbour/contrib/hbqt/hbqt_hbqsyntaxhighlighter.h +++ b/harbour/contrib/hbqt/hbqt_hbqsyntaxhighlighter.h @@ -88,6 +88,7 @@ public: void hbSetSingleLineCommentFormat( const QTextCharFormat & format ); void hbSetRule( QString name, QString pattern, const QTextCharFormat & format ); void hbSetFormat( QString name, const QTextCharFormat & format ); + void hbSetFormatColumnSelection( int start, int count, const QColor & color ); protected: void highlightBlock( const QString &text ); diff --git a/harbour/contrib/hbqt/qtgui/HBQPlainTextEdit.cpp b/harbour/contrib/hbqt/qtgui/HBQPlainTextEdit.cpp index ae1e512ec6..7ce3efcd06 100644 --- a/harbour/contrib/hbqt/qtgui/HBQPlainTextEdit.cpp +++ b/harbour/contrib/hbqt/qtgui/HBQPlainTextEdit.cpp @@ -387,6 +387,14 @@ HB_FUNC( QT_HBQPLAINTEXTEDIT_MOVELINE ) hbqt_par_HBQPlainTextEdit( 1 )->moveLine( hb_parni( 2 ) ); } +/* + * void highlightSelectedColumns( bool yes ) + */ +HB_FUNC( QT_HBQPLAINTEXTEDIT_HIGHLIGHTSELECTEDCOLUMNS ) +{ + hbqt_par_HBQPlainTextEdit( 1 )->highlightSelectedColumns( hb_parl( 2 ) ); +} + /*----------------------------------------------------------------------*/ #endif /* #if QT_VERSION >= 0x040500 */ diff --git a/harbour/contrib/hbqt/qtgui/HBQSyntaxHighlighter.cpp b/harbour/contrib/hbqt/qtgui/HBQSyntaxHighlighter.cpp index 41a48e607f..0c9339d862 100644 --- a/harbour/contrib/hbqt/qtgui/HBQSyntaxHighlighter.cpp +++ b/harbour/contrib/hbqt/qtgui/HBQSyntaxHighlighter.cpp @@ -174,6 +174,14 @@ HB_FUNC( QT_HBQSYNTAXHIGHLIGHTER_HBSETFORMAT ) hbqt_par_HBQSyntaxHighlighter( 1 )->hbSetFormat( HBQSyntaxHighlighter::tr( hb_parc( 2 ) ), *hbqt_par_QTextCharFormat( 3 ) ); } +/* + * void hbSetFormatColumnSelection( int start, int count, const QColor & color ) + */ +HB_FUNC( QT_HBQSYNTAXHIGHLIGHTER_HBSETFORMATCOLUMNSELECTION ) +{ + hbqt_par_HBQSyntaxHighlighter( 1 )->hbSetFormatColumnSelection( hb_parni( 2 ), hb_parni( 3 ), *hbqt_par_QColor( 4 ) ); +} + /*----------------------------------------------------------------------*/ #endif /* #if QT_VERSION >= 0x040500 */ diff --git a/harbour/contrib/hbqt/qtgui/QStackedWidget.cpp b/harbour/contrib/hbqt/qtgui/QStackedWidget.cpp new file mode 100644 index 0000000000..0bbad251f6 --- /dev/null +++ b/harbour/contrib/hbqt/qtgui/QStackedWidget.cpp @@ -0,0 +1,229 @@ +/* + * $Id$ + */ + +/* -------------------------------------------------------------------- */ +/* WARNING: Automatically generated source file. DO NOT EDIT! */ +/* Instead, edit corresponding .qth file, */ +/* or the generator tool itself, and run regenarate. */ +/* -------------------------------------------------------------------- */ + +/* + * Harbour Project source code: + * QT wrapper main header + * + * Copyright 2009-2010 Pritpal Bedi + * + * Copyright 2009 Marcos Antonio Gambeta + * www - http://www.harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + */ +/*----------------------------------------------------------------------*/ + +#include "hbapi.h" +#include "../hbqt.h" + +/*----------------------------------------------------------------------*/ +#if QT_VERSION >= 0x040500 +/*----------------------------------------------------------------------*/ + +#include + +#include + + +/* + * QStackedWidget ( QWidget * parent = 0 ) + * ~QStackedWidget () + * + */ + +typedef struct +{ + void * ph; + bool bNew; + QT_G_FUNC_PTR func; + QPointer< QStackedWidget > pq; +} QGC_POINTER_QStackedWidget; + +QT_G_FUNC( hbqt_gcRelease_QStackedWidget ) +{ + QGC_POINTER_QStackedWidget * p = ( QGC_POINTER_QStackedWidget * ) Cargo; + + if( p && p->bNew ) + { + if( p->ph && p->pq ) + { + const QMetaObject * m = ( ( QObject * ) p->ph )->metaObject(); + if( ( QString ) m->className() != ( QString ) "QObject" ) + { + HB_TRACE( HB_TR_DEBUG, ( "YES_rel_QStackedWidget /.\\ ph=%p pq=%p", p->ph, (void *)(p->pq) ) ); + delete ( ( QStackedWidget * ) p->ph ); + HB_TRACE( HB_TR_DEBUG, ( "YES_rel_QStackedWidget \\./ ph=%p pq=%p", p->ph, (void *)(p->pq) ) ); + p->ph = NULL; + } + else + { + HB_TRACE( HB_TR_DEBUG, ( "NO__rel_QStackedWidgetph=%p pq=%p", p->ph, (void *)(p->pq) ) ); + } + } + else + { + HB_TRACE( HB_TR_DEBUG, ( "DEL_rel_QStackedWidget : Object already deleted!" ) ); + } + } + else + { + HB_TRACE( HB_TR_DEBUG, ( "PTR_rel_QStackedWidget : Object not created with new()" ) ); + p->ph = NULL; + } +} + +void * hbqt_gcAllocate_QStackedWidget( void * pObj, bool bNew ) +{ + QGC_POINTER_QStackedWidget * p = ( QGC_POINTER_QStackedWidget * ) hb_gcAllocate( sizeof( QGC_POINTER_QStackedWidget ), hbqt_gcFuncs() ); + + p->ph = pObj; + p->bNew = bNew; + p->func = hbqt_gcRelease_QStackedWidget; + + if( bNew ) + { + new( & p->pq ) QPointer< QStackedWidget >( ( QStackedWidget * ) pObj ); + HB_TRACE( HB_TR_DEBUG, ( " _new_QStackedWidget ph=%p %i B %i KB", pObj, ( int ) hb_xquery( 1001 ), hbqt_getmemused() ) ); + } + return p; +} + +HB_FUNC( QT_QSTACKEDWIDGET ) +{ + void * pObj = NULL; + + pObj = new QStackedWidget( hbqt_par_QWidget( 1 ) ) ; + + hb_retptrGC( hbqt_gcAllocate_QStackedWidget( pObj, true ) ); +} + +/* + * int addWidget ( QWidget * widget ) + */ +HB_FUNC( QT_QSTACKEDWIDGET_ADDWIDGET ) +{ + hb_retni( hbqt_par_QStackedWidget( 1 )->addWidget( hbqt_par_QWidget( 2 ) ) ); +} + +/* + * int count () const + */ +HB_FUNC( QT_QSTACKEDWIDGET_COUNT ) +{ + hb_retni( hbqt_par_QStackedWidget( 1 )->count() ); +} + +/* + * int currentIndex () const + */ +HB_FUNC( QT_QSTACKEDWIDGET_CURRENTINDEX ) +{ + hb_retni( hbqt_par_QStackedWidget( 1 )->currentIndex() ); +} + +/* + * QWidget * currentWidget () const + */ +HB_FUNC( QT_QSTACKEDWIDGET_CURRENTWIDGET ) +{ + hb_retptrGC( hbqt_gcAllocate_QWidget( hbqt_par_QStackedWidget( 1 )->currentWidget(), false ) ); +} + +/* + * int indexOf ( QWidget * widget ) const + */ +HB_FUNC( QT_QSTACKEDWIDGET_INDEXOF ) +{ + hb_retni( hbqt_par_QStackedWidget( 1 )->indexOf( hbqt_par_QWidget( 2 ) ) ); +} + +/* + * int insertWidget ( int index, QWidget * widget ) + */ +HB_FUNC( QT_QSTACKEDWIDGET_INSERTWIDGET ) +{ + hb_retni( hbqt_par_QStackedWidget( 1 )->insertWidget( hb_parni( 2 ), hbqt_par_QWidget( 3 ) ) ); +} + +/* + * void removeWidget ( QWidget * widget ) + */ +HB_FUNC( QT_QSTACKEDWIDGET_REMOVEWIDGET ) +{ + hbqt_par_QStackedWidget( 1 )->removeWidget( hbqt_par_QWidget( 2 ) ); +} + +/* + * QWidget * widget ( int index ) const + */ +HB_FUNC( QT_QSTACKEDWIDGET_WIDGET ) +{ + hb_retptrGC( hbqt_gcAllocate_QWidget( hbqt_par_QStackedWidget( 1 )->widget( hb_parni( 2 ) ), false ) ); +} + +/* + * void setCurrentIndex ( int index ) + */ +HB_FUNC( QT_QSTACKEDWIDGET_SETCURRENTINDEX ) +{ + hbqt_par_QStackedWidget( 1 )->setCurrentIndex( hb_parni( 2 ) ); +} + +/* + * void setCurrentWidget ( QWidget * widget ) + */ +HB_FUNC( QT_QSTACKEDWIDGET_SETCURRENTWIDGET ) +{ + hbqt_par_QStackedWidget( 1 )->setCurrentWidget( hbqt_par_QWidget( 2 ) ); +} + + +/*----------------------------------------------------------------------*/ +#endif /* #if QT_VERSION >= 0x040500 */ +/*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbqt/qtgui/THBQPlainTextEdit.prg b/harbour/contrib/hbqt/qtgui/THBQPlainTextEdit.prg index 7520d4eeca..a662e276a4 100644 --- a/harbour/contrib/hbqt/qtgui/THBQPlainTextEdit.prg +++ b/harbour/contrib/hbqt/qtgui/THBQPlainTextEdit.prg @@ -96,6 +96,7 @@ CREATE CLASS HBQPlainTextEdit INHERIT HbQtObjectHandler, QPlainTextEdit METHOD blockIndent( nSteps ) METHOD deleteLine() METHOD moveLine( nIDirection ) + METHOD highlightSelectedColumns( lYes ) ENDCLASS @@ -224,3 +225,7 @@ METHOD HBQPlainTextEdit:deleteLine() METHOD HBQPlainTextEdit:moveLine( nIDirection ) RETURN Qt_HBQPlainTextEdit_moveLine( ::pPtr, nIDirection ) + +METHOD HBQPlainTextEdit:highlightSelectedColumns( lYes ) + RETURN Qt_HBQPlainTextEdit_highlightSelectedColumns( ::pPtr, lYes ) + diff --git a/harbour/contrib/hbqt/qtgui/THBQSyntaxHighlighter.prg b/harbour/contrib/hbqt/qtgui/THBQSyntaxHighlighter.prg index c5a974c07f..1205f51a3c 100644 --- a/harbour/contrib/hbqt/qtgui/THBQSyntaxHighlighter.prg +++ b/harbour/contrib/hbqt/qtgui/THBQSyntaxHighlighter.prg @@ -71,6 +71,7 @@ CREATE CLASS HBQSyntaxHighlighter INHERIT HbQtObjectHandler, QSyntaxHighlighter METHOD hbSetSingleLineCommentFormat( pFormat ) METHOD hbSetRule( cName, cPattern, pFormat ) METHOD hbSetFormat( cName, pFormat ) + METHOD hbSetFormatColumnSelection( nStart, nCount, pColor ) ENDCLASS @@ -99,3 +100,7 @@ METHOD HBQSyntaxHighlighter:hbSetRule( cName, cPattern, pFormat ) METHOD HBQSyntaxHighlighter:hbSetFormat( cName, pFormat ) RETURN Qt_HBQSyntaxHighlighter_hbSetFormat( ::pPtr, cName, hbqt_ptr( pFormat ) ) + +METHOD HBQSyntaxHighlighter:hbSetFormatColumnSelection( nStart, nCount, pColor ) + RETURN Qt_HBQSyntaxHighlighter_hbSetFormatColumnSelection( ::pPtr, nStart, nCount, hbqt_ptr( pColor ) ) + diff --git a/harbour/contrib/hbqt/qtgui/TQStackedWidget.prg b/harbour/contrib/hbqt/qtgui/TQStackedWidget.prg new file mode 100644 index 0000000000..ecf6929ef9 --- /dev/null +++ b/harbour/contrib/hbqt/qtgui/TQStackedWidget.prg @@ -0,0 +1,131 @@ +/* + * $Id$ + */ + +/* -------------------------------------------------------------------- */ +/* WARNING: Automatically generated source file. DO NOT EDIT! */ +/* Instead, edit corresponding .qth file, */ +/* or the generator tool itself, and run regenarate. */ +/* -------------------------------------------------------------------- */ + +/* + * Harbour Project source code: + * QT wrapper main header + * + * Copyright 2009-2010 Pritpal Bedi + * + * Copyright 2009 Marcos Antonio Gambeta + * www - http://www.harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + */ +/*----------------------------------------------------------------------*/ + + +#include "hbclass.ch" + + +CREATE CLASS QStackedWidget INHERIT HbQtObjectHandler, QFrame + + METHOD new( ... ) + + METHOD addWidget( pWidget ) + METHOD count() + METHOD currentIndex() + METHOD currentWidget() + METHOD indexOf( pWidget ) + METHOD insertWidget( nIndex, pWidget ) + METHOD removeWidget( pWidget ) + METHOD widget( nIndex ) + METHOD setCurrentIndex( nIndex ) + METHOD setCurrentWidget( pWidget ) + + ENDCLASS + + +METHOD QStackedWidget:new( ... ) + LOCAL p + FOR EACH p IN { ... } + hb_pvalue( p:__enumIndex(), hbqt_ptr( p ) ) + NEXT + ::pPtr := Qt_QStackedWidget( ... ) + RETURN Self + + +METHOD QStackedWidget:addWidget( pWidget ) + RETURN Qt_QStackedWidget_addWidget( ::pPtr, hbqt_ptr( pWidget ) ) + + +METHOD QStackedWidget:count() + RETURN Qt_QStackedWidget_count( ::pPtr ) + + +METHOD QStackedWidget:currentIndex() + RETURN Qt_QStackedWidget_currentIndex( ::pPtr ) + + +METHOD QStackedWidget:currentWidget() + RETURN Qt_QStackedWidget_currentWidget( ::pPtr ) + + +METHOD QStackedWidget:indexOf( pWidget ) + RETURN Qt_QStackedWidget_indexOf( ::pPtr, hbqt_ptr( pWidget ) ) + + +METHOD QStackedWidget:insertWidget( nIndex, pWidget ) + RETURN Qt_QStackedWidget_insertWidget( ::pPtr, nIndex, hbqt_ptr( pWidget ) ) + + +METHOD QStackedWidget:removeWidget( pWidget ) + RETURN Qt_QStackedWidget_removeWidget( ::pPtr, hbqt_ptr( pWidget ) ) + + +METHOD QStackedWidget:widget( nIndex ) + RETURN Qt_QStackedWidget_widget( ::pPtr, nIndex ) + + +METHOD QStackedWidget:setCurrentIndex( nIndex ) + RETURN Qt_QStackedWidget_setCurrentIndex( ::pPtr, nIndex ) + + +METHOD QStackedWidget:setCurrentWidget( pWidget ) + RETURN Qt_QStackedWidget_setCurrentWidget( ::pPtr, hbqt_ptr( pWidget ) ) + diff --git a/harbour/contrib/hbqt/qtgui/filelist.mk b/harbour/contrib/hbqt/qtgui/filelist.mk index 2f8d7b8d40..eef3b0b03a 100644 --- a/harbour/contrib/hbqt/qtgui/filelist.mk +++ b/harbour/contrib/hbqt/qtgui/filelist.mk @@ -141,6 +141,7 @@ CPP_SOURCES := \ QSpinBox.cpp \ QSplashScreen.cpp \ QSplitter.cpp \ + QStackedWidget.cpp \ QStandardItem.cpp \ QStandardItemModel.cpp \ QStatusBar.cpp \ @@ -360,6 +361,7 @@ PRG_SOURCES := \ TQSpinBox.prg \ TQSplashScreen.prg \ TQSplitter.prg \ + TQStackedWidget.prg \ TQStandardItem.prg \ TQStandardItemModel.prg \ TQStatusBar.prg \ diff --git a/harbour/contrib/hbqt/qth/HBQPlainTextEdit.qth b/harbour/contrib/hbqt/qth/HBQPlainTextEdit.qth index b0859cec4e..e0147ac7f8 100644 --- a/harbour/contrib/hbqt/qth/HBQPlainTextEdit.qth +++ b/harbour/contrib/hbqt/qth/HBQPlainTextEdit.qth @@ -127,6 +127,7 @@ HB_FUNC( QT_HBQPLAINTEXTEDIT ) void blockIndent( int steps ) void deleteLine() void moveLine( int iDirection ) + void highlightSelectedColumns( bool yes ) diff --git a/harbour/contrib/hbqt/qth/HBQSyntaxHighLighter.qth b/harbour/contrib/hbqt/qth/HBQSyntaxHighLighter.qth index 65a81f52b4..500abb14b3 100644 --- a/harbour/contrib/hbqt/qth/HBQSyntaxHighLighter.qth +++ b/harbour/contrib/hbqt/qth/HBQSyntaxHighLighter.qth @@ -90,6 +90,7 @@ void hbSetMultiLineCommentFormat( const QTextCharFormat & format ) void hbSetSingleLineCommentFormat( const QTextCharFormat & format ) void hbSetRule( QString name, QString pattern, QTextCharFormat & format ) void hbSetFormat( QString name, const QTextCharFormat & format ) +void hbSetFormatColumnSelection( int start, int count, const QColor & color ) # QTextBlock currentBlock () const # int currentBlockState () const diff --git a/harbour/contrib/hbqt/qth/QStackedWidget.qth b/harbour/contrib/hbqt/qth/QStackedWidget.qth new file mode 100644 index 0000000000..1af5cbad77 --- /dev/null +++ b/harbour/contrib/hbqt/qth/QStackedWidget.qth @@ -0,0 +1,107 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * QT Source Generator for Harbour + * + * Copyright 2009 Pritpal Bedi + * www - http://www.harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + */ +/*----------------------------------------------------------------------*/ +; +; Header File to Generate QT Wrapper Sources +; + + +QObject = +Inherits = QFrame +Type = +New = + + + + + + + + + +#include + + +/* + * QStackedWidget ( QWidget * parent = 0 ) + * ~QStackedWidget () + * + */ +HB_FUNC( QT_QSTACKEDWIDGET ) +{ + hb_retptr( new QStackedWidget( hbqt_par_QWidget( 1 ) ) ); +} + + + + + + +int addWidget ( QWidget * widget ) +int count () const +int currentIndex () const +QWidget * currentWidget () const +int indexOf ( QWidget * widget ) const +int insertWidget ( int index, QWidget * widget ) +void removeWidget ( QWidget * widget ) +QWidget * widget ( int index ) const + + + +void setCurrentIndex ( int index ) +void setCurrentWidget ( QWidget * widget ) + + + +void currentChanged ( int index ) +void widgetRemoved ( int index ) +