Up, down & famfamfam…

So things are going a little slower than I’d like with the development of the prototype for iido, still I managed a concerted effort today to make a start.

The first challenge was to update my Qt and PyQt installations, which I have to say (if memory serves me correct) with version 4.4+ is a much easier task than with previous versions. One gottcha you might want to watch out for (possibly Windows OS specific) is forgetting to uninstall the previous version of Qt, this can cause PyQt to try and access the wrong QtCore4.ddl and then your application wont run. Thankfully the solution is simple, just uninstall the previous version of Qt and your set.

Back on subject, once my system was up-to-date I was able to make a reasonable amount of progress. In these early stages I’m still putting inplace quite a bit of framework to support the management of widgets, however with some basic widgets visible and draggable (just using the Qt draggable flag at the moment), I realised that I hadn’t considered the overlapping/z-index of widgets.

To solve this I am putting in place a simple stack style transformation that allows the user to (see the screen-shot),

  • Bring the widget to the front
  • Send the widget to the back
  • Bring the widget up one Z position
  • Send the widget down one Z position

Early screen-shot of the prototype iido application

However, there are a number of issues still to be resolved,

  • The Z position is relevant to all widgets so it might take several clicks for a user to move a widget above a desired widget
  • When a user wishes to transform a widget using the transformation regions, the region they require maybe hidden, to resolve this the user would have to move the widget so that the region was visible.

I think the Z position issue can be resolved by building in another couple of transformation options that allow the user to move the widget in front or behind a specific widget (this may eliminate the need for the up/down one option). There might also be some merit in allowing users to specify a specific Z position in which case we would need to make the Z position of all widgets visible. As for hidden transformation regions I am open to suggestions, though I think I may need to have a function model before a decision can be made.

Finally I’d like to credit the famfamfam icon set which I am using whilst developing iido, this is a professional quality set of icons available from www.famfamfam.com under the creative commons license (http://creativecommons.org/licenses/by/3.0). Producing icons is a hugely time consuming process and my sincere thanks goes to the creator Mark James for his efforts and generosity.


6 Responses to “Up, down & famfamfam…”

  1. 1 andyjb June 22, 2008 at 12:40 am

    How about using a mouse gesture, right button held down, for this. The downside, there could be conflicts for people using other mouse gesture packages, so the exact gesture would need to be customisable, but for easy learning, the movement, if simple, could be shown next to the corresponding entry on the right click menu. E.g. a diagonal movement would move up or down one Z level depending on whether starting say southwest or northeast. A diagonal southwest to northeast, followed by a vertical north would bring the leaf to the top. Just a possible example. Repeated use to move up multiple levels should be faster than using the menu.

  2. 2 webdeveloperboy June 23, 2008 at 1:55 am

    I’m not fully sure if I understand what you mean but I think your talking about stacks and layers. If so, why are you bothering with right click commands? Surely it would be simpler to just allow the user to just left click on the layer they wish to bring to the front of the stack. What use would you have for any other commands? Also it might get annoying but you could even consider the same thing but on:hover?

    Just a suggestion anyway, I’m not sure if I intirely get what you meant lol.

  3. 3 antsdev June 23, 2008 at 9:39 am

    I did consider this approach (John), but it prevents the user using stacking/layering as a form of organization and I think it’s an important fetaure (much as it is in photoshop).

    Thanks for the suggestion though.

  4. 4 Nick Snell June 23, 2008 at 9:56 am

    Is this really that much of a problem? I’m not sure why anyone would need that amount of fine grained control over the Z position? am I missing something? In any case right clicking is too much hassle for just a simple operation and it’s not intuitive – like mouse gestures. Surely it would be better to use an approach similar to how OS application windows work, click brings it to focus etc… Im not sure how you can do it or if it’s possible on windows, but on OSX you can also hold command then move background windows without losing the current focus – possibly that concept could be adapted to add more control too. I would of thought that most of the time you wouldn’t want things overlaying anyway as it doesn’t make for easy reading of the relationships – in fact does it need to at all? maybe you could drag the focus window over others but when you drop it it settles next to another object rather than on top?

    I’m just thinking of the learning curve for the application, too many options make things so complicated, I would use the context menu for something more useful.

  5. 5 Nick Snell June 23, 2008 at 10:08 am

    Sorry i took so long to reply you already answered! I don’t think than layering is a good form of organization though – photoshop is slightly different as there is a real application for overlaying layers, but that doesn’t seem to be present here. If you implement it like photoshop you would also need the other support structures that it has – like if you overlay one layer directly over another, you can only get to the underlying layer by right clicking on the above and selecting the specific layer underneath or using the layer window – you would also need to implement one or both of those to solve that problem too.

  6. 6 antsdev June 23, 2008 at 11:46 pm

    Hey Nick, thanks for the feedback mate – I was begining to wonder if you were still alive ;).

    I think I hit a snag here since everyone has slightly (or greatly) different ideas. Leaves are supposed to be like a sheet of paper, and because of this I intend to allow them to overlap, however, I do see merit in allowing a user to specify that all, a group, or an individual widget must not be overlapped.

    There is so much to do until I get a prototype up and running but at least with everyones feedback I’m quickly identifying “what to” and “what not to” spend time on. I suspect, after everyones feedback at the very least I will support a one click “bring to the front” option for users.

    [We should have a beer sometime bud (and play GTA), let me know next time your out this way.]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: