User:Eric Bachard

Français

Organisation IC5

Idées

Test

En cours ...

Communique OOo4Kids 1.2

Notice sur OOo4Kids

FAQ/fr OOo4Kids

Port sur nouvelle architecture Linux

ARM Optimization

Le Coin Handball

Utilisation de screen
=> à placer dans .screenrc
 * 1) startup_message off    # set if you want to see copyright notice at startup (default on)
 * 2) vbellwait 0.1          # delay in seconds after each display of bell message (default 1s)
 * 3) vbell_msg "*ding*"     # Sets the visual bell message. (default "Wuff, Wuff!!")
 * 4) shell "bash"		# use bash shell

verbose on multiuser on bell "Bell in window %^G" vbell on startup_message off defscrollback 10000
 * 1) j'aime quand ca parle
 * 1) pour activer tout le temps le multiuser
 * 1) avec la sonnerie audible meme depuis les autres fenetres
 * 1) sonnerie visuelle on
 * 1) on enleve le copyright au lancement, ca saoule a force quand meme
 * 1) je veux un scrollback consequent (de 10 000 lignes)

caption always "%{wk}%h %=%c" hardstatus alwayslastline "%{=b}%{G}Screen(s): %{w}%-Lw%n%f* %t%{-}%{w}%+Lw %=%{G}Connected to %H" activity "Activity in %t(%n)"
 * 1) Maintenant on va "decorer" screen et le rendre un peu plus utilisable ;)

Origine, distribution et buts

 * qu'est ce qu'OOo4Kids ?

FAQ : OOo4Kids utilise le même code source qu'OpenOffice.org, mais le modifie, en respectant la licence associée à OpenOffice.org. C'est donc un logiciel dérivé, appelé aussi fork du logiciel OpenOffice.org. Ce fork est aussi dit "amical" car la compatibilité entre licences est garantie (tous deux utilisent la licence LGPL v3).


 * OOo4Kids est une marque déposée par EducOOo (Association loi 1901) alors qu'OpenOffice.org est une marque déposée par Sun MicroSystems.
 * OOo4Kids est dédié aux machines légères, peu puissantes, et souvent anciennes
 * OOo4Kids est dédié aux 7-12 ans, en situation d'utilisation en mileu scolaire, alors qu'OpenOffice.org couvre tous les domaines possibles d'utilisation d'une suite bureautique.
 * OOo4Kids n'est pour l'instant pas financé. OpenOffice.org est financé de façon importante par Sun Microsystems, IBM, Novell, Red Had, RedFlag2000 ..

Cahier des charges d'OOo4Kids

 * Contrat social

OOo4Kids est détenu par une association de type loi 1901, sans but lucratif, mais ayant un contrat social.

OOo4Kids a donc les objectifs suivants :


 * Mettre à disposition une suite bureautique pour les 7-12ans, libre et distribuée gratuitement
 * Créer, en collaboration avec les enseignants, une suite bureautique adaptée au besoins des cycles 2 et 3 (école primaire) et secondaire (collège)
 * Présenter et expliquer le code source associé aux modifications apportées, dans le but d'initier les futurs développeurs potentiels à s'approprier le code source d'OpenOffice.org

Développement

 * Code source de base : OOO320_m11 pour la version 1.x, et DEV300_mxxx pour les version 2.x ou supérieures

FAQ : quel est le code de base utilisé par OOo4Kids ?


 * Outils utiliéss par OpenOffice.org : subversion (branche 3.2.0) et mercurial ( branche DEV300 )
 * Outils utilisés par OOo4Kids : subversion (version 1.x ), puis git (pour la version 2.x et supérieures)

FAQ : quels outils sont utilisés pour gérer les sources d'OOo4Kids ? FAQ : quels outils sont utilisés pour gérer les sources d'OpenOffice.org ?


 * Compilable sur : Windows XP (mini), Mac OS X (10.4 mini) Intel et PowerPC, Linux : toutes architctures ( .deb, .rpm, .pet, .tar.gz ) + outils de développement associés

FAQ : sur quels OS fonctionne OOo4Kids ? OOo4Kids fonctionne-t-il sur Mac Intel ? sur Mac PowerPC ? Sous Linux ?

FAQ : peut-on consulter les sources d'OOo4Kids en ligne ?


 * Sites
 * Forge: Adullact
 * Suivi du projet : Oloh )
 * Pas d'assurance qualité pour OOo4Kids, déveoppement continu, et rythmé par des milestones.

FAQ : OOo4Kids sui-t-il un process d'Assurance Qualité ?

