[Gtk-sharp-list] Interface concept
Joe Scaduto
scooch@noggle.biz
Wed, 22 Oct 2003 02:35:23 -0400
On Wed, 2003-10-22 at 01:29, Leo Spalteholz wrote:
> Well I'm certainly not an expert but I would do it like this:
> Put an HBox in the main window.
> Pack a VBox into the Hbox
> Put all your buttons into this vbox..
> Pack another vbox into your Hbox. This vbox will be where you put your
> scrolledwindow and such.
> In your Clicked eventhandler for a button on the left, remove the right
> vbox from your hbox, (hbox.Remove(widgetToRemove)) and populate a new vbox
> with the widgets you want on the new screen. Then add this new vbox back
> to the hbox.
> So when you click the button it will change the contents on the right side.
>
> Which brings me to a minor point. If you remove a container like a vbox
> from another one, does the vbox and all child widgets get destroyed?
> My application switches between screens with many buttons quite often in
> this manner and I've noticed that memory usage of mono increases every
> time...
>
> Thanks,
> Leo
Hey Leo,
I am not an expert either but this is what I have found so far.
I figured out a way to split the application into to separate areas. I
used the concept of Panes. There are widgets available for both a
horizontal panes and vertical panes. I created a horizontal plane and
then used the left portion for my column of buttons and the right
portion for my scrolled window. However, I have not been able to figure
out how to dynamically display "services" in the scrolled portion.
On your point of deleting a vertical packing box and if the deleting
trickles down to all the child widgets the answer is yes. The packing
box is a container just like a window so any widgets within the
container are destroyed upon destruction of the container. What you
could possibly do instead of deleting and recreating a new vertical
packing box each time....maybe hide each of the widgets within the
packing box and then show them accordingly. Now I figure there has to
be a much easier way then this. I had thought of trying to do what you
are doing...but personally you are a better man than I because I would
not want to deal with the deletion and recreation. Maybe there is to
layer the "services" on the scrolled window or in your case packing box
like a stack where the "service" on the top of the stack is displayed.
Accordingly you can push and pop the stack of "services" based on the
actions of the user. Like I said I am no expert these are just
suggestions. Ill keep you informed if a find a way dynamically change
the window. If Evolution can do then it can be done.
Joe