def __init__(self,parent=None,flags=0):
        QtGui.QDialog.__init__(self,parent)

        self.sourceidf = idfdata.idfData()
        self.sourcemodel = idfabstractmodel.idfAbstractModel(self.sourceidf)
        self.destidf = idfdata.idfData()
        self.destmodel = idfabstractmodel.idfAbstractModel(self.destidf)
        self.sourceclasslist = QtGui.QTreeView()
        self.sourceclasslist.setModel(self.sourcemodel)
        self.sourceclasslist.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
        self.sourceclasslist.header().setClickable(True)
        self.destclasslist = QtGui.QTreeView()
        self.destclasslist.setModel(self.destmodel)
        self.classdata = QtGui.QTextEdit()
        self.classdata.setReadOnly(True)
        self.classdata.setWordWrapMode(QtGui.QTextOption.NoWrap)
        self.todest = QtGui.QPushButton('-->')
        self.tosource = QtGui.QPushButton('<--')
        buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel);
        self.loadfilebutton = QtGui.QPushButton('&Load IDF File')
        self.loaddependancies = QtGui.QCheckBox('&Copy Dependancies?')
        self.loaddependancies.setChecked(True)
        
        hl = QtGui.QHBoxLayout(self)
        vl = QtGui.QVBoxLayout()
        
        vl.addWidget(self.loadfilebutton)
        vl.addWidget(self.sourceclasslist)
        vl.addWidget(self.classdata)

        vc = QtGui.QVBoxLayout()
        vc.addStretch()
        vc.addWidget(self.todest)
        vc.addWidget(self.tosource)
        vc.addStretch()

        rv = QtGui.QVBoxLayout()
        
        rv.addWidget(self.destclasslist)
        rv.addWidget(self.loaddependancies)

        rv.addWidget(buttonBox)
        

        self.connect(buttonBox, QtCore.SIGNAL('accepted()'), self.accept);
        self.connect(buttonBox, QtCore.SIGNAL('rejected()'), self.reject);
        self.connect(self.todest, QtCore.SIGNAL('pressed()'), self.moveToDest);
        self.connect(self.tosource, QtCore.SIGNAL('pressed()'), self.moveToSource);
        self.connect(self.loadfilebutton, QtCore.SIGNAL('pressed()'), self.loadFile);
        self.connect(self.sourceclasslist, QtCore.SIGNAL('activated(QModelIndex)'), self.sourceListActivated);
        self.connect(self.sourceclasslist.header(),QtCore.SIGNAL('sectionClicked ( int )'),self.classlistsort)
        
        hl.addLayout(vl)
        hl.addLayout(vc)
        hl.addLayout(rv)
        self.selected = []
        self.loadFile()
        self.sortorderlist = [-1,-1]
    def classPage(self):
        self.idf = idfdata.idfData()
        self.model = idfabstractmodel.idfAbstractModel(self.idf)

        self.querylist = QtGui.QComboBox()
        self.querylist.addItems(['All','Classname','Name','Group','Dependancy','Reference','Fieldname','Fieldvalue'])

        self.queryline = QtGui.QLineEdit()
        self.querybutton = QtGui.QPushButton("Query")

        self.view = QtGui.QTreeView()
        self.view.setModel(self.model)
        self.view.sizePolicy().setHorizontalPolicy(QtGui.QSizePolicy.Fixed)
        self.view.header().setClickable(True)
        
        splitter = QtGui.QSplitter()
        widget = QtGui.QWidget()

        mainhbox = QtGui.QHBoxLayout(widget)
        self.viewwidget = QtGui.QWidget()
        vbox = QtGui.QVBoxLayout()
        vbox.setSizeConstraint(QtGui.QLayout.SetMinAndMaxSize)
        hbox = QtGui.QHBoxLayout()

        hbox.addWidget(self.querylist)
        hbox.addWidget(self.queryline)

        vbox.addLayout(hbox)
        vbox.addWidget(self.querybutton)
        vbox.addWidget(self.view)
        self.viewwidget.setLayout(vbox)
        splitter.addWidget(self.viewwidget)
