Пример #1
0
    def _makeTerrainWizard(self):
        terrainWizard = QtGui.QWidget()

        self.cinderBlockButton = QtGui.QToolButton()
        self.cinderBlock2Button = QtGui.QToolButton()
        self.cinderBlockButton.setIcon(QtGui.QIcon(':/images/cinderblock.png'))
        self.cinderBlock2Button.setIcon(QtGui.QIcon(':/images/cinderblock_double.png'))
        self.cinderBlockButton.setIconSize(QtCore.QSize(60,60))
        self.cinderBlock2Button.setIconSize(QtCore.QSize(60,60))

        self.cinderBlockButton.connect('clicked()', functools.partial(self.onTerrainCinderblockSelected, self.cinderBlockButton))
        self.cinderBlock2Button.connect('clicked()', functools.partial(self.onTerrainCinderblockSelected, self.cinderBlock2Button))

        buttons = QtGui.QWidget()
        l = QtGui.QHBoxLayout(buttons)
        l.setMargin(0)
        l.addStretch()
        l.addWidget(self.cinderBlockButton)
        l.addWidget(self.cinderBlock2Button)
        l.addStretch()

        l = QtGui.QVBoxLayout(terrainWizard)
        l.addWidget(buttons)
        l.addWidget(_makeButton('double wide', functools.partial(startInteractiveLineDraw, [0.1905*2, 0.149225])))


        l.addStretch()
        return terrainWizard
Пример #2
0
    def addChannel(self):
        '''Adds Channel Items'''
        parent = self.addObject()
        resolution = '%sk' % str(sceneData('res'))[0]
        bitDepth = '%sbit' % sceneData('depth')
        channel = sceneData('chan')
        chan_items = []
        ## Check for existing
        try:
            for index in range(parent.childCount()):
                child = parent.child(index)
                if child.text(0) == channel:
                    chanItem = child
                    return chanItem
        except:
            pass

        ## Create and Build Channel items
        chanItem = QtGui.QTreeWidgetItem([channel, '', bitDepth, resolution])
        chanItem.setTextAlignment(1, 0x0004)
        chanItem.setTextAlignment(2, 0x0004)
        chanItem.setIcon(0, QtGui.QIcon('%s/Channel.png' % icon_path))
        chanItem.setData(0, 32, 'CHANNEL')
        chan_items.append(chanItem)
        parent.insertChildren(0, chan_items)
        return chanItem
Пример #3
0
def addDockAction(actionName, actionText, iconPath, append=False):
    """
    Get a dock action in the right-hand action toolbar. If it does not exist, it will be created

    :param actionName: The name of the action, the objectName field of the QAction
    :param actionText: The text shown on mouseover of the action and also when viewing the right-click menu
    :param iconPath: The path to the icon to display for this action
    :param append: If true, put this action at the bottom of the toolbar rather than at the top
    :return: The QAction added to the dock, or the existing action if it was already there
    """

    action = getToolBarActions().get(actionName)

    if action is None:
        assert os.path.isfile(iconPath)

        action = QtGui.QAction(QtGui.QIcon(iconPath), actionText, None)
        action.objectName = actionName
        action.checkable = True

        toolbar = getMainWindow().panelToolBar()

        if append:
            toolbar.addAction(action)
        else:
            toolbar.insertAction(toolbar.actions()[0], action)

    return action
Пример #4
0
 def getIcon(iconId):
     '''
     Return a QIcon given an icon id as a string or int.
     '''
     if type(iconId) == int:
         return QtGui.QApplication.style().standardIcon(iconId)
     else:
         return QtGui.QIcon(iconId)