Archives et fonctionnalités

 * OOo4Kids n'utilise pas Java (ni à l'exécution, ni à la compilation)
 * OOo4Kids n'utilise pas Base
 * Basic et les macros ne sont (pour l'instant) pas pris en charge par OOo4Kids
 * Archives : téléchargeables sur http://download.ooo4kids.org
 * Taille des archives : les archives d'OOo4Kids sont général entre 35% et 40% moins grosses que celles d'openOffice.org
 * Pas d'enregistrement avec OOo4Kids

FAQ : Dois-je installer Java pour faire fonctionner OOo4Kids ?

Non, OOo4Kids n'utilise pas Java

FAQ : que dois je utiliser pour utiliser OOo4Kids ?

Sous Windows XP (mini) : rien, l'installeur est inclus dans l'archive téléchargée.

Sous Mac OS X 10.4 : l'archive téléchargée sur http://wiki.ooo4Kids.org contient tout et suffit.

Quelle archive télécharger sur Mac OS X ?

Il existe deux types de processeurs : PowerPC et Intel. Le nom du processeur utilisé est précisé dans le nom de l'archive, et on doit télécharger l'archive qui correspond à l'architcture utilisée ( Intel pour processeurs Intel, PowerPC pour PPC).

Apparence

 * Palettes de couleurs
 * Start Center simplifié : nouvelles icones, forme des boutons non apparente par défaut.

FIXME : copies d'écran


 * Start Center: dans OOo4Kids, lorsque le curseur de la souris survole une des applications, un ballon d'aide (qui peut être désactivé dans les préférences) apparaît.

FIXME

Template:LINKS/fr

Template:LINKS FR

FIXME CLEANLY : general I/O error

General I/O error

Current patch : identify the exact error, and reset the errcode (all places) to nError = SVSTREAM_OK (== 0 ) +#ifdef OOo4Kids +      // FIXME +      // I don't have figured out yet why SfxObjectShell::ResetError, +      // itself calling SvStream::ResetError, means nError should become SVStreamOK == 0, +      // does not really reset nError. +      // Instead, nError == 2147942472 value (equals 0x80070048 in hexa) is returned, what +      // causes a "General Error" without a real error (loading and saving the doc) +      // to avoid hidding other error values, we only protected the well known one +      if (nError == 0x80070048 ) // see tools/inc/tools/errcode.hxx for the value computation +          nError = SVSTREAM_OK; +#endif Due to something around ERRCTX_SFX_SAVEASDOC 2813                                           SfxErrorContext aEc( ERRCTX_SFX_SAVEASDOC, m_pData->m_pObjectShell->GetTitle ); Symbols in vcl/sfx2/sw/xmloff

Breakpoint :

(gdb) info b Num Type Disp Enb Address What 5 breakpoint keep y 0x011273e8 in SfxBaseModel::impl_store(rtl::OUString const&, com::sun::star::uno::Sequence&lt;com::sun::star::beans::PropertyValue&gt; const&, unsigned char) at /Users/ericb/Desktop/DEV300_m56/sfx2/source/doc/sfxbasemodel.cxx:2649

breakpoint already hit 2 times

Trace : (gdb) b 'SfxBaseModel::storeAsURL' Breakpoint 4 at 0x1129101: file /Users/ericb/Desktop/DEV300_m56/sfx2/source/doc/sfxbasemodel.cxx, line 1640. (gdb) c Continuing. 2009-08-27 08:51:50.344 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a 15SwXTextDocument

Breakpoint 4, SfxBaseModel::storeAsURL (this=0x27de0cd0, rURL=@0xbfffe498, rArgs=@0xbfffe74c) at /Users/ericb/Desktop/DEV300_m56/sfx2/source/doc/sfxbasemodel.cxx:1640 1640           RTL_LOGFILE_PRODUCT_CONTEXT( aPerfLog, "PERFORMANCE - SfxBaseModel::storeAsURL" ); (gdb) p *this $1 = {  = { m_aMutex = { mutex = 0x69dd9780 } },   <WeakImplHelper29<com::sun::star::container::XChild,com::sun::star::document::XDocumentInfoSupplier,com::sun::star::document::XDocumentPropertiesSupplier,com::sun::star::rdf::XDocumentMetadataAccess,com::sun::star::document::XEventBroadcaster,com::sun::star::lang::XEventListener,com::sun::star::document::XEventsSupplier,com::sun::star::document::XEmbeddedScripts,com::sun::star::document::XScriptInvocationContext,com::sun::star::frame::XModel2,com::sun::star::util::XModifiable2,com::sun::star::view::XPrintable,com::sun::star::view::XPrintJobBroadcaster,com::sun::star::frame::XStorable2,com::sun::star::frame::XLoadable,com::sun::star::script::XStarBasicAccess,com::sun::star::document::XViewDataSupplier,com::sun::star::util::XCloseable,com::sun::star::datatransfer::XTransferable,com::sun::star::document::XDocumentSubStorageSupplier,com::sun::star::document::XStorageBasedDocument,com::sun::star::script::provider::XScriptProviderSupplier,com::sun::star::ui::XUIConfigurationManagerSupplier,com::sun::star::embed::XVisualObject,com::sun::star::lang::XUnoTunnel,com::sun::star::frame::XModule,com::sun::star::frame::XTitle,com::sun::star::frame::XTitleChangeBroadcaster,com::sun::star::frame::XUntitledNumbers>> = {  = {  = {  = { _vptr$XInterface = 0x307b0ce0 }, }, members of OWeakObject: m_refCount = 11, m_pWeakConnectionPoint = 0x292f5cc0, m_pReserved = 0x2e2e2e },     = {  = { _vptr$XInterface = 0x307b0eac }, },  = {  = { _vptr$XInterface = 0x307b0ec8 }, },  = {  = { _vptr$XInterface = 0x307b0ee4 }, },  = {  = { _vptr$XInterface = 0x307b0efc }, <No data fields>}, <XDocumentMetadataAccess> = { <XURI> = { <XResource> = { <XNode> = { <XInterface> = { _vptr$XInterface = 0x307b0f14 }, <No data fields>}, <No data fields>}, <No data fields>}, <XRepositorySupplier> = { <XInterface> = { _vptr$XInterface = 0x307b0f64 }, <No data fields>}, <No data fields>}, <XEventBroadcaster> = { <XInterface> = { _vptr$XInterface = 0x307b0f7c }, <No data fields>}, <XEventListener> = { <XInterface> = { _vptr$XInterface = 0x307b0f98 }, <No data fields>}, <XEventsSupplier> = { <XInterface> = { _vptr$XInterface = 0x307b0fb0 }, <No data fields>}, <XEmbeddedScripts> = { <XInterface> = { _vptr$XInterface = 0x307b0fc8 }, <No data fields>}, <XScriptInvocationContext> = { <XInterface> = { _vptr$XInterface = 0x307b0fe8 }, <No data fields>}, <XModel2> = { <XModel> = { <XComponent> = { <XInterface> = { _vptr$XInterface = 0x307b1000 }, <No data fields>}, <No data fields>}, <No data fields>}, <XModifiable2> = { <XModifiable> = { <XModifyBroadcaster> = { <XInterface> = { _vptr$XInterface = 0x307b105c }, <No data fields>}, <No data fields>}, <No data fields>}, <XPrintable> = { <XInterface> = { _vptr$XInterface = 0x307b108c }, <No data fields>}, <XPrintJobBroadcaster> = { <XInterface> = { _vptr$XInterface = 0x307b10ac }, <No data fields>}, <XStorable2> = { <XStorable> = { <XInterface> = { _vptr$XInterface = 0x307b10c8 }, <No data fields>}, <No data fields>}, <XLoadable> = { <XInterface> = { _vptr$XInterface = 0x307b10f8 }, <No data fields>}, <XStarBasicAccess> = { <XInterface> = { _vptr$XInterface = 0x307b1114 }, <No data fields>}, <XViewDataSupplier> = { <XInterface> = { _vptr$XInterface = 0x307b1138 }, <No data fields>}, <XCloseable> = { <XCloseBroadcaster> = { <XInterface> = { _vptr$XInterface = 0x307b1154 }, <No data fields>}, <No data fields>}, <XTransferable> = { <XInterface> = { _vptr$XInterface = 0x307b1174 }, <No data fields>}, <XDocumentSubStorageSupplier> = { <XInterface> = { _vptr$XInterface = 0x307b1194 }, <No data fields>}, <XStorageBasedDocument> = { <XInterface> = { _vptr$XInterface = 0x307b11b0 }, <No data fields>}, <XScriptProviderSupplier> = { <XInterface> = { _vptr$XInterface = 0x307b11dc }, <No data fields>}, <XUIConfigurationManagerSupplier> = { <XInterface> = { _vptr$XInterface = 0x307b11f4 }, <No data fields>}, <XVisualObject> = { <XInterface> = { _vptr$XInterface = 0x307b120c }, <No data fields>}, <XUnoTunnel> = { <XInterface> = { _vptr$XInterface = 0x307b1230 }, <No data fields>}, <XModule> = { <XInterface> = { _vptr$XInterface = 0x307b1248 }, <No data fields>}, <XTitle> = { <XInterface> = { _vptr$XInterface = 0x307b1264 }, <No data fields>}, <XTitleChangeBroadcaster> = { <XInterface> = { _vptr$XInterface = 0x307b1280 }, <No data fields>}, <XUntitledNumbers> = { <XInterface> = { _vptr$XInterface = 0x307b129c }, <No data fields>}, <No data fields>}, <SfxListener> = { _vptr$SfxListener = 0x307b12c0, aBCs = { pData = 0x6909d038, nFree = 0, nA = 1 } },   members of SfxBaseModel: m_pData = 0x67e38200, m_bSupportEmbeddedScripts = true } (gdb) l  1635 1636   void SAL_CALL SfxBaseModel::storeAsURL( const   ::rtl::OUString&                   rURL   , 1637                                            const   uno::Sequence< beans::PropertyValue >&  rArgs   ) 1638           throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException) 1639   { 1640            RTL_LOGFILE_PRODUCT_CONTEXT( aPerfLog, "PERFORMANCE - SfxBaseModel::storeAsURL" ); 1641 1642           // object already disposed? 1643       ::vos::OGuard aGuard( Application::GetSolarMutex ); 1644           if ( impl_isDisposed ) (gdb) o impl_isDisposed Ambiguous command "o impl_isDisposed ": obscure, op, ope, open, output, ov, overlay, ovly. (gdb) p impl_isDisposed $2 = 0 '\0' (gdb) n 1643       ::vos::OGuard aGuard( Application::GetSolarMutex ); (gdb) 1644           if ( impl_isDisposed ) (gdb) p impl_isDisposed $3 = 0 '\0' (gdb) n 1647           if ( m_pData->m_pObjectShell.Is ) (gdb) p m_pData->m_pObjectShell.Is $4 = 1 '\001' (gdb) n 1649           m_pData->m_pObjectShell->AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "storeAsURL" ) ) ); (gdb) n 1650                   SfxSaveGuard aSaveGuard(this, m_pData, sal_False); (gdb) 1652                   impl_store( rURL, rArgs, sal_False ); (gdb) 2009-08-27 08:53:35.991 soffice[13311] Apple Remote will resign active - Releasing remote controls Thread:     1 :BitmapEx: forced mask to monochrome 2009-08-27 08:53:39.836 soffice[13311] Apple Remote will become active - Using remote controls 2009-08-27 08:53:42.174 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 08:54:14.564 soffice[13311] Apple Remote will become active - Using remote controls 1654           uno::Sequence< beans::PropertyValue > aSequence ; (gdb) n 1655                   TransformItems( SID_OPENDOC, *m_pData->m_pObjectShell->GetMedium->GetItemSet, aSequence ); (gdb) 1656                   attachResource( rURL, aSequence ); (gdb) 1657           } (gdb) 1658   } (gdb) SfxStoringHelper::GUIStoreModel (this=0xbfffe734, xModel=@0x67b30a34, aSlotName=@0xbfffea78, aArgsSequence=@0xbfffe74c, bPreselectPassword=0 '\0', aSuggestedName=@0xbfffea74) at /Users/ericb/Desktop/DEV300_m56/sfx2/source/doc/guisaveas.cxx:1537 1537           return bDialogUsed; (gdb) 1538   } (gdb) c Continuing. 2009-08-27 08:54:27.992 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 08:54:30.542 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a void

Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a 15SwXTextDocument

Breakpoint 4, SfxBaseModel::storeAsURL (this=0x27de0cd0, rURL=@0xbfffe498, rArgs=@0xbfffe74c) at /Users/ericb/Desktop/DEV300_m56/sfx2/source/doc/sfxbasemodel.cxx:1640 1640           RTL_LOGFILE_PRODUCT_CONTEXT( aPerfLog, "PERFORMANCE - SfxBaseModel::storeAsURL" ); (gdb) l 1635 1636   void SAL_CALL SfxBaseModel::storeAsURL( const   ::rtl::OUString&                   rURL   , 1637                                            const   uno::Sequence< beans::PropertyValue >&  rArgs   ) 1638           throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException) 1639   { 1640            RTL_LOGFILE_PRODUCT_CONTEXT( aPerfLog, "PERFORMANCE - SfxBaseModel::storeAsURL" ); 1641 1642           // object already disposed? 1643       ::vos::OGuard aGuard( Application::GetSolarMutex ); 1644           if ( impl_isDisposed ) (gdb) n 1643       ::vos::OGuard aGuard( Application::GetSolarMutex ); (gdb) l 1638           throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException) 1639   { 1640            RTL_LOGFILE_PRODUCT_CONTEXT( aPerfLog, "PERFORMANCE - SfxBaseModel::storeAsURL" ); 1641 1642           // object already disposed? 1643       ::vos::OGuard aGuard( Application::GetSolarMutex ); 1644           if ( impl_isDisposed ) 1645           throw lang::DisposedException; 1646 1647           if ( m_pData->m_pObjectShell.Is ) (gdb) p impl_isDisposed $5 = 0 '\0' (gdb) n 1644           if ( impl_isDisposed ) (gdb) 1647           if ( m_pData->m_pObjectShell.Is ) (gdb) 1649           m_pData->m_pObjectShell->AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "storeAsURL" ) ) ); (gdb) 1650                   SfxSaveGuard aSaveGuard(this, m_pData, sal_False); (gdb) 1652                   impl_store( rURL, rArgs, sal_False ); (gdb) p m_pData $6 = (IMPL_SfxBaseModel_DataContainer *) 0x292f4850 (gdb) p *m_pData $7 = { <IModifiableDocument> = { _vptr$IModifiableDocument = 0x13e0268 },  members of IMPL_SfxBaseModel_DataContainer: static g_nInstanceCounter = 9, m_pObjectShell = { pObj = 0x290b0560 },  m_sURL = { pData = 0x23f53c },  m_sRuntimeUID = { pData = 0x25264590 },  m_aPreusedFilterName = { pData = 0x23f53c },  m_aInterfaceContainer = { m_pMap = 0x29d8c100, rMutex = @0x27de0d5c },  m_xParent = { <BaseReference> = { _pInterface = 0x0 }, <No data fields>}, m_xCurrent = { <BaseReference> = { _pInterface = 0x24f13d7c }, <No data fields>}, m_xDocumentInfo = { <BaseReference> = { _pInterface = 0x0 }, <No data fields>}, m_xDocumentProperties = { <BaseReference> = { _pInterface = 0x2cdf1710 }, <No data fields>}, m_xStarBasicAccess = { <BaseReference> = { _pInterface = 0x0 }, <No data fields>}, m_xEvents = { <BaseReference> = { _pInterface = 0x0 }, <No data fields>}, m_seqArguments = { _pSequence = 0x69081d50, static s_pType = 0x1259a610 },  m_seqControllers = { _pSequence = 0x24ed998c, static s_pType = 0x2c149090 },  m_contViewData = { <BaseReference> = { _pInterface = 0x0 }, <No data fields>}, m_nControllerLockCount = 0, m_bClosed = 0 '\0', m_bClosing = 0 '\0', m_bSaving = 1 '\001', m_bSuicide = 0 '\0', m_xPrintable = { <BaseReference> = { _pInterface = 0x69093d80 }, <No data fields>}, m_xScriptProvider = { <BaseReference> = { _pInterface = 0x0 }, <No data fields>}, m_xUIConfigurationManager = { <BaseReference> = { _pInterface = 0x690a9338 }, <No data fields>}, m_pStorageModifyListen = { m_pBody = 0x25228c40 },  m_sModuleIdentifier = { pData = 0x23f53c },  m_xTitleHelper = { <BaseReference> = { _pInterface = 0x690b6984 }, <No data fields>}, m_xNumberedControllers = { <BaseReference> = { _pInterface = 0x690619f4 }, <No data fields>}, m_xDocumentMetadata = { <BaseReference> = { _pInterface = 0x0 }, <No data fields>} } (gdb) n 2009-08-27 08:57:00.742 soffice[13311] Apple Remote will resign active - Releasing remote controls Thread:     1 :BitmapEx: forced mask to monochrome 2009-08-27 08:57:02.413 soffice[13311] Apple Remote will become active - Using remote controls 2009-08-27 08:57:03.941 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 08:57:07.948 soffice[13311] Apple Remote will become active - Using remote controls 1654           uno::Sequence< beans::PropertyValue > aSequence ; (gdb) info b Num Type          Disp Enb Address    What 4  breakpoint     keep y   0x01129101 in SfxBaseModel::storeAsURL(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at /Users/ericb/Desktop/DEV300_m56/sfx2/source/doc/sfxbasemodel.cxx:1640 breakpoint already hit 2 times (gdb) c Continuing. 2009-08-27 08:57:31.616 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 08:57:34.324 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a 15SwXTextDocument

2009-08-27 08:57:36.740 soffice[13311] Apple Remote will resign active - Releasing remote controls ^C Program received signal SIGINT, Interrupt. 0x90009cd7 in mach_msg_trap (gdb) info b Num Type          Disp Enb Address    What 4  breakpoint     keep y   0x01129101 in SfxBaseModel::storeAsURL(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at /Users/ericb/Desktop/DEV300_m56/sfx2/source/doc/sfxbasemodel.cxx:1640 breakpoint already hit 2 times (gdb) c Continuing. Thread:     1 :current component is a void

2009-08-27 08:59:54.596 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 09:00:04.505 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a 15SwXTextDocument

Breakpoint 4, SfxBaseModel::storeAsURL (this=0x27de0cd0, rURL=@0xbfffe0c8, rArgs=@0xbfffe37c) at /Users/ericb/Desktop/DEV300_m56/sfx2/source/doc/sfxbasemodel.cxx:1640 1640           RTL_LOGFILE_PRODUCT_CONTEXT( aPerfLog, "PERFORMANCE - SfxBaseModel::storeAsURL" ); (gdb) n 1643       ::vos::OGuard aGuard( Application::GetSolarMutex ); (gdb) 1644           if ( impl_isDisposed ) (gdb) 1647           if ( m_pData->m_pObjectShell.Is ) (gdb) 1649           m_pData->m_pObjectShell->AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "storeAsURL" ) ) ); (gdb) 1650                   SfxSaveGuard aSaveGuard(this, m_pData, sal_False); (gdb) 1652                   impl_store( rURL, rArgs, sal_False ); (gdb) c Continuing. 2009-08-27 09:00:27.245 soffice[13311] Apple Remote will resign active - Releasing remote controls Thread:     1 :BitmapEx: forced mask to monochrome 2009-08-27 09:00:29.092 soffice[13311] Apple Remote will become active - Using remote controls 2009-08-27 09:00:42.719 soffice[13311] Apple Remote will resign active - Releasing remote controls ^C Program received signal SIGINT, Interrupt. 0x90009cd7 in mach_msg_trap (gdb) bt (gdb) c Continuing. 2009-08-27 09:00:57.964 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a 15SwXTextDocument
 * 1) 0 0x90009cd7 in mach_msg_trap
 * 2) 1 0x90009c38 in mach_msg
 * 3) 2 0x9082d253 in CFRunLoopRunSpecific
 * 4) 3 0x9082ca6e in CFRunLoopRunInMode
 * 5) 4 0x92def878 in RunCurrentEventLoopInMode
 * 6) 5 0x92deef82 in ReceiveNextEventCommon
 * 7) 6 0x92deedd9 in BlockUntilNextEventMatchingListInMode
 * 8) 7 0x93295485 in _DPSNextEvent
 * 9) 8 0x93295076 in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
 * 10) 9 0x0ad23d50 in AquaSalInstance::Yield (this=0x12544fc0, bWait=true, bHandleAllCurrentEvents=false) at /Users/ericb/Desktop/DEV300_m56/vcl/aqua/source/app/salinst.cxx:749
 * 11) 10 0x0aa9237b in Application::Yield (bAllEvents=false) at /Users/ericb/Desktop/DEV300_m56/vcl/source/app/svapp.cxx:502
 * 12) 11 0x0aa923d2 in Application::Execute at /Users/ericb/Desktop/DEV300_m56/vcl/source/app/svapp.cxx:461
 * 13) 12 0x0008aa13 in dyld_stub_objc_exception_try_enter
 * 14) 13 0x0aa9884a in ImplSVMain at /Users/ericb/Desktop/DEV300_m56/vcl/source/app/svmain.cxx:186
 * 15) 14 0x0ad22ffd in AquaSalInstance::handleAppDefinedEvent (pEvent=0x1253be20) at /Users/ericb/Desktop/DEV300_m56/vcl/aqua/source/app/salinst.cxx:578
 * 16) 15 0x0ad25a4b in -[VCL_NSApplication sendEvent:] (self=0x12529310, _cmd=0x90ac44c4, pEvent=0x1253be20) at vclnsapp.mm:64
 * 17) 16 0x9328ee1e in -[NSApplication run]
 * 18) 17 0x93282d4f in NSApplicationMain
 * 19) 18 0x0ad20da3 in ImplSVMainHook (pbInit=0xbffff69f "") at /Users/ericb/Desktop/DEV300_m56/vcl/aqua/source/app/salinst.cxx:233
 * 20) 19 0x0aa989c7 in SVMain at /Users/ericb/Desktop/DEV300_m56/vcl/source/app/svmain.cxx:224
 * 21) 20 0x000b66ec in soffice_main
 * 22) 21 0x00002b76 in main

