diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 21bab3a458..788f98349e 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,53 @@ The license applies to all entries newer than 2009-04-28. */ +2012-07-26 09:48 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) + * contrib/hbqt/qtgui/hbqtgui.ch + + Added: QSettings_* and QIODevice_* constants. + + + contrib/hbide/env + + contrib/hbide/env/pritpalsfav.ide + + contrib/hbide/settings.qrc + + Added: new folder containing HbIDE settings embedded as a resource. + Only one environment is added, quickly, to review its usefulness. + + * contrib/hbide/findreplace.prg + ! Formatting. + + * contrib/hbide/actions.prg + * contrib/hbide/hbide.hbp + * contrib/hbide/main.prg + * contrib/hbide/misc.prg + * contrib/hbide/saveload.prg + * contrib/hbide/tools.prg + + Implemented: Multiple-view of HbIDE's application window. + The views take care of toolbars associated with mainwindow and + all the docking widgets. The view remembers their state and dimensions, + whether these are visible, floating, etc. + + ; How To: + 1. Click on
icon. + 2. Opens a FileSave dialog, provide a location and name, + your current view will be saved. + 3. Click on
icon's drop-down menu. + 4. You can see, beside others, an entry . + 5. Click on it and see your view is changed instantly. + 6. Repeat #4 and click on the entry representing your view + saved via #2. + 7. And you are back with your original settings. + + These views are switchable with a click of a key. This also + covers a gread demand from users where it is asked that HbIDE + should be like, Starter, Advanced, Professional, Enterprised, etc. + Or where desk-top territory is compalined. For example, activate + IdeDBU and then make it floatable, adjust windows size to your + taste, save this view. Then at single click you can brought it back. + This is a big productivity boost, believe me. + + ; REQUEST: send me the useful views you employ in day-to-day needs + and if deemed fit will be included in HbIDE itself for + others to be benefitted. + 2012-07-25 11:51 UTC+0200 Viktor Szakats (harbour syenar.net) * src/lang/fr.c ! old typo in month name, by Guy Roussin diff --git a/harbour/contrib/hbide/actions.prg b/harbour/contrib/hbide/actions.prg index 79856adf08..18682ae2cb 100644 --- a/harbour/contrib/hbide/actions.prg +++ b/harbour/contrib/hbide/actions.prg @@ -359,7 +359,9 @@ METHOD IdeActions:buildToolBar() oTBar:addItem( ::getAction( "TB_RebuildLaunch" ), , , , , , "RebuildLaunch" ) oTBar:addItem( , , , , , nSep ) ::oActToolsBtn := oTBar:oWidget:addWidget( ::oIde:oTM:buildToolsButton() ) + oTBar:addItem( , , , , , nSep ) ::oActToolsBtn := oTBar:oWidget:addWidget( ::oIde:oTM:buildViewsButton() ) + oTBar:addItem( , , , , , nSep ) ::oIde:oMainToolbar := oTBar @@ -615,7 +617,6 @@ METHOD IdeActions:buildMainMenu() hbide_menuAddSep( oSubMenu ) oSubMenu:addItem( { ::getAction( "ChangeLog" ), {|| oIde:execAction( "ChangeLog" ) } } ) hbide_menuAddSep( oSubMenu ) - oSubMenu2 := hbide_buildCDPMenu( oIde, oSubMenu ) //hbide_buildCodecMenu( oIde, oSubMenu ) // oSubMenu2:title := "~CodePage" oSubMenu:addItem( { oSubMenu2, _T( "~CodePage" ) } ) diff --git a/harbour/contrib/hbide/env/pritpalsfav.ide b/harbour/contrib/hbide/env/pritpalsfav.ide new file mode 100644 index 0000000000..acb665c20b --- /dev/null +++ b/harbour/contrib/hbide/env/pritpalsfav.ide @@ -0,0 +1,2 @@ +[General] +hbidesettings="@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x3\0\0\0\0\0\0\0\x87\0\0\x2\x9c\xfc\x2\0\0\0\x3\xfb\0\0\0\x1e\0\x64\0o\0\x63\0k\0P\0r\0o\0j\0\x65\0\x63\0t\0T\0r\0\x65\0\x65\x1\0\0\0\x15\0\0\x1\x93\0\0\0]\0\xff\xff\xff\xfb\0\0\0\x1c\0\x64\0o\0\x63\0k\0\x45\0\x64\0i\0t\0o\0r\0T\0\x61\0\x62\0s\x1\0\0\x1\xac\0\0\0\xa4\0\0\0]\0\xff\xff\xff\xfb\0\0\0\x1c\0\x64\0o\0\x63\0k\0S\0k\0l\0t\0n\0s\0T\0r\0\x65\0\x65\x1\0\0\x2T\0\0\0]\0\0\0]\0\xff\xff\xff\0\0\0\x1\0\0\x1\xd5\0\0\x2\x9c\xfc\x1\0\0\0\x2\xfb\0\0\0\x10\0\x64\0o\0\x63\0k\0H\0\x65\0l\0p\0\0\0\x3\x94\0\0\x1\xd5\0\0\0P\0\xff\xff\xff\xfc\0\0\x3u\0\0\x1\xd5\0\0\0\0\0\xff\xff\xff\xfa\xff\xff\xff\xff\x1\0\0\0\xf\xfb\0\0\0\x1a\0\x64\0o\0\x63\0k\0\x44\0o\0\x63\0V\0i\0\x65\0w\0\x65\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\x1\x8e\0\xff\xff\xff\xfb\0\0\0\x18\0\x64\0o\0\x63\0k\0\x46\0u\0n\0\x63\0L\0i\0s\0t\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0\x1a\0\x64\0o\0\x63\0k\0\x46\0u\0n\0\x63\0t\0i\0o\0n\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0\x1c\0\x64\0o\0\x63\0k\0P\0r\0o\0p\0\x65\0r\0t\0i\0\x65\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0 \0\x64\0o\0\x63\0k\0\x45\0n\0v\0i\0r\0o\0n\0m\0\x65\0n\0t\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\x1\x6\0\xff\xff\xff\xfb\0\0\0\x18\0\x64\0o\0\x63\0k\0S\0k\0\x65\0l\0\x65\0t\0o\0n\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0\x14\0\x64\0o\0\x63\0k\0T\0h\0\x65\0m\0\x65\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0\x1e\0\x64\0o\0\x63\0k\0\x46\0i\0n\0\x64\0I\0n\0\x46\0i\0l\0\x65\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0\x1a\0\x64\0o\0\x63\0k\0\x44\0o\0\x63\0W\0r\0i\0t\0\x65\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\x1,\0\xff\xff\xff\xfb\0\0\0&\0\x64\0o\0\x63\0k\0S\0o\0u\0r\0\x63\0\x65\0T\0h\0u\0m\0\x62\0n\0\x61\0i\0l\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0\x1c\0\x64\0o\0\x63\0k\0Q\0S\0\x63\0i\0n\0t\0i\0l\0l\0\x61\0\0\0\0\0\xff\xff\xff\xff\0\0\0\xb8\0\xff\xff\xff\xfb\0\0\0$\0\x64\0o\0\x63\0k\0R\0\x65\0p\0o\0r\0t\0\x44\0\x65\0s\0i\0g\0n\0\x65\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\x1\x34\0\xff\xff\xff\xfb\0\0\0\x14\0\x64\0o\0\x63\0k\0\x46\0o\0r\0m\0\x61\0t\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0\x12\0\x64\0o\0\x63\0k\0\x43\0u\0i\0\x45\0\x64\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\xfb\0\0\0\x12\0\x64\0o\0\x63\0k\0U\0I\0S\0r\0\x63\0\0\0\0\0\xff\xff\xff\xff\0\0\0P\0\xff\xff\xff\0\0\0\x3\0\0\x4\xc8\0\0\0]\xfc\x1\0\0\0\x1\xfc\0\0\0\xa1\0\0\x4\xc8\0\0\0\0\0\xff\xff\xff\xfa\xff\xff\xff\xff\x1\0\0\0\x3\xfb\0\0\0$\0\x64\0o\0\x63\0k\0\x43\0o\0m\0p\0i\0l\0\x65\0R\0\x65\0s\0u\0l\0t\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0G\0\xff\xff\xff\xfb\0\0\0\x1e\0\x64\0o\0\x63\0k\0L\0i\0n\0k\0R\0\x65\0s\0u\0l\0t\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0G\0\xff\xff\xff\xfb\0\0\0\"\0\x64\0o\0\x63\0k\0O\0u\0t\0p\0u\0t\0R\0\x65\0s\0u\0l\0t\0s\0\0\0\0\0\xff\xff\xff\xff\0\0\0G\0\xff\xff\xff\0\0\x4\xb3\0\0\x2\x9c\0\0\0\x4\0\0\0\x4\0\0\0\x1\0\0\0\x2\xfc\0\0\0\x3\0\0\0\0\0\0\0\x1\0\0\0\x1c\0X\0\x42\0P\0T\0O\0O\0L\0\x42\0\x41\0R\0M\0\x41\0I\0N\x3\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\x1a\0T\0o\0o\0l\0\x42\0\x61\0r\0_\0\x44\0o\0\x63\0k\0s\x2\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x2\0\0\0\0)" diff --git a/harbour/contrib/hbide/findreplace.prg b/harbour/contrib/hbide/findreplace.prg index 5b326c767a..d84147676f 100644 --- a/harbour/contrib/hbide/findreplace.prg +++ b/harbour/contrib/hbide/findreplace.prg @@ -5,7 +5,7 @@ /* * Harbour Project source code: * - * Copyright 2009 Pritpal Bedi + * Copyright 2009-2012 Pritpal Bedi * www - http://harbour-project.org * * This program is free software; you can redistribute it and/or modify @@ -1558,3 +1558,4 @@ STATIC FUNCTION hbide_isSourceOfType( cSource, aFilter ) /*----------------------------------------------------------------------*/ + diff --git a/harbour/contrib/hbide/hbide.hbp b/harbour/contrib/hbide/hbide.hbp index 2ff95dbe5a..c924343e72 100644 --- a/harbour/contrib/hbide/hbide.hbp +++ b/harbour/contrib/hbide/hbide.hbp @@ -95,6 +95,7 @@ changelog.ui projectwizard.ui hbide.qrc +settings.qrc -3rd=hbide_file=hbide.ch diff --git a/harbour/contrib/hbide/main.prg b/harbour/contrib/hbide/main.prg index 9a4af91c77..03e4b33e39 100644 --- a/harbour/contrib/hbide/main.prg +++ b/harbour/contrib/hbide/main.prg @@ -128,6 +128,7 @@ FUNCTION Main( ... ) SET CENTURY ON QResource():registerResource_1( hbqtres_HbIde() ) + QResource():registerResource_1( hbqtres_Settings() ) oTmp := HbIde():new( hb_aParams() ) #if 0 diff --git a/harbour/contrib/hbide/misc.prg b/harbour/contrib/hbide/misc.prg index 5d41546d9c..142146ad91 100644 --- a/harbour/contrib/hbide/misc.prg +++ b/harbour/contrib/hbide/misc.prg @@ -286,7 +286,7 @@ FUNCTION hbide_getYesNoCancel( cMsg, cInfo, cTitle ) /*----------------------------------------------------------------------*/ FUNCTION hbide_fetchAFile( oWnd, cTitle, aFlt, cDftDir, cDftSuffix, lAllowMulti ) - LOCAL oDlg, cFile + LOCAL oDlg DEFAULT cTitle TO "Please Select a File" DEFAULT aFlt TO { { "All Files", "*" } } @@ -302,15 +302,12 @@ FUNCTION hbide_fetchAFile( oWnd, cTitle, aFlt, cDftDir, cDftSuffix, lAllowMulti oDlg:oWidget:setDefaultSuffix( cDftSuffix ) ENDIF - cFile := oDlg:open( cDftDir, , lAllowMulti ) - oDlg:destroy() - - RETURN cFile + RETURN oDlg:open( cDftDir, , lAllowMulti ) /*----------------------------------------------------------------------*/ FUNCTION hbide_saveAFile( oWnd, cTitle, aFlt, cDftFile, cDftSuffix ) - LOCAL oDlg, cFile + LOCAL oDlg DEFAULT cTitle TO "Please Select a File" @@ -323,10 +320,7 @@ FUNCTION hbide_saveAFile( oWnd, cTitle, aFlt, cDftFile, cDftSuffix ) oDlg:oWidget:setDefaultSuffix( cDftSuffix ) ENDIF - cFile := oDlg:saveAs( cDftFile, .f., .t. ) - oDlg:destroy() - - RETURN cFile + RETURN oDlg:saveAs( cDftFile, .f., .t. ) /*----------------------------------------------------------------------*/ /* Function to user select a existing folder diff --git a/harbour/contrib/hbide/saveload.prg b/harbour/contrib/hbide/saveload.prg index 94e64db9c7..800ebbdc06 100644 --- a/harbour/contrib/hbide/saveload.prg +++ b/harbour/contrib/hbide/saveload.prg @@ -66,6 +66,7 @@ #include "hbide.ch" #include "common.ch" +#include "fileio.ch" #include "hbclass.ch" #include "hbqtgui.ch" @@ -2269,3 +2270,65 @@ METHOD IdeSetup:setBaseColor() RETURN Self /*----------------------------------------------------------------------*/ + +FUNCTION hbide_saveEnvironment( oIde, cFile ) + LOCAL cPath, cExt, oSettings + + DEFAULT cFile TO "settings.ide" + + cFile := lower( cFile ) + hb_fNameSplit( cFile, @cPath, @cFile, @cExt ) + IF empty( cExt ) + cExt := ".ide" + ENDIF + IF lower( cExt ) != ".ide" + RETURN NIL + ENDIF + IF empty( cPath ) + cPath := oIde:oINI:getINIPath() + ENDIF + + oSettings := QSettings( cPath + cFile + cExt, QSettings_IniFormat ) + + HB_TRACE( HB_TR_ALWAYS, oSettings:fileName() ) + + oSettings:setValue( "hbidesettings", QVariant( oIde:oDlg:oWidget:saveState() ) ) + + RETURN NIL + +/*----------------------------------------------------------------------*/ + +FUNCTION hbide_restEnvironment( oIde, cFile ) + LOCAL cPath, cExt, oSettings + + DEFAULT cFile TO "settings.ide" + + cFile := lower( cFile ) + hb_fNameSplit( cFile, @cPath, @cFile, @cExt ) + IF empty( cExt ) + cExt := ".ide" + ENDIF + IF lower( cExt ) != ".ide" + RETURN NIL + ENDIF + IF empty( cPath ) + cPath := oIde:oINI:getINIPath() + ENDIF + + oSettings := QSettings( cPath + cFile + cExt, QSettings_IniFormat ) + + oIde:oDlg:oWidget:restoreState( oSettings:value( "hbidesettings" ):toByteArray() ) + + RETURN NIL + +/*----------------------------------------------------------------------*/ + +FUNCTION hbide_restEnvironment_byResource( oIde, cFile ) + LOCAL oSettings := QSettings( ":/env/" + cFile + ".ide", QSettings_IniFormat ) + + oIde:oDlg:oWidget:restoreState( oSettings:value( "hbidesettings" ):toByteArray() ) + + RETURN NIL + +/*----------------------------------------------------------------------*/ + diff --git a/harbour/contrib/hbide/settings.qrc b/harbour/contrib/hbide/settings.qrc new file mode 100644 index 0000000000..28ac698841 --- /dev/null +++ b/harbour/contrib/hbide/settings.qrc @@ -0,0 +1,5 @@ + + + env/pritpalsfav.ide + + diff --git a/harbour/contrib/hbide/tools.prg b/harbour/contrib/hbide/tools.prg index 430f48c758..ff5655e84f 100644 --- a/harbour/contrib/hbide/tools.prg +++ b/harbour/contrib/hbide/tools.prg @@ -92,6 +92,7 @@ CLASS IdeToolsManager INHERIT IdeObject DATA aAct INIT {} + DATA aSetAct INIT {} DATA qToolsMenu DATA qToolsButton DATA qViewsMenu @@ -105,6 +106,7 @@ CLASS IdeToolsManager INHERIT IdeObject DATA aBtns INIT {} DATA aToolbars INIT { NIL,NIL,NIL,NIL,NIL } DATA aPlugins INIT {} + DATA cSetsFolderLast ACCESS aTools INLINE ::oINI:aTools ACCESS aUserToolBars INLINE ::oINI:aUserToolbars @@ -142,6 +144,8 @@ METHOD IdeToolsManager:new( oIde ) ::oIde := oIde + ::cSetsFolderLast := oIde:oINI:getINIPath() + RETURN Self /*----------------------------------------------------------------------*/ @@ -859,21 +863,30 @@ METHOD IdeToolsManager:buildViewsButton() cPath := ::oINI:getIniPath() b_:= directory( cPath + "*.ide" ) + aSettings := {} + aadd( aSettings, "Browse..." ) + aadd( aSettings, "..." ) + aadd( aSettings, "Pritpals Favourite" ) + aadd( aSettings, "..." ) FOR EACH a_ IN b_ - IF ! ( a_[ 1 ] == "settings.ide" .AND. a_[ 1 ] == "tempsettings.ide" ) - aadd( aSettings, strtran( a_[ 1 ], ".ide" ) ) + IF ! ( a_[ 1 ] == "settings.ide" ) .AND. ! ( a_[ 1 ] == "tempsettings.ide" ) + aadd( aSettings, hbide_pathNormalized( cPath + a_[ 1 ] ) ) ENDIF NEXT - ::qViewsMenu := QMenu() ::qViewsMenu:setStyleSheet( GetStyleSheet( "QMenuPop", ::nAnimantionMode ) ) FOR EACH cView IN aSettings - qAct := ::qViewsMenu:addAction( cView ) - qAct:connect( "triggered(bool)", hbide_blockView( Self, cView ) ) - aadd( ::aAct, qAct ) + IF cView == "..." + qAct := ::qViewsMenu:addSeparator() + ELSE + qAct := ::qViewsMenu:addAction( cView ) + qAct:connect( "triggered(bool)", hbide_blockView( Self, cView ) ) + ENDIF + aadd( ::aSetAct, { qAct, cView } ) NEXT ::qViewsButton := QToolButton() + ::qViewsButton:setObjectName( "HbIDE Views" ) ::qViewsButton:setTooltip( "HbIDE Views" ) ::qViewsButton:setIcon( QIcon( hbide_image( "view_docks" ) ) ) ::qViewsButton:setPopupMode( QToolButton_MenuButtonPopup ) @@ -884,25 +897,42 @@ METHOD IdeToolsManager:buildViewsButton() /*----------------------------------------------------------------------*/ -METHOD IdeToolsManager:execView( cView ) - HB_SYMBOL_UNUSED( cView ) - hbide_restSettings( ::oIde, cView + ".ide" ) - RETURN Self - -/*----------------------------------------------------------------------*/ - METHOD IdeToolsManager:saveView() LOCAL cView, qAct - cView := lower( trim( hbide_fetchAString( ::oDlg:oWidget, "", "HbIDE View Name", "New View" ) ) ) - IF ! empty( cView ) .AND. cView != "settings" .AND. cView != "tempsettings" - cView := strtran( cView, " ", "_" ) - hbide_saveSettings( ::oIde, cView + ".ide" ) - qAct := ::qViewsMenu:addAction( cView ) - qAct:connect( "triggered(bool)", hbide_blockView( Self, cView ) ) - aadd( ::aAct, qAct ) + cView := hbide_saveAFile( ::oDlg, "Select a HbIDE Settings File", { { "HbIDE Settings", "*.ide" } }, ::cSetsFolderLast, "ide" ) + IF ! empty( cView ) + ::cSetsFolderLast := cView + cView := lower( hbide_pathNormalized( cView ) ) + hbide_saveEnvironment( ::oIde, cView ) + + IF ascan( ::aSetAct, {|e_| e_[ 2 ] == cView } ) == 0 + qAct := ::qViewsMenu:addAction( cView ) + qAct:connect( "triggered(bool)", hbide_blockView( Self, cView ) ) + aadd( ::aAct, { qAct, cView } ) + ENDIF ENDIF RETURN Self /*----------------------------------------------------------------------*/ + +METHOD IdeToolsManager:execView( cView ) + + IF cView == "Browse..." + cView := hbide_fetchAFile( ::oDlg, "Select a HbIDE Settings File", { { "HbIDE Settings", "*.ide" } }, ::cSetsFolderLast, "ide", .f. ) + IF empty( cView ) + RETURN Self + ENDIF + ::cSetsFolderLast := cView + hbide_restEnvironment( ::oIde, cView ) + ELSEIF cView == "Pritpals Favourite" + hbide_restEnvironment_byResource( ::oIde, "pritpalsfav" ) + ELSE + hbide_restEnvironment( ::oIde, cView ) + ENDIF + + RETURN Self + +/*----------------------------------------------------------------------*/ + diff --git a/harbour/contrib/hbqt/qtgui/hbqtgui.ch b/harbour/contrib/hbqt/qtgui/hbqtgui.ch index e0a90b42bb..d3c4ceb539 100644 --- a/harbour/contrib/hbqt/qtgui/hbqtgui.ch +++ b/harbour/contrib/hbqt/qtgui/hbqtgui.ch @@ -2396,6 +2396,26 @@ #define QTreeWidgetItem_Type 0 // The default type for tree widget items. #define QTreeWidgetItem_UserType 1000 // The minimum value for custom types. Values below UserType are reserved by Qt. +#define QSettings_NativeFormat 0 // Store the settings using the most appropriate storage format for the platform. On Windows, this means the system registry; on Mac OS X, this means the CFPreferences API; on Unix, this means textual configuration files in INI format. +#define QSettings_IniFormat 1 // Store the settings in INI files. +#define QSettings_InvalidFormat 16 // Special value returned by registerFormat(). + +#define QSettings_UserScope 0 // Store settings in a location specific to the current user (e.g., in the user's home directory). +#define QSettings_SystemScope 1 // Store settings in a global location, so that all users on the same machine access the same set of settings. + +#define QSettings_NoError 0 // No error occurred. +#define QSettings_AccessError 1 // An access error occurred (e.g. trying to write to a read-only file). +#define QSettings_FormatError 2 // A format error occurred (e.g. loading a malformed INI file). + +#define QIODevice_NotOpen 0x0000 // The device is not open. +#define QIODevice_ReadOnly 0x0001 // The device is open for reading. +#define QIODevice_WriteOnly 0x0002 // The device is open for writing. +#define QIODevice_ReadWrite hb_bitOr( QIODevice_ReadOnly, QIODevice_WriteOnly ) // The device is open for reading and writing. +#define QIODevice_Append 0x0004 // The device is opened in append mode, so that all data is written to the end of the file. +#define QIODevice_Truncate 0x0008 // If possible, the device is truncated before it is opened. All earlier contents of the device are lost. +#define QIODevice_Text 0x0010 // When reading, the end-of-line terminators are translated to '\n'. When writing, the end-of-line terminators are translated to the local encoding, for example '\r\n' for Win32. +#define QIODevice_Unbuffered 0x0020 // Any buffer in the device is bypassed. + /*----------------------------------------------------------------------*/ // HBQT Defined Constants /*----------------------------------------------------------------------*/