#        mainhbox.addWidget(viewwidget)
        classvbox = QtGui.QVBoxLayout()
        self.classviewname = QtGui.QLabel()
        self.classview = QtGui.QTableView()
        self.delegate  = idfmodeldelegate.idfClassDelegate()
        self.classview.setItemDelegate(self.delegate)
        self.classview.setEditTriggers(QtGui.QAbstractItemView.AllEditTriggers)
        self.classview.horizontalHeader().setStretchLastSection(True)
        
        classvbox.addWidget(self.classviewname)
        classvbox.addWidget(self.classview)
        mainhbox.addLayout(classvbox)
        splitter.addWidget(widget)
        self.connect(self.view, QtCore.SIGNAL('activated (QModelIndex)'),self.classActivated)
        
        self.connect(self.querybutton, QtCore.SIGNAL('clicked ( bool)'),self.querybuttonclicked)
        self.connect(self.view.header(),QtCore.SIGNAL('sectionClicked ( int )'),self.viewlistsort)

        return splitter
    def verticePage(self):
        self.tvwidget = QtGui.QWidget()
        splitter = QtGui.QSplitter()
        self.idf = idfdata.idfData()
        self.model = idfzonemodel.idfZoneModel(None, self.idf)

        vl = QtGui.QHBoxLayout(self.tvwidget)
        self.zonelist = QtGui.QTreeView()
        self.zonelist.setModel(self.model)
        vl.addWidget(self.zonelist)
        splitter.addWidget(self.tvwidget)

        self.verticeview = idfzoneview.idfZoneView()
        self.verticeview.setModel(self.model)
        self.verticeview.setStatusBar(self.sbar)
        splitter.addWidget(self.verticeview)
        return splitter
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.tabs = QtGui.QTabWidget()
        self.tabs.setMovable(True)
        self.tabs.setTabsClosable(True)
        self.log = None
        self.parentmodel = None
        self.sortorderlist = [-1, -1]
        self.filename = ""
        self.signalmapper = QtCore.QSignalMapper(self)
        self.connect(self.signalmapper, QtCore.SIGNAL("mapped(int)"), self.grouptoggle)
        self.connect(self.tabs, QtCore.SIGNAL("tabCloseRequested (int)"), self.tabclosetab)
        self.readSettings()
        self.createActions()
        self.createMenus()
        self.idfdata = idfdata.idfData()
        self.idfgroupsdict = dict()
        self.idfgroupsmenu = []

        self.setCentralWidget(self.tabs)
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        fname = "singlezonecopy.idf"

        f = idfdata.idfData()
        f.openIdf(fname)

        #       model = idfabstractmodel.idfAbstractModel(f)
        self.zonemodel = idfZoneModel(None, f)

        #       model.query(idfglobals.IdfQueryClassname,'Zone')

        widget = QtGui.QWidget()
        layout = QtGui.QHBoxLayout(widget)
        #       view = QtGui.QTreeView()
        #       view.setModel(model)
        #       layout.addWidget(view)

        view2 = QtGui.QTreeView()
        view2.setModel(self.zonemodel)
        layout.addWidget(view2)
        self.setCentralWidget(widget)
        return self.createIndex(row, column, dp)
        


if __name__ == "__main__":
    import sys
    import idfdata
    from PyQt4 import QtGui

    app = QtGui.QApplication(sys.argv)
    try:
        fname = sys.argv[1]
    except:
        fname = 'Singlezonetemplate.idf'

    f = idfdata.idfData()
    f.openIdf(fname)

    model = idfAbstractModel(f)

    querylist = QtGui.QComboBox()
    querylist.addItems(['Classname','Name','Group','Dependancy','Reference','Fieldname','Fieldvalue'])

    queryline = QtGui.QLineEdit()
    querybutton = QtGui.QPushButton("Query")



    view = QtGui.QTreeView()
    view.setModel(model)
                            nstate.append(1)
                    
                    #print olinearray,nlinearray
                    if turned:
                        nlinearray.reverse()
                        nstate.reverse()
                    reslist.append([olinearray,nlinearray,ostate,nstate])


        return reslist
        
        
if __name__ == "__main__":
    import pdb
#    pdb.set_trace()
    idata = idfdata.idfData()
    idata.openIdf('scholz/scholz.idf')
    print 'idfData opened'
    model = idfzonemodel.idfZoneModel(None,idata)
    model.createZoneTree()
    print 'zonemodel created'
    z = zoneCreate(model,[],1,1)
    #a = [[0,0,0],[0,8,0],[10,8,0],[10,0,0]]
    #b = [[0,8,0],[0,28,0],[14,28,0],[14,8,0]]
    #c = [[14,12,0],[14,28,0],[24,28,0],[24,12,0]]
    #d = [[24,0,0],[24,14,0],[28,14,0],[28,0,0]]
    #e = [[10,0,0],[10,8,0],[14,8,0],[14,12,0],[16,12,0],[16,0,0]]
    #print 'a,b',z.isAdjacent(a,b)
    #print 'a,c',z.isAdjacent(a,c)
    #print 'b,c',z.isAdjacent(b,c)
    #print 'c,d',z.isAdjacent(c,d)