Breakpoint 4, SfxBaseModel::storeAsURL (this=0x27de0cd0, rURL=@0xbfffe0c8, rArgs=@0xbfffe37c) at /Users/ericb/Desktop/DEV300_m56/sfx2/source/doc/sfxbasemodel.cxx:1640 1640           RTL_LOGFILE_PRODUCT_CONTEXT( aPerfLog, "PERFORMANCE - SfxBaseModel::storeAsURL" ); (gdb) c Continuing. Thread:     1 :BitmapEx: forced mask to monochrome 2009-08-27 09:01:08.818 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 09:01:09.652 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :BitmapEx: forced mask to monochrome Thread:     1 :BitmapEx: forced mask to monochrome Thread:     1 :current component is a void

Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :BitmapEx: forced mask to monochrome Thread:     1 :BitmapEx: forced mask to monochrome 2009-08-27 09:01:41.360 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 09:02:34.764 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a 15SwXTextDocument

2009-08-27 09:02:36.695 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 09:02:48.282 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a 15SwXTextDocument

2009-08-27 09:02:49.330 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 09:03:51.125 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a void

Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a 15SwXTextDocument

Breakpoint 4, SfxBaseModel::storeAsURL (this=0x27de0cd0, rURL=@0xbfffe498, rArgs=@0xbfffe74c) at /Users/ericb/Desktop/DEV300_m56/sfx2/source/doc/sfxbasemodel.cxx:1640 1640           RTL_LOGFILE_PRODUCT_CONTEXT( aPerfLog, "PERFORMANCE - SfxBaseModel::storeAsURL" ); (gdb) n 1643       ::vos::OGuard aGuard( Application::GetSolarMutex ); (gdb) 1644           if ( impl_isDisposed ) (gdb) 1647           if ( m_pData->m_pObjectShell.Is ) (gdb) 1649           m_pData->m_pObjectShell->AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "storeAsURL" ) ) ); (gdb) 1650                   SfxSaveGuard aSaveGuard(this, m_pData, sal_False); (gdb) 1652                   impl_store( rURL, rArgs, sal_False ); (gdb) j 1653 Continuing at 0x1129290. 2009-08-27 09:04:33.875 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 09:04:37.188 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a 15SwXTextDocument

2009-08-27 09:04:39.609 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 09:04:41.844 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a 15SwXTextDocument

2009-08-27 09:04:44.522 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 09:04:57.028 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a 15SwXTextDocument

2009-08-27 09:04:58.072 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 09:07:16.613 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a 15SwXTextDocument

Breakpoint 4, SfxBaseModel::storeAsURL (this=0x27de0cd0, rURL=@0xbfffdf48, rArgs=@0xbfffe1fc) at /Users/ericb/Desktop/DEV300_m56/sfx2/source/doc/sfxbasemodel.cxx:1640 1640           RTL_LOGFILE_PRODUCT_CONTEXT( aPerfLog, "PERFORMANCE - SfxBaseModel::storeAsURL" ); (gdb) c Continuing. 2009-08-27 09:07:29.529 soffice[13311] Apple Remote will resign active - Releasing remote controls Thread:     1 :BitmapEx: forced mask to monochrome 2009-08-27 09:07:30.413 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a void

2009-08-27 09:07:32.110 soffice[13311] Apple Remote will resign active - Releasing remote controls ^C Program received signal SIGINT, Interrupt. 0x90009cd7 in mach_msg_trap (gdb) d Delete all breakpoints? (y or n) y (gdb) b 'SfxBaseModel::impl_store' Breakpoint 5 at 0x11273e8: file /Users/ericb/Desktop/DEV300_m56/sfx2/source/doc/sfxbasemodel.cxx, line 2649. (gdb) c Continuing. 2009-08-27 09:07:41.682 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a 15SwXTextDocument

