Back to the MDI windows

Changing the document manager and the application object to work with the TabManager class makes them unable to work with the vanilla PyQt QWorkspace class. We will have to wrap this one in a class of our own that sports the same functions as the TabManager class. Fortunately, this is not an onerous exercise.

"""
workspace.py - MDI workspace class for the mdi framework

copyright: (C) 2001, Boudewijn Rempt
email:     boud@rempt.xs4all.nl
"""
from qt import *
from resources import TRUE, FALSE

class WorkSpace(QWorkspace):

    def __init__(self, *args):
        apply(QWorkspace.__init__,(self, ) + args)

    def addView(self, view): pass

    def removeView(self, view): pass

    def canCascade(self):
        return TRUE

    def canTile(self):
        return TRUE
    

That didn't hurt, did it? We added a mere four functions to the interface for our view managers. Adding and removing a view from a workspace doesn't need our active intervention, so we can simply add stubs for addView and removeView. And a workspace can both cascade and tile, so canCascade() and canTile() return TRUE.

The other functions we had to define in TabManager, like cascade() or windowList are part of QWorkspace — and we don't need to reimplement them.