[Gambas-devel] Preview gb.form.md[ia]
Ron Onstenk
ronstk at ...124...
Sat Aug 5 20:05:25 CEST 2006
On Saturday 05 August 2006 19:15, Benoit Minisini wrote:
> On Saturday 05 August 2006 18:57, Ron Onstenk wrote:
> > On Saturday 05 August 2006 18:40, Benoit Minisini wrote:
> > > On Saturday 05 August 2006 18:30, Ron Onstenk wrote:
> > > > This is a preview the current working .mdi/.mda
> > > > It is based on the .mdi made by Benoit and the
> > > > .mda made by Fabien and a windows manager by myself.
> >
> > ---8<---
> >
> > > > All buttons are programmable on/off or the complete Head can switch
> > > > off. The area below with the text or form are resizeable.
> > > >
> > > > The best thing is it is the .mdi and .mda together
> > > > The way I do it now is by a flag in the source code.
> > > > The result is if the flag is not set it works 99.9999999% the same
> > > > If set it should work still the same way.
> > > > In fact the API has not changed for Workspace but there is a .Options
> > > > property add.
> >
> > ---8<---
> >
> > > > Rename my old variable/control names to more correct ones.
> > > > Names now are based on old controls replaced by totally different.
> > > > Create a project as demo for (new) Workspace.
> > > >
> > > > Remember, it is just a preview to get a impression.
> > > >
> > > >
> > > > Ron
> > >
> > > Looks cool.
> > >
> > > Is it possible to merge gb.form.mdi and gb.form.mda, i.e. being able to
> > > switch between the gb.form.mdi tab view where all windows are maximized
> > > with a TabStrip, and gb.form.mda where all windows can be freely resized,
> > > without the need for a TabStrip?
> > >
> > > Regards,
> >
> > 1)
> > It is already merged together. :)
> >
> > 2)
> > The switch is basic already done but hardcoded.
> > I think dynamic switching can give problems, but with New WorkSpace(x, y,
> > USEMDA) it could work. Not in progress ATM.
>
> You can only make 'NEW Workspace(Parent)'. If you want more parameters, they
> all must be optional, otherwise the Workspace cannot be used by the IDE form
> editor.
This was the way I had in mind, as optional to stay compatible.
>
> So the switching must be dynamic - This is always the problem when you make
> controls.
you are/will be allowed to FirstWSPmdi = New Workspace(parent, false) for .mdi
and are/will be allowed to SecondWSPmda = New Workspace(parent, true) for .mda
but not to change SecondWSPmda on the fly to mdi type.
This is because I rework the FWorkspace with reparent for .mda style.
Not impossible but more for future expansion.
A working .mda or .mdi is priority.
>
> >
> > 3)
> > The Tabstip stays always alive ATM.
>
> Not necessarily a problem. As you may have noticed, it stays behind the parent
> panel of MDI child windows, so it could be easily hidden.
just changed next code in Form_Resize to test and works OK
PUBLIC SUB Form_Resize()
DIM showtab AS Boolean
showtab = FALSE
IF showtab = FALSE THEN tabWorkspace.height = 0
IF tabWorkspace.Visible AND showtab THEN
>
> > The child Windows Titlebar can switched complete off. The taskbar must do
> > it. If they are switched of only resize is possible, no buttons anymore.
> > Here one of the problems with the close button I must pay attention to.
> >
> > I will look a way to hide it if it is possible in special case.
> >
> >
> > Ron
>
> To make your title bar and your resize borders, I think you have to reparent
> the MDI child window inside some other container that manages them. One can
> imagine that, in the gb.form.mdi mode, this container keeps being there, but
> displays only the MDI child window entirely. But this needs some
> modifications in the gb.form.mdi code, as at the moment all MDI child windows
> are direct child of the same panel.
>
> Regards,
>
If you ask from the Workspace the child windows you do get
exactly the same in mda as in mdi
i.e. GetActiveWindow() returns exact for both the same Window
------------------
CWindow is changed to:
' Gambas class file
PUBLIC Window AS Window
PUBLIC Watcher AS Watcher
PUBLIC Resizable AS Boolean
PUBLIC Grid AS Integer
'====== add by ron =======
PUBLIC wsfra AS Object ' frame ' panel '
PUBLIC wslbl AS Label
PUBLIC wsico AS PictureBox
PUBLIC wsbtn AS Button
PUBLIC wsrol AS ToggleButton
PUBLIC wsmin AS Button
PUBLIC wstbl AS Object
------------------
FWorkspace changes but important part:
PUBLIC SUB _new()
IF NOT $hTile THEN $hTile = Picture["img/hash.png"]
IF USEMDA THEN
tabWorkspace.Orientation = TabStrip.Top
svwWorkspace.Reparent(ME)
' panWorkspace.Reparent(svwWorkspace)
' dwgBorder.Reparent(svwWorkspace)
panWorkspace.Visible = FALSE 'mdi
dwgBorder.Visible = FALSE 'mdi
' wstbl is one of frame/panel/drawingarea 'mda
panRightDown.Visible = FALSE 'group
panDown.Visible = FALSE
panRight.Visible = FALSE
ENDIF 'USEMDA
END
------------------
Note wstbl has a long story:
listbox -> listview in my old project
-> frame for the first startup making .mda
-> panel as replace for panWorkspace
-> drawingarea as replace for dwgBorder
Every client window is dynamic created with sub routine
inside FWorkspace instead of CWindow.
--------------------------
MakeWindow(bResize as boolean)
hWin.wsfra = NEW DrawingArea(svwWorkspace) AS "WSfra"
hWin.wslbl = NEW Label(hWin.wsfra) AS "WSlbl"
hWin.wsico = NEW PictureBox(hWin.wsfra) AS "WSico"
hWin.wsbtn = NEW Button(hWin.wsfra) AS "WSbtn"
hWin.wsRol = NEW ToggleButton(hWin.wsfra) AS "WSrol"
hWin.wsMin = NEW Button(hWin.wsfra) AS "WSmin"
IF bResize THEN
hWin.wstbl = NEW DrawingArea(hWin.wsfra) AS "WStbl"
ELSE
hWin.wstbl = NEW Panel(hWin.wsfra) AS "WStbl"
ENDIF
Object.Attach(hWin.wsfra, ME, "WSfra")
object.Attach(hwin.wsico, ME, "WSico")
Object.Attach(hWin.wslbl, ME, "WSlbl")
....
and more
--------------------------
FWorkspace_New()
....
IF USEMDI THEN
IF bResize THEN
hWin.Reparent(dwgBorder)
ELSE
hWin.Reparent(panWorkspace)
ENDIF
hWin.Hide
hWindow = NEW CWindow
ENDIF 'USEMDI
IF USEMDA THEN
' hWin is the Window to embed, hWindow is Cwindow
hWindow = WSnewwindow(bResize) ' returns a CWindow
'wstbl is dwgBorder/panWorkspace replacement
hWin.Reparent(hWindow.wstbl)
ENDIF 'USEMDA
....
---------------------
This are the essential things of changes .mdi/.mda
Ron
--
The only bug free software from MickySoft is
still shrink-wrapped in their warehouse...
More information about the Devel
mailing list