Пример #5
0
    def __init__(self):

        om.init()
        self.view = PythonQt.dd.ddQVTKWidgetView()

        # init grid
        self.gridObj = vis.showGrid(self.view, parent='scene')
        self.gridObj.setProperty('Surface Mode', 'Surface with edges')
        self.gridObj.setProperty('Color', [0,0,0])
        self.gridObj.setProperty('Alpha', 0.1)

        # init view options
        self.viewOptions = vis.ViewOptionsItem(self.view)
        om.addToObjectModel(self.viewOptions, parentObj=om.findObjectByName('scene'))
        self.viewOptions.setProperty('Background color', [0.3, 0.3, 0.35])
        self.viewOptions.setProperty('Background color 2', [0.95,0.95,1])

        # setup camera
        applogic.setCameraTerrainModeEnabled(self.view, True)
        applogic.resetCamera(viewDirection=[-1, 0, -0.3], view=self.view)

        # add view behaviors
        viewBehaviors = viewbehaviors.ViewBehaviors(self.view)
        applogic._defaultRenderView = self.view

        self.mainWindow = QtGui.QMainWindow()
        self.mainWindow.setCentralWidget(self.view)
        self.mainWindow.resize(768 * (16/9.0), 768)
        self.mainWindow.setWindowTitle('Drake Visualizer')
        self.mainWindow.setWindowIcon(QtGui.QIcon(':/images/drake_logo.png'))
        self.mainWindow.show()

        self.drakeVisualizer = DrakeVisualizer(self.view)
        self.lcmglManager = lcmgl.LCMGLManager(self.view) if lcmgl.LCMGL_AVAILABLE else None

        self.screenGrabberPanel = ScreenGrabberPanel(self.view)
        self.screenGrabberDock = self.addWidgetToDock(self.screenGrabberPanel.widget, QtCore.Qt.RightDockWidgetArea)
        self.screenGrabberDock.setVisible(False)

        self.cameraBookmarksPanel = camerabookmarks.CameraBookmarkWidget(self.view)
        self.cameraBookmarksDock = self.addWidgetToDock(self.cameraBookmarksPanel.widget, QtCore.Qt.RightDockWidgetArea)
        self.cameraBookmarksDock.setVisible(False)

        model = om.getDefaultObjectModel()
        model.getTreeWidget().setWindowTitle('Scene Browser')
        model.getPropertiesPanel().setWindowTitle('Properties Panel')
        model.setActiveObject(self.viewOptions)

        self.sceneBrowserDock = self.addWidgetToDock(model.getTreeWidget(), QtCore.Qt.LeftDockWidgetArea)
        self.propertiesDock = self.addWidgetToDock(self.wrapScrollArea(model.getPropertiesPanel()), QtCore.Qt.LeftDockWidgetArea)
        self.sceneBrowserDock.setVisible(False)
        self.propertiesDock.setVisible(False)

        applogic.addShortcut(self.mainWindow, 'Ctrl+Q', self.applicationInstance().quit)
        applogic.addShortcut(self.mainWindow, 'F1', self._toggleObjectModel)
        applogic.addShortcut(self.mainWindow, 'F2', self._toggleScreenGrabber)
        applogic.addShortcut(self.mainWindow, 'F3', self._toggleCameraBookmarks)
        applogic.addShortcut(self.mainWindow, 'F8', applogic.showPythonConsole)
    def _dblclicked(self):
        if hasattr(self.parent_container, "analyses"):
            self.parent_container = self.parent_container.reload()
            icon_path = "Resources/Icons/folder.png"
            icon = QtGui.QIcon(str(self.source_dir / icon_path))
            self.setIcon(icon)
            if not self.hasChildren() and self.parent_container.analyses:

                for analysis in self.parent_container.analyses:
                    AnalysisItem(self, analysis)
Пример #7
0
    def addToolBarAction(self, toolBar, text, icon=None, callback=None):

        if isinstance(icon, str):
            icon = QtGui.QIcon(icon)
        action = toolBar.addAction(icon, text)

        if callback:
            action.connect('triggered()', callback)

        return action
Пример #8
0
 def _makeFirehoseWizard(self):
     firehoseWizard = QtGui.QWidget()
     segmentButton = QtGui.QToolButton()
     segmentButton.setIcon(QtGui.QIcon(':/images/wye.png'))
     segmentButton.setIconSize(QtCore.QSize(60,60))
     segmentButton.connect('clicked()', self.onSegmentWye)
     l = QtGui.QVBoxLayout(firehoseWizard)
     l.addWidget(segmentButton)
     l.addWidget(_makeButton('segment hose nozzle', startHoseNozzleSegmentation))
     l.addStretch()
     return firehoseWizard
Пример #9
0
    def initMainWindow(self, fields):

        organizationName = "RobotLocomotion"
        applicationName = "DirectorMainWindow"
        windowTitle = "Director App"

        if hasattr(fields, "organizationName"):
            organizationName = fields.organizationName
        if hasattr(fields, "applicationName"):
            applicationName = fields.applicationName
        if hasattr(fields, "windowTitle"):
            windowTitle = fields.windowTitle

        MainWindowApp.applicationInstance().setOrganizationName(
            organizationName)
        MainWindowApp.applicationInstance().setApplicationName(applicationName)

        app = MainWindowApp()

        app.mainWindow.setCentralWidget(fields.view)
        app.mainWindow.setWindowTitle(windowTitle)
        app.mainWindow.setWindowIcon(QtGui.QIcon(":/images/drake_logo.png"))

        sceneBrowserDock = app.addWidgetToDock(
            fields.objectModel.getTreeWidget(),
            QtCore.Qt.LeftDockWidgetArea,
            visible=True,
        )
        propertiesDock = app.addWidgetToDock(
            app.wrapScrollArea(fields.objectModel.getPropertiesPanel()),
            QtCore.Qt.LeftDockWidgetArea,
            visible=True,
        )

        app.addViewMenuSeparator()

        def toggleObjectModelDock():
            newState = not sceneBrowserDock.visible
            sceneBrowserDock.setVisible(newState)
            propertiesDock.setVisible(newState)

        applogic.addShortcut(app.mainWindow, "F1", toggleObjectModelDock)
        # applogic.addShortcut(app.mainWindow, 'F8', app.showPythonConsole)

        return FieldContainer(
            app=app,
            mainWindow=app.mainWindow,
            sceneBrowserDock=sceneBrowserDock,
            propertiesDock=propertiesDock,
            toggleObjectModelDock=toggleObjectModelDock,
            commandLineArgs=drcargs.args(),
        )
Пример #10
0
def initPhenoVein():
    # load default settings
    ctx.field("SettingsManagerGeneralParameters.load").touch()

    # load application icon
    icon = QtGui.QIcon(ctx.expandFilename("$(LOCAL)/Logo/icon.png"))
    ctx.window().widget().setWindowIcon(icon)

    ##set transparencies
    #setTransparancyValuesActiveSkel()
    #setTransparancyValuesDeleteSkel()
    ctx.field("phenoVein_Skeletonization.loadThreshold").touch()
    ctx.field("phenoVein_WriteResultsToFiles.currentVersionNumber").setValue(
        ctx.field("currentVersionNumber").value)
    return
    def __init__(self, parent_item):
        """
        Initialize AnalysisFolderItem unpopulated.

        Args:
            parent_item (ContainerItem): Container that hosts analyses
                (projects, subjects, sessions, acquisitions)
        """
        folder_name = "ANALYSES"
        super(AnalysisFolderItem, self).__init__(parent_item, folder_name)
        # TODO: put folder w/ download icon
        icon_path = "Resources/Icons/dwnld-folder.png"
        icon = QtGui.QIcon(str(self.source_dir / icon_path))
        self.setIcon(icon)
        # TODO: ensure that these work.
        self.setToolTip("Double-Click to list Analyses.")
Пример #12
0
 def addObject(self):
     '''Adds Object Items'''
     geo = sceneData('geo')
     geo_items = []
     ## Check for existing
     try:
         objectItem = self.exportList.findItems(geo, 0, 0)[0]
         return objectItem
     ## Create and Build Object items
     except:
         objectItem = QtGui.QTreeWidgetItem([geo, '', '', ''])
         objectItem.setIcon(0, QtGui.QIcon('%s/Objects.png' % icon_path))
         objectItem.setData(0, 32, 'OBJECT')
         geo_items.append(objectItem)
         self.exportList.insertTopLevelItems(0, geo_items)
         objectItem.setExpanded(True)
         return objectItem
Пример #13
0
    def initMainWindow(self, fields):

        from director import viewcolors

        organizationName = 'RobotLocomotion'
        applicationName = 'DirectorMainWindow'

        if hasattr(fields, 'organizationName'):
            organizationName = fields.organizationName
        if hasattr(fields, 'applicationName'):
            applicationName = fields.applicationName

        MainWindowApp.applicationInstance().setOrganizationName(
            organizationName)
        MainWindowApp.applicationInstance().setApplicationName(applicationName)

        app = MainWindowApp()

        app.mainWindow.setCentralWidget(fields.view)
        app.mainWindow.setWindowTitle('Director App')
        app.mainWindow.setWindowIcon(QtGui.QIcon(':/images/drake_logo.png'))

        sceneBrowserDock = app.addWidgetToDock(
            fields.objectModel.getTreeWidget(),
            QtCore.Qt.LeftDockWidgetArea,
            visible=True)
        propertiesDock = app.addWidgetToDock(app.wrapScrollArea(
            fields.objectModel.getPropertiesPanel()),
                                             QtCore.Qt.LeftDockWidgetArea,
                                             visible=True)

        app.addViewMenuSeparator()

        def toggleObjectModelDock():
            newState = not sceneBrowserDock.visible
            sceneBrowserDock.setVisible(newState)
            propertiesDock.setVisible(newState)

        applogic.addShortcut(app.mainWindow, 'F1', toggleObjectModelDock)
        #applogic.addShortcut(app.mainWindow, 'F8', app.showPythonConsole)

        return FieldContainer(app=app,
                              mainWindow=app.mainWindow,
                              sceneBrowserDock=sceneBrowserDock,
                              propertiesDock=propertiesDock,
                              toggleObjectModelDock=toggleObjectModelDock)
    def __init__(self, parent_item, folder_name):
        """
        Initialize Folder Items unpopulated.

        Args:
            parent_item (ContainerItem): Container Item parent for Folder Item.
            folder_name (str): A name for the folder item (e.g. SESSIONS).
        """
        super(FolderItem, self).__init__()
        self.source_dir = parent_item.source_dir
        icon_path = "Resources/Icons/folder.png"
        icon = QtGui.QIcon(str(self.source_dir / icon_path))
        self.parent_item = parent_item
        self.parent_container = parent_item.container
        self.folderItem = QtGui.QStandardItem()
        self.setText(folder_name)
        self.setIcon(icon)
        parent_item.appendRow(self)
