PDA

View Full Version : announce: qmdilib 0.0.1



elcuco
11th June 2006, 21:46
Hi all,

I would like to announce the first official release of qmdilib.

This is a simple mdi library for Qt 4. The goal of this project,
is to provide an easy way to modifying menus and toolbars of windows
on demand. This can be used to present different menus and toolbars to
widgets inside a QTabWidget, hiding or showing a different set of menus
on demand or even enabling a small plugin system.

The library is fully documented, and contains some demostrations. It should compile
flawlessly (no warnings) with a single "qmake; make" on the root directory of the
project. It is known to work on Windows and Linux, and there is no reason why it
should not work on other platforms supported by Qt4. Currently only gcc is tested,
but other compilers should be able to compile this library.

The library contains a small documentation, and 2 demos (ignore the 3rd one... ;) )

The code can be downloaded from:
http://kde-apps.org/content/show.php?content=40721

Enjoy!

fullmetalcoder
12th June 2006, 16:06
hi elcuco,

I wondered how much time it would take to announce it. ;)
I haven't looked at the source yet but from what I already know and I read at KDE-apps.org it's quite good but need improvements, particularly an use of the already existing MDI framework of Qt4 (I'm talking about QWorkspace). BTW feel free to get some inspiration from the last version of Edyuk which, as you already know, use a modified version of qmdilib mixed with QWorkspace...:)

I have to mention the only drawback I found : you can't mix translations, qmdilib and plugins... Indeed it looks like translators doesn't have effect on plugins; it must be due to the way the Trolls implemeted translation (too much context informations...:eek: )


Enjoy!
I second this!!! :D

wysota
12th June 2006, 18:38
Indeed it looks like translators doesn't have effect on plugins; it must be due to the way the Trolls implemeted translation (too much context informations...:eek: )


I think that there is no reason for it not to work if your plugins make sure that its translations are installed in the translator object.

fullmetalcoder
13th June 2006, 13:53
I think that there is no reason for it not to work if your plugins make sure that its translations are installed in the translator object.

And that is the problem! I can't do a translation for any language and any possible plugin... The problem is that qmdilib uses string to identify menus and modify them. If I want these menu to be tranlatable I put a tr() around their name, huh? but what happens if a plugin doesn't bring a translation in the same language (and the same translation for the menu or toolbar titlle)? Then two menu get created and that's very wrong!!! I'm thinking about using phrasebooks instead of regular .ts and .qm but I don't know how to load them properly in the translator... Plus I'm too lazy to create them "by hand" with Qt Linguist so I'll need to create another program : ts2qph to take existing data in a .ts file and create the appropriate .qch... Bunch of work, isn't it?

wysota
13th June 2006, 14:23
And that is the problem! I can't do a translation for any language and any possible plugin... The problem is that qmdilib uses string to identify menus and modify them. If I want these menu to be tranlatable I put a tr() around their name, huh? but what happens if a plugin doesn't bring a translation in the same language (and the same translation for the menu or toolbar titlle)? Then two menu get created and that's very wrong!!! I'm thinking about using phrasebooks instead of regular .ts and .qm but I don't know how to load them properly in the translator... Plus I'm too lazy to create them "by hand" with Qt Linguist so I'll need to create another program : ts2qph to take existing data in a .ts file and create the appropriate .qch... Bunch of work, isn't it?

No, not at all... I don't see a problem here. If you control items by their original (untranslated) names, you won't get duplicates. There is a nice example on doing it at the level of loading language names based on the translation of the word "English" in Gui Programming With Qt3.

fullmetalcoder
13th June 2006, 14:27
And where could I find this example, I mean for free? Are you sure it will help in my case since I'm using : Qt4, homemade mdi-library, plugins ??

wysota
13th June 2006, 14:28
Look at our links section, there is a link to the book there.

fullmetalcoder
13th June 2006, 15:25
Look at our links section, there is a link to the book there.
Sure of that? I didn't find it!:confused:

wysota
13th June 2006, 17:05
Sure of that? I didn't find it!:confused:

No, I'm not, Jacek cares about the section, I was sure the link was there. If it's not, use google or even search the forum, the book was surely referenced more than once.

elcuco
19th July 2006, 18:44
Hi,

I update the library to V0.0.2. Now most flicker issues have been resolved. I added some demos which explain how to build the code into static and dynamic libraries (at least on Linux).

The code has not been tested very much, this is why I am calling it "pre".

http://kde-apps.org/content/show.php?content=40721

elcuco
21st July 2006, 20:16
The released version is now 0.0.2, on the last post it was a pre release.

The code should work also on win32 now.

elcuco
7th October 2006, 22:44
I just released version 0.0.3 now. The changelog is:


new feature: QWorkspace children are also checked for qmdiClient interface,
feature coded by Nox PasNox <pasnox@gmail.com>
new feature: merge point for qmdiActionGroup
new class: qmdiWorkspace, a qmdiServer based on QWorkspace
core refactoring: qmdiClient does not contain QObject *self any more
code refactoring: qmdiServer now contains a pointer to the host (was in qmdiTabWidget)
code refactoring: demos should be easier to read, and hopefully maintain
removed most internal frames from all widgets in demos, the demos will look nicer
all the documentation has been spell checked


You can get the source as usual at:
http://kde-apps.org/content/show.php?content=40721

fullmetalcoder
9th October 2006, 16:18
Do you plan do provide integration, as every lib should IMHO ? I basically mean :
* An "install" target
* A feature file (.prf) so that using qmdilib would be as simple as : "CONFIG += qmdilib"

elcuco
30th June 2007, 02:45
Version 0.0.4 is released. The Changelog is:

0.0.4 - 29 Jun 2007 - Diego Iastrubni
* Documentation re-created using doxygen 1.4.7
* code refactoring: qmdiClient - qmdiServer is now a public member
* new feature: qmdiActionGroup - added support for submenus
* new feature: qmdiActionGroup - added support for adding QActionGroup
* new feature: qmdiActionGroup - merge points are computed at run time from list of added groups
* code refactoring: qmdiHost - updateGUI can has been updated, see documentation
* code refactoring: qmdiServer - a lot of functions moved from qmdiTabWidget
* code refactoring: qmdiTabWidget contains less implementation details (see qmdiServer)
* code refactoring: qmdiTabBar has been removed, qmdiTabWidget uses an event filter now
* new demo: plugin demo is working now, soon to be ported to the main library

Code can be downloaded from: http://qt-apps.org/content/show.php/qmdilib?content=61365

elcuco
26th October 2008, 00:48
I am working on version 0.0.5, and I am releasing a developer snapshot. Meanwhile the code is extended a little and the license is now LGPL 2/3.

This is the changelog so far

code is released now under a dual license: (L)GPL 2 or 3
code refactoring: qmdiClient::mdiClientFileName() should be used instead of old "filename"
code refactoring: qmdiClient::name has been renamed to qmdiClient::mdiClientName
code refactoring: include files for qmdiActionGroup and qmdiActionGroupList changed from
"actiongroup.h" and "actiongrouplist.h" into "qmdiactiongroup.h" and qmdiactiongrouplist.h"
Transitional includes have been added, to be removed next version, please update your code
new feature: qmdiClients are notified of (un)merged from a host
new feature: qmdiTabWidget will hide the tabbar if the number of tabs is less then 2
new feature: when qmdiHost adds a qmdiClient if that client is also a widget, add it's menus+toolbars actions to the widget.
new feature: you can tell qmdiHost not to update it's GUI by changing qmdiHost::updateMenusAndToolBars


The plugin demo is more functional in this development snapshot but still not at the level I want it to be, this is one of my focuses for the 0.0.5 version. I hope to get also QScript plugins, and whatever more I find it needed.

I have not uploaded the file to kde-apps not qt-apps, so you can download the code from the projects GoogleCode page: http://qtedit4.googlecode.com/files/qmdilib-r304.tar.gz

Edit:
It would be a good idea to link to a page which describes what this project is... Here is the documentation page of this project (more documentation is available in the downloaded file): http://code.google.com/p/qtedit4/wiki/qmdilib

alxobr
19th June 2011, 17:19
Plus I'm too lazy to create them "by hand" with Qt Linguist so I'll need to create another program : ts2qph to take existing data in a .ts file and create the appropriate .qch... Bunch of work, isn't it?

Just in case someone's looking for such a tool, it already exists and is included in Qt since Qt 4.5. Its name is lconvert.
$> lconvert --input-file my.ts --input-format ts --output-file my.qph --output-format qph

hints to get there: ts2qph qph2ts tstoqph qphtots ts2pbk pbk2ts tstopbk pbktots

Cheers,

elcuco
28th August 2018, 09:27
Version 0.0.5 is released: https://github.com/elcuco/qmdilib/releases/tag/v0.0.5

Note that the code is now in github. The "binary" there contains the code, and a doxygen build of the documentation (besides that - the zip from github should be the same). Yes, more than 12 years developing this library... man, I feel old. BTW: the original releases are here: https://www.linux-apps.com/content/show.php?content=40721 or https://www.linux-apps.com/content/show.php/qmdilib?content=61365, but I cannot reset the password (kde-apps.org and qt-apps.org merged, who knew..). If anyone can help with that - I will be happy.

Changelog is


code is released now under a dual license: (L)GPL 2 or 3
code refactoring: qmdiClient::mdiClientFileName() should be used instead of
old "filename"
code refactoring: qmdiClient::name has been renamed to qmdiClient::mdiClientName
code refactoring: include files for qmdiActionGroup and qmdiActionGroupList changed
from "actiongroup.h" and "actiongrouplist.h" into "qmdiactiongroup.h" and qmdiactiongrouplist.h"
Transitional includes have been added, to be removed next version, please update your code
code refactoring: qmdiActionGroupList::updateMenu() is deprecated, use
qmdiActionGroupList::updateMenuBar()
core refactoring: no need to pass the parnet on the constructor, instead the
qmdiTabWidget and qmdiWorkspace will check for the mdi host when mdiClients
are added
new feature: qmdiClients are notified of (un)merged from a host
new feature: qmdiTabWidget will hide the tabbar if the number of tabs is less
then 2 widgets
new feature: when qmdiHost adds a qmdiClient if that client is also a widget,
add it's menus+toolbars actions to the widget.
new feature: you can tell qmdiHost not to update it's GUI by changing
qmdiHost::updateMenusAndToolBars
new feature: you can convert a qmdiActionGroupList to a single popup menu
build system: redesign the build system to ease the usage of the library inside your application
build system: building by default shared and static libraries