diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 5c39c25f15..c14185c613 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,16 @@ 2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2009-04-15 22:27 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) + * harbour/contrib/gtqtc/gtqtc.cpp + * harbour/contrib/gtqtc/gtqtc.h + * harbour/contrib/gtqtc/tests/demoqtc.prg + ! Implemented : hb_gtInfo( HB_GTI_CLOSABLE, TRUE | FALSE ) + : hb_gtInfo( HB_GTI_RESIZABLE, TRUE | FALSE ) + : hb_gtInfo( HB_GTI_CLIPBOARDDATA[, cText ] ) + + Struggling : How to manage caret ? Anybody to rescue ? + 2009-04-16 04:18 UTC+0200 Viktor Szakats (harbour.01 syenar hu) * utils/hbmk2/hbmk2.prg + Added -inc support for lib dependencies. This means that diff --git a/harbour/contrib/gtqtc/gtqtc.cpp b/harbour/contrib/gtqtc/gtqtc.cpp index d6c7e619ef..c53361f72d 100644 --- a/harbour/contrib/gtqtc/gtqtc.cpp +++ b/harbour/contrib/gtqtc/gtqtc.cpp @@ -274,6 +274,19 @@ static PHB_GTWVT hb_gt_wvt_New( PHB_GT pGT, HINSTANCE hInstance, int iCmdShow ) return pWVT; } + +static void hb_gt_wvt_SetWindowFlags( PHB_GTWVT pWVT, Qt::WindowFlags flags ) +{ + pWVT->qWnd->setWindowFlags(flags); + QPoint pos = pWVT->qWnd->pos(); + if( pos.x() < 0 ) + pos.setX(0); + if( pos.y() < 0 ) + pos.setY( 0 ); + pWVT->qWnd->move( pos ); + pWVT->qWnd->show(); +} + #if 0 static int hb_gt_wvt_FireEvent( PHB_GTWVT pWVT, int nEvent ) { @@ -1310,39 +1323,26 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo ) hb_gt_winapi_setKbdState( hb_itemGetNI( pInfo->pNewVal ) ); break; - case HB_GTI_CLIPBOARDDATA: - if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING ) - { - hb_gt_winapi_setClipboard( pWVT->CodePage == OEM_CHARSET ? - CF_OEMTEXT : CF_TEXT, - hb_itemGetCPtr( pInfo->pNewVal ), - hb_itemGetCLen( pInfo->pNewVal ) ); - } - else - { - char * szClipboardData; - ULONG ulLen; - if( hb_gt_winapi_getClipboard( pWVT->CodePage == OEM_CHARSET ? - CF_OEMTEXT : CF_TEXT, - &szClipboardData, &ulLen ) ) - { - pInfo->pResult = hb_itemPutCLPtr( pInfo->pResult, - szClipboardData, - ulLen ); - } - else - { - pInfo->pResult = hb_itemPutC( pInfo->pResult, NULL ); - } - } - break; - case HB_GTI_CURSORBLINKRATE: pInfo->pResult = hb_itemPutNI( pInfo->pResult, GetCaretBlinkTime() ); if( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC ) SetCaretBlinkTime( hb_itemGetNI( pInfo->pNewVal ) ); break; #endif + case HB_GTI_CLIPBOARDDATA: + if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING ) + { + QClipboard *cb = QApplication::clipboard(); + cb->setText( QString( hb_itemGetCPtr( pInfo->pNewVal ) ) ); + } + else + { + QClipboard *cb = QApplication::clipboard(); + pInfo->pResult = hb_itemPutC( pInfo->pResult, cb->text().toLatin1().data() ); + } + + break; + case HB_GTI_SCREENSIZE: { int iX, iY; @@ -1366,7 +1366,7 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo ) } break; } -#if 0 + case HB_GTI_RESIZABLE: pInfo->pResult = hb_itemPutL( pInfo->pResult, pWVT->bResizable ); if( pInfo->pNewVal ) @@ -1375,32 +1375,37 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo ) if( bNewValue != pWVT->bResizable ) { pWVT->bResizable = bNewValue; - if( pWVT->hWnd ) + if( pWVT->qWnd ) { - LONG_PTR style; + Qt::WindowFlags flags = pWVT->qWnd->windowFlags(); if( pWVT->bResizable ) - style = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_THICKFRAME; + { + flags |= Qt::WindowMaximizeButtonHint; + pWVT->qWnd->setMinimumWidth( 0 ); + pWVT->qWnd->setMaximumWidth( QDesktopWidget().width() ); + pWVT->qWnd->setMinimumHeight( 50 ); + pWVT->qWnd->setMaximumHeight( QDesktopWidget().height() ); + } else - style = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_BORDER; - - SetWindowLongPtr( pWVT->hWnd, GWL_STYLE, style ); - - SetWindowPos( pWVT->hWnd, NULL, 0, 0, 0, 0, - SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_DEFERERASE ); - ShowWindow( pWVT->hWnd, SW_HIDE ); - ShowWindow( pWVT->hWnd, SW_NORMAL ); + { + flags = flags &~ Qt::WindowMaximizeButtonHint; + pWVT->qWnd->setMinimumWidth( pWVT->qWnd->width() ); + pWVT->qWnd->setMaximumWidth( pWVT->qWnd->width() ); + pWVT->qWnd->setMinimumHeight( pWVT->qWnd->height() ); + pWVT->qWnd->setMaximumHeight( pWVT->qWnd->height() ); + } + hb_gt_wvt_SetWindowFlags( pWVT, flags ); } } } break; -#endif + case HB_GTI_SELECTCOPY: pInfo->pResult = hb_itemPutL( pInfo->pResult, pWVT->bSelectCopy ); if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING ) { pInfo->pResult = hb_itemPutC( pInfo->pResult, pWVT->pszSelectCopy ); - if( hb_itemGetCLen( pInfo->pNewVal ) ) { #if 0 @@ -1447,20 +1452,17 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo ) BOOL bNewValue = hb_itemGetL( pInfo->pNewVal ); if( bNewValue != pWVT->bClosable ) { + pWVT->bClosable = bNewValue; if( pWVT->qWnd ) { - #if 0 - HMENU hSysMenu = GetSystemMenu( pWVT->hWnd, FALSE ); - if( hSysMenu ) - { - EnableMenuItem( hSysMenu, SC_CLOSE, MF_BYCOMMAND | ( bNewValue ? MF_ENABLED : MF_GRAYED ) ); - pWVT->bClosable = bNewValue; - } - #endif - pWVT->bClosable = bNewValue; + Qt::WindowFlags flags = pWVT->qWnd->windowFlags(); + if( pWVT->bClosable ) + flags |= Qt::WindowCloseButtonHint; + else + flags = flags &~ Qt::WindowCloseButtonHint; + + hb_gt_wvt_SetWindowFlags( pWVT, flags ); } - else - pWVT->bClosable = bNewValue; } } break; @@ -2521,6 +2523,11 @@ MainWindow::MainWindow() setCentralWidget(consoleArea); setFocusPolicy(Qt::StrongFocus); + + Qt::WindowFlags flags = Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint | + Qt::WindowMinimizeButtonHint | Qt::WindowSystemMenuHint | + Qt::WindowTitleHint | Qt::CustomizeWindowHint | Qt::Window ; + setWindowFlags( flags ); } void MainWindow::closeEvent(QCloseEvent *event) diff --git a/harbour/contrib/gtqtc/gtqtc.h b/harbour/contrib/gtqtc/gtqtc.h index 9be16fa0af..08a9eed8a2 100644 --- a/harbour/contrib/gtqtc/gtqtc.h +++ b/harbour/contrib/gtqtc/gtqtc.h @@ -69,6 +69,7 @@ #include #include #include +#include #include "hbset.h" #include "hbgtcore.h" diff --git a/harbour/contrib/gtqtc/tests/demoqtc.prg b/harbour/contrib/gtqtc/tests/demoqtc.prg index 2e0c82d15c..f9619c1da7 100644 --- a/harbour/contrib/gtqtc/tests/demoqtc.prg +++ b/harbour/contrib/gtqtc/tests/demoqtc.prg @@ -144,7 +144,7 @@ STATIC FUNCTION DispScreen() DispOutAt( 5, 0, padc( "_ __ / / /_/ /_ / _ /_/ / /_/ / /_/ /_ / / /_/ / _ / ",nMaxCol ), "W+/W" ) DispOutAt( 6, 0, padc( "/_/ /_/ \__,_/ /_/ /_.___/\____/\__,_/ /_/ \____/ /_/ ",nMaxCol ), "W+/W" ) - #if 0 + #if 1 DispOutAt( ++nRow, nCol, "< F2 MarkCopy Toggle >", cColor ) DispOutAt( ++nRow, nCol, "< F3 Resize Toggle >", cColor ) DispOutAt( ++nRow, nCol, "< F4 Closable Toggle >", cColor ) @@ -152,10 +152,9 @@ STATIC FUNCTION DispScreen() DispOutAt( ++nRow, nCol, "< F6 Palette D Repeat >", cColor ) DispOutAt( ++nRow, nCol, "< F7 Palette By Index R >", cColor ) DispOutAt( ++nRow, nCol, "< F8 MarkCopy menu text >", cColor ) - DispOutAt( ++nRow, nCol, "< Click Other Window >", cColor ) + DispOutAt( ++nRow, nCol, "< Enter - Alert() >", cColor ) DispOutAt( ++nRow, nCol, "< Click X Button >", cColor ) #endif - DispOutAt( ++nRow+5, nCol, "< Enter - Alert() >", cColor ) DispOutAt( maxrow(), 0, Space( maxcol()+1 ), "N/G*" )