Re: [Gimp-developer] Proposal for fixing the GimpStatusbar API

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 14 Jan 2004 11:34:04 +0100, Michael Natterer <mitch@xxxxxxxx> wrote:
> Raphaël Quinet <quinet@xxxxxxxxxx> writes:
> > Also, my proposal allows the
> > following scenario to work as the user would expect:
> > - start with the initial default message;
> > - run a plug-in that displays some progress information;
> > - while the plug-in is running, use the measure tool to check
> >   something in the image and keep the mouse button down: the
> >   info from the measure tool replaces the plug-in info;
> > - the plug-in ends: the cancel button is back to normal, but the
> >   info displayed is still from the measure tool;
> > - release the mouse button: the default message is back, there
> >   is no conflict with the info from the plug-in.
> > A pure stack model would not work well in this case.
> 
> As I said, that what the new gimp_statusbar_replace() API would
> be for. I'm aware of the stacking problem. It's exactly the
> issue we want to resolve here.

I don't understand how the gimp_statusbar_replace() API would
solve the problem, because one or several other messages from
the plug-in would have to be pushed or popped _under_ the
message from the measure tool because the interactive actions
from the tools should always be visible.  I may have
misunderstood how you are planning to implement this, but I
think that a stack model would cause the messages from the
tool to disappear either when a new progress message is pushed
by the plug-in (e.g., because it has called another plug-in)
or when it wants to pop its message from the stack while the
interactive message is still displayed.

> > The point of my proposal is that I believe that we _do_ known
> > the priorities in advance, so we do not need a dynamic stack to
> > be exposed in the GimpStatusbar.
> 
> Limiting ourselves to what we need now is always a bad idea.

As I explained in my last message, the priorities could be
extended easily if necessary.  So we are not really limited.

> >  Unless I missed something, all
> > messages that fit in the same category would simply replace each
> > other.
> 
> No they won't. My GimpEditSelectionTool example from the previous
> mail explains why.

Then I failed to understand why.  As far as I can see, the
GimpEditSelectionTool message is simply a priority 1 message
(GIMP_STATUS_INTERACTIVE in my proposal) that would replace
what is there, and would in turn be replaced when the action
ends and the control goes back to another part of the code.
How would that conflict with the model that I proposed?  

> > In the case that you describe, you would simply replace
> > the level 1 message instead of pushing another one on top of it.
> > The user can only perform one interactive operation at a time
> > (typically, an operation during which the mouse is grabbed, such
> > as when you are dragging something) so it makes sense to simply
> > replace the level 1 message when the current operation changes.
> > And as soon as it is finished, then you get back to the level 2,
> > 3 or 4.  Unless you immediately start another operation that
> > changes the level 1 message.
> 
> What you propose doesn't even cover the current use cases of
> the status bar API, let alone stuff we might not even think
> about now.

I do not see why it doesn't.  I had a look at the different parts
of the code using the status bar and I think that my proposal covers
them fairly well.  But I may be wrong, of course.

As I said in my last message, I do not insist on having this
implemented in the way that I proposed.  Any solution is welcome
as long as it solves the problems that we have now.  So if you
have a better solution that allows messages to be added, removed
or replaced asynchronously, then I would be happy to use it.  It
would be nice if you could explain how your solution would solve
these problems, though.

-Raphaël

[Index of Archives]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [GIMP for Windows]     [KDE]     [GEGL]     [Gimp's Home]     [Gimp on GUI]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux