diff --git a/harbour/ChangeLog b/harbour/ChangeLog
index 20653b2e2d..18c182788b 100644
--- a/harbour/ChangeLog
+++ b/harbour/ChangeLog
@@ -16,6 +16,16 @@
The license applies to all entries newer than 2009-04-28.
*/
+2012-07-18 16:14 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
+ * contrib/hbide/ideuisrcmanager.prg
+ ! Fixed: a regression caused by changes in .ui manipulation;
+ accessing objects from a hash to genuine class variable.
+
+ ; INCOMPATIBLE: any class created through IdeUISourceManager
+ should begin with "uie_" instead of "ui_" ( the namespace
+ in use in new .ui manipulation ). So please change this
+ in "cls_"uiFileName.prg manually.
+
2012-07-18 18:15 UTC+0200 Viktor Szakats (harbour syenar.net)
* contrib/hbgt/tests/test.prg
* formatting (manual)
diff --git a/harbour/contrib/hbide/ideuisrcmanager.prg b/harbour/contrib/hbide/ideuisrcmanager.prg
index 2acb937453..1c3bfdb3db 100644
--- a/harbour/contrib/hbide/ideuisrcmanager.prg
+++ b/harbour/contrib/hbide/ideuisrcmanager.prg
@@ -145,7 +145,7 @@ CLASS IdeUISrcManager INHERIT IdeObject
DATA aSource INIT {}
DATA oProcess
DATA cCurAction INIT ""
- DATA cClsPrefix INIT "ui_"
+ DATA cClsPrefix INIT "uie_"
METHOD new( oIde )
METHOD create( oIde )
@@ -429,7 +429,7 @@ METHOD IdeUISrcManager:saveMethod()
// Connections
n0 := ascan( ::aSource, {|e| "" $ e } )
n1 := ascan( ::aSource, {|e| "" $ e }, n0 )
- cSearch := '::oUI:qObj[ "' + cObjName + '" ]'
+ cSearch := '::oUI:' + cObjName
n2 := ascan( ::aSource, {|e| cSearch $ e }, n0+1, n1-n0-1 )
IF empty( cSrc )
IF n2 > 0
@@ -437,13 +437,13 @@ METHOD IdeUISrcManager:saveMethod()
ENDIF
ELSE
IF n2 == 0
- hb_ains( ::aSource, n0+1, ' ::oUI:qObj[ "' + cObjName + '" ]:connect( "' + cSlot + '", {|...| ::' + cMethod + '( ... ) } )' )
+ hb_ains( ::aSource, n0+1, ' ::oUI:' + cObjName + ':connect( "' + cSlot + '", {|...| ::' + cMethod + '( ... ) } )' )
ENDIF
ENDIF
// Disconnections
n0 := ascan( ::aSource, {|e| "" $ e } )
n1 := ascan( ::aSource, {|e| "" $ e }, n0 )
- cSearch := '::oUI:qObj[ "' + cObjName + '" ]'
+ cSearch := '::oUI:' + cObjName
n2 := ascan( ::aSource, {|e| cSearch $ e }, n0+1, n1-n0-1 )
IF empty( cSrc )
IF n2 > 0
@@ -451,7 +451,7 @@ METHOD IdeUISrcManager:saveMethod()
ENDIF
ELSE
IF n2 == 0
- hb_ains( ::aSource, n0+1, ' ::oUI:qObj[ "' + cObjName + '" ]:disconnect( "' + cSlot + '" )' )
+ hb_ains( ::aSource, n0+1, ' ::oUI:' + cObjName + ':disconnect( "' + cSlot + '" )' )
ENDIF
ENDIF
@@ -614,8 +614,8 @@ METHOD IdeUISrcManager:reloadIfOpen( cUI )
::openUi( cUI )
IF ! empty( cObjName )
- IF hb_hHasKey( ::qU:qObj, cObjName )
- ::execEvent( "child_object", ::qU:qObj[ cObjName ], cObjName )
+ IF __objHasMsg( ::qU, cObjName )
+ ::execEvent( "child_object", ::qU:&cObjName., cObjName )
ENDIF
IF ! empty( cAction )
qList := ::qTree:findItems( cAction, Qt_MatchExactly, 0 )
@@ -670,7 +670,10 @@ METHOD IdeUISrcManager:buildUiWidget( cUI )
/*----------------------------------------------------------------------*/
METHOD IdeUISrcManager:buildWidget( cBuffer, cPath, cName, cExt, aPrg )
- LOCAL cCode, s, n, cObj, cCls, i, pHrb, oObj
+ LOCAL cCode, s, n, oObj, cCls, i, pHrb, cObj
+
+// MEMVAR cObj
+// PRIVATE cObj
cBuffer := hb_compileFromBuf( cBuffer, "-n2", "-w3", "-es2", "-q0", "-i" + ::oINI:getHarbourPath() + "include" )
IF ! empty( cBuffer )
@@ -700,14 +703,12 @@ METHOD IdeUISrcManager:buildWidget( cBuffer, cPath, cName, cExt, aPrg )
FOR i := 1 to Len( aPrg )
cCode := aPrg[ i ]
- IF " := " $ cCode
- IF ! ( "oRootWidget" $ cCode ) .AND. ! ( "LOCAL" $ cCode )
- s := substr( cCode, 1, at( " := ", cCode ) )
- n := at( '"', s )
- s := substr( s, n+1 )
- n := at( '"', s )
- cObj := substr( s, 1, n-1 )
- oObj := ::qU:qObj[ cObj ]
+ IF ! ( "oRootWidget" $ cCode ) .AND. ! ( "LOCAL" $ cCode ) .AND. ! ( "oParent" $ cCode )
+ IF " := " $ cCode
+ s := alltrim( substr( cCode, 1, at( " := ", cCode ) ) )
+ n := at( '::', s )
+ cObj := substr( s, n+2 )
+ oObj := ::qU:&cObj
cCls := __objGetClsName( oObj )
IF ! ( cCls $ "QSIZEPOLICY,QFONT,QGRIDLAYOUT,QHBOXLAYOUT,QVBOXLAYOUT,QSPACERITEM,QLAYOUT,QSPLITTER,QSCROLLAREA,QTREEWIDGETITEM,QLISTWIDGETITEM" )
aadd( ::aObjByName, cObj )
@@ -726,9 +727,9 @@ METHOD IdeUISrcManager:buildWidget( cBuffer, cPath, cName, cExt, aPrg )
OTHERWISE
oObj:connect( QEvent_MouseButtonRelease, getObject( Self, ::qU, cObj ) )
ENDSWITCH
-
- ::hObjects[ cObj ] := UISrcData():new( oObj, cObj )
ENDIF
+ ELSEIF "RETURN " $ cCode
+ EXIT
ENDIF
ENDIF
NEXT
@@ -899,7 +900,7 @@ METHOD IdeUISrcManager:buildStatusPanels()
/*------------------------------------------------------------------------*/
STATIC FUNCTION getObject( oSelf, oHbQtUi, cObj )
- RETURN {|...| oSelf:execEvent( "child_object", oHbQtUi:qObj[ cObj ], cObj, ... ) }
+ RETURN {|...| oSelf:execEvent( "child_object", oHbQtUi:&cObj., cObj, ... ) }
/*----------------------------------------------------------------------*/
@@ -918,7 +919,7 @@ METHOD IdeUISrcManager:buildSource()
LOCAL qHScr, qVScr, qCursor, qCurPos, qHVal, qVVal, qEdit
IF empty( ::aSource )
- ::aSource := ::buildClassSkeleton( 'ui_' + ::cName, ::cName )
+ ::aSource := ::buildClassSkeleton( 'uie_' + ::cName, ::cName )
ENDIF
::cSource := ""
@@ -1030,15 +1031,16 @@ METHOD IdeUISrcManager:buildClassSkeleton( cCls, cUiName )
aadd( aSrc, '' )
aadd( aSrc, 'METHOD ' + cClsC + '__OnError( ... )' )
aadd( aSrc, ' LOCAL cMsg := __GetMessage()' )
- aadd( aSrc, ' LOCAL oError' )
+ aadd( aSrc, ' LOCAL oError, cMtd' )
aadd( aSrc, '' )
aadd( aSrc, ' IF SubStr( cMsg, 1, 1 ) == "_"' )
aadd( aSrc, ' cMsg := SubStr( cMsg, 2 )' )
aadd( aSrc, ' ENDIF' )
aadd( aSrc, '' )
aadd( aSrc, ' IF Left( cMsg, 2 ) == "Q_"' )
- aadd( aSrc, ' IF SubStr( cMsg, 3 ) $ ::oUI:qObj' )
- aadd( aSrc, ' RETURN ::oUI:qObj[ SubStr( cMsg, 3 ) ]' )
+ aadd( aSrc, ' cMtd := SubStr( cMsg, 3 )' )
+ aadd( aSrc, ' IF __objHasMsg( ::oUI, cMtd' )
+ aadd( aSrc, ' RETURN ::oUI:&cMtd' )
aadd( aSrc, ' ELSE' )
aadd( aSrc, ' oError := ErrorNew()' )
aadd( aSrc, '' )