2009-03-27 11:45 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* ChangeLog
* One TOFIX marked as DONE.
* contrib/hbmysql/tmysql.prg
% Optimizations (using SWITCH)
* contrib/hbqt/qth/QFont.qth
* contrib/hbqt/qth/QPen.qth
* contrib/hbqt/hbqt_qfont.cpp
! Fixed HB_IS*() macro usage.
* contrib/hbqt/tests/hbqt.hbp
+ Added C++ and runtime MinGW lib.
; TOFIX: I still get:
harbour/lib/win/mingw/libhbvm.a(fm.o):fm.c:(.text+0x39b): undefined reference to `__mingw_vfprintf'
+ gui=yes
This commit is contained in:
@@ -8,6 +8,24 @@
|
||||
2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
|
||||
*/
|
||||
|
||||
2009-03-27 11:45 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
|
||||
* ChangeLog
|
||||
* One TOFIX marked as DONE.
|
||||
|
||||
* contrib/hbmysql/tmysql.prg
|
||||
% Optimizations (using SWITCH)
|
||||
|
||||
* contrib/hbqt/qth/QFont.qth
|
||||
* contrib/hbqt/qth/QPen.qth
|
||||
* contrib/hbqt/hbqt_qfont.cpp
|
||||
! Fixed HB_IS*() macro usage.
|
||||
|
||||
* contrib/hbqt/tests/hbqt.hbp
|
||||
+ Added C++ and runtime MinGW lib.
|
||||
; TOFIX: I still get:
|
||||
harbour/lib/win/mingw/libhbvm.a(fm.o):fm.c:(.text+0x39b): undefined reference to `__mingw_vfprintf'
|
||||
+ gui=yes
|
||||
|
||||
2009-03-27 02:03 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
|
||||
* harbour/contrib/hbqt/hbqt.h
|
||||
* harbour/contrib/hbqt/hbqt_qfont.cpp
|
||||
@@ -25,10 +43,10 @@
|
||||
+ harbour/contrib/hbqt/qth/QFont.qth
|
||||
+ harbour/contrib/hbqt/qth/QPen.qth
|
||||
+ harbour/contrib/hbqt/qth/QWidget.qth
|
||||
+ Added .qth contining prototypes and user code to be embedded
|
||||
+ Added .qth contining prototypes and user code to be embedded
|
||||
into the resulting .cpp source file.
|
||||
|
||||
/*
|
||||
/*
|
||||
COMPILE : hbmk2 hbqtgen
|
||||
USAGE : hbqtgen -I<qthHeaderFilesPath> -O<cppSourceFilePath> <qthFile1.qth> <qthFile2.qth> <...>
|
||||
hbqtgen -help
|
||||
@@ -36,8 +54,8 @@
|
||||
|
||||
NEXT : hbqtgen @QtProjectFile.qtp
|
||||
|
||||
OVERVIEW : .qth
|
||||
|
||||
OVERVIEW : .qth
|
||||
|
||||
|
||||
enum Capitalization { MixedCase, AllUppercase, AllLowercase, SmallCaps, Capitalize }
|
||||
enum SpacingType { PercentageSpacing, AbsoluteSpacing }
|
||||
@@ -132,30 +150,30 @@
|
||||
qreal wordSpacing () const
|
||||
|
||||
|
||||
|
||||
Comments : # //
|
||||
|
||||
Enumerators: enum definitions must be included what exists in the
|
||||
help documenttaion. It has special significan while
|
||||
Comments : # //
|
||||
|
||||
Enumerators: enum definitions must be included what exists in the
|
||||
help documenttaion. It has special significan while
|
||||
parsing the prototypes.
|
||||
|
||||
UserCode : Anything contained in <CODE> </CODE> construct will be
|
||||
|
||||
UserCode : Anything contained in <CODE> </CODE> construct will be
|
||||
written directly in the .cpp as is. Developer is responsible
|
||||
to insert syntatically correct code. usually constructor
|
||||
function goes here. And may be complex functions be
|
||||
put under it. Also if some special #include command is needed.
|
||||
|
||||
Prototype : Not all prototypes are included in the source .cpp at the
|
||||
moment. I need more help on this front how we detect and
|
||||
Prototype : Not all prototypes are included in the source .cpp at the
|
||||
moment. I need more help on this front how we detect and
|
||||
format the parameters. I am struck specially at something
|
||||
like <const QFont & other> . Przemek?
|
||||
|
||||
Bottom line: Copy and Paste all prototypes from the docs,
|
||||
generate the .cpp, compile it, check which function raises
|
||||
error, comment it out in .qth with either "//" or "#",
|
||||
regenerate .cpp until all errors are covered, copy .cpp
|
||||
regenerate .cpp until all errors are covered, copy .cpp
|
||||
into production folder.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
2009-03-27 10:16 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
|
||||
@@ -217,7 +235,7 @@
|
||||
* contrib/hbole/tests/sample.odt
|
||||
+ Updated to latest hbole code.
|
||||
; TOFIX: hbole code doesn't compile with MSVC in default C++
|
||||
even if #define CINTERFACE 1 is enabled.
|
||||
even if #define CINTERFACE 1 is enabled. [DONE]
|
||||
; TOFIX: OpenOffice example fails at some point. It probably
|
||||
needs array support.
|
||||
|
||||
|
||||
@@ -202,46 +202,37 @@ METHOD FieldDec( nNum, lFormat ) CLASS TMySQLRow
|
||||
|
||||
METHOD FieldType( nNum ) CLASS TMySQLRow
|
||||
|
||||
LOCAL cType := "U"
|
||||
IF nNum >= 1 .AND. nNum <= Len( ::aFieldStruct )
|
||||
|
||||
IF nNum >=1 .AND. nNum <= Len( ::aFieldStruct )
|
||||
SWITCH ::aFieldStruct[nNum][MYSQL_FS_TYPE]
|
||||
CASE MYSQL_TINY_TYPE
|
||||
RETURN "L"
|
||||
|
||||
DO CASE
|
||||
CASE ::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_TINY_TYPE
|
||||
cType := "L"
|
||||
CASE MYSQL_SHORT_TYPE
|
||||
CASE MYSQL_LONG_TYPE
|
||||
CASE MYSQL_LONGLONG_TYPE
|
||||
CASE MYSQL_FLOAT_TYPE
|
||||
CASE MYSQL_DOUBLE_TYPE
|
||||
CASE MYSQL_DECIMAL_TYPE
|
||||
CASE MYSQL_INT24_TYPE
|
||||
RETURN "N"
|
||||
|
||||
CASE ::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_SHORT_TYPE .OR.;
|
||||
::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_LONG_TYPE .OR.;
|
||||
::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_LONGLONG_TYPE .OR.;
|
||||
::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_FLOAT_TYPE .OR.;
|
||||
::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_DOUBLE_TYPE .OR.;
|
||||
::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_DECIMAL_TYPE
|
||||
cType := "N"
|
||||
CASE MYSQL_VAR_STRING_TYPE
|
||||
CASE MYSQL_STRING_TYPE
|
||||
CASE MYSQL_DATETIME_TYPE
|
||||
RETURN "C"
|
||||
|
||||
CASE ::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_DATE_TYPE
|
||||
cType := "D"
|
||||
CASE MYSQL_DATE_TYPE
|
||||
RETURN "D"
|
||||
|
||||
CASE ::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_BLOB_TYPE
|
||||
cType := "M"
|
||||
CASE MYSQL_BLOB_TYPE
|
||||
CASE MYSQL_MEDIUM_BLOB_TYPE
|
||||
RETURN "M"
|
||||
|
||||
CASE ::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_VAR_STRING_TYPE .OR.;
|
||||
::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_STRING_TYPE .OR.;
|
||||
::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_DATETIME_TYPE
|
||||
cType := "C"
|
||||
|
||||
CASE ::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_INT24_TYPE
|
||||
cType := "N"
|
||||
|
||||
CASE ::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_MEDIUM_BLOB_TYPE
|
||||
cType := "M"
|
||||
|
||||
OTHERWISE
|
||||
cType := "U"
|
||||
|
||||
ENDCASE
|
||||
ENDSWITCH
|
||||
ENDIF
|
||||
|
||||
RETURN cType
|
||||
RETURN "U"
|
||||
|
||||
|
||||
// returns a WHERE x=y statement which uses primary key (if available)
|
||||
@@ -279,28 +270,28 @@ METHOD MakePrimaryKeyWhere() CLASS TMySQLRow
|
||||
// Every single query submitted to MySQL server
|
||||
CREATE CLASS TMySQLQuery
|
||||
|
||||
DATA nSocket // connection handle to MySQL server
|
||||
DATA nResultHandle // result handle received from MySQL
|
||||
VAR nSocket // connection handle to MySQL server
|
||||
VAR nResultHandle // result handle received from MySQL
|
||||
|
||||
DATA cQuery // copy of query that generated this object
|
||||
VAR cQuery // copy of query that generated this object
|
||||
|
||||
DATA nNumRows // number of rows available on answer NOTE MySQL is 0 based
|
||||
DATA nCurRow // I'm currently over row number
|
||||
VAR nNumRows // number of rows available on answer NOTE MySQL is 0 based
|
||||
VAR nCurRow // I'm currently over row number
|
||||
|
||||
//DAVID:
|
||||
DATA lBof
|
||||
DATA lEof
|
||||
VAR lBof
|
||||
VAR lEof
|
||||
|
||||
//DAVID:
|
||||
DATA lFieldAsData //Use fields as object DATA. For compatibility
|
||||
VAR lFieldAsData //Use fields as object DATA. For compatibility
|
||||
//Names of fields can match name of TMySQLQuery/Table DATAs,
|
||||
//and it is dangerous. ::lFieldAsData:=.F. can fix it
|
||||
DATA aRow //Values of fields of current row
|
||||
VAR aRow //Values of fields of current row
|
||||
|
||||
DATA nNumFields // how many fields per row
|
||||
DATA aFieldStruct // type of each field, a copy is here a copy inside each row
|
||||
VAR nNumFields // how many fields per row
|
||||
VAR aFieldStruct // type of each field, a copy is here a copy inside each row
|
||||
|
||||
DATA lError // .T. if last operation failed
|
||||
VAR lError // .T. if last operation failed
|
||||
|
||||
METHOD New( nSocket, cQuery ) // New query object
|
||||
METHOD Destroy()
|
||||
@@ -537,57 +528,65 @@ METHOD GetRow( nRow ) CLASS TMySQLQuery
|
||||
|
||||
// Convert answer from text field to correct clipper types
|
||||
FOR i := 1 TO ::nNumFields
|
||||
DO CASE
|
||||
CASE ::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_TINY_TYPE
|
||||
|
||||
SWITCH ::aFieldStruct[i][MYSQL_FS_TYPE]
|
||||
CASE MYSQL_TINY_TYPE
|
||||
//DAVID:
|
||||
IF ::aRow[i] == NIL
|
||||
::aRow[i] := "0"
|
||||
ENDIF
|
||||
::aRow[i] := Val( ::aRow[i] ) != 0
|
||||
EXIT
|
||||
|
||||
CASE ::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_SHORT_TYPE .OR.;
|
||||
::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_LONG_TYPE .OR.;
|
||||
::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_LONGLONG_TYPE .OR.;
|
||||
::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_INT24_TYPE .OR. ;
|
||||
::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_DECIMAL_TYPE
|
||||
CASE MYSQL_SHORT_TYPE
|
||||
CASE MYSQL_LONG_TYPE
|
||||
CASE MYSQL_LONGLONG_TYPE
|
||||
CASE MYSQL_INT24_TYPE
|
||||
CASE MYSQL_DECIMAL_TYPE
|
||||
//DAVID:
|
||||
IF ::aRow[i] == NIL
|
||||
::aRow[i] := "0"
|
||||
ENDIF
|
||||
::aRow[i] := Val( ::aRow[i] )
|
||||
EXIT
|
||||
|
||||
CASE ::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_DOUBLE_TYPE .OR.;
|
||||
::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_FLOAT_TYPE
|
||||
CASE MYSQL_DOUBLE_TYPE
|
||||
CASE MYSQL_FLOAT_TYPE
|
||||
//DAVID:
|
||||
IF ::aRow[i] == NIL
|
||||
::aRow[i] := "0"
|
||||
ENDIF
|
||||
::aRow[i] := Val( ::aRow[i] )
|
||||
EXIT
|
||||
|
||||
CASE ::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_DATE_TYPE
|
||||
CASE MYSQL_DATE_TYPE
|
||||
IF Empty( ::aRow[i] )
|
||||
::aRow[i] := hb_SToD( "" )
|
||||
ELSE
|
||||
// Date format YYYY-MM-DD
|
||||
::aRow[i] := hb_SToD( Left( ::aRow[i], 4 ) + SubStr( ::aRow[i], 6, 2 ) + Right( ::aRow[i], 2 ) )
|
||||
ENDIF
|
||||
EXIT
|
||||
|
||||
CASE ::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_BLOB_TYPE
|
||||
CASE MYSQL_BLOB_TYPE
|
||||
// Memo field
|
||||
EXIT
|
||||
|
||||
CASE ::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_STRING_TYPE .OR.;
|
||||
::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_VAR_STRING_TYPE
|
||||
CASE MYSQL_STRING_TYPE
|
||||
CASE MYSQL_VAR_STRING_TYPE
|
||||
// char field
|
||||
EXIT
|
||||
|
||||
CASE ::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_DATETIME_TYPE
|
||||
CASE MYSQL_DATETIME_TYPE
|
||||
// DateTime field
|
||||
EXIT
|
||||
|
||||
OTHERWISE
|
||||
|
||||
//DAVID: Alert( "Unknown type from SQL Server Field: " + hb_NToS( i ) + " is type " + hb_NToS( ::aFieldStruct[i][MYSQL_FS_TYPE] ) )
|
||||
// QOUT( "Unknown type from SQL Server Field: " + hb_NToS( i ) + " is type " + hb_NToS( ::aFieldStruct[i][MYSQL_FS_TYPE] ) )
|
||||
|
||||
ENDCASE
|
||||
ENDSWITCH
|
||||
|
||||
//DAVID:
|
||||
IF ::lFieldAsData
|
||||
@@ -717,45 +716,37 @@ METHOD FieldDec( nNum, lFormat ) CLASS TMySQLQuery
|
||||
|
||||
METHOD FieldType( nNum ) CLASS TMySQLQuery
|
||||
|
||||
LOCAL cType := "U"
|
||||
|
||||
IF nNum >= 1 .AND. nNum <= Len( ::aFieldStruct )
|
||||
DO CASE
|
||||
CASE ::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_TINY_TYPE
|
||||
cType := "L"
|
||||
|
||||
CASE ::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_SHORT_TYPE .OR.;
|
||||
::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_LONG_TYPE .OR.;
|
||||
::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_LONGLONG_TYPE .OR.;
|
||||
::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_FLOAT_TYPE .OR.;
|
||||
::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_DOUBLE_TYPE.OR.;
|
||||
::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_DECIMAL_TYPE
|
||||
cType := "N"
|
||||
SWITCH ::aFieldStruct[nNum][MYSQL_FS_TYPE]
|
||||
CASE MYSQL_TINY_TYPE
|
||||
RETURN "L"
|
||||
|
||||
CASE ::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_DATE_TYPE
|
||||
cType := "D"
|
||||
CASE MYSQL_SHORT_TYPE
|
||||
CASE MYSQL_LONG_TYPE
|
||||
CASE MYSQL_LONGLONG_TYPE
|
||||
CASE MYSQL_FLOAT_TYPE
|
||||
CASE MYSQL_DOUBLE_TYPE
|
||||
CASE MYSQL_DECIMAL_TYPE
|
||||
CASE MYSQL_INT24_TYPE
|
||||
RETURN "N"
|
||||
|
||||
CASE ::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_BLOB_TYPE
|
||||
cType := "M"
|
||||
CASE MYSQL_VAR_STRING_TYPE
|
||||
CASE MYSQL_STRING_TYPE
|
||||
CASE MYSQL_DATETIME_TYPE
|
||||
RETURN "C"
|
||||
|
||||
CASE ::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_VAR_STRING_TYPE .OR.;
|
||||
::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_STRING_TYPE .OR.;
|
||||
::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_DATETIME_TYPE
|
||||
cType := "C"
|
||||
CASE MYSQL_DATE_TYPE
|
||||
RETURN "D"
|
||||
|
||||
CASE ::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_INT24_TYPE
|
||||
cType := "N"
|
||||
CASE MYSQL_BLOB_TYPE
|
||||
CASE MYSQL_MEDIUM_BLOB_TYPE
|
||||
RETURN "M"
|
||||
|
||||
CASE ::aFieldStruct[nNum][MYSQL_FS_TYPE] == MYSQL_MEDIUM_BLOB_TYPE
|
||||
cType := "M"
|
||||
|
||||
OTHERWISE
|
||||
cType := "U"
|
||||
|
||||
ENDCASE
|
||||
ENDSWITCH
|
||||
ENDIF
|
||||
|
||||
RETURN cType
|
||||
RETURN "U"
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------------------------------*/
|
||||
@@ -765,8 +756,8 @@ METHOD FieldType( nNum ) CLASS TMySQLQuery
|
||||
// SELECT * FROM ... was issued
|
||||
CREATE CLASS TMySQLTable FROM TMySQLQuery
|
||||
|
||||
DATA cTable // name of table
|
||||
DATA aOldValue // keeps a copy of old value
|
||||
VAR cTable // name of table
|
||||
VAR aOldValue // keeps a copy of old value
|
||||
|
||||
METHOD New( nSocket, cQuery, cTableName )
|
||||
METHOD GetRow( nRow )
|
||||
@@ -857,8 +848,7 @@ METHOD Update( oRow, lOldRecord, lRefresh ) CLASS TMySQLTable
|
||||
|
||||
::lError := .F.
|
||||
|
||||
DO CASE
|
||||
CASE oRow == NIL // default Current row
|
||||
IF oRow == NIL // default Current row
|
||||
|
||||
FOR i := 1 TO ::nNumFields
|
||||
|
||||
@@ -912,7 +902,7 @@ METHOD Update( oRow, lOldRecord, lRefresh ) CLASS TMySQLTable
|
||||
::lError := .T.
|
||||
ENDIF
|
||||
|
||||
CASE oRow != NIL
|
||||
ELSE
|
||||
|
||||
IF oRow:cTable == ::cTable
|
||||
|
||||
@@ -965,7 +955,7 @@ METHOD Update( oRow, lOldRecord, lRefresh ) CLASS TMySQLTable
|
||||
::lError := .T.
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDCASE
|
||||
ENDIF
|
||||
|
||||
RETURN !::lError
|
||||
|
||||
@@ -982,8 +972,7 @@ METHOD Delete( oRow, lOldRecord, lRefresh ) CLASS TMySQLTable
|
||||
DEFAULT lRefresh TO .T.
|
||||
|
||||
// is this a row of this table ?
|
||||
DO CASE
|
||||
CASE orow == NIL
|
||||
IF oRow == NIL
|
||||
|
||||
//DAVID:
|
||||
IF lOldRecord
|
||||
@@ -1023,7 +1012,8 @@ METHOD Delete( oRow, lOldRecord, lRefresh ) CLASS TMySQLTable
|
||||
::lError := .T.
|
||||
ENDIF
|
||||
|
||||
CASE oRow != NIL
|
||||
ELSE
|
||||
|
||||
IF oRow:cTable == ::cTable
|
||||
|
||||
//DAVID:
|
||||
@@ -1058,7 +1048,7 @@ METHOD Delete( oRow, lOldRecord, lRefresh ) CLASS TMySQLTable
|
||||
::lError := .T.
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDCASE
|
||||
ENDIF
|
||||
|
||||
RETURN !::lError
|
||||
|
||||
@@ -1073,8 +1063,7 @@ METHOD Append( oRow, lRefresh ) CLASS TMySQLTable
|
||||
//DAVID: too many ::refresh() can slow some processes, so we can desactivate it by parameter
|
||||
DEFAULT lRefresh TO .T.
|
||||
|
||||
DO CASE
|
||||
CASE oRow == NIL // default Current row
|
||||
IF oRow == NIL // default Current row
|
||||
|
||||
// field names
|
||||
FOR i := 1 TO ::nNumFields
|
||||
@@ -1117,7 +1106,7 @@ METHOD Append( oRow, lRefresh ) CLASS TMySQLTable
|
||||
::lError := .T.
|
||||
ENDIF
|
||||
|
||||
CASE oRow != NIL
|
||||
ELSE
|
||||
|
||||
IF oRow:cTable == ::cTable
|
||||
|
||||
@@ -1166,7 +1155,7 @@ METHOD Append( oRow, lRefresh ) CLASS TMySQLTable
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
ENDCASE
|
||||
ENDIF
|
||||
|
||||
RETURN .F.
|
||||
|
||||
@@ -1183,34 +1172,39 @@ METHOD GetBlankRow( lSetValues ) CLASS TMySQLTable
|
||||
// crate an array of empty fields
|
||||
FOR i := 1 TO ::nNumFields
|
||||
|
||||
DO CASE
|
||||
CASE ::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_STRING_TYPE .OR. ;
|
||||
::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_VAR_STRING_TYPE .OR. ;
|
||||
::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_BLOB_TYPE .OR. ;
|
||||
::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_DATETIME_TYPE
|
||||
SWITCH ::aFieldStruct[i][MYSQL_FS_TYPE]
|
||||
CASE MYSQL_STRING_TYPE
|
||||
CASE MYSQL_VAR_STRING_TYPE
|
||||
CASE MYSQL_BLOB_TYPE
|
||||
CASE MYSQL_DATETIME_TYPE
|
||||
aRow[i] := ""
|
||||
EXIT
|
||||
|
||||
CASE ::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_SHORT_TYPE .OR. ;
|
||||
::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_LONG_TYPE .OR. ;
|
||||
::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_LONGLONG_TYPE .OR. ;
|
||||
::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_INT24_TYPE .OR. ;
|
||||
::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_DECIMAL_TYPE
|
||||
CASE MYSQL_SHORT_TYPE
|
||||
CASE MYSQL_LONG_TYPE
|
||||
CASE MYSQL_LONGLONG_TYPE
|
||||
CASE MYSQL_INT24_TYPE
|
||||
CASE MYSQL_DECIMAL_TYPE
|
||||
aRow[i] := 0
|
||||
EXIT
|
||||
|
||||
CASE ::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_TINY_TYPE
|
||||
CASE MYSQL_TINY_TYPE
|
||||
aRow[i] := .F.
|
||||
EXIT
|
||||
|
||||
CASE ::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_DOUBLE_TYPE .OR. ;
|
||||
::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_FLOAT_TYPE
|
||||
CASE MYSQL_DOUBLE_TYPE
|
||||
CASE MYSQL_FLOAT_TYPE
|
||||
aRow[i] := 0.0
|
||||
EXIT
|
||||
|
||||
CASE ::aFieldStruct[i][MYSQL_FS_TYPE] == MYSQL_DATE_TYPE
|
||||
CASE MYSQL_DATE_TYPE
|
||||
aRow[i] := hb_SToD( "" )
|
||||
EXIT
|
||||
|
||||
OTHERWISE
|
||||
aRow[i] := NIL
|
||||
|
||||
ENDCASE
|
||||
ENDSWITCH
|
||||
NEXT
|
||||
|
||||
//DAVID:
|
||||
@@ -1328,13 +1322,13 @@ METHOD MakePrimaryKeyWhere() CLASS TMySQLTable
|
||||
// Every available MySQL server
|
||||
CREATE CLASS TMySQLServer
|
||||
|
||||
DATA nSocket // connection handle to server (currently pointer to a MYSQL structure)
|
||||
DATA cServer // server name
|
||||
DATA cDBName // Selected DB
|
||||
DATA cUser // user accessing db
|
||||
DATA cPassword // his/her password
|
||||
DATA lError // .T. if occurred an error
|
||||
DATA cCreateQuery
|
||||
VAR nSocket // connection handle to server (currently pointer to a MYSQL structure)
|
||||
VAR cServer // server name
|
||||
VAR cDBName // Selected DB
|
||||
VAR cUser // user accessing db
|
||||
VAR cPassword // his/her password
|
||||
VAR lError // .T. if occurred an error
|
||||
VAR cCreateQuery
|
||||
|
||||
METHOD New( cServer, cUser, cPassword ) // Opens connection to a server, returns a server object
|
||||
METHOD Destroy() // Closes connection to server
|
||||
@@ -1445,14 +1439,17 @@ METHOD CreateTable( cTable, aStruct, cPrimaryKey, cUniqueKey, cAuto ) CLASS TMyS
|
||||
::cCreateQuery := "CREATE TABLE " + Lower( cTable ) + " ("
|
||||
|
||||
FOR i := 1 TO Len( aStruct )
|
||||
DO CASE
|
||||
CASE aStruct[i][DBS_TYPE] == "C"
|
||||
|
||||
SWITCH aStruct[i][DBS_TYPE]
|
||||
CASE "C"
|
||||
::cCreateQuery += aStruct[i][DBS_NAME] + " char(" + hb_NToS( aStruct[i][DBS_LEN]) + ")" + Eval( cNN, aStruct[i] ) + iif( aStruct[i][DBS_NAME] == cPrimaryKey, " NOT NULL ", "" ) + ","
|
||||
EXIT
|
||||
|
||||
CASE aStruct[i][DBS_TYPE] == "M"
|
||||
CASE "M"
|
||||
::cCreateQuery += aStruct[i][DBS_NAME] + " text" + Eval( cNN, aStruct[i] ) + ","
|
||||
EXIT
|
||||
|
||||
CASE aStruct[i][DBS_TYPE] == "N"
|
||||
CASE "N"
|
||||
/*
|
||||
IF aStruct[i][DBS_DEC] == 0
|
||||
::cCreateQuery += aStruct[i][DBS_NAME] + " int(" + hb_NToS( aStruct[i][DBS_LEN] ) + ")" + Eval( cNN, aStruct[i] ) + iif( aStruct[i][DBS_NAME] == cPrimaryKey, " NOT NULL ", "" ) + iif( aStruct[i][DBS_NAME] == cAuto, " auto_increment ", "" ) + ","
|
||||
@@ -1475,22 +1472,28 @@ METHOD CreateTable( cTable, aStruct, cPrimaryKey, cUniqueKey, cAuto ) CLASS TMyS
|
||||
ELSE
|
||||
::cCreateQuery += aStruct[i][DBS_NAME] + " real(" + hb_NToS( aStruct[i][DBS_LEN] ) + "," + hb_NToS( aStruct[i][DBS_DEC]) + ")" + Eval( cNN, aStruct[i] ) + ","
|
||||
ENDIF
|
||||
CASE aStruct[i][DBS_TYPE] == "D"
|
||||
EXIT
|
||||
|
||||
CASE "D"
|
||||
::cCreateQuery += aStruct[i][DBS_NAME] + " date " + Eval( cNN, aStruct[i] ) + ","
|
||||
EXIT
|
||||
|
||||
CASE aStruct[i][DBS_TYPE] == "L"
|
||||
CASE "L"
|
||||
::cCreateQuery += aStruct[i][DBS_NAME] + " tinyint " + Eval( cNN, aStruct[i] ) + ","
|
||||
EXIT
|
||||
|
||||
CASE aStruct[i][DBS_TYPE] == "B"
|
||||
CASE "B"
|
||||
::cCreateQuery += aStruct[i][DBS_NAME] + " mediumblob " + Eval( cNN, aStruct[i] ) + ","
|
||||
EXIT
|
||||
|
||||
CASE aStruct[i][DBS_TYPE] == "I"
|
||||
CASE "I"
|
||||
::cCreateQuery += aStruct[i][DBS_NAME] + " mediumint " + Eval( cNN, aStruct[i] ) + ","
|
||||
EXIT
|
||||
|
||||
OTHERWISE
|
||||
::cCreateQuery += aStruct[i][DBS_NAME] + " char(" + hb_NToS( aStruct[i][DBS_LEN] ) + ")" + Eval( cNN, aStruct[i] ) + ","
|
||||
|
||||
ENDCASE
|
||||
ENDSWITCH
|
||||
|
||||
NEXT
|
||||
IF cPrimarykey != NIL
|
||||
@@ -1642,38 +1645,45 @@ METHOD TableStruct( cTable ) CLASS TMySQLServer
|
||||
aSField[DBS_NAME] := Left( aField[MSQL_FS_NAME], 10 )
|
||||
aSField[DBS_DEC] := 0
|
||||
|
||||
DO CASE
|
||||
CASE aField[MSQL_FS_TYPE] == MSQL_INT_TYPE
|
||||
SWITCH aField[MSQL_FS_TYPE]
|
||||
CASE MSQL_INT_TYPE
|
||||
aSField[DBS_TYPE] := "N"
|
||||
aSField[DBS_LEN] := 11
|
||||
EXIT
|
||||
|
||||
CASE aField[MSQL_FS_TYPE] == MSQL_UINT_TYPE
|
||||
CASE MSQL_UINT_TYPE
|
||||
aSField[DBS_TYPE] := "L"
|
||||
aSField[DBS_LEN] := 1
|
||||
EXIT
|
||||
|
||||
CASE aField[MSQL_FS_TYPE] == MSQL_CHAR_TYPE
|
||||
CASE MSQL_CHAR_TYPE
|
||||
aSField[DBS_TYPE] := "C"
|
||||
aSField[DBS_LEN] := aField[MSQL_FS_LENGTH]
|
||||
EXIT
|
||||
|
||||
CASE aField[MSQL_FS_TYPE] == MSQL_DATE_TYPE
|
||||
CASE MSQL_DATE_TYPE
|
||||
aSField[DBS_TYPE] := "D"
|
||||
aSField[DBS_LEN] := aField[MSQL_FS_LENGTH]
|
||||
EXIT
|
||||
|
||||
CASE aField[MSQL_FS_TYPE] == MSQL_REAL_TYPE
|
||||
CASE MSQL_REAL_TYPE
|
||||
aSField[DBS_TYPE] := "N"
|
||||
aSField[DBS_LEN] := 12
|
||||
aSFIeld[DBS_DEC] := 8
|
||||
EXIT
|
||||
|
||||
CASE aField[MSQL_FS_TYPE] == MYSQL_MEDIUM_BLOB_TYPE
|
||||
CASE MYSQL_MEDIUM_BLOB_TYPE
|
||||
aSField[DBS_TYPE] := "B"
|
||||
aSField[DBS_LEN] := aField[MSQL_FS_LENGTH]
|
||||
EXIT
|
||||
|
||||
CASE aField[MSQL_FS_TYPE] == FIELD_TYPE_INT24
|
||||
CASE FIELD_TYPE_INT24
|
||||
aSField[DBS_TYPE] := "I"
|
||||
aSField[DBS_LEN] := aField[MSQL_FS_LENGTH]
|
||||
aSFIeld[DBS_DEC] := aField[MYSQL_FS_DECIMALS]
|
||||
EXIT
|
||||
|
||||
ENDCASE
|
||||
ENDSWITCH
|
||||
|
||||
AAdd( aStruct, aSField )
|
||||
ENDIF
|
||||
@@ -1691,19 +1701,22 @@ STATIC FUNCTION ClipValue2SQL( Value )
|
||||
|
||||
LOCAL cValue
|
||||
|
||||
DO CASE
|
||||
CASE ISNUMBER( Value )
|
||||
SWITCH ValType( Value )
|
||||
CASE "N"
|
||||
cValue := hb_NToS( Value )
|
||||
EXIT
|
||||
|
||||
CASE ISDATE( Value )
|
||||
CASE "D"
|
||||
IF ! Empty( Value )
|
||||
/* MySQL dates are like YYYY-MM-DD */
|
||||
cValue := "'" + StrZero( Year( Value ), 4 ) + "-" + StrZero( Month( Value ), 2 ) + "-" + StrZero( Day( Value ), 2 ) + "'"
|
||||
ELSE
|
||||
cValue := "''"
|
||||
ENDIF
|
||||
EXIT
|
||||
|
||||
CASE Valtype( Value ) $ "CM"
|
||||
CASE "C"
|
||||
CASE "M"
|
||||
IF Empty( Value )
|
||||
cValue := "''"
|
||||
ELSE
|
||||
@@ -1711,13 +1724,15 @@ STATIC FUNCTION ClipValue2SQL( Value )
|
||||
Value := mysql_escape_string( value )
|
||||
cValue += value + "'"
|
||||
ENDIF
|
||||
EXIT
|
||||
|
||||
CASE ISLOGICAL( Value )
|
||||
CASE "L"
|
||||
cValue := iif( Value, "1", "0" )
|
||||
EXIT
|
||||
|
||||
OTHERWISE
|
||||
cValue := "''" // NOTE: Here we lose values we cannot convert
|
||||
|
||||
ENDCASE
|
||||
ENDSWITCH
|
||||
|
||||
RETURN cValue
|
||||
|
||||
@@ -92,7 +92,7 @@ bool bold () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_BOLD )
|
||||
{
|
||||
hb_retl( hbqt_par_QFont( 1 )->bold( ) );
|
||||
hb_retl( hbqt_par_QFont( 1 )->bold() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -100,7 +100,7 @@ Capitalization capitalization () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_CAPITALIZATION )
|
||||
{
|
||||
hb_retni( hbqt_par_QFont( 1 )->capitalization( ) );
|
||||
hb_retni( hbqt_par_QFont( 1 )->capitalization() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -116,7 +116,7 @@ bool exactMatch () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_EXACTMATCH )
|
||||
{
|
||||
hb_retl( hbqt_par_QFont( 1 )->exactMatch( ) );
|
||||
hb_retl( hbqt_par_QFont( 1 )->exactMatch() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -132,7 +132,7 @@ bool fixedPitch () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_FIXEDPITCH )
|
||||
{
|
||||
hb_retl( hbqt_par_QFont( 1 )->fixedPitch( ) );
|
||||
hb_retl( hbqt_par_QFont( 1 )->fixedPitch() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -162,7 +162,7 @@ bool italic () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_ITALIC )
|
||||
{
|
||||
hb_retl( hbqt_par_QFont( 1 )->italic( ) );
|
||||
hb_retl( hbqt_par_QFont( 1 )->italic() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -170,7 +170,7 @@ bool kerning () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_KERNING )
|
||||
{
|
||||
hb_retl( hbqt_par_QFont( 1 )->kerning( ) );
|
||||
hb_retl( hbqt_par_QFont( 1 )->kerning() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -202,7 +202,7 @@ qreal letterSpacing () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_LETTERSPACING )
|
||||
{
|
||||
hb_retnd( hbqt_par_QFont( 1 )->letterSpacing( ) );
|
||||
hb_retnd( hbqt_par_QFont( 1 )->letterSpacing() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -210,7 +210,7 @@ SpacingType letterSpacingType () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_LETTERSPACINGTYPE )
|
||||
{
|
||||
hb_retni( hbqt_par_QFont( 1 )->letterSpacingType( ) );
|
||||
hb_retni( hbqt_par_QFont( 1 )->letterSpacingType() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -218,7 +218,7 @@ bool overline () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_OVERLINE )
|
||||
{
|
||||
hb_retl( hbqt_par_QFont( 1 )->overline( ) );
|
||||
hb_retl( hbqt_par_QFont( 1 )->overline() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -226,7 +226,7 @@ int pixelSize () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_PIXELSIZE )
|
||||
{
|
||||
hb_retni( hbqt_par_QFont( 1 )->pixelSize( ) );
|
||||
hb_retni( hbqt_par_QFont( 1 )->pixelSize() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -234,7 +234,7 @@ int pointSize () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_POINTSIZE )
|
||||
{
|
||||
hb_retni( hbqt_par_QFont( 1 )->pointSize( ) );
|
||||
hb_retni( hbqt_par_QFont( 1 )->pointSize() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -242,7 +242,7 @@ qreal pointSizeF () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_POINTSIZEF )
|
||||
{
|
||||
hb_retnd( hbqt_par_QFont( 1 )->pointSizeF( ) );
|
||||
hb_retnd( hbqt_par_QFont( 1 )->pointSizeF() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -250,7 +250,7 @@ bool rawMode () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_RAWMODE )
|
||||
{
|
||||
hb_retl( hbqt_par_QFont( 1 )->rawMode( ) );
|
||||
hb_retl( hbqt_par_QFont( 1 )->rawMode() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -441,7 +441,7 @@ int stretch () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_STRETCH )
|
||||
{
|
||||
hb_retni( hbqt_par_QFont( 1 )->stretch( ) );
|
||||
hb_retni( hbqt_par_QFont( 1 )->stretch() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -449,7 +449,7 @@ bool strikeOut () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_STRIKEOUT )
|
||||
{
|
||||
hb_retl( hbqt_par_QFont( 1 )->strikeOut( ) );
|
||||
hb_retl( hbqt_par_QFont( 1 )->strikeOut() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -457,7 +457,7 @@ Style style () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_STYLE )
|
||||
{
|
||||
hb_retni( hbqt_par_QFont( 1 )->style( ) );
|
||||
hb_retni( hbqt_par_QFont( 1 )->style() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -465,7 +465,7 @@ StyleHint styleHint () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_STYLEHINT )
|
||||
{
|
||||
hb_retni( hbqt_par_QFont( 1 )->styleHint( ) );
|
||||
hb_retni( hbqt_par_QFont( 1 )->styleHint() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -473,7 +473,7 @@ StyleStrategy styleStrategy () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_STYLESTRATEGY )
|
||||
{
|
||||
hb_retni( hbqt_par_QFont( 1 )->styleStrategy( ) );
|
||||
hb_retni( hbqt_par_QFont( 1 )->styleStrategy() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -489,7 +489,7 @@ bool underline () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_UNDERLINE )
|
||||
{
|
||||
hb_retl( hbqt_par_QFont( 1 )->underline( ) );
|
||||
hb_retl( hbqt_par_QFont( 1 )->underline() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -497,7 +497,7 @@ int weight () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_WEIGHT )
|
||||
{
|
||||
hb_retni( hbqt_par_QFont( 1 )->weight( ) );
|
||||
hb_retni( hbqt_par_QFont( 1 )->weight() );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -505,11 +505,8 @@ qreal wordSpacing () const
|
||||
*/
|
||||
HB_FUNC( QT_QFONT_WORDSPACING )
|
||||
{
|
||||
hb_retnd( hbqt_par_QFont( 1 )->wordSpacing( ) );
|
||||
hb_retnd( hbqt_par_QFont( 1 )->wordSpacing() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#
|
||||
#
|
||||
|
||||
enum Capitalization { MixedCase, AllUppercase, AllLowercase, SmallCaps, Capitalize }
|
||||
enum SpacingType { PercentageSpacing, AbsoluteSpacing }
|
||||
@@ -26,9 +26,9 @@ HB_FUNC( QT_QFONT )
|
||||
}
|
||||
else
|
||||
{
|
||||
hb_retptr( ( QFont* ) new QFont( hbqt_par_QString( 1 ),
|
||||
HB_IS_NUMERIC( 2 ) ? hb_parni( 2 ) : -1,
|
||||
HB_IS_NUMERIC( 3 ) ? hb_parni( 3 ) : -1,
|
||||
hb_retptr( ( QFont* ) new QFont( hbqt_par_QString( 1 ),
|
||||
HB_ISNUM( 2 ) ? hb_parni( 2 ) : -1,
|
||||
HB_ISNUM( 3 ) ? hb_parni( 3 ) : -1,
|
||||
hb_parl( 4 ) ) );
|
||||
}
|
||||
}
|
||||
@@ -92,4 +92,3 @@ QString toString () const
|
||||
bool underline () const
|
||||
int weight () const
|
||||
qreal wordSpacing () const
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ QPen ( const QPen & pen )
|
||||
*/
|
||||
HB_FUNC( QT_QPEN )
|
||||
{
|
||||
if( hb_pcount() == 1 && HB_IS_NUMERIC( 1 ) )
|
||||
if( hb_pcount() == 1 && HB_ISNUM( 1 ) )
|
||||
{
|
||||
hb_retptr( ( QPen* ) new QPen() );
|
||||
}
|
||||
|
||||
@@ -2,5 +2,7 @@
|
||||
# $Id$
|
||||
#
|
||||
|
||||
{mingw}libs=supc++ mingw32
|
||||
libs=hbqt
|
||||
libs=QtCore4 QtGui4 QtNetwork4 QtWebKit4
|
||||
gui=yes
|
||||
|
||||
Reference in New Issue
Block a user