Breakpoint 5, SfxBaseModel::impl_store (this=0x27de0cd0, sURL=@0xbfffe498, seqArguments=@0xbfffe74c, bSaveTo=0 '\0') at /Users/ericb/Desktop/DEV300_m56/sfx2/source/doc/sfxbasemodel.cxx:2649 2649           if( !sURL.getLength ) (gdb) p !sURL.getLength $8 = false (gdb) n 2654       sal_Bool bSaved = sal_False; (gdb) 2655       if ( !bSaveTo && m_pData->m_pObjectShell && sURL.getLength (gdb) 2723            if ( !bSaved && m_pData->m_pObjectShell ) (gdb) 2726                                                                                                    m_pData->m_pObjectShell ) ); (gdb) 2728            SfxAllItemSet *aParams = new SfxAllItemSet( SFX_APP->GetPool ); (gdb) 2729                    aParams->Put( SfxStringItem( SID_FILE_NAME, String(sURL) ) ); (gdb) 2730                    if ( bSaveTo ) (gdb) 2733            TransformParameters( SID_SAVEASDOC, seqArguments, *aParams ); (gdb) 2735            SFX_ITEMSET_ARG( aParams, pCopyStreamItem, SfxBoolItem, SID_COPY_STREAM_IF_POSSIBLE, sal_False ); (gdb) 2737                    if ( pCopyStreamItem && pCopyStreamItem->GetValue && !bSaveTo ) (gdb) 2751                m_pData->m_pObjectShell->GetCreateMode == SFX_CREATE_MODE_EMBEDDED; (gdb) 2752           uno::Reference<document::XDocumentProperties> xOldDocProps; (gdb) 2753           uno::Reference<document::XDocumentInfo> xOldDocInfo; (gdb) 2754           if ( bCopyTo ) (gdb) 2781                   sal_Bool bRet = m_pData->m_pObjectShell->APISaveAs_Impl( sURL, aParams ); (gdb) 2009-08-27 09:08:32.178 soffice[13311] Apple Remote will resign active - Releasing remote controls Thread:     1 :BitmapEx: forced mask to monochrome 2783           if ( bCopyTo ) (gdb) n 2790                   uno::Reference < task::XInteractionHandler > xHandler; (gdb) 2791                   SFX_ITEMSET_ARG( aParams, pItem, SfxUnoAnyItem, SID_INTERACTIONHANDLER, sal_False); (gdb) 2792                   if ( pItem ) (gdb) 2793                           pItem->GetValue >>= xHandler; (gdb) 2795                   DELETEZ( aParams ); (gdb) 2797                   sal_uInt32 nErrCode = m_pData->m_pObjectShell->GetErrorCode; (gdb) 2798                   if ( !bRet && !nErrCode ) (gdb) 2803                   m_pData->m_pObjectShell->ResetError; (gdb) 2805                   if ( bRet ) (gdb) 2807                           if ( nErrCode ) (gdb) 2810                   if ( xHandler.is ) (gdb) 2813                                           SfxErrorContext aEc( ERRCTX_SFX_SAVEASDOC, m_pData->m_pObjectShell->GetTitle ); (gdb) 2815                       ::com::sun::star::uno::Any aInteraction; (gdb) 2816                       ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > > lContinuations(1); (gdb) 2817                       ::framework::ContinuationApprove* pApprove = new ::framework::ContinuationApprove; (gdb) 2818                       lContinuations[0] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >(static_cast< ::com::sun::star::task::XInteractionContinuation* >(pApprove), uno::UNO_QUERY); (gdb) n 2820                                           ::com::sun::star::task::ErrorCodeRequest aErrorCode; (gdb) 2821                               aErrorCode.ErrCode = nErrCode; (gdb) 2822                                   aInteraction <<= aErrorCode; (gdb) p aErrorCode $9 = { <Exception> = { Message = { pData = 0x23f53c },    Context = { <BaseReference> = { _pInterface = 0x0 }, <No data fields>} },  members of ErrorCodeRequest: ErrCode = -2147024824 } (gdb) n 2824                                       ::framework::InteractionRequest* pRequest = new ::framework::InteractionRequest(aInteraction,lContinuations); (gdb) 2825                       ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest > xRequest(static_cast< ::com::sun::star::task::XInteractionRequest* >(pRequest), uno::UNO_QUERY); (gdb) 2827                                           xHandler->handle(xRequest); (gdb) 0x251a5a74 in component_getFactory (gdb) Cannot find bounds of current function (gdb) Cannot find bounds of current function (gdb) Cannot find bounds of current function (gdb) c Continuing. 2009-08-27 09:09:36.456 soffice[13311] Apple Remote will become active - Using remote controls 2009-08-27 09:09:36.510 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 09:09:37.828 soffice[13311] Apple Remote will become active - Using remote controls 2009-08-27 09:09:39.926 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 09:44:53.144 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a 15SwXTextDocument

2009-08-27 09:44:53.209 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a void

Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a 15SwXTextDocument

