def add_formats(self, formats): """ Add the list of available media formats to the dialog as checkbox options """ self._formats = [] layout = self.file_formats_container.layout() for i in range(layout.count()): layout.itemAt(i).widget().close() self._formats_as_string = "" for format in formats: self._formats_as_string += " " + format cb = QCheckBox(format, self) cb.setMinimumWidth(100) cb.setStyleSheet("color: white") if format == "MP3": cb.setChecked(True) self._formats.append(cb) self.file_formats_container.layout().addWidget(cb)
def valToWidgetContainer(self, attr, val): """ construct a widget container for the specified attribute """ options = self.getRequiredOptionsListForAttribute(attr) # the default container type is the more general one if type(val) is bool: # create a new check box with checked state set to val widget = QCheckBox(self) widget.setText("") widget.setChecked(val) self.connect(widget, SIGNAL("stateChanged(int)"), self.reactOnUserInput) if self.isErrorKey(attr): widget.setStyleSheet(self.ERRORSTYLE.format("QCheckBox")) valueCallable = widget.isChecked elif options is not None: # use a combobox to represent a list of options widget = OptionsComboBox(self) widget.addItems(options) if val is not None: widget.setCurrentIndex(options.index(str(val))) self.connect(widget, SIGNAL("currentIndexChanged(int)"), self.reactOnUserInput) if self.isErrorKey(attr): widget.setStyleSheet(self.ERRORSTYLE.format("OptionsComboBox")) valueCallable = widget.currentText else: # use a simple line edit if options are undefined widget = QLineEdit(self) widget.setText(self.convertToText(val)) self.connect(widget, SIGNAL("editingFinished()"), self.reactOnUserInput) if self.isErrorKey(attr): widget.setStyleSheet(self.ERRORSTYLE.format("QLineEdit")) valueCallable = widget.text return EditableAttributeWidgetContainer(attr, widget, valueCallable)
class BaseSectionWidget(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent) self.resize(400,80) self.sectionNameEdit = QLineEdit(self) self.sectionNameEdit.setGeometry(QRect(0,5,110,30)) self.sectionNameEdit.setPlaceholderText("Section name") self.sectionNameEdit.setToolTip("Name of new section") self.sizeEdit = QDoubleSpinBox(self) self.sizeEdit.setGeometry(QRect(115,5,65,30)) self.sizeEdit.setMaximum(100.0) self.sizeEdit.setToolTip("Size of section in percent") self.colorLabel = ColorChooser(self) self.colorLabel.setGeometry(QRect(185,8,25,25)) self.displayedNameCheckBox = QCheckBox(self) self.displayedNameCheckBox.setGeometry(215, 5, 185, 30) self.displayedNameCheckBox.setText("Change displayed name") self.displayedNameCheckBox.setStyleSheet("font-size:11px;") self.displayedNameEdit = QLineEdit(self) self.displayedNameEdit.setGeometry(QRect(235,5,120,30)) self.displayedNameEdit.setPlaceholderText("Displayed name") self.displayedNameEdit.setToolTip("Displayed name of new section") self.displayedNameEdit.setVisible(False) self.removeButton = QPushButton(self) self.removeButton.setGeometry(QRect(385,5,35,30)) self.removeButton.setToolTip("Remove section") pixmap = QPixmap("./removeIcon.png") buttonIcon = QIcon(pixmap) self.removeButton.setIcon(buttonIcon) self.removeButton.setIconSize(QSize(25,25)) self.connect(self.displayedNameCheckBox, QtCore.SIGNAL("clicked()"), self.changeDisplayedName) self.connect(self.removeButton, QtCore.SIGNAL("clicked()"), QtCore.SIGNAL("remove()")) self.connect(self.sizeEdit, QtCore.SIGNAL("valueChanged(double)"), self.changeSizeValue) def changeSizeValue(self): self.emit(QtCore.SIGNAL("sizeValueChanged(QWidget*)"), self) def changeDisplayedName(self): if self.displayedNameCheckBox.isChecked(): self.displayedNameEdit.setVisible(True) self.displayedNameCheckBox.setText("") else: self.displayedNameEdit.setVisible((False)) self.displayedNameCheckBox.setText("Change displayed name") def getName(self): return self.sectionNameEdit.text() def setSize(self, size): self.sizeEdit.setValue(size) def getSize(self): return self.sizeEdit.value() def getSectionData(self): name = self.sectionNameEdit.text() size = self.sizeEdit.text() color = self.colorLabel.getSelectedColor() displayedNameFlag = self.displayedNameCheckBox.isChecked() displayedName = self.displayedNameEdit.text() return [name, size, color, displayedNameFlag, displayedName]
def _make_simple_field(cls, option, parent): field = None label = option.name.replace('_', ' ') layout = parent.layout() if option.field_type == 'bool': field = QCheckBox(parent) elif option.field_type == 'str': if option.is_multi: field = PolyLineEdit(parent) else: field = QLineEdit(parent) elif option.field_type in ('float', 'int'): if option.field_type == 'float': field = QDoubleSpinBox(parent) field.setDecimals(option.decimals) field.setSingleStep(option.step) else: field = QSpinBox(parent) if option.units: label += (' (%s)' % option.units).replace('%%', '%') if option.limits: if option.limits[0] is not None: field.setMinimum(float(option.limits[0])) if option.limits[1] is not None: field.setMaximum(float(option.limits[1])) else: field.setMaximum(sys.maxint) if option.default: field.setValue(option.default) elif option.field_type in ('file', 'directory'): #label is a button which opens chooser dialog file_dialog = FileDialog(parent, label, option.name) label = QPushButton(label, parent) #button-label label.clicked.connect(file_dialog.show) #field itself if option.is_multi: field = PolyLineEdit(parent) else: field = QLineEdit(parent) #connect signals if option.field_type == 'file': if option.is_multi: file_dialog.setFileMode(QFileDialog.ExistingFiles) file_dialog.filesSelected.connect(field.setText) else: file_dialog.fileSelected.connect(field.setText) else: file_dialog.setFileMode(QFileDialog.Directory) file_dialog.setOption(QFileDialog.ShowDirsOnly, True) file_dialog.fileSelected.connect(field.setText) field.textChanged.connect(file_dialog.setDirectory) if field: field.setToolTip(option.formatted_desc) if not option.save: field.setStyleSheet('* { background: hsv(60, 50, 255) }') if hasattr(cls.customize_field, '__call__'): cls.customize_field(option, field, label) if isinstance(label, str): label = QLabel(label, parent) label.setToolTip(option.formatted_desc) label.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) row = layout.rowCount() layout.addWidget(label, row, 0) layout.addWidget(field, row, 1) return field
class Inicio(QDialog): def __init__(self, parent=None): super(Inicio, self).__init__(parent, Qt.Dialog) self.setWindowTitle("Welcome to EDIS !") self.esettings = configuracion.ESettings() contenedor = QVBoxLayout(self) self.setMinimumWidth(570) hbox = QHBoxLayout() hbox.setContentsMargins(0, 0, 0, 0) lbl_titulo = QLabel(self.tr("Bienvenido a EDIS...")) lbl_titulo.setFont(QFont("Consolas", 20)) hbox.addWidget(lbl_titulo) hbox.addStretch(1) icono = QLabel() icono.setScaledContents(True) icono.setPixmap(QPixmap(paths.ICONOS['explore'])) hbox.addWidget(icono) frame = QFrame() frame.setStyleSheet("background: gray") frame.setFrameShape(frame.HLine) frame.setFrameShadow(frame.Plain) contenedor.addLayout(hbox) contenedor.addWidget(frame) lbl_texto = QLabel(self.tr(ui.__descripcion__)) lbl_texto.setWordWrap(True) lbl_texto.setFont(QFont("Consolas", 10)) contenedor.addWidget(lbl_texto) contenedor.addWidget(QLabel("<b>Archivos en la última sesión:</b>")) lista_archivos = QListWidget() lista_archivos.setStyleSheet("background: #383733; color: #dedede") #FIXME: debería agregar los proyectos recientes y no los archivos recientes = configuracion.RECIENTES if recientes is not None: for reciente in recientes: lista_archivos.addItem(reciente) contenedor.addWidget(lista_archivos) frame = QFrame() frame.setStyleSheet("background: gray") frame.setFrameShape(frame.HLine) frame.setFrameShadow(frame.Plain) contenedor.addWidget(frame) box_botones = QHBoxLayout() btn_abrir = QPushButton(self.tr("Abrir")) btn_abrir.setIcon(QIcon(paths.ICONOS['open-small'])) btn_nuevo = QPushButton(self.tr("Nuevo")) btn_nuevo.setIcon(QIcon(paths.ICONOS['new-small'])) btn_edis = QPushButton(self.tr("Edis web")) btn_edis.setIcon(QIcon(paths.ICONOS['web'])) self.check = QCheckBox(self.tr("Mostrar en la próxima sesión")) self.check.setChecked(self.esettings.get('general/inicio')) self.check.setStyleSheet("color: #dedede") box_botones.addWidget(btn_edis) box_botones.addWidget(self.check) box_botones.addStretch(1) box_botones.addWidget(btn_abrir) box_botones.addWidget(btn_nuevo) contenedor.addLayout(box_botones) EDIS.cargar_componente("inicio", self) # Conexiones btn_edis.clicked.connect(self._open_web) btn_abrir.clicked.connect(self._abrir) btn_nuevo.clicked.connect(self._nuevo) escape = QShortcut(QKeySequence(Qt.Key_Escape), self) escape.activated.connect(self.close) def _open_web(self): webbrowser.open_new(ui.__codigo_fuente__) def _abrir(self): principal = EDIS.componente("principal") principal.abrir_archivo() self.close() def _nuevo(self): principal = EDIS.componente("principal") principal.agregar_editor() self.close() def _cambiar_check(self): config = QSettings(paths.CONFIGURACION, QSettings.IniFormat) self.esettings.set('general/inicio', self.check.isChecked()) config.setValue('general/inicio', self.check.isChecked()) def closeEvent(self, e): super(Inicio, self).closeEvent(e) self._cambiar_check()
class NetworkAPI: """QGIS Plugin Implementation.""" def __init__(self, iface): """Constructor. :param iface: An interface instance that will be passed to this class which provides the hook by which you can manipulate the QGIS application at run time. :type iface: QgsInterface """ # Save reference to the QGIS interface self.iface = iface # initialize plugin directory self.plugin_dir = os.path.dirname(__file__) # initialize locale locale = QSettings().value('locale/userLocale')[0:2] locale_path = os.path.join(self.plugin_dir, 'i18n', 'NetworkAPI_{}.qm'.format(locale)) if os.path.exists(locale_path): self.translator = QTranslator() self.translator.load(locale_path) if qVersion() > '4.3.3': QCoreApplication.installTranslator(self.translator) # Declare instance attributes self.actions = [] self.menu = self.tr(u'&Network API') # TODO: We are going to let the user set this up in a future iteration self.toolbar = self.iface.addToolBar(u'NetworkAPI') self.toolbar.setObjectName(u'NetworkAPI') self.serversingleton = NetworkAPIServer(self.iface) # TODO connect newProjectCreated signal too? self.iface.projectRead.connect(self.onProjectLoad) # check project-specific API on/off setting, start server if desired if self.projectSetting(): self.toggleServer(True) # noinspection PyMethodMayBeStatic def tr(self, message): """Get the translation for a string using Qt translation API. We implement this ourselves since we do not inherit QObject. :param message: String for translation. :type message: str, QString :returns: Translated version of message. :rtype: QString """ # noinspection PyTypeChecker,PyArgumentList,PyCallByClass return QCoreApplication.translate('NetworkAPI', message) def add_action(self, text, callback, icon=QIcon(':/plugins/NetworkAPI/icon.png'), enabled_flag=True, add_to_menu=True, add_to_toolbar=True, status_tip=None, whats_this=None, parent=None): """Add a toolbar icon to the toolbar. :param icon_path: Path to the icon for this action. Can be a resource path (e.g. ':/plugins/foo/bar.png') or a normal file system path. :type icon_path: str :param text: Text that should be shown in menu items for this action. :type text: str :param callback: Function to be called when the action is triggered. :type callback: function :param enabled_flag: A flag indicating if the action should be enabled by default. Defaults to True. :type enabled_flag: bool :param add_to_menu: Flag indicating whether the action should also be added to the menu. Defaults to True. :type add_to_menu: bool :param add_to_toolbar: Flag indicating whether the action should also be added to the toolbar. Defaults to True. :type add_to_toolbar: bool :param status_tip: Optional text to show in a popup when mouse pointer hovers over the action. :type status_tip: str :param parent: Parent widget for the new action. Defaults None. :type parent: QWidget :param whats_this: Optional text to show in the status bar when the mouse pointer hovers over the action. :returns: The action that was created. Note that the action is also added to self.actions list. :rtype: QAction """ # Create the dialog (after translation) and keep reference self.dlg = NetworkAPIDialog() action = QAction(icon, text, parent) action.triggered.connect(callback) action.setEnabled(enabled_flag) if status_tip is not None: action.setStatusTip(status_tip) if whats_this is not None: action.setWhatsThis(whats_this) if add_to_toolbar: self.toolbar.addAction(action) if add_to_menu: self.iface.addPluginToMenu(self.menu, action) self.actions.append(action) return action def initGui(self): """Create the menu entries and toolbar icons inside the QGIS GUI.""" self.add_action(text=self.tr(u'Configure Network API'), callback=self.showConfigDialog, parent=self.iface.mainWindow()) self.statusbutton = QCheckBox() self.statusbutton.setText('Network API') self.statusbutton.setToolTip( 'Network API plugin loaded but not running - click to start listening for HTTP requests' ) self.statusbutton.clicked.connect(self.toggleServer) self.dlg.toggle.clicked.connect(self.toggleServer) self.dlg.server_port_changed.connect(self.serverConfigChanged) self.dlg.status.setText('Plugin loaded') self.iface.mainWindow().statusBar().addPermanentWidget( self.statusbutton) # connect server signals to update status button etc self.serversingleton.status_changed.connect(self.serverStatusChanged) def projectSetting(self, newValue=None): """Check or set if the network API should be enabled for the currently open project""" if newValue == None: # returns a [value, isset] tuple, only return first return QgsProject.instance().readBoolEntry('networkapi', 'active')[0] QgsProject.instance().writeEntryBool('networkapi', 'active', newValue) def onProjectLoad(self): """Triggered by a signal when a new project is loaded""" self.toggleServer(self.projectSetting()) def toggleServer(self, toggled): # save setting to project self.projectSetting(toggled) if toggled: self.serversingleton.startServer(NetworkAPIDialog.settings.port()) else: self.serversingleton.stopServer() def serverConfigChanged(self): """If the config dialog signals a change to the server port and the server is running, restart straightaway.""" if self.serversingleton.isListening(): self.toggleServer(True) def serverStatusChanged(self, status, description): """Update GUI status components, triggered by the server signaling a change of state.""" # update status bar button if status == 2: # receiving data self.statusbutton.setStyleSheet('background-color: yellow;') elif status == 3: # processing request (blocking) self.statusbutton.setStyleSheet('background-color: red;') elif status == 1: # listening self.statusbutton.setStyleSheet('') else: # only 0 = server is switched off self.statusbutton.setStyleSheet('') self.statusbutton.setChecked(bool(status)) self.statusbutton.setToolTip(description) # update text field and toggle button in the plugin config dialog self.dlg.status.setText(description) self.dlg.toggle.setChecked(bool(status)) self.dlg.toggle.setText( 'Disable API' if bool(status) else 'Enable API') def unload(self): """Removes the plugin menu item and icon from QGIS GUI.""" self.serversingleton.stopServer() for action in self.actions: self.iface.removePluginMenu(self.menu, action) self.iface.removeToolBarIcon(action) # remove the toolbar del self.toolbar self.iface.mainWindow().statusBar().removeWidget(self.statusbutton) del self.statusbutton def showConfigDialog(self): # show the dialog self.dlg.show() # Run the dialog event loop result = self.dlg.exec_()
class PreprocessorModule(QWidget): """The base widget for the pre-processing modules.""" change_signal = Signal() # Emitted when the settings are changed. # Emitted when the module has a message to display in the main widget. error_signal = Signal(str) enabled = False # If the module is enabled. def __init__(self, title, toggle_enabled, is_enabled): super().__init__() # Title bar. title_holder = QWidget() title_holder.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed) title_holder.setStyleSheet(""" .QWidget { background: qlineargradient( x1:0 y1:0, x2:0 y2:1, stop:0 #F8F8F8, stop:1 #C8C8C8); border-bottom: 1px solid #B3B3B3; } """) self.titleArea = QHBoxLayout() self.titleArea.setContentsMargins(15, 10, 15, 10) self.titleArea.setSpacing(0) title_holder.setLayout(self.titleArea) self.title_label = QLabel(title) self.title_label.setStyleSheet('font-size: 12px;') self.titleArea.addWidget(self.title_label) self.off_label = QLabel('[disabled]') self.off_label.setStyleSheet('color: #B0B0B0; margin-left: 5px;') self.titleArea.addWidget(self.off_label) self.off_label.hide() self.titleArea.addStretch() # Root. self.rootArea = QVBoxLayout() self.rootArea.setContentsMargins(0, 0, 0, 0) self.rootArea.setSpacing(0) self.setLayout(self.rootArea) self.rootArea.addWidget(title_holder) self.contents = QWidget() contentArea = QVBoxLayout() contentArea.setContentsMargins(15, 10, 15, 10) self.contents.setLayout(contentArea) self.rootArea.addWidget(self.contents) self.enabled = is_enabled if toggle_enabled: self.toggle_module_switch = QCheckBox() switch_icon_on_resource = _i('on_button.png') switch_icon_off_resource = _i('off_button.png') style_sheet = ''' QCheckBox::indicator { width: 23px; height: 23px; } QCheckBox::indicator:checked { image: url(%s); } QCheckBox::indicator:unchecked { image: url(%s); } ''' % (switch_icon_on_resource, switch_icon_off_resource) self.toggle_module_switch.setStyleSheet(style_sheet) self.toggle_module_switch.setChecked(self.enabled) self.toggle_module_switch.stateChanged.connect(self.on_toggle) # Change the view according to the flag. if self.enabled: self.off_label.hide() self.contents.show() self.title_label.setStyleSheet('color: #000000;') else: self.off_label.show() self.contents.hide() self.title_label.setStyleSheet('color: #B0B0B0;') self.titleArea.addWidget(self.toggle_module_switch) def add_to_content_area(self, new_widget): self.contents.layout().addWidget(new_widget) def add_layout_to_content_area(self, new_layout): self.contents.layout().addLayout(new_layout) def notify_on_change(self): # Emits signals corresponding to the changes done. self.change_signal.emit() def on_toggle(self): # Activated when the widget is enabled/disabled. self.enabled = not self.enabled if self.enabled: self.off_label.hide() self.contents.show() self.title_label.setStyleSheet('color: #000000;') else: self.off_label.show() self.contents.hide() self.title_label.setStyleSheet('color: #B0B0B0;') self.change_signal.emit() def restore_data(self, data): # Restores the widget state from the input data. raise NotImplementedError def export_data(self): # Export the settings for this module instance. return NotImplementedError @staticmethod def get_pp_settings(): # Returns the dict representation of this portion of a pre-processor. return NotImplementedError
class typicalWindow(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) #window self.setWindowTitle(winTitle) self.central_widget=QWidget(self) self.setCentralWidget(self.central_widget) self.masterLayout=QGridLayout(self.central_widget) self.masterLayout.setAlignment(QtCore.Qt.AlignTop) #mainlayout self.vertical_order_layout=QtGui.QBoxLayout(2) self.vertical_order_layout.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignVCenter) self.masterLayout.addLayout(self.vertical_order_layout, 0,0,1,1) self.topDivideLayout=QGridLayout() self.botDivideLayout=QGridLayout() self.upper_layout=QGridLayout() self.topDivideLayout.addLayout(self.upper_layout, 0,0,1,1) self.lower_layout=QGridLayout() self.lower_layout.setAlignment(QtCore.Qt.AlignTop) self.botDivideLayout.addLayout(self.lower_layout, 0,0,1,1) self.midLayout=QGridLayout() self.midLayout.setAlignment(QtCore.Qt.AlignTop) self.base_layout=QGridLayout() self.base_layout.setAlignment(QtCore.Qt.AlignTop) self.botDivideLayout.addLayout(self.base_layout, 4,0,1,1) sshFile=open(os.path.join(__location__, styleSheetFile+".stylesheet"), 'r') self.styleData=sshFile.read() sshFile.close self.setStyleSheet(self.styleData) self.top=QtGui.QFrame(self) self.top.setFrameShape(QtGui.QFrame.StyledPanel) self.top.setLayout(self.topDivideLayout) self.bottom=QtGui.QFrame(self) self.bottom.setFrameShape(QtGui.QFrame.StyledPanel) self.bottom.setLayout(self.botDivideLayout) self.splitPlane=QtGui.QSplitter(QtCore.Qt.Vertical) self.splitPlane.addWidget(self.top) self.splitPlane.addWidget(self.bottom) self.splitPlane.setSizes([650, 650]) self.vertical_order_layout.addWidget(self.splitPlane) #layouts self.window_layer_00=QGridLayout() self.upper_layout.addLayout(self.window_layer_00, 0,0,1,1) self.window_layer_01=QGridLayout() self.upper_layout.addLayout(self.window_layer_01,1,0,1,1) self.window_layer_02=QGridLayout() self.upper_layout.addLayout(self.window_layer_02, 2,0,1,1) self.window_layer_03=QGridLayout() self.upper_layout.addLayout(self.window_layer_03,3,0,1,1) self.window_layer_04=QGridLayout() self.upper_layout.addLayout(self.window_layer_04, 4,0,1,1) self.window_layer_05=QGridLayout() self.upper_layout.addLayout(self.window_layer_05,5,0,1,1) self.window_layer_06=QGridLayout() self.midLayout.addLayout(self.window_layer_06, 6,0,1,1) self.frame_layout=QGridLayout() self.frame_layout.setAlignment(QtCore.Qt.AlignTop) self.lower_layout.addLayout(self.frame_layout, 0,0,1,1) self.frameWidget=QtGui.QGridLayout() self.frameWidget.setContentsMargins(5,10,5,10) self.frameOverride=QtGui.QFrame() self.frameOverride.setStyleSheet("background-color: #434343; border-style: solid; border-width: 2px; border-color:#434343;border-radius:8px;") self.frameOverride.setFixedHeight(100) self.frame_layout.addLayout(self.frameWidget, 0,0,1,1) self.frame_layout.addWidget(self.frameOverride, 0,0,1,1) self.frame_title_layout=QGridLayout() self.frameWidget.addLayout(self.frame_title_layout, 0,0,1,1) self.frame_radio_layout=QGridLayout() self.frameWidget.addLayout(self.frame_radio_layout, 1,0,1,1) self.frame_btn_layout=QGridLayout() self.frameWidget.addLayout(self.frame_btn_layout, 2,0,1,1) self.btm_btn_layout=QtGui.QGridLayout() self.btm_btn_layout.setAlignment(QtCore.Qt.AlignTop) self.btm_btn_layout.setContentsMargins(5,10,5,10) self.wbFrame=QtGui.QFrame() self.wbFrame.setStyleSheet("background-color: #434343; border-style: solid; border-width: 2px; border-color:#434343;border-radius:8px;") self.btm_over_layout=QtGui.QGridLayout() self.btm_over_layout.setAlignment(QtCore.Qt.AlignTop) self.btm_over_layout.addLayout(self.btm_btn_layout, 0,0,1,1) self.btm_over_layout.addWidget(self.wbFrame, 0,0,1,1) self.pkt_layout= QGridLayout() self.pkt_layout.setAlignment(QtCore.Qt.AlignTop) self.pkt_widget=QGridLayout() self.pkt_widget.setContentsMargins(5,5,5,5) self.pkt_frame=QFrame() self.pkt_frame.setMinimumWidth(650) self.pkt_frame.setStyleSheet("background-color: #434343; border-style: solid; border-width: 2px; border-color:#434343;border-radius:8px;") self.base_layout.addLayout(self.pkt_layout, 0,0,1,1) self.wndw_layer_pkt=QtGui.QGridLayout() self.wndw_layer_pkt.setAlignment(QtCore.Qt.AlignTop) self.pkt_widget.addLayout(self.wndw_layer_pkt, 0,0,1,1) self.park_btn_pkt=QtGui.QBoxLayout(2) self.park_btn_pkt.setAlignment(QtCore.Qt.AlignTop) self.park_btn_pkt.setContentsMargins(5,2,5,8) self.wndw_layer_pkt.addLayout(self.park_btn_pkt, 0,0,1,1) self.park_frame=QtGui.QFrame() self.park_frame.setStyleSheet("background-color: #434343; border-style: solid; border-width: 2px; border-color:#434343;border-radius:8px;") #widgets self.drop_lbl_01=QLabel() self.drop_lbl_01.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) self.drop_lbl_01.setStyleSheet("color: #b1b1b1; background-color: rgba(255,255,255,0);") self.window_layer_01.addWidget(self.drop_lbl_01, 0,0,1,1) self.drop_01=QComboBox() self.window_layer_01.addWidget(self.drop_01, 0,1,1,1) QtCore.QObject.connect(self.drop_01, SIGNAL("currentIndexChanged(QString)"), self.on_drop_01_changed) self.drop_01.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.connect(self.drop_lbl_01, SIGNAL("customContextMenuRequested(QPoint)"), self.onRightClick) self.drop_lbl_02=QLabel() self.drop_lbl_02.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) self.drop_lbl_02.setStyleSheet("color: #b1b1b1; background-color: rgba(255,255,255,0);") self.window_layer_01.addWidget(self.drop_lbl_02, 0,2,1,1) self.drop_02=QComboBox() self.window_layer_01.addWidget(self.drop_02, 0,3,1,1) QtCore.QObject.connect(self.drop_02, SIGNAL("currentIndexChanged(QString)"), self.on_drop_01_changed) self.drop_02.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.connect(self.drop_lbl_01, SIGNAL("customContextMenuRequested(QPoint)"), self.onRightClick) self.button_01=QPushButton("Set") self.button_01.setToolTip("set") self.connect(self.button_01, SIGNAL('clicked()'), self.connectButton01) self.window_layer_01.addWidget(self.button_01, 0,4,1,1) self.button_02=QPushButton("Set2") self.button_02.setToolTip("set2") self.connect(self.button_02, SIGNAL('clicked()'), self.connectButton01) self.window_layer_01.addWidget(self.button_02, 0,5,1,1) self.drop_lbl_03=QLabel() self.drop_lbl_03.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) self.drop_lbl_03.setStyleSheet("color: #b1b1b1; background-color: rgba(255,255,255,0);") self.window_layer_02.addWidget(self.drop_lbl_03, 0,0,1,1) self.drop_03=QComboBox() self.window_layer_02.addWidget(self.drop_03, 0,1,1,1) QtCore.QObject.connect(self.drop_03, SIGNAL("currentIndexChanged(QString)"), self.on_drop_01_changed) self.drop_03.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.connect(self.drop_03, SIGNAL("customContextMenuRequested(QPoint)"), self.onRightClick) self.button_03=QPushButton("button_03") self.button_03.setToolTip("button_03") self.connect(self.button_03, SIGNAL('clicked()'), self.connectButton01) self.window_layer_02.addWidget(self.button_03, 0,2,1,1) self.button_04=QPushButton("button_04") self.button_04.setToolTip("button_04") self.connect(self.button_04, SIGNAL('clicked()'), self.connectButton01) self.window_layer_02.addWidget(self.button_04, 0,3,1,1) self.button_05=QPushButton("button_05") self.button_05.setToolTip("button_05") self.connect(self.button_05, SIGNAL('clicked()'), self.connectButton01) self.window_layer_02.addWidget(self.button_05, 0,4,1,1) self.drop_04=QComboBox() self.window_layer_04.addWidget(self.drop_04, 0,2,1,1) QtCore.QObject.connect(self.drop_04, SIGNAL("currentIndexChanged(QString)"), self.on_drop_01_changed) self.drop_04.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.connect(self.drop_04, SIGNAL("customContextMenuRequested(QPoint)"), self.onRightClick) self.list_frame=QFrame() self.list_frame.setStyleSheet("color: rgb"+str(buttonColoursDict.get("red"))) self.list_layout=QHBoxLayout() self.list_frame.setLayout(self.list_layout) self.drop_list_builder_05=QComboBox() self.drop_list_builder_05.addItems(alist) QtCore.QObject.connect(self.drop_list_builder_05, SIGNAL("currentIndexChanged(QString)"), self.build) self.drop_list_builder_05.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.connect(self.drop_list_builder_05, SIGNAL("customContextMenuRequested(QPoint)"), self.onRightClick) self.list_layout.addWidget(self.drop_list_builder_05) self.window_layer_04.addWidget(self.list_frame, 0,3,1,1) self.drop_list_06=QComboBox() QtCore.QObject.connect(self.drop_list_06, SIGNAL("currentIndexChanged(QString)"), self.load) self.drop_list_06.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.connect(self.drop_list_06, SIGNAL("customContextMenuRequested(QPoint)"), self.onRightClick) if len(pres)<1: self.drop_list_06.setEnabled(0) else: self.drop_list_06.setEnabled(1) self.drop_list_06.addItems(alist2) self.list_layout.addWidget(self.drop_list_06) self.type_list_drop=QComboBox() self.type_list_drop.addItems(typesOfStuffInList) QtCore.QObject.connect(self.type_list_drop, SIGNAL("currentIndexChanged(QString)"), self.on_drop_01_changed) self.window_layer_04.addWidget(self.type_list_drop, 0,5,1,1) self.button_06=QPushButton("button_06") self.button_06.setToolTip("button_06") self.connect(self.button_06, SIGNAL('clicked()'), self.connectButton01) self.window_layer_04.addWidget(self.button_06, 0,6,0,1) self.listWidg=QtGui.QTableWidget() self.listWidg.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.listWidg.customContextMenuRequested.connect(self.RightClick) self.connect(self.listWidg, SIGNAL("itemClicked(QTableWidgetItem *)"), self.clicked) self.connect(self.listWidg, SIGNAL("itemDoubleClicked(QTableWidgetItem *)"), self.dclicked) self.window_layer_05.addWidget(self.listWidg, 0,2,1,1) self.status_lbl=QLabel() self.status_lbl.setStyleSheet('background-color:transparent') self.status_lbl.setAlignment(QtCore.Qt.AlignCenter|QtCore.Qt.AlignVCenter) self.frame_title_layout.addWidget(self.status_lbl, 0,2,1,1) self.spaceHold=QLabel() self.spaceHold.setStyleSheet("color: #b1b1b1; background-color: rgba(255,255,255,0);") self.spaceHold.setAlignment(QtCore.Qt.AlignCenter|QtCore.Qt.AlignVCenter) self.frame_title_layout.addWidget(self.spaceHold, 0,0,1,1) self.checkbox=QCheckBox("add") self.checkbox.setStyleSheet("color: #b1b1b1; background-color: rgba(255,255,255,0);") self.checkbox.setContentsMargins(5,0,0,0) self.checkbox.setChecked(1) self.frame_title_layout.addWidget(self.checkbox, 0,1,1,1) self.radiobox=QGridLayout() self.radio=QRadioButton("radio") self.radio.setStyleSheet("color: #b1b1b1; background-color: rgba(255,255,255,0);") self.radio.setChecked(1) self.radiobox.addWidget(self.radio, 0,0,1,1) self.newradio=QRadioButton("newradio") self.newradio.setStyleSheet("color: #b1b1b1; background-color: rgba(255,255,255,0);") self.radiobox.addWidget(self.newradio, 0,1,1,1) self.frame_len_layout=QGridLayout() self.frame_len_layout.setAlignment(QtCore.Qt.AlignCenter|QtCore.Qt.AlignVCenter) #self.frame_title_layout.addWidget(self.frame_len_layout, 1,3,1,1) self.spaceHold=QLabel() self.spaceHold.setStyleSheet("color: #b1b1b1; background-color: rgba(255,255,255,0);") self.spaceHold.setAlignment(QtCore.Qt.AlignCenter|QtCore.Qt.AlignVCenter) self.frame_title_layout.addWidget(self.spaceHold, 0,0,1,1) self.over=QRadioButton("over") self.over.setStyleSheet("color: #b1b1b1; background-color: rgba(255,255,255,0);") self.radiobox.addWidget(self.over, 1,1,1,1) self.head_lbl=QLabel("from") self.head_lbl.setStyleSheet("color: #b1b1b1; background-color: rgba(255,255,255,0);") self.radiobox.addWidget(self.head_lbl, 1, 4,1,1) self.head_field=QTextEdit("") self.head_field.setStyleSheet("color: #b1b1b1; background-color: rgba(255,255,255,0);") self.radiobox.addWidget(self.head_field, 1, 5,1,1) self.toe_lbl=QLabel("til") self.toe_lbl.setStyleSheet("color: #b1b1b1; background-color: rgba(255,255,255,0);") self.radiobox.addWidget(self.toe_lbl, 1, 6,1,1) self.toe_field=QTextEdit("") self.toe_field.setStyleSheet("color: #b1b1b1; background-color: rgba(255,255,255,0);") self.radiobox.addWidget(self.toe_field, 1, 7,1,1) self.fieldBox=QLineEdit() self.fieldBox.setVisible(0) self.fieldBox.setText(defaultText) self.go_btn=QPushButton("go") self.connect(self.go_btn, SIGNAL('clicked()'), self.go) self.frame_btn_layout.addWidget(self.go_btn, 0,0,0,1) self.look_btn=QPushButton("look") self.connect(self.look_btn, SIGNAL('clicked()'), self.go) self.frame_btn_layout.addWidget(self.look_btn, 0,1, 0,1) self.link_btn=QPushButton("link") self.connect(self.link_btn, SIGNAL('clicked()'), self.go) self.frame_btn_layout.addWidget(self.link_btn, 0,2,1,1) self.create_btn=QPushButton("create_btn") self.connect(self.create_btn, SIGNAL('clicked()'), self.go) self.frame_btn_layout.addWidget(self.create_btn, 0,3, 1,1) self.pocketTitle=QPushButton("title") self.pocketTitle.setObjectName('label') self.pocketTitle.setStyleSheet("QPushButton#label{font-weight:500; color: rgb"str(buttonColorDict).get("yello"))+"; button-color: rgba(255,255,255,0); font-size: 10pt; border-width: 0px; font-style: bold;}") self.connect(self.pocketTitle, SIGNAL('clicked()'), self.send) self.connect(self.pocketTitle, SIGNAL('customContextMenuRequested(QPoint)'), lambda: self.send()) self.park_btn_pkt.addWidget(self.pocketTitle) self.a_btn=QPushButton("a_btn") self.a_btn.setStyleSheet("background-color: rgb"str(buttonColorDict).get("yello"))) self.connect(self.a_btn, SIGNAL('clicked()'), self.go) self.park_btn_pkt.addWidget(self.a_btn) self.card_menu=QMenu("card") self.card_menuBar=self.menuBar() self.card_menuBar.addMenu(self.card_menu) self.park_btn_pkt.addWidget(self.card_menuBar) buttonGrp.append(self.card_menuBar) self.card_btn=QToolButton() self.card_btn.setPopupMode(QToolButton.MenuButtonPopup) self.card_btn.setMenu(self.card_menu) self.card_special_btn=QPushButton("card special") self.connect(self.card_special_btn, SIGNAL('clicked()'), self.card_special_callup) action=QtGui.QWidgetAction(self.card_btn) action.setDefaultWidget(self.card_special_btn) self.card_btn.menu().addAction(action) self.B_card_btn=QToolButton() self.B_card_btn.setPopupMode(QToolButton.MenuButtonPopup) self.B_card_btn.setMenu(self.card_menu) self.B_card_special_btn=QPushButton("card special") self.connect(self.B_card_special_btn, SIGNAL('clicked()'),self.B_card_special_callup) action=QtGui.QWidgetAction(self.B_card_btn) action.setDefaultWidget(self.B_card_special_btn) self.B_card_btn.menu().addAction(action) def buttonToggle(self): get_a_layout=self.park_btn_pkt get_size=get_a_layout.getContentsMargine() if get_size==(0,0,0,0): self.setvisible() else: self.setinvisible() def setinvisible(self): for each in buttonGrp: each.setVisible(0) self.park_btn_pkt.setContentsMargine(0,0,0,0) def setvisible(self): for each in buttonGrp: each.setVisible(1) self.park_btn_pkt.setContentsMargine(5,8,5,8) def onRightClick(self): path='//' command="xdg-open '%s'"%path subprocess.Popen(command, stdout=subprocess.PIPE, shell=True) def on_drop_01_changed(self): newcol1=self.listWidg.columnWidth(0) newcol2=self.listWidg.columnWidth(1) newcol3=self.listWidg.columnWidth(2) if newcol1==0: col1, col1, col1= 240, 160, 500 else: col1, col1, col1= newcol1, newcol2, newcol3 getPath='//' get_items=os.listdir(get_items) self.listWidg.clear() self.status_lbl.clear() self.drop_03.addItems(get_items) model, countdata, listArray =self.get_listStuff() if self.on_drop_01=="item1": buildListPath=pathList.get("listpathtype").replace(getUser, newUser) self.makeList(listpath, newUser, self.listWidg, model, stat_lab, listtype) elif self.on_drop_01=="item2": buildListPath=pathList.get("listpathtype2").replace(getUser, newUser) self.makeList(listpath, newUser, self.listWidg, model, stat_lab, listtype) def clicked(self): print "hi" def dclicked(self): print "hello" def get_listStuff(self): listArray=self.listWidg countdata=listArray.rowCount() model=listArray.model() return model, countdata, listArray def getListWidgetData(self): model, countdata, listArray =self.get_listStuff() dataInListWidget=[] for row in range(model.rowCount()): dataInListWidget.append([]) for column in range(model.columnCount()): index = model.index(row, column) dataInListWidet[row].append(str(model.data(index).toString())) return dataInListWidget, countdata def listCreate(self): directory='//' getUser='******' (dataInListWidget, countdata)=self.getListWidgetData() self.listWidg.setRowCount(0) self.listWidg.setColumnCount(0) try: getFiles=[os.path.join(directory, o) for o in os.listdir(directory) if os.path.isdir(os.path.join(directory, o))] pass except: print "nothing found" return getFile=[(each) for each in getFiles if getpwuid(stat(each).st_uid).pw_name==getUser] getFiles.sort(key=lambda x: os.path.getmtime(x)) fileDict=[] for each in getFiles: statbuf=os.stat(each) timeFormat=time.strftime('%m/%d/%Y', time.gmtime(os.path.getctime(each))) getAccTime=time.ctime(os.path.getmtime(each)) if " " in str(getAccTime): getAccTime=getAccTime.split(" ") getAccTime=getAccTime[1].split(" ")[1] else: getAccTime=getAccTime.split(" ")[3] timeFormat=timeFormat+" "+getAccTime makeDict=(each, timeFormat) fileDict.append(makeDict) count=len(fileDict) fileDict=reversed(fileDict) dictItems=fileDict col1, col1, col1= 240, 160, 500 headerLabels=["Name", "Date", "Path"] self.listWidg.setRowCount(count) self.listWidg.clear() self.listWidg.setSortingEnabled(True) self.listWidg.setColumnWidth(3) self.listWidg.setColumnWidth(0, col1) self.listWidg.setColumnWidth(1, col2) self.listWidg.setColumnWidth(2, col3) self.listWidg.setHorizontalHeaderLabels(headerLabels) getVerticalHeader=self.listWidg.verticalHeader() getVerticalHeader.setDefaultSelectionSize(20) self.listWidg.setSelectionBehavior(QAbstractItemView.SelectRows) self.listWidg.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.listWidg.horizontalHeaderItem(0).setTextAlignment(QtCore.Qt.AlignLeft) self.listWidg.horizontalHeaderItem(1).setTextAlignment(QtCore.Qt.AlignLeft) self.listWidg.horizontalHeaderItem(2).setTextAlignment(QtCore.Qt.AlignLeft) for row, item in enumerate(dictItems): key=item[0].split('/')[-1] path='/'.join(item[0].split('/')[-1]) path="/"+path value=item[1] getTable=self.listWidg name=QtGui.QTableWidgetItem(key) name.setFlage(QtCore.Qt.ItemIsEnabled|QtCore.Qt.ItemIsSelectable) self.listWidg.setItem(row, 0, name) timeStamp=QtGui.QTableWidgetItem(value) self.listWidg.setItem(row, 1, timeStamp) location=QtGui.QTableWidgetItem(path) self.listWidg.setItem(row, 2, location) self.status_lbl.setText(grabText) self.status_lbl.setObjectName('non_plan_label') self.status_lbl.setStyleSheet('QLabel#non_plan_label{font-weight: 500; color: orange; background-color: rgba(255,255,255,0);font-size: 9pt}') def is_listWid_item_selected(self): listW=self.listWidg (dataInListWidget, countdata)=self.getListWidgetData() get_string_id=[] for index in xrange(countdata): get=listW.item(index, 0).isSelected() if get==True: getObj=listW.item(index, 2).text() getObj=str(getObj) get_string_id.append(getObj) else: get=listW.item(index, 1).isSelected() if get==True: getObj=listW.item(index, 2).text() getObj=str(getObj) get_string_id.append(getObj) else: get=listW.item(index, 2).isSelected() if get==True: getObj=listW.item(index, 2).text() getObj=str(getObj) get_string_id.append(getObj) return get_string_id def build(self): list_build=self.drop_list_builder_05 list_build_function=list_build.currentText() selected_in_list=self.is_listWid_item_selected() allthePaths=('//', '//') allthePathsDic={"firstPath":'//', "secondPath":'//'} #drop_list_builder_05 getlisttype=self.type_list_drop listtype=getlisttype.currentText() if selected_in_list>1: getItems=[(each) for each in selected_in_list] nameToSave=' '.join(getItems) if listtype=="firstPath": suffixAppend="first" path=allthePathsDic.get("firstPath") if listtype=="secondPath": suffixAppend="second" path=allthePathsDic.get("secondPath") compareBucket=[] getitems=[(suffixAppend+":"+each.split("/")[-1]) for each in selected_in_list] name_to_save=' '.join(getitems) if list_build_function==list_build[1]: prompt="name of list:" getcomment=self.makeBody(prompt) if getComment==None: print "needs name" return else: pass getComment=getComment.replace(' ', '_') shotList=suffixAppend+"_"+getComment+"storedText.txt" fileBuild=path+shotList copyfilemessage="creating in "+fileBuild replay = QtGui.QMessageBox.question(None, 'Message' ,copyfilemessage, QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: if os.path.isfile(fileBuild)==True: cmessage="create over "+fileBuild replay = QtGui.QMessageBox.question(None, 'Message', cmessage, QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: inp=open(fileBuild, "w+") inp.write(name_to_save) inp.close() print "created "+fileBuild else: print "cancelled" return else: inp=open(fileBuild, "w+") inp.write(name_to_save) inp.close() print "created "+fileBuild else: print "cancelled" return elif list_build_function==list_build[2]: fileDict, list=self.getAllLists(allthePaths) def getAllLists(self, stuff): fileDict={} for each in stuff: getList, getnamesdic=self.obtain_presets(each) getnames=getnamesdic.keys() for eachp in eachn in map(None, getList, getnames): dictlist={eachn:eachp} fileDict.update(dictlist) return fileDict, getList def obtain_presets(self, morestuff): preset=False format=".txt" getpreset=[os.path.join(dirpath, name) for dirpath, dirnames, files in os.walk(morestuff) for name in files if name.lower().endswith(format)] preset=[(each) for each in getpreset if "storedText" in each] getlistnames={} for each in preset: getName=each.split("/")[-1] nam=getName.split("_") getpletename='_'.join(nam[:-1]) diction={getpletename:nam[0]} getlistnames.update(diction) return preset, getlistnames # def obtain_files(self, stuff): # preset_name=[] # if presetis!=False: # for each in presetis: # pathsplit=each.split("/")[-1] # namefind=pathsplit.split("_")[0] # preset_name.append(namefind) # else: # preset_name=False # return preset_name def makeBody(self, prompt): text, ok=QtGui.QInputDialog.getText(None, 'Intput Dialog', prompt) if ok: project=(str(text)) else: return return project def makeBodyFilled(self, prompt, message): text, ok=QtGui.QInputDialog.getText(None, 'Intput Dialog', prompt, QtGui.QLineEdit.Normal, message) if ok and text: project=(str(text)) else: return return project def load(self): list_load=self.drop_list_06 list_load_function=list_build.currentText() allthePaths=('//', '//') allthePathsDic={"firstPath":'//', "secondPath":'//'} # getlisttype=self.type_list_drop # listtype=getlisttype.currentText() # if selected_in_list>1: # getItems=[(each) for each in selected_in_list] # nameToSave=' '.join(getItems) # if listtype=="firstPath" # suffixAppend="first" # path=allthePathsDic.get("firstPath") # if listtype=="secondPath" # suffixAppend="second" # path=allthePathsDic.get("secondPath") # compareBucket=[] # getitems=[(suffixAppend+":"+each.split("/")[-1]) for each in selected_in_list] # name_to_save=' '.join(getitems) if list_load_function==presetlist[0]: prompt="name of list:" getcomment=self.makeBody(prompt) if getComment==None: print "needs name" return else: pass getComment=getComment.replace(' ', '_') shotList=suffixAppend+"_"+getComment+"storedText.txt" fileBuild=path+shotList copyfilemessage="creating in "+fileBuild replay = QtGui.QMessageBox.question(None, 'Message', copyfilemessage, QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: if os.path.isfile(fileBuild)==True: cmessage="create over "+fileBuild replay = QtGui.QMessageBox.question(None, 'Message' ,cmessage, QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: inp=open(fileBuild, "w+") inp.write(name_to_save) inp.close() print "created "+fileBuild else: print "cancelled" return else: inp=open(fileBuild, "w+") inp.write(name_to_save) inp.close() print "created "+fileBuild else: print "cancelled" return elif list_build_function==list_build[2]: fileDict, list=self.getAllLists(allthePaths) def reset_callup(self): allthePaths=('//', '//') allthePathsDic={"firstPath":'//', "secondPath":'//'} getlisttype=self.type_list_drop listtype=getlisttype.currentText() if listtype=="firstPath": directory=allthePathsDic.get("firstPath") getUser=getUser self.directory_for_taking(getUser, directory) def directory_for_taking(self, getUser, directory): model, countdata, listArray =self.get_listStuff() # self.status_lbl def connectButton01(self): print "hi" def RightClick(self): print "hello" def go(self): print "go" def send(self): print "end" def card_special_callup(self): print "card_special_callup" def Bcard_special_callup(self): print "B_card_special_callup" def B_card_special_callup(self): print "B_card_special_callup"