On Sun, Jun 15, 2008 at 10:48:03PM +0200, Boris Faure (aka billiob) wrote:
> On Sun, Jun 15, 2008 at 21:26, Wesley S. <[EMAIL PROTECTED]> wrote:
> > Hello everyone,
> >
> > I wanted to discuss some ideas I had about user interface theming and 
> > plug-ins.
> 
> 1st, Welcome!
> 
> > 1) user interface theming. This is my idea:
> >
> > * If the user wants system/desktop integration he'll use either the Qt
> > 4, Cocoa or
> >  Gtk+ style (or EFL if the user runs E17).
> > * If the user wants to use a theme/skin, he'll have to use the EFL
> > interface, because
> >  I believe that one is 100% themable in an easy way. (KaKaRoTo, can
> > you confirm this?)
> It's one of the main ideas behind efl!
> (@Kkrt, i'm wonder if it'll be easy to change etk themes for just one
> application.)
Yes, really easy.. if you have in your .edj file some group
with name "etk.button" or whatever, then you can override
the look of etk/ewl with the same .edj file! :) but maybe
you need to do something like etk.settheme or whatever, not
sure about that yet.. but I know for sure (I asked) that
it's easy to do and easy to make it custom for one
application.

> 
> > * Alternatively, I would also like to create my own small skinning
> > engine for the Qt 4
> >  interface, based on Qt StyleSheets and the QUiLoader. I will talk
> > more about this in a minute.
> >  But are there any complaints for the fact that there will be 2
> > completely different theming engines?
> >  Who thinks that I should just drop my theming idea and leave it all to EFL?
> >
> > Now, about my Qt 4 theming system. I would like to use custom Qt 
> > StyleSheets to
> > provide the general style of the application (it's a lot like CSS, but
> > for widgets!) and supplement that
> > with user-created forms in Designer. The reason for this is simple:
> > Designer is a very easy tool
> > in which you can design forms, and it has a very good integrated Qt
> > StyleSheet system.
> >
> > Normally, you would compile the user interface to .py files, but I
> > want to take a different route.
> > Partially because of security concerns, and also because of
> > implementation defails.
> > Using QUiLoader I want to load in the .ui interface on the fly and do
> > sanity checks for the widgets
> > etc. (I will also provide a test_theme.py script for theming
> > development purposes). When the
> > .ui file passes the sanity check, my theming system will make the
> > needed connections between
> > the widgets and the code and that's all there will be to it.
> >
> > Theme designers for the Qt 4 interface will only have to do a few things:
> > * Design a theme (the layouts, buttons, etc) using the very good Qt
> > Designer tool
> > * Optionally use Qt StyleSheets in the theme to make it actually look themed
> > * Make sure that all the needed controls are on the form and have the right 
> > name
> > (otherwise the sanity check will fail and the system will fall back to
> > the default theme)
> >
> > I don't know if all this is the best way to do it (and I don't know
> > for sure if it's technically possible,
> > because I haven't tested it yet, but it should work...) but from my
> > perspective it's the best way
> > to create custom themes for the Qt 4 interface. What do you guys think?
> >
> > Here are two examples of what could be done with QSS theming (these
> > two examples have
> > the exact same layout and widget placement, but using the
> > aforementioned technique I want to make that
> > configurable as well)
> >
> > Example 1: Something with round corners and stuff..
> > http://85.17.105.113/~wesley/images/amsn_preview0_qt4_frontend.png
> > Example 2: Windows Live Messenger look-a-like..
> > http://85.17.105.113/~wesley/images/amsn_preview3_qt4_frontend.png
> >
> > I'm very interested in your thoughts about this.
> > Please tell me whether you think 2 theming engines would be a waste of
> > time or not,
> > and if you think they can both (EFL themes + Qt 4 themes) live happily 
> > together,
> > please tell me what you think about my theming engine idea for the Qt
> > 4 interface.
> 
> 
> With a theming engine for QT4, it'll look less desktop-integrated imo.
> I think the desktop integration thing is more about having the same
> buttons everywhere, having the same dialog boxes, the same filechooser
> everywhere... If you have a dark theme, you'll have the same dark
> buttons/grey background.
> You might loose the "perfect integration" if for example, the user
> have a dark theme, the login window is bright due to the theming.
> 
true, but then that's the choice to the user... if a user
wants his QT buttons/checkboxes/windows instead of the efl
non-desktop-integrated buttons/windows, but would still want
to see a different theme (like the WLM one), he should be
able to do it!
In the end, as I said in the previous mail.. what really
matter are those stupid dialog boxes... :s and.. most
probably the politics of people who want "their toolkit"..

> 
> >
> > 2) plug-ins. This is a challenging concept. Why? Because we have
> > multiple GUI's now.
> > One thing is certain: all plug-ins have to work on all user interfaces.
> >
> > I think the best way to implement a plug-in system is to actually
> > "force" the plug-in developers
> > to create their plug-ins in pure python without using any GUI toolkit.
> >
> > For the configuration of the plug-in, the plug-in developers should
> > make an XML file that
> > describes which options to configure and how they have to be
> > configured. This XML file
> > can then be read in and processed by the aMSN core. The aMSN core will then 
> > tell
> > the GUI interface which plug-ins there are available and what the
> > options of each plug-in
> > are. This is just an example of how it could go:
> >
> > <plugin>
> >  <name>Some example plug-in</name>
> >  <description>This is an example plug-in</description>
> >  <config>
> >    <bool default=True>Something that can be on or off</bool>
> >    <string default="">A line of text that the plug-in needs</string>
> >  </config>
> > </plugin>
> >
> > This XML file is read in by the core and the core sends something like:
> > addPlugin(PluginData) to the GUI.
> >
> > The GUI will then for example add the plug-in information to some tab
> > in it's configuration window
> > and create a checkbox for the bool value and an editable line of text
> > for the string value.
> >
> > Upon changing these values (and clicking apply or ok) the new
> > PluginData will be sent back
> > to the core.
> 
> We already have that in amsn :
> http://www.amsn-project.net/wiki/Dev:Plugin_Developer_Guide#Configuration
> Having something like that will be good. It should also be XML-based
> like your example.
> Also add a combobox to the widget items.
> I think it's a bit too early to think about the plugin system but i've
> got a lot of ideas for it.
> 
yeah too early still but it doesn't hurt to talk about it..

> > Of course this is very conceptual and doesn't take everything into
> > account yet.. For example,
> > what to do if the plug-in wants to provide an extra button or
> > something in the actual GUI?
> > This can probably be done as well, by extending the XML so plug-in
> > developers can add things
> > like "<gui><chatwindow><addbutton location="topright" value="Send
> > buzzer!">buzzer</addbutton></chatwindow></gui>"
> > but this would be a bit messy, I believe. Anyway, the core will
> > retrieve that name "buzzer" and send the needed stuff
> > to the GUI and set up a signal so that when the GUI informs the core
> > that the button is clicked, the needed action
> > is performed.
> 
> This very tricky. We'll need a very good design for that.
> 

whatever the core can do, the plugins can do by calling the
same abstracted gui API the core uses...

> > Well... I hope you can share some of your ideas about all this with me.
> > I believe that my idea for the plug-in system could be a lot better than 
> > this.
> > So please, if you know something better.. share it with us!
> >
> > PS: I think I rivalled KaKaRoTo's mail length!
> His answer will be longer :)
> 

ROFL!

> -- 
> Boris FAURE (aka billiob)
> 

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Amsn-devel mailing list
Amsn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/amsn-devel

Reply via email to