Breakpoint 5, SfxBaseModel::impl_store (this=0x27de0cd0, sURL=@0xbfffe498, seqArguments=@0xbfffe74c, bSaveTo=0 '\0') at /Users/ericb/Desktop/DEV300_m56/sfx2/source/doc/sfxbasemodel.cxx:2649 2649           if( !sURL.getLength ) (gdb) n 2654       sal_Bool bSaved = sal_False; (gdb) 2655       if ( !bSaveTo && m_pData->m_pObjectShell && sURL.getLength (gdb) 2723            if ( !bSaved && m_pData->m_pObjectShell ) (gdb) 2726                                                                                                    m_pData->m_pObjectShell ) ); (gdb) 2728            SfxAllItemSet *aParams = new SfxAllItemSet( SFX_APP->GetPool ); (gdb) 2729                    aParams->Put( SfxStringItem( SID_FILE_NAME, String(sURL) ) ); (gdb) 2730                    if ( bSaveTo ) (gdb) 2733            TransformParameters( SID_SAVEASDOC, seqArguments, *aParams ); (gdb) 2735            SFX_ITEMSET_ARG( aParams, pCopyStreamItem, SfxBoolItem, SID_COPY_STREAM_IF_POSSIBLE, sal_False ); (gdb) p aParams $10 = (SfxAllItemSet *) 0x67e14740 (gdb) p *aParams $11 = {  <SfxItemSet> = {    _vptr$SfxItemSet = 0x7055e8,     _pPool = 0x1257e680,     _pParent = 0x0,     _aItems = 0x693ecae0, _pWhichRanges = 0x2a945f20, _nCount = 4 },  members of SfxAllItemSet: aDefault = { <SfxPoolItem> = { _vptr$SfxPoolItem = 0x705728, nRefCount = 0, nWhich = 0, nKind = 0 }, <No data fields>}, nFree = 2 } (gdb) n 2737                   if ( pCopyStreamItem && pCopyStreamItem->GetValue && !bSaveTo ) (gdb) 2751               m_pData->m_pObjectShell->GetCreateMode == SFX_CREATE_MODE_EMBEDDED; (gdb) 2752           uno::Reference<document::XDocumentProperties> xOldDocProps; (gdb) 2753           uno::Reference<document::XDocumentInfo> xOldDocInfo; (gdb) 2754           if ( bCopyTo ) (gdb) 2781                   sal_Bool bRet = m_pData->m_pObjectShell->APISaveAs_Impl( sURL, aParams ); (gdb) p *aParams $12 = { <SfxItemSet> = { _vptr$SfxItemSet = 0x7055e8, _pPool = 0x1257e680, _pParent = 0x0, _aItems = 0x693ecae0, _pWhichRanges = 0x2a945f20, _nCount = 4 },  members of SfxAllItemSet: aDefault = { <SfxPoolItem> = { _vptr$SfxPoolItem = 0x705728, nRefCount = 0, nWhich = 0, nKind = 0 }, <No data fields>}, nFree = 2 } (gdb) n 2009-08-27 09:46:10.338 soffice[13311] Apple Remote will resign active - Releasing remote controls Thread:     1 :BitmapEx: forced mask to monochrome 2783           if ( bCopyTo ) (gdb) n 2790                   uno::Reference < task::XInteractionHandler > xHandler; (gdb) 2791                   SFX_ITEMSET_ARG( aParams, pItem, SfxUnoAnyItem, SID_INTERACTIONHANDLER, sal_False); (gdb) 2792                   if ( pItem ) (gdb) 2793                           pItem->GetValue >>= xHandler; (gdb) 2795                   DELETEZ( aParams ); (gdb) 2797                   sal_uInt32 nErrCode = m_pData->m_pObjectShell->GetErrorCode; (gdb) 2798                   if ( !bRet && !nErrCode ) (gdb) p nErrCode $13 = 2147942472 (gdb) p m_pData->m_pObjectShell $14 = { pObj = 0x2a3d2930 } (gdb) p m_pData->m_pObjectShell->pObj $15 = (SfxObjectShell *) 0x2a3d2930 (gdb) p *m_pData->m_pObjectShell->pObj $16 = { <SfxShell> = { <SfxBroadcaster> = { _vptr$SfxBroadcaster = 0x307aa150, aListeners = { pData = 0x6907b8c0, nFree = 0, nA = 8 }   },     members of SfxShell: pImp = 0x29094370, pPool = 0x28e37b10, pUndoMgr = 0x0 },  <SotObject> = { <SvRefBase> = { _vptr$SvRefBase = 0x307aa35c, nRefCount = 5 },    members of SotObject: _vptr$SotObject = 0x307aa320, pAggList = 0x0, nStrongLockCount = 0, nOwnerLockCount = 1, bOwner = 1 '\001', bSVObject = 0 '\0', bInClose = 0 '\0' },  <IEmbeddedHelper> = { _vptr$IEmbeddedHelper = 0x307aa2ac },  <IXmlIdRegistrySupplier> = { _vptr$IXmlIdRegistrySupplier = 0x307aa2c4 },  members of SfxObjectShell: pImp = 0x2af5e980, pMedium = 0x2ad1fb50, pStyleSheetPool = 0x0, eCreateMode = SFX_CREATE_MODE_STANDARD, nViewNo = 0, bHasName = 1 '\001', bIsTmp = 1 '\001', static pInterface = 0x1257ddf0, static pSfxFormalArgs_Impl = 0x13cc700 } (gdb) p *m_pData->m_pObjectShell->pObj->pImp $17 = { <IMacroDocumentAccess> = { _vptr$IMacroDocumentAccess = 0x13d1cc8 },  members of SfxObjectShell_Impl: mpObjectContainer = 0x69d94a60, pAccMgr = 0x0, pCfgMgr = 0x0, pBasicManager = 0x69df93b0, rDocShell = @0x2a3d2930, xBasicLibraries = { <BaseReference> = { _pInterface = 0x27e283f8 }, <No data fields>}, xDialogLibraries = { <BaseReference> = { _pInterface = 0x68e48d74 }, <No data fields>}, aMacroMode = { m_pData = { px = 0x2a300770, pn = { pi_ = 0x2a3cae40 }   }  },   pProgress = 0x0, aTitle = { mpData = 0x27e27ed4 },  aTempName = { mpData = 0x23f53c },  nTime = { <Date> = { nDate = 20090827 },    <Time> = { nTime = 9461000 }, <No data fields>}, nVisualDocumentNumber = 1, nDocumentSignatureState = 0, nScriptingSignatureState = 0, bTemplateConfig = 0 '\0', bInList = 1 '\001', bClosing = 0 '\0', bSetInPlaceObj = 0 '\0', bIsSaving = 0 '\0', bPasswd = 0 '\0', bIsTmp = 0 '\0', bIsNamedVisible = 1 '\001', bIsTemplate = 0 '\0', bIsAbortingImport = 0 '\0', bImportDone = 0 '\0', bInPrepareClose = 0 '\0', bPreparedForClose = 0 '\0', bWaitingForPicklist = 1 '\001', bModuleSearched = 0 '\0', bIsHelpObjSh = 0 '\0', bForbidCaching = 0 '\0', bForbidReload = 0 '\0', bSupportsEventMacros = 1 '\001', bLoadingWindows = 0 '\0', bBasicInitialized = 1 '\001', bIsPrintJobCancelable = 1 '\001', bOwnsStorage = 1 '\001', bNoBaseURL = 0 '\0', bInitialized = 1 '\001', bSignatureErrorIsShown = 0 '\0', bModelInitialized = 0 '\0', bPreserveVersions = 1 '\001', m_bMacroSignBroken = 0 '\0', m_bNoBasicCapabilities = 0 '\0', bQueryLoadTemplate = 1 '\001', bLoadReadonly = 0 '\0', bUseUserData = 1 '\001', bSaveVersionOnClose = 0 '\0', m_bSharedXMLFlag = 0 '\0', m_bAllowShareControlFileClean = 1 '\001', aNewName = { mpData = 0x23f53c },  aBitSet = { <BitSet> = { nBlocks = 1, nCount = 1, pBitmap = 0x2a19b2d0 }, <No data fields>}, lErr = 2147942472, nEventId = 0, bDoNotTouchDocInfo = 0 '\0', pReloadTimer = 0x0, pMarkData = 0x0, nLoadedFlags = 3, nFlagsInProgress = 0, aMark = { mpData = 0x23f53c },  aViewSize = { <Pair> = { nA = 0, nB = 0 }, <No data fields>}, bInFrame = 0 '\0', bModalMode = 0 '\0', bRunningMacro = 0 '\0', bReloadAvailable = 0 '\0', nAutoLoadLocks = 0, pModule = 0x0, pFrame = 0x0, pTbxConfig = 0x0, pEventConfig = 0x0, eFlags = 251658240, pCloser = 0x0, aBaseURL = { mpData = 0x23f53c },  bReadOnlyUI = 0 '\0', xHeaderAttributes = { pObj = 0x0 },  bHiddenLockedByAPI = 0 '\0', bInCloseEvent = 0 '\0', xModel = { <BaseReference> = { _pInterface = 0x27de0d0c }, <No data fields>}, nStyleFilter = 3, bDisposing = 0 '\0', m_bEnableSetModified = 1 '\001', m_bIsModified = 0 '\0', m_aVisArea = { nLeft = 0, nTop = 0, nRight = 14222, nBottom = 7529 },  m_nMapUnit = MAP_TWIP, m_bCreateTempStor = 0 '\0', m_xDocStorage = { <BaseReference> = { _pInterface = 0x69076b08 }, <No data fields>}, m_xDocInfoListener = { <BaseReference> = { _pInterface = 0x69063bec }, <No data fields>}, m_bIsInit = 1 '\001', m_aSharedFileURL = { pData = 0x23f53c },  m_xLogRing = { <BaseReference> = { _pInterface = 0x0 }, <No data fields>} } (gdb) n 2803                   m_pData->m_pObjectShell->ResetError; (gdb) 2805                   if ( bRet ) (gdb) p nErrCode $18 = 2147942472 (gdb) n 2807                           if ( nErrCode ) (gdb) l 2802           } 2803                   m_pData->m_pObjectShell->ResetError; 2804 2805                   if ( bRet ) 2806                   { 2807                            if ( nErrCode ) 2808                           { 2809                                    // must be a warning - use Interactionhandler if possible or abandone 2810                   if ( xHandler.is ) 2811                   { (gdb) n 2810                    if ( xHandler.is ) (gdb) 2813                                           SfxErrorContext aEc( ERRCTX_SFX_SAVEASDOC, m_pData->m_pObjectShell->GetTitle ); (gdb) 2815                       ::com::sun::star::uno::Any aInteraction; (gdb) 2816                       ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > > lContinuations(1); (gdb) 2817                       ::framework::ContinuationApprove* pApprove = new ::framework::ContinuationApprove; (gdb) 2818                       lContinuations[0] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >(static_cast< ::com::sun::star::task::XInteractionContinuation* >(pApprove), uno::UNO_QUERY); (gdb) 2820                                           ::com::sun::star::task::ErrorCodeRequest aErrorCode; (gdb) 2821                               aErrorCode.ErrCode = nErrCode; (gdb) p nErrCode $19 = 2147942472 (gdb) n 2822                                   aInteraction <<= aErrorCode; (gdb) 2824                                       ::framework::InteractionRequest* pRequest = new ::framework::InteractionRequest(aInteraction,lContinuations); (gdb) 2825                       ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest > xRequest(static_cast< ::com::sun::star::task::XInteractionRequest* >(pRequest), uno::UNO_QUERY); (gdb) 2827                                           xHandler->handle(xRequest); (gdb) 0x251a5a74 in component_getFactory (gdb) Cannot find bounds of current function (gdb) c Continuing. 2009-08-27 09:50:30.034 soffice[13311] Apple Remote will become active - Using remote controls 2009-08-27 09:50:30.128 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 09:50:33.227 soffice[13311] Apple Remote will become active - Using remote controls 2009-08-27 09:50:33.327 soffice[13311] Apple Remote will become active - Using remote controls 2009-08-27 09:50:37.550 soffice[13311] Apple Remote will resign active - Releasing remote controls 2009-08-27 09:52:56.645 soffice[13311] Apple Remote will become active - Using remote controls Thread:     1 :current component is a 15SwXTextDocument

Thread:     1 :current component is a void

retaining 0x125e08a0 (old count 1) windowtype=16ImplBorderWindow clienttyp=10WorkWindow title=VCL ImplGetDefaultWindow frame still alive: NSWindow 0x125e08a0 windowtype=16ImplBorderWindow clienttyp=10WorkWindow title=VCL ImplGetDefaultWindow

ClassRooms
Draft

Since we use subversion, some parts are obsolete, and need to be updated

Objective : create exercices, to practice OpenOffice.org tools used for development

TODO : define a list of items

Login and accounts

 * Create your login on the OpenOffice.org wiki
 * Become member of Education Project, using the Education Project wiki page : http://wiki.services.openoffice.org/wiki/Education_Project

Find a page or a document

 * Find the web page for your own locale in OpenOffice.org project ( e.g. nl.openoffice.org )
 * Find the OpenOffice.org Coding Guidelines on the Wiki ( and read it ... )
 * Find the page about cws ( Child Workspace )
 * Find dev@gsl.openoffice.org mailing list archive
 * Subscribe to dev@education.openoffice.org mailing list if you didn't yet
 * Extract mails 10 to 14 from any mailing list

Bonsai use

 * Discover Bonsai
 * Visualize changes in a cws

1) Go to http://bonsai.go-oo.org/cvsqueryform.cgi

We'll try to do a request :)

2) Don't modify Module (must be All files in the repository ) Remark : note the name "repository "

3) In the Field "Branch" replace HEAD with cws_dev300_aquavcl07

4) in the field "Date" check "Since the beginning of time "

5) do not modify the other fields

6) Click "Run Query"

=> all the changes in the code, based on DEV300_m9 ( we'll explain later) are on the page !!

7) To see the diff for any commit, click in the Rev. columns. Back to retrieve the current page.

Strongly advised : 8) Look carefully at other changes, what information you can obtain here.

Remark: Bonsai helps when you are searching for changes in the code, author date .. precise information about CODE

SVN use
Ericb 16:53, 17 February 2009 (UTC)

Outline of the ClassRoom
1) Create patches using svn

2) apply a patch

3) rebuild a module

4) rebuild a module including symbols

5) run OOo with gdb (introduction of gdb use)

Introduction : in this part, we will create, apply patches using svn tool. To simplify, we'll suppose the patches are in unified mode. Means:

- 3 lines of context before the change

- a line who starts with " - " means the line before the old version (if the old version was existing)

- a line starting with " + " means after the change(s), if a new version does exist

- 3 lines of context after the change

For example :

ordinateur-de-eric-b-2:~/Desktop/ecntablet01 ericb$ svn diff sd/source/ui/slideshow/slideshow.hrc Index: sd/source/ui/slideshow/slideshow.hrc

=
====================================================== --- sd/source/ui/slideshow/slideshow.hrc       (revision 267130) +++ sd/source/ui/slideshow/slideshow.hrc       (working copy) @@ -38,8 +38,10 @@ -#define CM_FIRST_SLIDE 8 -#define CM_LAST_SLIDE 9 -#define CM_SLIDES             10 +#define CM_ERASE_ALLINK       8 +#define CM_ERASE_INK  9 +#define CM_FIRST_SLIDE 10 +#define CM_LAST_SLIDE 11 +#define CM_SLIDES             12
 * 1) define CM_SCREEN_BLACK       5
 * 2) define CM_SCREEN_WHITE       6
 * 3) define CM_ENDSHOW            7
 * 1) endif

Create patches using svn
Lot of possibilities. Below some of them. Probably better solutions do exist. This is just a little inventory of the possibilities.


 * you got a tree, did some modifications, and you want to send the patch to a friend