Пример #15
0
    def addUDIM(self):
        '''Adds UDIM to list. Note: chain trigger, this function builds everything,
		Nothing will be built if no UDIM selected.
		'''
        selected_udim = sceneData('udim')
        ## Exit if no UDIM selected
        if not selected_udim:
            return

        parent = self.addChannel()
        exists_udim = []
        add_udim = []
        udim_items = []

        ## Check for existing
        try:
            for index in range(parent.childCount()):
                child = parent.child(index)
                exists_udim.append(child.text(0))
            for patch in selected_udim:
                if patch not in exists_udim:
                    add_udim.append(patch)
        except:
            pass

        ## Create and Build UDIM items
        for patch in add_udim:
            udimItem = QtGui.QTreeWidgetItem([patch, '', '', ''])
            udimItem.setIcon(0, QtGui.QIcon('%s/Plus.png' % icon_path))
            udimItem.setData(0, 32, 'UDIM')
            udim_items.append(udimItem)
        parent.insertChildren(0, udim_items)

        self.udimCount()

        ## Resize
        self.resize()
    def __init__(self):

        self.applicationInstance().setOrganizationName('RobotLocomotionGroup')
        self.applicationInstance().setApplicationName('drake-visualizer')

        om.init()
        self.view = PythonQt.dd.ddQVTKWidgetView()

        # init grid
        self.gridObj = vis.showGrid(self.view, parent='scene')
        self.gridObj.setProperty('Surface Mode', 'Surface with edges')
        self.gridObj.setProperty('Color', [0, 0, 0])
        self.gridObj.setProperty('Alpha', 0.1)

        # init view options
        self.viewOptions = vis.ViewOptionsItem(self.view)
        om.addToObjectModel(self.viewOptions,
                            parentObj=om.findObjectByName('scene'))
        self.viewOptions.setProperty('Background color', [0.3, 0.3, 0.35])
        self.viewOptions.setProperty('Background color 2', [0.95, 0.95, 1])

        # setup camera
        applogic.setCameraTerrainModeEnabled(self.view, True)
        applogic.resetCamera(viewDirection=[-1, 0, -0.3], view=self.view)

        # This setting improves the near plane clipping resolution.
        # Drake often draws a very large ground plane which is detrimental to
        # the near clipping for up close objects.  The trade-off is Z buffer
        # resolution but in practice things look good with this setting.
        self.view.renderer().SetNearClippingPlaneTolerance(0.0005)

        # add view behaviors
        self.viewBehaviors = viewbehaviors.ViewBehaviors(self.view)
        applogic._defaultRenderView = self.view

        self.mainWindow = QtGui.QMainWindow()
        self.mainWindow.setCentralWidget(self.view)
        self.mainWindow.resize(768 * (16 / 9.0), 768)
        self.mainWindow.setWindowTitle('Drake Visualizer')
        self.mainWindow.setWindowIcon(QtGui.QIcon(':/images/drake_logo.png'))

        self.settings = QtCore.QSettings()

        self.fileMenu = self.mainWindow.menuBar().addMenu('&File')
        self.viewMenu = self.mainWindow.menuBar().addMenu('&View')
        self.viewMenuManager = PythonQt.dd.ddViewMenu(self.viewMenu)

        self.drakeVisualizer = DrakeVisualizer(self.view)
        self.lcmglManager = lcmgl.LCMGLManager(
            self.view) if lcmgl.LCMGL_AVAILABLE else None

        model = om.getDefaultObjectModel()
        model.getTreeWidget().setWindowTitle('Scene Browser')
        model.getPropertiesPanel().setWindowTitle('Properties Panel')

        self.sceneBrowserDock = self.addWidgetToDock(
            model.getTreeWidget(), QtCore.Qt.LeftDockWidgetArea, visible=False)
        self.propertiesDock = self.addWidgetToDock(
            self.wrapScrollArea(model.getPropertiesPanel()),
            QtCore.Qt.LeftDockWidgetArea,
            visible=False)

        self.addViewMenuSeparator()

        self.screenGrabberPanel = ScreenGrabberPanel(self.view)
        self.screenGrabberDock = self.addWidgetToDock(
            self.screenGrabberPanel.widget,
            QtCore.Qt.RightDockWidgetArea,
            visible=False)

        self.cameraBookmarksPanel = camerabookmarks.CameraBookmarkWidget(
            self.view)
        self.cameraBookmarksDock = self.addWidgetToDock(
            self.cameraBookmarksPanel.widget,
            QtCore.Qt.RightDockWidgetArea,
            visible=False)

        self.cameraControlPanel = cameracontrolpanel.CameraControlPanel(
            self.view)
        self.cameraControlDock = self.addWidgetToDock(
            self.cameraControlPanel.widget,
            QtCore.Qt.RightDockWidgetArea,
            visible=False)

        act = self.fileMenu.addAction('&Quit')
        act.setShortcut(QtGui.QKeySequence('Ctrl+Q'))
        act.connect('triggered()', self.applicationInstance().quit)

        self.fileMenu.addSeparator()

        act = self.fileMenu.addAction('&Open Data...')
        act.setShortcut(QtGui.QKeySequence('Ctrl+O'))
        act.connect('triggered()', self._onOpenDataFile)

        applogic.addShortcut(self.mainWindow, 'F1', self._toggleObjectModel)
        applogic.addShortcut(self.mainWindow, 'F8', applogic.showPythonConsole)
        self.applicationInstance().connect('aboutToQuit()',
                                           self._onAboutToQuit)

        for obj in om.getObjects():
            obj.setProperty('Deletable', False)

        self.mainWindow.show()
        self._saveWindowState('MainWindowDefault')
        self._restoreWindowState('MainWindowCustom')
Пример #17
0
def iconFromTheme(name):
    if QtGui.QIcon.hasThemeIcon(name):
        return QtGui.QIcon.fromTheme(name)
    else:
        return QtGui.QIcon()
