Florian Festi wrote:

So how do we proceed from here? Am fine with sending in patches or python file for new widgets. But how are we going to do further planning. I personally prefer wiki pages over posting based solutions like mail or tracker. But that's up to you.

I will try using the Wiki pages you have started at http://excess.org/urwid/wiki/Development

We also should meet in IRC. When are you reachable there? We are normally working around 8:00-18:00 UTC but other times of day are fine for me too (as long as its not daily) with extending into the evening is easier than getting up early ;)=

That's a little early for me, but I should be there from time to time. If you feel like having a "meeting" that can be arranged.

Perhaps I should start doing my hacking early in the morning (and learn a little German :-)

related to http://excess.org/urwid/ticket/6
As with the Menu item above, this will be a lot easier once some canvas changes I'm working on right now are released.
I am already curious. We'll urgently need better overlaying support. Are your changes already in trunk?

Partially. I am going to extend the CompositeCanvas class to have a pointer to the widget that drew it, and a list of the canvases it contains.

I will add a generic way to propagate coordinates up the CompositeCanvas objects. Right now the cursor location is the only coordinates propagating. For things like drop-down menus it would be nice to say "I want to pop up a window starting here" and let a modified Overlay widget that covers more of the screen display the pop up.

The same thing could be used to indicate to scroll bars where the top and bottom of the visible scrolling region are on the screen, so that they will be drawn the correct size and location.

Other features:
 * Stacking: Having a sane way of putting widgets on top of each
   other. These needs so be on a global level to avoid limitations
   as in Overlay.
Would you give an example of what you are trying to do that is difficult in Urwid.

This is more or less the overlay/popup/pull down/dialog stuff again. When it comes to dialogs problems with overlapping are even more interesting. Especially if you start rising/lowering dialogs with active popups ;)=

Overlays can be nested as the foreground or background of other overlays.. maybe I'm not understanding properly.

 * Support for a more dialog driven interface design
Yes, as an option.
 >
I'm happy to extend the library in that direction, as long as it remains easy to create keyboard-focused interfaces for people that prefer to create console apps such as irssi and vim.
We are in no way planning to remove these capabilities from the library. But I want to make clear that we have a different focus and a different viewpoint. If the whole list gets implemented that's a big step forward for urwid but also a big step away from where it is now. Of course we'll be playing nice but you as the main developer have to keep the spirit of urwid up and have a look that we don't turn it into something completely different.


About further steps:

First things I'd like to do is elaborating how theming should work and may be streamline some of the interfaces like containers as this blocks other stuff. We'll work on some of the widgets in parallel as most of them don't have any dependencies.

With respect to cleaning up the hierarchy of widgets, I was actually considering creating some new base classes: ContentWidget and CompositeWidget. All widgets fall into one or the other category, and the CompositeWidgets should be sharing a lot of code (eg. should be just specifying the locations of the widgets they contain, not do the rendering themselves)

Of course, a common CompositeWidget base class would help with creating a standard container interface.

FlowWidget, BoxWidget, and FixedWidget are actually more like behaviours than base classes - they depend on how they are called, not some intrinsic property.


Theming could be accomplished with a factory module, for example:

  from urwid.bluesteel_theme import *
  bluesteel_button = Button("Hello")

ie. Button is a function defined in urwid.bluesteel_theme that has a certain type of decoration and is wrapped in an AttrWrap with attributes from urwid.bluesteel_theme.default_palette (a list of attributes to be passed to set_palette)

Ian


_______________________________________________
Urwid mailing list
[email protected]
http://lists.excess.org/mailman/listinfo/urwid

Reply via email to