=> The idea is to compare your current tree with the one *before* the changes.

To visualize the changes : ordinateur-de-eric-b-2:~/Desktop/moz2seamonkey01 ericb$ svn diff slideshow/source/inc/userpainteventhandler.hxx

The command (without the prompt) is :

svn diff slideshow/source/inc/userpainteventhandler.hxx

The result is : Index: slideshow/source/inc/userpainteventhandler.hxx

=
====================================================== --- slideshow/source/inc/userpainteventhandler.hxx     (revision 267652) +++ slideshow/source/inc/userpainteventhandler.hxx     (working copy) @@ -53,6 +53,9 @@            virtual ~UserPaintEventHandler {} virtual bool colorChanged( RGBColor const& rUserColor ) = 0; + +                      virtual bool eraseAllInkChanged(bool const& rEraseAllInk) =0; +                      virtual bool eraseInkChanged(bool const& rEraseInk) =0; virtual bool disable = 0; }; To create the patch for true, the command is : svn diff slideshow/source/inc/userpainteventhandler.hxx > my pretty patch.diff

And " my_pretty_patch.diff " will contain the same.


 * you want to create a patch between a cws and a milestone (the one the cws is based on )

For example, to extract the changes in helpcontent2, ab65 introduced

svn diff http://svn.services.openoffice.org/ooo/tags/DEV300_m35/helpcontent2 http://svn.services.openoffice.org/ooo/cws/ab65/helpcontent2 > mydiff.diff


 * you want to create a patch between two svn revisions for a given cws

IMPORTANT: you can follow the recent commits there : http://cia.vc/stats/project/OOo

Example of change (in one line) :

svn diff http://svn.services.openoffice.org/ooo/cws/ooo31gsl2/vcl@268180 http://svn.services.openoffice.org/ooo/cws/ooo31gsl2/vcl@268182


 * using svn log, you want to create the diff between two revisions of the same file

For example :

ordinateur-de-eric-b-2:~/Desktop/moz2seamonkey01 ericb$ svn log configure.in Enter passphrase for key '/Users/ericb/.ssh/id_dsa_ooo_svn':

r267684 | ericb | 2009-02-12 18:13:52 +0100 (Thu, 12 Feb 2009) | 1 line


 * 1) i94628# fix a path issue for finding seamonkey01

r267656 | ericb | 2009-02-12 14:13:21 +0100 (Thu, 12 Feb 2009) | 1 line


 * 1) i94628# other missing changes for Windows

Apply a patch
Essential options :

--dry-run : fakes the patch application *extremely usefull* if you want to check whether a patch will apply, without create garbage in your tree

-R : reverse it -> we suppose you already applied the patch, did no change and want to reverse the patch, to retrieve the same code as before

-p0 : apply a patch using the exact path the files have. Important: your tree does match with the path of the file the patch will be applied, *AND* you apply it form the right location

-p1 : you remove the first subdir of the path for every to be patched file listed in th patch

Correct way of application :

Fake the application :

patch --dry-run -p0 < my_patch.diff

If nothing wrong occurs :

patch -p0 < my_patch.diff

Other possibility, not recommended because of the UUOC (useless use of cat) :

cat my_patch.diff | patch -p0

Depth of the application:

e.g. let's suppose a patch has to modify :

vcl/source/aqua/source/window/salframeview.mm vcl/source/aqua/source/gdi/salprn.cxx vcl/source/aqua/inc/salframeview.h

You can :

apply the patch from


 * the root of the sources :

patch -p0 < my_patch.diff


 * inside vcl :

patch -p1 < my_patch.diff


 * inside vcl/aqua

patch -p2 < my_patch.diff

You cannot apply patch from elsewhere, because the paths will no longer match with the one every of the file contained in it.


 * mix of applying patches + svn use

e.g. you did a wrong change in a module, and you want to reverse it directly :

cd module

svn diff apath/afile.cxx | patch -R -p0

for the entire local tree :

svn diff. | patch -R -p0

Rebuild a module where a patch has been applied

 * Introduction

We suppose we modified some files, and we need to rebuild a lib. The scheme is always the same, in every module concerned by the build.

- the first prj/build.lst does contain the modules dependencies, means all the listed modules are prerequisites - everything built inside a module is put in type_os_proc.pro

e.g. on Mac OS X, type == unx, os == macx , I for Intel -> output dir is unxmacxi.pro

Note: have a look in solenv/inc -> all the possible arch/os have their own makefile, containing the essential for the build.

The last modification date is used to check the dependencies.

Rule : If a .o is older than it's depenencies, it is rebuild -> once you modified a file ( touch file is enough), build in a module will create a new lib


 * rebuild libvclmxi.dylib on Mac ( .so on Linux, .dll on Windows )

Hypothesis : we suppose the build is completed, and successfull.

cd vcl touch aqua/source/gdi/sallayout.cxx build

If you are in aqua/source/gdi, and you want to rebuild *only* the files listed in the makefile in the current dir, do :

dmake killobj build

Once done, and if you want to see the changes packaged, :

deliver cd ../instsetoo_native build # will rebuild a new installset

Else, if you just want to test your lib, put it in the right subdir (probably in &lt;Install_dir&gt;/OpenOffice.org.app/Contents/basis-link/program on Mac OS X )

Build including symbols
Example

-> in vcl

cd vcl mv unxmacxi.pro unxmacxi.pro_back # keep the normal build build debug="a_non_empty_sting" # means " build debug=t " is ok

The final lib, including symbols for debugging, will be in unxmacxi.pro/lib (on Mac OS X )

Replace the one already in &lt;Install_dir&gt;/OpenOffice.org.app/Contents/basis-link/program on Mac OS X

To debug using gdb,do :

cd &lt;Install_dir&gt;/OpenOffice.org.app/Contents/program

gdb --args soffice apath/afile

"r" (to start) .. and so on;

Happy debugging !

gdb basics
FIXME : make the look of the log more .. appealing ;)

Candidates ?

TODO : add my document providing the most usefull gdb commands

Outline of the ClassRoom


 * Prerequisites for the test
 * Reminder about what happens when building in a module
 * Add symbols in a library
 * Introduction of gdb use
 * Launch OOo using gdb
 * Play with it (discovery)

[18:05] ericb2 So today, we'll start playing with gdb + Ooo

[18:05] ericb2 who does have a full OOo build at hand ?

[18:06] ericb2 ok :)

[18:06] ericb2 As pre-requisites, I'll suppose :

[18:06] ericb2 - there is a complete build working already

[18:06] ericb2 - there is a working installset, and we will launch it using the terminal [18:06] ericb2 Thus, if you want to redo at home, or later, you just have to read and try

[18:07] ericb2 Reminder : what happens when something is built

[18:07] ericb2 we'll use &lt;module&gt; for whatever subdir of the OOo tree, aka "module" most of the time

[18:08] ericb2 &lt;module&gt;/prj/build.lst does contain the list of the subdirs containing a makefile

[18:08] ericb2 Means: Every product is built in the output dir. e.g. : unxmacxi.pro on Mac Intel

[18:08] ericb2 we have the same tree inside all the modules:

[18:08] ericb2 unxmacxi.pro/bin

[18:09] ericb2 unxmacxi.pro/lib

[18:09] ericb2 unxmacxi.pro/inc

[18:09] ericb2 ... and so on (look yourself )

[18:09] ericb2 to rebuild a module, just remove this directory

[18:09] ericb2 Once all the .o are build, the libs, and/or the binaries / resources / whatever are "delivered" from the unxmacxi.pro dir to the solver

[18:11] ericb2 The information providing the list of what has to be delivered is always in : &lt;module&gt;/prj/d.lst

[18:12] ericb2 these files are text files, using a "Windows" separator, but this is not a problem at all

[18:12] * l_zahir (n=chatzill@142.204.16.10) has joined #education.openoffice.org

[18:13] ericb2 If we summarize : a normal build provides binaries like libraries, who are stripped when the are delivered. Between the unxmacxi.pro and their place in the "solver "

[18:14] ericb2 Important: to be able to trace using gdb, we'll need to add symbols, lines of code and a lot of information inside the binaries

[18:14] ericb2 Howto add symbols in a library ?

[18:14] ericb2 1) first approach

[18:15] ericb2 -> look at configure extra option : --disable-strip-solver

[18:15] ericb2 To verify by yourself, just place you at the root of the sources (since DEV300_m40, there is no longer config_office subdir)

[18:15] ericb2 and do : ./configure --help | grep -4 solver

[18:16] ericb2 you'll have several lines explaining the right option

[18:16] ericb2 Tip : if you're familiar with configure, better read configure itself, more informative ;-)

[18:17] ericb2 and if you know a bit of autoconf, you can even hack configure.in, and run autoconf to regenerate a new configure :)

[18:18] ericb2 The first approach has a drawback : just a bit of information is inside the binary, and that's not enough most of the time,

when you have a complex problem to solve

[18:19] ericb2 2) second approach

[18:19] ericb2 consider only a part of the code, for tracing

[18:20] ericb2 The method is equivalent to use --enable-debug at configure time, but nobody uses this option. the reason is simple : all libraries become huges, and OOo won't probably launch correctly.

[18:21] ericb2 e.g. : the libsw (writer) becomes 660MB heavy

[18:22] fardad ericb2: when you say correctly, does it mean it will be too slow, or it will not function properly?

[18:22] Kamots wow, that's a lot of extra weight

[18:23] ericb2 fardad: yes, imagine 10 libs of 500MB every + some other 100MB and so on

[18:23] ericb2 Kamots: I'll explain you how to proceed

[18:23] fardad wow, :o

[18:24] ericb2 Other important information

[18:24] ericb2 about assertions

[18:24] ericb2 There is another option in configure

[18:24] ericb2 --enable-dbgutil

[18:25] ericb2 Include additional debugging utilities, such assertions, object counting, etc. Larger build.

[18:25] ericb2 Independent from --enable-debug

[18:25] ericb2 the *second one* does concern assertions in the code :

[18:25] ericb2 DBG_ASSERT( !(rALR.flags & kATSGlyphInfoTerminatorGlyph),

[18:25] ericb2 "ATSLayout::InitGIA: terminator glyph not marked as deleted!" );

[18:26] ericb2 -> if the condition is not verified -> boom .. and a window will appear, containing the message

[18:26] ericb2 if --enable-dbgutil is not in the configure command line, assertions are not included