Пример #18
0
    def __init__(self):
        super(ExportQtGui, self).__init__()
        #--# Create Groups
        self.mainGroup = QtGui.QGroupBox('Export List')
        self.optionGroup = QtGui.QGroupBox('Options')
        #--# Create Layouts
        layoutV1_main = QtGui.QVBoxLayout()
        layoutV2_grp = QtGui.QVBoxLayout()
        layoutV3_grp = QtGui.QVBoxLayout()
        layoutH1_wdg = QtGui.QHBoxLayout()
        layoutH2_wdg = QtGui.QHBoxLayout()
        layoutH3_wdg = QtGui.QHBoxLayout()
        layoutH4_wdg = QtGui.QHBoxLayout()
        layoutH5_wdg = QtGui.QHBoxLayout()
        ## Build Layouts
        self.setLayout(layoutV1_main)
        self.mainGroup.setLayout(layoutV2_grp)
        self.optionGroup.setLayout(layoutV3_grp)
        layoutV2_grp.addLayout(layoutH1_wdg)
        layoutV2_grp.addLayout(layoutH2_wdg)
        layoutV3_grp.addLayout(layoutH3_wdg)
        layoutV3_grp.addLayout(layoutH4_wdg)
        layoutV3_grp.addLayout(layoutH5_wdg)
        #--# Export List TreeWidget
        self.exportList = QtGui.QTreeWidget()
        self.exportList.setSelectionMode(
            QtGui.QAbstractItemView.ExtendedSelection)
        self.exportList.setSortingEnabled(True)
        self.exportList.setAlternatingRowColors(True)
        #--# Create Widgets
        self.addBtn = QtGui.QToolButton(self)
        self.removeBtn = QtGui.QToolButton(self)
        self.clearBtn = QtGui.QToolButton(self)
        self.addAllBtn = QtGui.QToolButton(self)
        self.browseBtn = QtGui.QPushButton('Browse')
        self.exportBtn = QtGui.QPushButton('Export')
        self.formatCombo = QtGui.QComboBox()
        self.exportLabel = QtGui.QLabel('Path: ')
        self.formatLabel = QtGui.QLabel('Format: ')
        self.templateLabel = QtGui.QLabel('Template: ')
        self.templateLn = QtGui.QLineEdit(defaultTemplate)
        self.exportLn = QtGui.QLineEdit()
        ## Set Icons
        self.addBtn.setIcon(QtGui.QIcon('%s/Plus.png' % icon_path))
        self.removeBtn.setIcon(QtGui.QIcon('%s/Minus.png' % icon_path))
        self.clearBtn.setIcon(QtGui.QIcon('%s/Quit.png' % icon_path))
        self.addAllBtn.setIcon(QtGui.QIcon('%s/AddObject.png' % icon_path))
        #--# Populate Layouts
        layoutH1_wdg.addWidget(self.exportList)
        layoutH2_wdg.addWidget(self.addBtn)
        layoutH2_wdg.addWidget(self.removeBtn)
        layoutH2_wdg.addWidget(self.clearBtn)
        layoutH2_wdg.addWidget(self.addAllBtn)
        layoutH2_wdg.addStretch()
        layoutH3_wdg.addWidget(self.exportLabel)
        layoutH3_wdg.addWidget(self.exportLn)
        layoutH3_wdg.addWidget(self.browseBtn)
        layoutH4_wdg.addWidget(self.templateLabel)
        layoutH4_wdg.addWidget(self.templateLn)
        layoutH4_wdg.addWidget(self.formatLabel)
        layoutH4_wdg.addWidget(self.formatCombo)
        layoutH5_wdg.addWidget(self.exportBtn)
        ## Final
        layoutV1_main.addWidget(self.mainGroup)
        layoutV1_main.addWidget(self.optionGroup)
        #--# StyleSheets
        self.setStyleSheet("\
		QTreeWidget { alternate-background-color: rgb(100, 100, 100); } \
		")
        #--# Keyboard shortcuts
        self.deleteKey = QtGui.QShortcut(QtGui.QKeySequence('Delete'), self)
        #--# Connections
        self.addBtn.connect("clicked()", self.addUDIM)
        self.removeBtn.connect("clicked()",
                               lambda: self.manageTree(remove=True))
        self.clearBtn.connect("clicked()", self.clear)
        self.addAllBtn.connect("clicked()", self.addAllObjects)
        self.browseBtn.connect("clicked()", self.getExportPath)
        self.exportBtn.connect("clicked()", self.export)
        self.deleteKey.connect("activated()",
                               lambda: self.manageTree(remove=True))
        self.exportList.connect("itemDoubleClicked (QTreeWidgetItem *,int)",
                                lambda: self.manageTree(pick=True))
        #--# Init
        self.init()
        self.setHeader()
