def __init__(self, title, parent, main):
        QtGui.QWidget.__init__(self, parent)

        self.main = main
        if title == "Examples":  ## TODO sody path to view
            self.dir_to_browse = settings.examples_path()
        else:
            self.dir_to_browse = settings.sketches_path()

        mainLayout = QtGui.QVBoxLayout()
        mainLayout.setContentsMargins(0, 0, 0, 0)
        mainLayout.setSpacing(0)
        self.setLayout(mainLayout)

        headLabel = GenericWidgets.HeaderLabel(self,
                                               self.main,
                                               icon=Ico.Projects,
                                               title=title,
                                               color="black",
                                               wash_to="#456D91")
        mainLayout.addWidget(headLabel)

        self.statusWidget = GenericWidgets.StatusWidget(self)

        ## redundant listings tree of bookmaarks.. maybe later
        if 1 == 0:
            self.treePlaces = QtGui.QTreeWidget()
            mainLayout.addWidget(self.treePlaces, 1)
            self.treePlaces.headerItem().setText(0, "Location")
            self.treePlaces.headerItem().setText(1, "Path")
            self.treePlaces.header().hide()
            self.treePlaces.setColumnHidden(1, True)
            self.treePlaces.setRootIsDecorated(False)
            self.treePlaces.setAlternatingRowColors(True)
            self.connect(self.treePlaces,
                         QtCore.SIGNAL("itemClicked (QTreeWidgetItem *,int)"),
                         self.on_tree_place_clicked)
            for panel in [["Examples", settings.examples_path()],
                          ["Sketches", settings.sketchbooks_path()]]:
                item = QtGui.QTreeWidgetItem()
                self.treePlaces.addTopLevelItem(item)
                item.setText(0, panel[0])
                font = item.font(0)
                font.setBold(True)
                item.setFont(0, font)
                item.setIcon(0, Icon(Ico.Folder))
                if panel[1]:
                    item.setText(1, panel[1])

            self.dir_to_browse = None

        toolbar = QtGui.QToolBar(self)
        toolbar.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        mainLayout.addWidget(toolbar)

        self.toolButtonGroup = QtGui.QButtonGroup(self)
        self.toolButtonGroup.setExclusive(True)
        self.connect(self.toolButtonGroup,
                     QtCore.SIGNAL("buttonClicked(QAbstractButton *)"),
                     self.on_view_selected)

        listButton = QtGui.QToolButton()
        listButton.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        listButton.setText("Tree")
        listButton.setIcon(Icon(Ico.Black))
        listButton.setStyleSheet("padding: 0px; margin: 0px;")
        listButton.setCheckable(True)
        listButton.setChecked(True)
        toolbar.addWidget(listButton)
        self.toolButtonGroup.addButton(listButton, 0)

        listButton = QtGui.QToolButton()
        listButton.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        listButton.setText("List")
        listButton.setIcon(Icon(Ico.Yellow))
        listButton.setStyleSheet("padding: 0px; margin: 0px;")
        listButton.setCheckable(True)
        toolbar.addWidget(listButton)
        self.toolButtonGroup.addButton(listButton, 1)

        #######################################
        ## Tree
        #######################################
        self.tree = QtGui.QTreeWidget()
        mainLayout.addWidget(self.tree, 10)

        self.tree.setSortingEnabled(True)
        self.tree.setRootIsDecorated(True)
        self.tree.setAlternatingRowColors(False)
        self.tree.headerItem().setText(0, "Files")
        self.connect(
            self.tree,
            QtCore.SIGNAL("itemDoubleClicked (QTreeWidgetItem *,int)"),
            self.on_tree_double_clicked)
        self.connect(self.tree,
                     QtCore.SIGNAL("itemClicked (QTreeWidgetItem *,int)"),
                     self.on_tree_clicked)

        self.load_list()
    def __init__(self, parent, main):
        QtGui.QWidget.__init__(self)

        self.main = main

        layout = QtGui.QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)
        self.setLayout(layout)

        ##################################################################
        ##  Filter Text bar
        ##################################################################
        filterBarLayout = QtGui.QHBoxLayout()
        layout.addLayout(filterBarLayout)

        buttClearFilter = QtGui.QPushButton(self)
        #buttClearFilter.setIcon( Icon(Ico.Black) )
        buttClearFilter.setFlat(True)
        buttClearFilter.setText("Clear >>")
        self.connect(buttClearFilter, QtCore.SIGNAL("clicked()"),
                     self.on_filter_clear)
        filterBarLayout.addWidget(buttClearFilter, 1)

        self.txtFilter = QtGui.QLineEdit("")
        self.connect(self.txtFilter,
                     QtCore.SIGNAL('textChanged(const QString &)'),
                     self.on_filter_changed)
        filterBarLayout.addWidget(self.txtFilter, 222)

        ##################################################################
        ##  Filter Buttons
        ##################################################################
        filterButtonsLayout = QtGui.QHBoxLayout()
        layout.addLayout(filterButtonsLayout)
        buttz = []
        buttz.append(['html', Ico.Html, "Html"])
        buttz.append(['function', Ico.Functions, 'Functions'])
        buttz.append(['keyword', Ico.Help, 'Keywords'])
        """filterButtonsGroup = QtGui.QButtonGroup(self)
		self.connect(filterButtonsGroup, QtCore.SIGNAL(""), self.on_filter_button_clicked)
		for ki, ico, caption in buttz:
			newButton = QtGui.QPushButton()
			newButton.setText(caption)
			newButton.setIcon(Icon(ico))
			newButton.setCheckable(True)
			newButton.setChecked(True if ki == 'functions' else False) # TODO remember last view
			## TODO restore state
			filterButtonsLayout.addWidget(newButton)
		
		"""
        self.filterButtons = {}
        for ki, ico, caption in buttz:
            self.filterButtons[ki] = QtGui.QCheckBox()
            self.filterButtons[ki].setText(caption)
            self.filterButtons[ki].setChecked(
                True if ki == 'function' else False)  # TODO remember last view
            self.connect(self.filterButtons[ki],
                         QtCore.SIGNAL("stateChanged(int)"), self.load_list)
            filterButtonsLayout.addWidget(self.filterButtons[ki])

        ##################################################################
        ### Models
        ##################################################################
        self.model = QtGui.QStandardItemModel(0, 1, self)
        self.model.setHeaderData(0, QtCore.Qt.Horizontal,
                                 QtCore.QVariant("Topic"))
        self.proxyModel = QtGui.QSortFilterProxyModel(self)
        self.proxyModel.setSourceModel(self.model)

        #################################################################
        ### Tree
        ##################################################################
        self.tree = QtGui.QTreeView()
        self.tree.setRootIsDecorated(False)
        self.tree.setAlternatingRowColors(True)
        self.tree.setSortingEnabled(True)
        self.tree.setModel(self.proxyModel)
        layout.addWidget(self.tree)
        self.connect(self.tree,
                     QtCore.SIGNAL("doubleClicked(const QModelIndex&)"),
                     self.on_tree_double_clicked)

        self.statusWidget = GenericWidgets.StatusWidget(self)
        self.load_list()