Here's a Silver Onion Blog entry: Some ideas I wanted to toss to the
crowd, so here they are.
=======================
http://marketing.openoffice.org/ooocon2004/presentations/friday/williams_ui_layout.pdf
 
Oh way cool. 
 
This outlines some of the stuff other people have worked out. It's a
very good outline. Though I'm going to change the order a little bit I
think.
 
I just heard something about OOo supporting XForms, and from what I
understand XForms is a standard similar to XUL only made by the W3C. I
was thinking about using XUL but there are some distinct benefits to
XForms, like you don't have to use javascript.
This definately needs more investigation into XForms. 
 
So what I think I'll do is this: 
 
1) Finish reading Dev Guide to familiarize myself with UNO 
2) Determine the file format for the UI files (Research XForms) 
 
Once the file format is chosen: 
 
3) Check for existing code that already supports importing the filetype 
4) Create or adapt any required interface to parse the UI files. 
 
I need to keep in mind as I'm doing this that this needs to be layout
oriented, as the presentation mentioned, and can't be in binary
format.
 
5) Create cross platform UNO control that will take the parsed data
and pipe it to the rendering plugin for that platform
6) Will need to create some rendering plugins as I go. 
 
I think I'll start with creating the following plugins, in approximatly tandem: 
 
Mac OSX - AQUA/Quartz [Cocoa not Carbon] 
Windows - MFC, I think... Need more research on what exactly this requires 
Unix/Linux/Solaris - I think these use GTK or QT or other engines.
Which one should I use initially, as I'm not going to develop for all
of them. Just one per platform initially.
 
Why do I want to develop plugins for every platform as I go? 
Because their event models are very different so I need to make sure
that OOo can handle any event model whether it be Object Oriented as
in OS X or procedural as in the rest. It can't be tied to
 
Also we need to include all of the basic components of OOo (e.g.
Menus, Toolbars--Floating, Docking, outside doc window inside doc
window--, Buttons, Dialogs, Preferences window in native manner, etc)
See a little later for some ideas I'm toying with about all the
widgets...
 
*All of the above should be developed so that it can be tested
separate of the rest of OOo, a modular component if you will. So it
only needs the interface components of OOo like for UNO, and
XForms/XUL. The actual functionality of the buttons (like which button
does what) should initially not come into play, as we only want to get
the layout working _well_ first.
 
7) Create the GUI builder app, possibly integrating it with OOo to
make it so people can customize things like the preferences dialog
box.
 
8) Then we can work on recreating the OOo interface in the new UI
files and assigning the functionality for all the components.
 
So we need to be able to recreate the interface within OOo without
reloading OOo (like recreating the preferences dialog box).
 
One thiing I've been toying with is an OOo preference database editor
that lists all the preferences and their values, kind of like either
the regedit is for the windows registry, only this interface would
need to be more intuitive sorting the preferences, searching them etc.
 
A new 'table', if you will, could be put in the preferences database
that contains all of the text for every dialog box... except that then
all the info wouldn't be located in the UI files, which is a possible
problem. Maybe a way could be made where we can put the stuff in the
files themselves and then later create some kind of function or
something that would allow us to query a preference in the database.
So for now I'll stick with text in the files themselves with the idea
that the feature can be added later.
 
Another table we may need to add is something that would associate the
button with the functionality. Perhaps a list of all the required
functions (a list of all the possible menu items/buttons/check boxes)
that associates that particular item, (identified by something like an
ID number maybe, or possibly a namespace type thing (I'm not familiar
with the intricacies of namespaces, but from what I've read it might
be useful in a case like this...), with what it is supposed to do
(e.g. the function that clicking the search button on the toolbar or
the search menu item is supposed to bring up the search dialog box)
Then you have the UI files that contain the following: 
Where in relationship to another component somewhere, does this
component go (layout controls)
What text does this have on it (if any) 
What icon is associated with this particular function or area (if any) 
Any image associations of some kind 
What type of object this is (menu, button, title,...) 
The function that control is associated with (if any) 
Any popup/tooltip information. 
Associated shortcut keys 
Tab order if needed 
Anything else? 
 
Anyway, something else to consider, as mentioned above, is how the
widgets will work on different systems.
For example, on OS X we want the menu bar for every document to be the
system menu bar (very important Apple User Interface) but in the other
platforms we want the menu attached to the window of the document. To
this end we should make everything 'detachable' so that in the file we
can say that the menu is detached and then associate a special layout
type that would put the menu in the apple system menu bar. Following
this same train of thought, I think that it would be good if all the
toolbars didn't have to be docked to the document window, but can be
docked on the side of the screen space. I don't thinnk these
detachable toolbars should be exclusive to only the mac though, as
people may find it very useful to have all their toolbars along the
edge of the screen with 2 or more documents sitting side by side
sharing the same toolbars (or perhaps, simply making the toolbars
positioned the same across windows, so that as you switch from one
document to the other the toolbars don't jump all across tarnation.
Another thing we need to note is the different style for Mac OS X
Preferences dialog box versus the pertty much unstandardized interface
elsewhere. We want to support this interface where the preferences
window isn't a window in itself but a modal type slide down thing on
the active window. If you've installed any software on a Mac then
think of the 'agree/disagree' modal dialog that pops up.
 
In case it wasn't noticed, one of my major focuses in doing this is to
ensure that the UI can be rendered across all platforms including Mac,
because if OOo looked like other Mac apps on the Mac, I could easily
convince some schools to switch to OOo as it works on every platform
they have (Mac/Win). That's about 500 machines per high school, 20-25
high schools in the district.
 
Comments welcome. 

--
Posted by Tech the Guru Floyd to Silver Onion at 2/19/2005 10:38:53 AM

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to