Пример #19
0
    def ui_n_stuff(self):
        # Variables necessaires
        self.geo_list = mari.geo.list()
        obj = mari.geo.current()
        obj_name = str(obj.name())
        obj_name = obj_name.split("_")[0]

        self.path_export = "Z:\\Groupes-cours\\NAND999-A15-N01\\Nature\\assets\\tex\\" + obj_name + "\\"

        self.nomenclature = "$CHANNEL.png"

        # Construire la fenetre et le layout de base
        self.setWindowTitle("Export Manager")
        main_layout = gui.QHBoxLayout(self)

        close_layout = gui.QVBoxLayout(self)


        # Layout pour section du top
        top_group = gui.QGroupBox()
        top_group_layout = gui.QVBoxLayout()
        top_group.setLayout(top_group_layout)

        # Layout pour section du bot
        bottom_group = gui.QGroupBox()
        bottom_group_layout = gui.QVBoxLayout()
        bottom_group.setLayout(bottom_group_layout)


        # Ajouter Group Widget au main Layout
        main_layout.addWidget(top_group)
        main_layout.addWidget(bottom_group)


        # Channel Header, Label et Widgets
        channel_label = gui.QLabel("<strong>Channels To Export</strong>")
        channel_layout = gui.QVBoxLayout()
        channel_header_layout = gui.QHBoxLayout()

        # Layout Channel
        channel_header_layout.addWidget(channel_label)
        channel_header_layout.addStretch()
        channel_layout.addLayout(channel_header_layout)

        top_group_layout.addLayout(channel_layout)

        # -----------------------------BUTTON & WIDGETS---------------------------------

        # Repopulate the earth
        chan_dict = {}
        self.checkbox_dict = {}
        checkbox_liste = []

        checkbox_group = gui.QGroupBox()
        checkbox_group_layout = gui.QVBoxLayout()
        checkbox_group.setLayout(checkbox_group_layout)
        top_group_layout.addWidget(checkbox_group)

        # Label & Checkbox builder
        geo_dict = {}
        for geo in self.geo_list:  # Iterating over each object (geo = Cube, Sphere, Torus)

            obj_label = gui.QLabel(str(geo.name()))
            checkbox_group_layout.addWidget(obj_label)

            for channel in geo.channelList():  # Iterating over each channel (channel = Diffuse, Spec, Bump...)
                checkbox = gui.QCheckBox(str(channel.name()))
                checkbox_group_layout.addWidget(checkbox)
                self.checkbox_dict[checkbox] = channel


        # Path Layout
        path_layout = gui.QHBoxLayout()

        # Ajouter un label, bouton et text field pour le path
        path_label = gui.QLabel('Path:')  # Label avant le lineEdit
        path_line_edit = gui.QLineEdit(self.path_export)  # Texte sur la ligne
        path_line_edit.setDisabled(1)
        path_line_edit.setReadOnly(1)  # Read Only mode, can select can't change
        path_pixmap = gui.QPixmap(mari.resources.path(mari.resources.ICONS) + '/ExportImages.png')
        icon = gui.QIcon(path_pixmap)
        path_button = gui.QPushButton(icon, "")

        path_layout.addWidget(path_label)
        path_layout.addWidget(path_line_edit)
        path_layout.addWidget(path_button)

        bottom_group_layout.addLayout(path_layout)



        # Select All & Select None Button
        sel_all = gui.QPushButton("Select All")
        sel_none = gui.QPushButton("Select None")
        top_group_layout.addWidget(sel_all)
        top_group_layout.addWidget(sel_none)

        sel_all.connect("clicked()", self.select_all)  # Connect button to fonction
        sel_none.connect("clicked()", self.select_none)  # Connect button to fonction


        # Export All & Export Button
        export_all = gui.QPushButton("Export All")
        export_selected = gui.QPushButton("Export Selected")
        bottom_group_layout.addWidget(export_all)
        bottom_group_layout.addWidget(export_selected)

        export_all.connect("clicked()", self.export_all_fc)  # Connect button to fonction
        export_selected.connect("clicked()", self.export_selected_fc)  # Connect button to fonction

        # Close button
        close_btn = gui.QPushButton("Close")
        close_layout.addWidget(close_btn)
        main_layout.addLayout(close_layout, stretch=1)

        close_btn.connect("clicked()", self.reject)  # Connect button to fonction
 def _set_icon(self):
     """
     Set the icon for the container item.
     """
     icon = QtGui.QIcon(str(self.source_dir / self.icon_path))
     self.setIcon(icon)