def makeWidget(self):
        if not self.main:
            #TODO: handle the enabled disabled and readonly properties of all widgets
            
            if self.widget['class']=="QWidget":
                #the qwidget is like an Absolutelayout unless it has a layout defined inside of it
                if self.widget.layout!=None:
                    if self.widget.layout["class"]=="QVBoxLayout":
                        self.mainUI.__dict__[self.widget.layout.name]=VerticalLayout()
                        self.thiswidget = self.mainUI.__dict__[self.widget.layout.name]
                        self.wHandleSize=False
                        self.isLayout=True
                    elif self.widget.layout["class"]=="QHBoxLayout":
                        self.mainUI.__dict__[self.widget.layout.name]=HorizontalLayout()
                        self.thiswidget = self.mainUI.__dict__[self.widget.layout.name]
                        self.wHandleSize=False
                        self.isLayout=True
                        
                elif self.widget.layout==None:
                    self.mainUI.__dict__[self.widget.name]=AbsoluteLayout()
                    self.thiswidget = self.mainUI.__dict__[self.widget.name]
                    self.wHandleSize=True
                #if the parent of this qwidget is the mainwindow then use the geometry from the mainwindow for it
                if self.parent.widget['class']=="QMainWindow":
                    self.parent.mainwidget = self.thiswidget
                    self.mainUI.width      = self.parent.geometry.rect.width
                    self.mainUI.height     = self.parent.geometry.rect.height
                    
            elif self.widget['class']=="QStackedWidget":
                #there is not a stacked widget in munjac.  So in mjextras i made one by removing the 
                #tab headers from a tabsheet
                self.mainUI.__dict__[self.widget.name]=StackedSheet()
                self.thiswidget = self.mainUI.__dict__[self.widget.name]
                
            elif self.widget['class']=="QGroupBox":
                #for muntjac since there is no groupbox I am adding an AbsoluteLayout to a Panel
                title=str(self.getTitle())
                self.mainUI.__dict__[self.widget.name+'Panel']=Panel(title)
                self.thiswidget = self.mainUI.__dict__[self.widget.name+'Panel']
                self.mainUI.__dict__[self.widget.name]=AbsoluteLayout()
                self.thiswidget.setContent(self.mainUI.__dict__[self.widget.name])
                
            elif self.widget['class']=="QLabel":
                #QLabel makes a Label() they are alike
                text=str(self.getText())
                self.mainUI.__dict__[self.widget.name]=Label(text)
                self.thiswidget = self.mainUI.__dict__[self.widget.name]

            elif self.widget['class']=="QLineEdit":
                #conversion about the same only you cannot use the height or textfield gets 
                #automatically converted to a TextArea by muntjac
                text=str(self.getText())
                self.mainUI.__dict__[self.widget.name]=TextField("")
                self.thiswidget = self.mainUI.__dict__[self.widget.name]
                self.thiswidget.setValue(text)

            elif self.widget['class']=="QPushButton":
                #QPushButton converts to Button very well.  In some of the widgetsets height doesnt translate well ie runo
                text=str(self.getText())
                self.mainUI.__dict__[self.widget.name]=Button(text)
                self.thiswidget = self.mainUI.__dict__[self.widget.name]

            elif self.widget['class']=="QTextEdit":
                #the difference with QTextEdit and TextArea is that textarea is resizeable
                #and as well QTextEdit has richtext in it.
                #TODO: convert richtext over to text for TextArea
                #TODO: figure out if richtextarea is needed
                html=str(self.getHtml())
                self.mainUI.__dict__[self.widget.name]=TextArea()
                self.thiswidget = self.mainUI.__dict__[self.widget.name]
                self.thiswidget.setValue(html)

            elif self.widget['class']=="QTabWidget":
                #QTabWidget and TabSheet are very similar
                self.mainUI.__dict__[self.widget.name]=TabSheet()
                self.thiswidget = self.mainUI.__dict__[self.widget.name]

            elif self.widget['class']=="QTableView" or self.widget['class']=="QTableWidget":
                #QTableView is more like Table than QTableWidget.  But I convert both to Table
                self.mainUI.__dict__[self.widget.name]=Table()
                self.thiswidget = self.mainUI.__dict__[self.widget.name]
                
            elif self.widget['class']=="QCheckBox":
                #QCheckBox works pretty much like CheckBox only the state info is different.
                #TODO: set the correct state of the checkbox from the ui file
                self.mainUI.__dict__[self.widget.name]=CheckBox()
                self.thiswidget = self.mainUI.__dict__[self.widget.name]

            else:
                #left in print statement for unhandled widgets
                print "could not handle ",self.widget['class']
                self.wHandleSize=False
                return
            
            if self.wHandleSize:
                self.handleSize()
            
            
            #determine the name and class name of the widget
            
            #handle if it is a layout
            if self.parent.widget['class']=="QWidget":
                if self.parent.widget.layout!=None:
                    pnname=self.parent.widget.layout.name
                    pnclass=self.parent.widget.layout['class']
                else:
                    pnname=self.parent.widget.name
                    pnclass=self.parent.widget['class']
                if self.widget.layout!=None:
                    thname=self.widget.layout.name
                    thclass=self.widget.layout['class']
                else:
                    thname=self.widget.name
                    thclass=self.widget['class']
                    
            #handle if it is not a layout
            else:
                   pnname=self.parent.widget.name
                   pnclass=self.parent.widget['class']
                   thname=self.widget.name
                   thclass=self.widget['class']
            
            
            #handle adding the components to the parent
            #handle containers
            if pnclass=="QVBoxLayout" or \
               pnclass=="QHBoxLayout" or \
               pnclass=="QTabWidget"  or \
               pnclass=="QStackedWidget":
               if pnclass!="QMainWindow":
                   if self.parent.widget['class']=="QStackedWidget" or self.parent.widget['class']=="QTabWidget":
                       self.parent.thiswidget.addTab(self.thiswidget)
                       if thclass=="QGroupBox":
                           self.thiswidget=self.mainUI.__dict__[thname]
                   else:
                       self.parent.thiswidget.addComponent(self.thiswidget)
                       if thclass=="QGroupBox":
                           self.thiswidget=self.mainUI.__dict__[thname]
            #handle widgets
            else:
                if pnclass!="QMainWindow" and pnclass!="QVBoxLayout" and pnclass!="QHBoxLayout":
                    if self.parent.geometry!=None:
                        print "adding",thname,"to",pnname,"is a",pnclass,"is a",type(self.parent.thiswidget)
                        xpos="%.2f" % (((float(self.parent.geometry.rect.width)+.001)/(float(self.geometry.rect.x)+.001))*100)
                        ypos="%.2f" % (((float(self.geometry.rect.y)+.001)/(float(self.parent.geometry.rect.height)+.001))*100)
                        self.parent.thiswidget.addComponent(self.thiswidget, 
                                             "top:"+str(ypos)+"%;left:"+str(xpos)+"%")
                    else:
                        print "adding",thname,"to",pnname,"is a",pnclass,"is a",type(self.parent.thiswidget)
                        self.parent.thiswidget.addComponent(self.thiswidget,
                                             "top:"+str(self.geometry.rect.y)+"%;left:"+str(self.geometry.rect.x)+"%")
                    if thclass=="QGroupBox":
                        self.thiswidget=self.mainUI.__dict__[thname]

    #handle the sizing of the current widget
dataset/ETHPy150Open rwl/muntjac/muntjac/ui/qtui2mj.py/aWidget.makeWidget/swapped operands of `/`