[bt-devel] namespace problems

Joachim Ansorg bt-devel@crosswire.org
Mon, 21 Oct 2002 19:24:45 +0200


Most Qt apps simply don't offer Tooltips and whatsthis helps :)
Often they're directly included in the source code at the position they're 
needed. But I like to have a structured and easy to navigate source tree. So 
having all in one place is a good idea for us.


Joachim

> Does Qt supply a standardized way to manage resources? I would think it
> would be a common problem that all Qt-based programs would have to
> address....
>
> -David.
>
> ----- Original Message -----
> From: "Nikolay Igotti" <Nikolay.Igotti@Sun.Com>
> To: <bt-devel@crosswire.org>
> Sent: Monday, October 21, 2002 4:34 AM
> Subject: Re: [bt-devel] namespace problems
>
> > Joachim, are you sure this namespace based approach is good way to do
> > i18n and resources management? I feel it's not. Maybe resourse file
> > +resouse manager would be better?
> >
> >  Nikolay.
> >
> > On Sat, 19 Oct 2002, Joachim Ansorg wrote:
> > > David White, I think this eMail is especially for you because you know
>
> the
>
> > > namespaces well.
> > >
> > > You pointed me into the direction to use namespaces for the treelike
>
> structure
>
> > > I wanted.
> > >
> > > Now I have something like
> > >
> > > namespace CResMgr {
> > >   inline const QString makeToolTip( const QString& text ) {
> > >     return text;
> > >   };
> > >   inline const QString makeWhatsThis( const QString& title, const
>
> QString&
>
> > > description )  {
> > >     return
>
> QString::fromLatin1("<center><B>%1</B></center><HR>%2").arg(title).arg(desc
>r iption);
>
> > >   };
> > >
> > >   namespace mainMenu { //Main menu
> > >     namespace file { //Main menu->File
> > >       namespace clearQueue {
> > >         const QString tooltip     = makeToolTip( i18n("Clear the
>
> printing
>
> > > queue") );
> > >         const QString whatsthis   = makeWhatsThis( tooltip, i18n("Clear
>
> the
>
> > > print queue of BibleTime. All items will be removed from the list and
>
> the
>
> > > print button will be disabled.") );
> > >         const QString icon        = QString::fromLatin1("queue");
> > >         const KShortcut accel     = KShortcut();
> > >         const char* actionName    = "fileClearQueue_action";
> > >       }
> > >       namespace print { //a standard action
> > >         const QString tooltip     = makeToolTip( i18n("Open the
> > > printerdialog") );
> > >         const QString whatsthis   = makeWhatsThis( tooltip, i18n("Open
>
> the
>
> > > printer dialog of BibleTime.  Here you can edit the print queue and
>
> assign
>
> > > styles to the items.") );
> > >       }
> > >       namespace quit { //a standard action
> > >         const QString tooltip     = makeToolTip( i18n("Close
>
> BibleTime") );
>
> > >         const QString whatsthis   = makeWhatsThis( tooltip, i18n("Close
> > > BibleTime and save the settings.") );
> > >       }
> > >     }
> > > }
> > > etc.
> > >
> > > But compiling BibleTime with this header included in two or more places
>
> I get
>
> > > the following compiler warnings about multiple symbol definitions:
> > >
> > > ./frontend/searchdialog/libsearchdialog.a(csearchdialog.o)(.data+0x0):
> > > multiple definition of
> > > `CResMgr::mainMenu::file::clearQueue::actionName'
> > > bibletime_init.o(.data+0x0): first defined here
> > > ./frontend/searchdialog/libsearchdialog.a(csearchdialog.o)(.data+0x4):
> > > multiple definition of
>
> `CResMgr::mainMenu::view::showMainIndex::actionName'
>
> > > bibletime_init.o(.data+0x4): first defined here
> > > ./frontend/searchdialog/libsearchdialog.a(csearchdialog.o)(.data+0x8):
> > > multiple definition of
>
> `CResMgr::mainMenu::mainIndex::search::actionName'
>
> > > bibletime_init.o(.data+0x8): first defined here
> > > ./frontend/searchdialog/libsearchdialog.a(csearchdialog.o)(.data+0xc):
> > > multiple definition of
>
> `CResMgr::mainMenu::window::loadProfile::actionName'
>
> > > bibletime_init.o(.data+0xc): first defined here
> > >
> > > How can I avoid these problems? I have no idea.
> > > Thank you very much for any help!

-- 
Joachim Ansorg
www.bibletime.de
www.ansorgs.de