[18:27] ericb2 As you understood, assertions are for development, not for end users ;-)

[18:27] ericb2 So, we use to add symbols for debugging for some libs, in a given module only

[18:27] ericb2 Counterpart : needs to rebuild the module

[18:28] ericb2 The process is very simple :

[18:28] ericb2 cd &lt;module&gt;

[18:28] ericb2 mv unxmacxi.pro unxmacxi.pro_backup

[18:28] ericb2 build debug=t

[18:28] ericb2 Do *always* a backup of your build, because the binaries in the output tree, do match with stamps in the solver

[18:29] ericb2 if you modify something, you'll have to redo a build, and a "deliver". Elser, the build can break at postprocess, or at then end, because the stamp between the solver and the module do not match

[18:29] ericb2 that's just harmless, but if you are not aware, you can lose a while before someone explains you what happens

[18:31] ericb2 As example, I'll rebuild a little lib, to show you the difference

[18:31] ericb2 cd apple_remote/

[18:32] ericb2 source ../MacOSXX86Env.Set.sh

[18:32] ericb2 sorry, I forgot :-)

[18:32] ericb2 mv unxmacxi.pro unxmacxi.pro_back

[18:32] ericb2 build debug=t

[18:32] ericb2 Important: whatever you put, will work

[18:33] ericb2 t is one letter, but once the string is not empty, debug is true

[18:33] ericb2 means all the code included between #ifdef DEBUG ... #endif or some other macros, will be included

[18:34] ericb2 e.g. :

[18:34] ericb2 #ifdef DEBUG

[18:34] ericb2 // debug purpose

[18:34] ericb2 NSLog(@"reset... (after listening to remote)");

[18:34] ericb2 #endif

[18:34] ericb2 -> in the terminal, I'll see the information

[18:34] ericb2 NSLog is sort of cout

[18:35] fardad ic,

[18:35] ericb2 After the rebuild :

[18:35] ericb2 ls -l unxmacxi.pro/lib/libAppleRemotemxi.dylib

[18:35] * lgodard has quit ("Leaving.")

[18:35] ericb2 -rwxr-xr-x 1 ericb ericb 159932 Feb 19 18:31 unxmacxi.pro/lib/libAppleRemotemxi.dylib

[18:35] ericb2 ls -l unxmacxi.pro_back/lib/libAppleRemotemxi.dylib

[18:36] ericb2 -rwxr-xr-x 1 ericb ericb 52436 Feb 12 14:31 unxmacxi.pro_back/lib/libAppleRemotemxi.dylib

[18:37] ericb2 the first one does contain strings and a lot of other stuff

[18:37] ericb2 Now .. Launch OOo in a terminal :)

[18:37] ericb2 before, we'll copy the lib in the bundle

[18:37] IZBot News from cws: native227: created

[18:38] ericb2 For the rest, my bundle is in the Desktop/test_eraser folder (I'm on Mac OS X )

[18:38] ericb2 Means, the Bundle is the dir : ~/Desktop/test_eraser/OpenOffice.org.app

[18:38] ericb2 So, I'll open a terminal, and I'll do :

[18:39] ericb2 cd ~/Desktop/test_eraser/OpenOffice.org.app/Contents/program

[18:39] ericb2 the idea, is to start gdb form the directory containing soffice (the binary )

[18:39] ericb2 and the command line is :

[18:40] ericb2 gdb --args ~/Desktop/est.odp

[18:40] ericb2 you'll see gdb tell you a lot of things. If you don't want to see that the next time, you can add -q (for quiet) option

[18:41] ericb2 as you can see nothing happens :)

[18:41] ericb2 the reason is: the binary is not "running"

[18:42] ericb2 oops, sorry

[18:42] ericb2 gdb --args soffice ~/Desktop/est.odp

[18:42] ericb2 is the right command line

[18:42] ericb2 to redo; just enter "q"

[18:42] ericb2 and type the correct command

[18:43] ericb2 now, type r ( shortcut for "run" )

[18:43] ericb2 -> OOo will start

[18:43] ericb2 and open the file

[18:44] ericb2 in the terminal, you no longer have the control. To stop the execution, do "CTRL-C"

[18:44] ericb2 Program received signal SIGINT, Interrupt.

[18:44] ericb2 0x90009cd7 in mach_msg_trap

[18:44] ericb2 (gdb)

[18:44] ericb2 OOo is stopped

[18:44] ericb2 you can enter whatever command, like " info frame "

[18:45] ericb2 to continue, type : c

[18:45] ericb2 The result is : (gdb) c

[18:45] ericb2 Continuing.

[18:45] ericb2 and OOo is no longer stopped

[18:45] ericb2 Add a breakpoint

[18:45] fardad amazing...

[18:46] ericb2 fardad: I know this is difficult like that, but people will redo later, and ask whenever they want

[18:46] ericb2 on the channel

[18:46] ericb2 we'll explain them

[18:46] fardad I understand

[18:47] ericb2 Let's add a breakpoint now

[18:47] ericb2 to know whether breakpoints are set or not, the command is :

[18:47] ericb2 info b

[18:47] ericb2 (means info breakpoints)

[18:48] ericb2 exactly :

[18:48] ericb2 CTRL-C

[18:48] ericb2 info b

[18:48] ericb2 The result is :

[18:48] ericb2 (gdb) info b

[18:48] ericb2 No breakpoints or watchpoints.

[18:48] ericb2 of course

[18:48] ericb2 so let's set one

[18:49] ericb2 Since only libAppleRemotemxi.dylib has symbols, I'll have to set one in whatever file included

[18:49] ericb2 say RemoteMainController.m

[18:49] ericb2 We can either choose a method

[18:50] ericb2 Syntax : b 'class:myMethod'

[18:50] ericb2 or at some line :

[18:50] ericb2 Syntax : b RemoteMainController.m:118

[18:50] ericb2 The result is :

[18:50] ericb2 (gdb) b RemoteMainController.m:118

[18:50] ericb2 Breakpoint 1 at 0x338e1ea: file RemoteMainController.m, line 118.

[18:51] ericb2 and using the up/down arrow, the history is available (no need to type several times the same command ;)

[18:51] ericb2 (gdb) info b

[18:51] ericb2 Num Type Disp Enb Address What

[18:51] ericb2 1 breakpoint keep y 0x0338e1ea in -[MainController remoteButton:pressedDown:clickCount:] at RemoteMainController.m:118

[18:52] ericb2 The line is inside a method, I'll hit every time I'll be in presentation mode, and when I'll hit a key

[18:53] ericb2 start the presentation, and when I type a key, I see:

[18:53] ericb2 Breakpoint 1, -[MainController remoteButton:pressedDown:clickCount:] (self=0x3433bf0, _cmd=0x338f994, buttonIdentifier=kRemoteButtonPlay, pressedDown=1 '\001', clickCount=1) at RemoteMainController.m:118

[18:53] ericb2 118 pressed = @"(pressed)";

[18:54] ericb2 and the presentation is stopped

[18:54] ericb2 to continue, I have several choices :

[18:54] ericb2 n -> next instruction

[18:54] ericb2 s -> next group of instruction

[18:54] ericb2 c -> continue

[18:54] ericb2 l does list the matching code

[18:55] ericb2 For instance :

[18:55] ericb2 (gdb) l

[18:55] ericb2 113 #ifdef DEBUG

[18:55] ericb2 114 NSString* buttonName = nil;

[18:55] ericb2 115 #endif

[18:55] ericb2 116 if (pressedDown)

[18:55] ericb2 117 {

[18:55] ericb2 118 pressed = @"(pressed)";

[18:55] ericb2 119

[18:55] ericb2 120 #ifdef DEBUG

[18:55] ericb2 121 switch(buttonIdentifier)

[18:55] ericb2 122 {

[18:55] ericb2 Current language: auto; currently objective-c

[18:55] ericb2 (gdb)

[18:55] ericb2 I can go up or continue

[18:55] ericb2 and if I need info, I can check for the stack of frames

[18:56] ericb2 (gdb) bt

[18:56] ericb2 -> will return the frames, in *reverse* order. Means, the #0 is the last one, and #1 the one before .. and so on [ 18:56] IZBot no issue with number 1

[18:56] ericb2 ooops :-)

[18:57] ericb2 Lets choose "n" for next

[18:57] ericb2 The result is :

[18:57] ericb2 (gdb) n

[18:57] ericb2 121 switch(buttonIdentifier)

[18:57] ericb2 IMPORTANT: the current line is NOT executed yet

[18:57] ericb2 e.g. if you have a= 10;

[18:57] ericb2 p a

[18:57] ericb2 can return whatevert

[18:58] ericb2 *only* n will validate the line. This is the context

[18:58] ericb2 execution context

[18:58] ericb2 n will continue ..

[18:58] ericb2 (gdb) n

[18:58] ericb2 126 case kRemoteButtonPlay: buttonName = @"Play"; break; // MEDIA_COMMAND_PLAY

[18:59] ericb2 and of course, we can check for the variable :

[18:59] ericb2 (gdb) p buttonIdentifier

[18:59] ericb2 $1 = kRemoteButtonPlay

[18:59] ericb2 so, it means the slideshow will start ...

[19:00] ericb2 Next instruction :

[19:00] ericb2 (gdb) n

[19:00] ericb2 140 [ self postTheEvent:buttonIdentifier modifierFlags: 0 ];

[19:00] ericb2 -> means the remote sent a "Play" and I'll inform the vcl there is an event, containing the "Play" information. vcl will forward to Impress, and the slideshow will start

[19:01] * jza (n=jza@189.132.182.161) has joined #education.openoffice.org

[19:02] * xerakko (n=Miguel@debian/developer/xerakko) has joined #education.openoffice.org

[19:02] ericb2 This is only the introduction (if people are intersted, we can do another workshop about gdb another day )

[19:02] ericb2 To quit *cleanly*

[19:02] ericb2 delete the brekapoints :

[19:02] ericb2 d

[19:02] ericb2 confirm with yest

[19:02] ericb2 yes

[19:02] * lgodard (n=lgodard@LAubervilliers-153-51-9-99.w193-252.abo.wanadoo.fr) has joined #education.openoffice.org

[19:02] ericb2 c

[19:02] ericb2 to continue

[19:02] ericb2 and then Quit OOo using CMD Q

[19:03] ericb2 The result is :

[19:03] ericb2 Program exited normally.

[19:03] ericb2 (gdb)

[19:03] ericb2 Then quit gdb :

[19:03] ericb2 q

[19:03] ericb2 -> will give you the normal prompt

[19:03] ericb2 back

[19:03] ericb2 Questions ?

[19:04] * WFred__ (n=chatzill@net1.senecac.on.ca) has joined #education.openoffice.org

[19:04] BartB not at the moment, might have some later

[19:05] ericb2 I forgot, to affect a value, the command is "set"

[19:05] ericb2 e.g. :

[19:05] MrBraini ericb2: last lecture you stated the notes from the lectures will be placed on the wiki? where can we find the notes in the wiki?

[19:05] ericb2 (gdb) : set a=10

[19:05] daeseon_ not now may be later.

[19:05] ericb2 MrBraini: I'll put them on the wiki, yes

[19:05] l_zahir is there a y way so we can see multiple line before their execution?

[19:05] l_zahir lgodard

[19:05] ericb2 l_zahir: list ?

[19:05] ericb2 l_zahir: l is the shortcut

[19:06] ericb2 l_zahir: I forgot, there is another way to break, using conditional breakpoint

[19:06] l_zahir oksu during debugging or before?

[19:06] ericb2 l_zahir : you can go up and down in the frames

[19:06] l_zahir lgodard

[19:06] ericb2 l_zahir to retrieve a context

[19:06] l_zahir ok, thanks

[19:07] ericb2 l_zahir: I think, the best is to redo a workshop, with everything ready

[19:07] ericb2 l_zahir: but nothing will replace the experiences [ 19:07] l_zahir sure

[19:08] &lt;ericb2&gt; l_zahir: no problem.

[19:08] &lt;ericb2&gt; BTW, I provided a patch for rhino and scripting

[19:08] &lt;l_zahir&gt; Oh, good :)

[19:08] &lt;ericb2&gt; was my fault: two modules where concerned, and this is what caused some issues

[19:08] &lt;ericb2&gt; l_zahir: one minute, I'll retrive the URL

[19:09] &lt;l_zahir&gt; thanks

[19:09] &lt;l_zahir&gt; :)

[19:09] &lt;ericb2&gt; http://eric.bachard.free.fr/mac/aquavcl/patches/aqua_February2009/17th_february/complete_rhino_and_scripting_patch.diff

[19:09] &lt;ericb2&gt; l_zahir: this patch should apply cleanly on m40

[19:09] &lt;ericb2&gt; l_zahir: not sure it will work, I'm not a Java specialist ;)

[19:10] &lt;ericb2&gt; ok, I'll have to stop.

[19:10] &lt;l_zahir&gt; I'll try

[19:10] &lt;ericb2&gt; If you have further questions, ask directly, and if I see them, I'll answer

[19:10] * Remaille (n=remi@abo-166-155-68.bdx.modulonet.fr) has joined #education.openoffice.org

[19:10] * ChanServ gives channel operator status to Remaille

[19:11] &lt;l_zahir&gt; sure

[19:11] &lt;ericb2&gt; Other questions ?

[19:12] &lt;ericb2&gt; If you have no other questions, I'll stop for a while, but in ~2 hours max, I'll be back.

[19:12] &lt;ericb2&gt; The content of the classroom will be on the wiki

LXR use
[Complete me]

Checkout the code
Preliminary:

- we suppose you have some bash knowledge, and some programming skills

- your .cvsrc file is ok (else ask on #education.openoffice.org )

Now, open a terminal, use bash, and do :

0 ) create the environment

If you don't have a proxy, do, (in a terminal) : export CVSROOT=":pserver:anoncvs@anoncvs.services.openoffice.org:/cvs"

There is a proxy, and nothing works using the line above, do, (in a terminal) : Let the proxy be 100.101.102.103 ( name proxy.machine.education.org ), and the open port 1234, then just do :

export CVSROOT=":pserver;proxy=100.101.102.103;proxyport=1234:anoncvs@anoncvs.services.openoffice.org:/cvs"

And if you ignore the IP address of the gateway, but you know its name, do, (in a terminal) : export CVSROOT=":pserver;proxy=proxy.machine.education.org;proxyport=1234:anoncvs@anoncvs.services.openoffice.org:/cvs"

IMPORTANT : proxy.machine.education.org is just a fake name, as example. Please replace it with the one in your network :)

... it should work now (else, contact your sys admin).

For the next step, create TMP dir (command: mkdir TMP )

cd TMP

1) checkout vcl module from DEV300_m31

cvs co -r DEV300_m31 dtrans

Question: what happens ?

Download all OpenOffice.org tree :

mkdir DEV300_m31

cd DEV300_m31

cvs -4 co -r DEV300_m31 OpenOffice2

( -z4 is optional )

-> once done ( can be very long), and if no error occurs, you got all OpenOffice.org source code from DEV300_m31 Milestone !!

Create a patch
2) Modify one file, do "cvs up", and comment on the result

3) using grep, retrieve the name of the milestone in the sources

4) checkout vcl from a cws under development

cvs -z4 co -r cws_dev300_aquavcl07 vcl

5) retrieve the cwsname in the sources

6) analyse the list of the subdirectories vcl contains

7) modify the code in vcl/source/gdi/sallayout.cxx

(write whatever you want, respecting C++ syntax prefered ;)

8) create a diff with the OpenOffice.org repository

change directory outside of vcl

in the current dir ( TMP ), do :

cvs diff -u vcl > my_pretty_patch.diff

9) What does contain the patch ?

Apply and Reverse a patch

 * Simulate a patch application


 * Apply it for true

10) How reverse your changes ?

11) Be sure you have enough place on your hard disk ( count 2GB )

Math TEST
This is my personal page ...

Draft (test de l'extension Math)

$$\frac{dy}{dx}$$

&Agrave; &Aacute; &Acirc; &Atilde; &Auml; &Aring; &AElig;

&Ccedil; &Egrave; &Eacute; &Ecirc; &Euml; &Igrave; &Iacute;

&Icirc; &Iuml; &Ntilde; &Ograve; &Oacute; &Ocirc; &Otilde; &OElig;

&Ouml; &Oslash; &Ugrave; &Uacute; &Ucirc; &Uuml; &szlig;

&ccedil; &egrave; &eacute; &ecirc; &euml; &igrave; &iacute;

Une demi-droite est caractérisée par une équation et une inéquation :
 * $$\left\{\begin{matrix} ax + by + c = 0 \\ a'x + b'y + c > 0 \end{matrix}\right.$$

Ensembles usuels

 * $$\mathbb{N}$$, ensemble des Entier naturel|entiers naturels.
 * $$\mathbb{Z}$$, ensemble des Entier relatif|entiers relatifs.
 * $$\mathbb{D}$$, ensemble des Nombre décimal|nombres décimaux.
 * $$\mathbb{Q}$$, ensemble des Nombre rationnel|rationnels.
 * $$\mathbb{R}$$, ensemble des nombres réels.
 * $$\mathbb{R_+}$$, ensemble des nombres réels positifs ou nuls.
 * $$\mathbb{R_-}$$, ensemble des nombres réels négatifs ou nuls.
 * $$\mathbb{C}$$, ensemble des nombres complexes.
 * $$\mathbb{N^*}, \mathbb{Z}^*, \mathbb{D^*}, \mathbb{Q^*}, \mathbb{R^*}, \mathbb{R_{+}^*}, \mathbb{R_{-}^*}, \mathbb{C^*}$$, les mêmes ensembles privés de zéro.

Intégration par parties
(test Math)

Théorème :

Soit $$I\,$$ un intervalle. Soient $$f\,$$ et $$g\,$$ deux fonctions dérivables sur $$I\,$$ telles que les fonctions $$f'\,$$ $$g\,$$ et $$f\,$$ $$g'\,$$ soient continues sur $$I\,$$. Soit $$a\,$$ un réel dans $$I\,$$. Alors, pour tout réel $$x\,$$ dans $$I\,$$
 * $$\int_a^x f^{\prime}\left( t\right) g\left( t\right) dt=\left[f\left( t\right) g\left( t\right)\right]_a^x -\int_a^x f\left( t\right) g^{\prime }\left( t\right) dt\,$$

En particulier :

Théorème :

Soient $$a\,$$ et $$b\,$$ deux réels tels que $$a < b\,$$. Soient $$f\,$$ et $$g\,$$ deux fonctions dérivables sur $$\left[a, b\right]\,$$ et telles que les fonctions $$f'\,$$, $$g\,$$, $$f\,$$ et $$g'\,$$ soient continues sur $$\left[a, b\right]\,$$. Alors :
 * $$\int _{a}^{b}f^{\prime}\left( t\right) g\left( t\right) dt=\left[ f\left( t\right) g\left( t\right) \right] _{a}^{b}-\int _{a}^{b}f\left( t\right) g^{\prime }\left( t\right) dt\,$$

On peut généraliser cette formule aux fonctions de classe $$C^{k+1}$$


 * $$\int_{a}^{b} f^{(k+1)}(x) g(x)\,dx = \left[ \sum_{n=0}^{k}(-1)^{n} f^{(k-n)}(x) g^{(n)}(x) \right]_{a}^{b} + (-1)^{k+1} \int_{a}^{b} f(x) g^{(k+1)}(x) \,dx$$

Équation de propagation (ou équation des cordes vibrantes)
Cette EDP, appelée équation de propagation des ondes, décrit les phénomènes de propagation des ondes sonores et des ondes électromagnétiques (dont la lumière). La fonction d'onde inconnue est notée u(x,y,z,t), t représentant le temps :


 * $${\part^2 u \over \part x^2} + {\part^2 u \over \part y^2} + {\part^2 u \over \part z^2} = {1 \over c^2} {\part^2 u \over \part t^2}$$

Le nombre c représente la célérité ou vitesse de propagation de l'onde u.

En notation d'analyse vectorielle, en utilisant l'opérateur laplacien $$ \Delta $$ :
 * Soit $$ \psi \equiv u\left(x,y,z,t\right) \ $$, fonction d'onde.
 * $$ \Delta \psi \ = \ {1 \over c^2} {\part^2 \psi \over \part t^2}$$

Voir aussi onde sismique, onde mécanique, Son (physique), Onde sur une corde vibrante, Onde stationnaire dans un tuyau, Equations de Maxwell