Example #1
2
 def keyPressEvent(self, event):
     """Handle key press events"""
     if event.key() == Qt.Key_Return or event.key() == Qt.Key_Enter:
         if self.add_current_text_if_valid():
             self.selected()
     else:
         QComboBox.keyPressEvent(self, event)
Example #2
0
class ComboBox(QWidget):
    def __init__(self, caption, values, default_value, caption_size=None, expand_combo=False):
        QWidget.__init__(self)

        self.values = values

        description = QLabel(caption)
        description.setWordWrap(True)
        if caption_size:
            description.setMaximumWidth(caption_size)

        self.combo = QComboBox()
        for item in values:
            self.combo.addItem(item, item)

        for i in range(0, len(values)):
            if values[i] == default_value:
                self.combo.setCurrentIndex(i)
                break

        hbox = QHBoxLayout()
        hbox.addWidget(description)
        hbox.addSpacing(10)
        if expand_combo:
            hbox.addWidget(self.combo, 1)
        else:
            hbox.addWidget(self.combo)
        hbox.setMargin(0)
        self.setLayout(hbox)
        self.setContentsMargins(0, 0, 0, 0)

    def get_value(self):
        return str(self.values[self.combo.currentIndex()])
Example #3
0
    def __init__(self, main_combo=False):
        super(ActionBar, self).__init__()
        self.setObjectName("actionbar")
        hbox = QHBoxLayout(self)
        hbox.setContentsMargins(1, 1, 1, 1)
        hbox.setSpacing(1)

        self.lbl_checks = QLabel('')
        self.lbl_checks.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        self.lbl_checks.setFixedWidth(48)
        self.lbl_checks.setVisible(False)
        hbox.addWidget(self.lbl_checks)

        self.combo = QComboBox()
        self.combo.setIconSize(QSize(16, 16))
        #model = QStandardItemModel()
        #self.combo.setModel(model)
        #self.combo.view().setDragDropMode(QAbstractItemView.InternalMove)
        self.combo.setMaximumWidth(300)
        self.combo.setObjectName("combotab")
        self.connect(self.combo, SIGNAL("currentIndexChanged(int)"),
            self.current_changed)
        self.combo.setToolTip(translations.TR_COMBO_FILE_TOOLTIP)
        self.combo.setContextMenuPolicy(Qt.CustomContextMenu)
        self.connect(self.combo, SIGNAL(
            "customContextMenuRequested(const QPoint &)"),
            self._context_menu_requested)
        hbox.addWidget(self.combo)

        self.symbols_combo = QComboBox()
        self.symbols_combo.setIconSize(QSize(16, 16))
        self.symbols_combo.setObjectName("combo_symbols")
        self.connect(self.symbols_combo, SIGNAL("activated(int)"),
            self.current_symbol_changed)
        hbox.addWidget(self.symbols_combo)

        self.code_navigator = CodeNavigator()
        hbox.addWidget(self.code_navigator)

        self._pos_text = "Line: %d, Col: %d"
        self.lbl_position = QLabel(self._pos_text % (0, 0))
        self.lbl_position.setObjectName("position")
        self.lbl_position.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        hbox.addWidget(self.lbl_position)

        self.btn_close = QPushButton(
            self.style().standardIcon(QStyle.SP_DialogCloseButton), '')
        self.btn_close.setIconSize(QSize(16, 16))
        if main_combo:
            self.btn_close.setObjectName('navigation_button')
            self.btn_close.setToolTip(translations.TR_CLOSE_FILE)
            self.connect(self.btn_close, SIGNAL("clicked()"),
                self.about_to_close_file)
        else:
            self.btn_close.setObjectName('close_split')
            self.btn_close.setToolTip(translations.TR_CLOSE_SPLIT)
            self.connect(self.btn_close, SIGNAL("clicked()"),
                self.close_split)
        self.btn_close.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        hbox.addWidget(self.btn_close)
Example #4
0
 def __init__(self, value):
     QComboBox.__init__(self)
     self._value = value
     for k, l in value.choices.iteritems():
         self.addItem(l, QVariant(k))
         if value.default == k:
             self.setCurrentIndex(self.count()-1)
Example #5
0
    def create_combobox ( self, parent, editable = False ):
        """ Returns an adapted QComboBox control.
        """
        control = QComboBox( check_parent( parent ) )
        control.setEditable( editable )

        return control_adapter( control )
 def createEditor(self, parent, _QStyleOptionViewItem, index):
     combo = QComboBox(parent)
     attr = index.model()[index.row()][0]
     combo.setModel(self._combo_continuous_model if attr.is_continuous else
                    self._combo_discrete_model if attr.is_discrete else
                    self._combo_string_model)
     return combo
Example #7
0
class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        # codeCompletionBlock start
        from PyQt4.QtGui import QComboBox, QToolButton, QStackedWidget

        self.accountSelection = QComboBox()
        self.accountButton = QToolButton()
        self.accountStack = QStackedWidget()
        # codeCompletionBlock end

        uic.loadUi(getUiFile('MainWindow'), self)

        self.model = Model()
        self.model.loadLastSession()

        self.actionAdd_Account.triggered.connect(self.addSubAccount)
        self.accountSelection.currentIndexChanged.connect(self.accountStack.setCurrentIndex)

    def addSubAccount(self):
        data = inquireAccountData()
        account = self.model.createNewAccount(data['name'],
                                              data['description'],
                                              data['numbers'])
        self.model.addNewAccount(account)

        self.accountSelection.addItem(account.description)
        self.accountStack.addWidget(AccountWidget())
Example #8
0
    def __init__(self, iterable=False, load_all = False, help_link=""):
        QWidget.__init__(self)
        self._iterable = iterable

        addHelpToWidget(self, help_link)

        layout = QHBoxLayout()

        analysis_module_combo = QComboBox()

        self._module_names = getAnalysisModuleNames(self._iterable)
        if load_all:
            self._module_names += getAnalysisModuleNames(not self._iterable)

        for module_name in self._module_names:
            analysis_module_combo.addItem(module_name)

        self._current_module_name = self._getCurrentAnalysisModuleName()
        if self._current_module_name is not None:
            analysis_module_combo.setCurrentIndex(self._module_names.index(self._current_module_name))

        analysis_module_combo.currentIndexChanged[int].connect(self.analysisModuleChanged)

        variables_popup_button = QToolButton()
        variables_popup_button.setIcon(resourceIcon("ide/small/cog_edit.png"))
        variables_popup_button.clicked.connect(self.showVariablesPopup)
        variables_popup_button.setMaximumSize(20, 20)

        layout.addWidget(analysis_module_combo, 0, Qt.AlignLeft)
        layout.addWidget(variables_popup_button, 0, Qt.AlignLeft)
        layout.setContentsMargins(QMargins(0, 0, 0, 0))
        layout.addStretch()

        self.setLayout(layout)
Example #9
0
 def createEditor(self, parent, option, index):
     if index.column() == TEU:
         spinbox = QSpinBox(parent)
         spinbox.setRange(0, 200000)
         spinbox.setSingleStep(1000)
         spinbox.setAlignment(Qt.AlignRight|Qt.AlignVCenter)
         return spinbox
     elif index.column() == OWNER:
         combobox = QComboBox(parent)
         combobox.addItems(sorted(index.model().owners))
         combobox.setEditable(True)
         return combobox
     elif index.column() == COUNTRY:
         combobox = QComboBox(parent)
         combobox.addItems(sorted(index.model().countries))
         combobox.setEditable(True)
         return combobox
     elif index.column() == NAME:
         editor = QLineEdit(parent)
         self.connect(editor, SIGNAL("returnPressed()"),
                      self.commitAndCloseEditor)
         return editor
     elif index.column() == DESCRIPTION:
         editor = richtextlineedit.RichTextLineEdit(parent)
         self.connect(editor, SIGNAL("returnPressed()"),
                      self.commitAndCloseEditor)
         return editor
     else:
         return QStyledItemDelegate.createEditor(self, parent, option,
                                                 index)
Example #10
0
 def createEditor(
     self,
     parent,
     options,
     index,
 ):
     setting = index.model().data(index, Qt.UserRole)
     if setting.valuetype == Setting.FOLDER:
         return FileDirectorySelector(parent)
     elif setting.valuetype == Setting.FILE:
         return FileDirectorySelector(parent, True)
     elif setting.valuetype == Setting.SELECTION:
         combo = QComboBox(parent)
         combo.addItems(setting.options)
         return combo
     else:
         value = self.convertValue(index.model().data(index, Qt.EditRole))
         if isinstance(value, (int, long)):
             spnBox = QgsSpinBox(parent)
             spnBox.setRange(-999999999, 999999999)
             return spnBox
         elif isinstance(value, float):
             spnBox = QgsDoubleSpinBox(parent)
             spnBox.setRange(-999999999.999999, 999999999.999999)
             spnBox.setDecimals(6)
             return spnBox
         elif isinstance(value, (str, unicode)):
             return QLineEdit(parent)
Example #11
0
class WidgetSelector(QWidget):
    def __init__(self, parent):
        QWidget.__init__(self, parent)
        self.key_text = QLineEdit(self)
        self.widget_select = QComboBox(self)
        self.value_widget = None
        self.layout = QHBoxLayout(self)
        self.layout.addWidget(self.key_text)
        self.layout.addWidget(self.widget_select)

        self.options = NodeWidget.get_simple_widgets()
        for i, option in enumerate(self.options):
            self.widget_select.addItem(option.get_description(), i)

        self.widget_select.currentIndexChanged.connect(self.change_widget)


    def get_item(self):
        return {
            "key":unicode(self.key_text.text()),
            "value":self.value_widget.data
        }

    def change_widget(self):

        w_class = self.options[self.widget_select.currentIndex()]
        if self.value_widget:
            self.layout.removeWidget(self.value_widget)
            self.value_widget.setParent(None)
            self.value_widget = None

        element_scheme = StructuredNode({"Type":w_class.data_type})
        new_data = NodeWidget.get_default_data(element_scheme, None)
        self.value_widget = NodeWidget.create_node_widget("__not_exist", new_data, element_scheme)
        self.layout.addWidget(self.value_widget)
Example #12
0
 def createKeySignatureWidget(self):
     self.keySignatureLabel = QLabel()
     self.keyNote = QComboBox()
     self.keyNote.setModel(listmodel.ListModel(keyNames['nederlands'], self.keyNote))
     self.keyMode = QComboBox()
     self.keyMode.setModel(listmodel.ListModel(modes, self.keyMode, display=listmodel.translate_index(1)))
     self.keySignatureLabel.setBuddy(self.keyNote)
Example #13
0
    def __init__(self):
        QWidget.__init__(self)
        self.layout = QGridLayout(self)
        self.viewer = None
        
        self.x_label = QLabel("X axis:")
        self.x_chooser = QComboBox()
        self.x_chooser.setEditable(True)
        self.y_label = QLabel("Y axis:")
        self.y_chooser = QComboBox()
        self.y_chooser.setEditable(True)
        # TODO: add completers
        self.nav_reset = QPushButton("&Reset view")

        self.layout.addWidget(self.x_label, 1, 0)
        self.layout.addWidget(self.x_chooser, 1, 1)
        self.layout.addWidget(self.y_label, 1, 3)
        self.layout.addWidget(self.y_chooser, 1, 4)
        self.layout.addWidget(self.nav_reset, 1, 6)
        self.layout.setColumnStretch(1, 1)
        self.layout.setColumnStretch(4, 1)
        self.layout.setRowStretch(0, 1)

        self.nav_reset.clicked.connect(self.reset_view)
        self.x_chooser.currentIndexChanged['QString'].connect(self.set_x_from_string)
        self.y_chooser.currentIndexChanged['QString'].connect(self.set_y_from_string)
    
        self.x_chooser.activated['QString'].connect(self.set_x_from_string)
Example #14
0
class SizeRequest(Request):
  def __init__(self, parent):
    Request.__init__(self, parent)
    self.setOperators()
    self.setContent()
    self.setSizeType()

  def setOperators(self):
    self.operatorCombo = OperatorCombo(self)
    self.hlayout.addWidget(self.operatorCombo)

  def setContent(self):
    self.content = QLineEdit(self)
    self.validator = QIntValidator(0,2147483647, self)
    self.content.setValidator(self.validator)
    self.hlayout.addWidget(self.content)

  def setSizeType(self):
    self.stype = QComboBox(self)
    self.stype.addItem(QString("KB"))
    self.stype.addItem(QString("MB"))
    self.stype.addItem(QString("GB"))
    self.hlayout.addWidget(self.stype)

  def request(self):
    operator = str(self.operatorCombo.currentText())
    factor = SIZE_T[self.stype.currentIndex()]
    size = self.content.text().toULongLong()[0]
    size = size * factor
    res = "(size " + operator + " " + str(size) + ")"
    return res
Example #15
0
    def __init__(self, fileBrowser):
        QComboBox.__init__(self, fileBrowser)

        self._fileBrowser = fileBrowser

        self.setAttribute( Qt.WA_MacShowFocusRect, False )
        self.setAttribute( Qt.WA_MacSmallSize )
        self.setEditable(True)
        self.setMinimumContentsLength(1)
        self.setSizeAdjustPolicy(QComboBox.AdjustToMinimumContentsLengthWithIcon)
        self.lineEdit().setReadOnly( False )
        self._completionModel = QDirModel(self.lineEdit())
        self._completionModel.setFilter( QDir.AllDirs | QDir.NoDotAndDotDot )
        self.lineEdit().setCompleter(QCompleter(self._completionModel,
                                               self.lineEdit()))
        #TODO QDirModel is deprecated but QCompleter does not yet handle
        #QFileSystemModel - please update when possible.
        self._count = 0

        # Show popup action
        self._showPopupAction = QAction(QIcon(':enkiicons/filtered.png'), "File browser history", self)
        self._showPopupAction.setShortcut('Ctrl+H')
        core.actionManager().addAction("mNavigation/mFileBrowser/aMenuShow", self._showPopupAction)
        self._showPopupAction.triggered.connect(self._onShowPopup)

        # reconnected in self.updateComboItems()
        self.currentIndexChanged[int].connect(self._onItemSelected)
Example #16
0
 def __init__(self, parent):
     super(LilyPondPreferences, self).__init__(parent)
     
     grid = QGridLayout()
     self.setLayout(grid)
     
     self.pitchLanguageLabel = QLabel()
     self.pitchLanguage = QComboBox()
     self.versionLabel = QLabel()
     self.version = QComboBox(editable=True)
     
     self.pitchLanguage.addItem('')
     self.pitchLanguage.addItems([lang.title() for lang in sorted(scoreproperties.keyNames)])
     self.version.addItem(lilypondinfo.preferred().versionString())
     for v in ("2.18.0", "2.16.0", "2.14.0", "2.12.0"):
         if v != lilypondinfo.preferred().versionString():
             self.version.addItem(v)
     
     grid.addWidget(self.pitchLanguageLabel, 0, 0)
     grid.addWidget(self.pitchLanguage, 0, 1)
     grid.addWidget(self.versionLabel, 1, 0)
     grid.addWidget(self.version, 1, 1)
     
     self.pitchLanguage.activated.connect(self.slotPitchLanguageChanged)
     app.translateUI(self)
     self.loadSettings()
     self.window().finished.connect(self.saveSettings)
Example #17
0
    def __init__(self, parent, hex_widget, column):
        columnproviders.AbstractColumnConfigurationWidget.__init__(self)
        QWidget.__init__(self, parent)
        self.hexWidget = hex_widget
        self.column = column

        self.setLayout(QFormLayout())

        self.cmbBase = QComboBox(self)
        self.cmbBase.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
        self.layout().addRow(utils.tr('Base:'), self.cmbBase)
        for base in ((utils.tr('Hex'), 16), (utils.tr('Dec'), 10), (utils.tr('Oct'), 8), (utils.tr('Bin'), 2)):
            self.cmbBase.addItem(base[0], base[1])
        if column is not None:
            self.cmbBase.setCurrentIndex(self.cmbBase.findData(column.formatter.base))

        self.cmbStyle = QComboBox(self)
        self.cmbStyle.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
        self.layout().addRow(utils.tr('Style:'), self.cmbStyle)
        for style_data in ((utils.tr('No style'), 'none'), (utils.tr('C'), 'c'), (utils.tr('Assembler'), 'asm')):
            self.cmbStyle.addItem(style_data[0], style_data[1])
        if column is not None:
            self.cmbStyle.setCurrentIndex(self.cmbStyle.findData(column.formatter.styleName))

        self.intBaseAddress = integeredit.IntegerEdit(self)
        self.intBaseAddress.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
        self.layout().addRow(utils.tr('Base address:'), self.intBaseAddress)
        self.intBaseAddress.minimum = -10000000000000
        if column is not None:
            self.intBaseAddress.number = column.baseAddress
    def createAdditionalControlWidgets(self):
        self.windowChooser = QComboBox()
        self.windowChooser.addItems(self.prm['data']['available_windows'])
        self.windowChooser.setCurrentIndex(self.windowChooser.findText(self.prm['pref']['smoothingWindow']))
        self.windowChooserLabel = QLabel(self.tr('Window:'))
        self.gridBox.addWidget(self.windowChooserLabel, 0, 4)
        self.gridBox.addWidget(self.windowChooser, 0, 5)
        self.windowChooser.currentIndexChanged[int].connect(self.onChangeWindowFunction)

        self.winLengthLabel= QLabel(self.tr('Window Length (s)'))
        self.winLengthWidget = QLineEdit(self.currLocale.toString(0)) 
        self.winLengthWidget.setValidator(QDoubleValidator(self))
        self.gridBox.addWidget(self.winLengthLabel, 2, 0)
        self.gridBox.addWidget(self.winLengthWidget, 2, 1)

        self.winOverlapLabel= QLabel(self.tr('Overlap (%)'))
        self.winOverlapWidget = QLineEdit(self.currLocale.toString(0)) 
        self.winOverlapWidget.setValidator(QDoubleValidator(self))
        self.gridBox.addWidget(self.winOverlapLabel, 2, 2)
        self.gridBox.addWidget(self.winOverlapWidget, 2, 3)

        self.cmapChooserLabel = QLabel(self.tr('Color Map:'))
        self.gridBox.addWidget(self.cmapChooserLabel, 1, 4)
        self.cmapChooser = QComboBox()
        self.cmapChooser.addItems(self.prm['data']['available_colormaps'])
        self.cmapChooser.setCurrentIndex(self.cmapChooser.findText(self.prm['pref']['colormap']))
        self.gridBox.addWidget(self.cmapChooser, 1, 5)

        self.windowChooser.currentIndexChanged[int].connect(self.onChangeWindowFunction)
        self.cmapChooser.currentIndexChanged[int].connect(self.onChangeWindowFunction)
        self.winLengthWidget.editingFinished.connect(self.onChangeWindowFunction)
        self.winOverlapWidget.editingFinished.connect(self.onChangeWindowFunction)
 def Get(self, widget : QtGui.QComboBox): # return val from enum
     if len(self.enum) != widget.count():
         raise GuiFieldEnumLenErr(self.enum, widget.count(), widget.count())
     
     i = widget.currentIndex()
     if i < 0: return ""
     return self.enum[i]
Example #20
0
    def __init__(self, client, arg, value, compatibility=None):

        ArgFilterBase.__init__(self, client, arg, value, compatibility)
        QComboBox.__init__(self)
        assert compatibility is not None

        self.setEditable(True)
        self.users = []
        self.setDuplicatesEnabled(False)

        # This attribut is used to prevent an infinite loop
        # when we change text or list values as we are in the
        # editTextChanged callback.
        self.lock = False

#        if value and (isinstance(value, (int,long)) or isinstance(value, (str, unicode)) and value.isdigit()):
        if value:
            if self.compatibility.user_id:
                userlist = self.client.call('ufwi_log', 'table', 'UserIDTable', {'user_id': value})
            else:
                userlist = self.client.call('ufwi_log', 'table', 'UserIDTable', {'username': value})

            if userlist:
                if self.compatibility.user_id:
                    self.textChanged(userlist[0][0])
                else:
                    self.textChanged(userlist[0])
            else:
                self.textChanged('') # to initialize state to NOLIST
        else:
            self.textChanged('') # to initialize state to NOLIST

        self.connect(self, SIGNAL('currentIndexChanged(int)'), self.indexChanged)
        self.connect(self, SIGNAL('editTextChanged(const QString &)'), self.textChanged)
Example #21
0
class ConfigWidget(QWidget):

    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

        layout = QFormLayout()
        self.setLayout(layout)

        self.label = QLabel("Audio Input")
        self.inputLayout = QHBoxLayout()
        self.combobox = QComboBox()
        self.combobox.setMinimumWidth(150)
        self.inputSettingsToolButton = QToolButton()
        self.inputSettingsToolButton.setText("Settings")
        configIcon = QIcon.fromTheme("preferences-other")
        self.inputSettingsToolButton.setIcon(configIcon)
        self.inputSettingsToolButton.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
        self.inputSettingsToolButton.setToolButtonStyle(Qt.ToolButtonIconOnly)
        self.inputSettingsStack = QStackedWidget()
        blankWidget = QWidget()
        self.inputSettingsStack.addWidget(blankWidget)
        self.inputSettingsStack.addWidget(self.inputSettingsToolButton)
        self.inputLayout.addWidget(self.combobox)
        self.inputLayout.addWidget(self.inputSettingsStack)
        layout.addRow(self.label, self.inputLayout)
Example #22
0
class FormComboWidget(QWidget):

    def __init__(self, datalist, comment="", parent=None):
        QWidget.__init__(self, parent)
        layout = QVBoxLayout()
        self.setLayout(layout)
        self.combobox = QComboBox()
        layout.addWidget(self.combobox)

        self.stackwidget = QStackedWidget(self)
        layout.addWidget(self.stackwidget)
        self.connect(self.combobox, SIGNAL("currentIndexChanged(int)"),
                     self.stackwidget, SLOT("setCurrentIndex(int)"))

        self.widgetlist = []
        for data, title, comment in datalist:
            self.combobox.addItem(title)
            widget = FormWidget(data, comment=comment, parent=self)
            self.stackwidget.addWidget(widget)
            self.widgetlist.append(widget)

    def setup(self):
        for widget in self.widgetlist:
            widget.setup()

    def get(self):
        return [widget.get() for widget in self.widgetlist]
 def Translate(self, lang):
     translator = QTranslator(qApp)
     translator.load(":Translations/dc_" + lang + ".qm")
     qApp.installTranslator(translator)
     self.basename = self.tr("Data Centers GUI")
     self.demandGraphEditor.basename = self.demandGraphEditor.tr("Request Graph Editor")
     self.resourcesGraphEditor.basename = self.resourcesGraphEditor.tr("Resources Graph Editor")
     self.ui.retranslateUi(self)
     self.settingsDialog.ui.retranslateUi(self.settingsDialog)
     self.demandGraphEditor.ui.retranslateUi(self.demandGraphEditor)
     self.resourcesGraphEditor.ui.retranslateUi(self.resourcesGraphEditor)
     self.randomDialog.ui.retranslateUi(self.randomDialog)
     self.Vis.ui.retranslateUi(self.Vis)
     self.graphvis.ui.retranslateUi(self.graphvis)
     self.showStats()
     for k in self.demands.keys():
         cb = QComboBox()
         cb.addItems([self.tr("No"),self.tr("Yes")])
         cb.setCurrentIndex(0 if self.demands[k].critical else 1)
         QObject.connect(cb, SIGNAL("currentIndexChanged(int)"), k.emitDataChanged)
         self.ui.demands.setItemWidget(k,3,cb)
         if self.demands[k].assigned:
             k.setText(4, self.tr("Yes"))
         else:
             k.setText(4, self.tr("No"))
Example #24
0
    def __init__(self, parent, configuration):
        QTableWidget.__init__(self, 5, 1, parent)
        self._configuration = configuration
        self._manual_change = True
        self.setVerticalHeaderLabels(
            ["Duration (cycles)", "Duration (ms)", "Cycles / ms",
             'RAM access time', 'Execution Time Model'])
        self.horizontalHeader().setStretchLastSection(True)
        self.horizontalHeader().hide()
        self.setItem(0, 0, QTableWidgetItem(str(configuration.duration)))
        self.setItem(1, 0, QTableWidgetItem(str(
            float(configuration.duration) / configuration.cycles_per_ms)))
        self.setItem(2, 0, QTableWidgetItem(str(configuration.cycles_per_ms)))
        self.setItem(
            3, 0, QTableWidgetItem(str(configuration.memory_access_time)))

        item = QComboBox(self)
        selected = 0
        for i, (etm_name, etm_code) in \
                enumerate(execution_time_model_names.items()):
            item.addItem(etm_name)
            if etm_code == configuration.etm:
                selected = i
        item.setCurrentIndex(selected)
        self.setCellWidget(4, 0, item)

        def activation_handler(x):
            configuration.etm = execution_time_model_names[str(x)]
            configuration.conf_changed()
        item.activated['QString'].connect(activation_handler)

#        self._update_observe_window()

        self.cellChanged.connect(self._cell_changed)
Example #25
0
    def create_widget(self):
        """ Create the QComboBox widget.

        """
        box = QComboBox(self.parent_widget())
        box.setInsertPolicy(QComboBox.NoInsert)
        self.widget = box
 def addObjToForm(obj, feature):      
     ''' used to populate the update form and 2x Queue Views
         obj = form or widget
         feature == the aims feature '''
     obj.uAddressType.setCurrentIndex(QComboBox.findText(obj.uAddressType, obj.feature._addressType))
     obj.uExternalAddId.setText(UiUtility.nullEqualsNone(obj.feature._externalAddressId))
     obj.uExternalAddressIdScheme.setText(UiUtility.nullEqualsNone(obj.feature._externalAddressIdScheme))
     obj.ulifeCycle.setCurrentIndex(QComboBox.findText(obj.ulifeCycle, obj.feature._lifecycle))
     obj.uUnitType.setCurrentIndex(QComboBox.findText(obj.uUnitType, obj.feature._unitType))
     obj.uUnit.setText(UiUtility.nullEqualsNone(obj.feature._unitValue))
     obj.uLevelType.setCurrentIndex(QComboBox.findText(obj.uLevelType, obj.feature._levelType))
     obj.uLevelValue.setText(UiUtility.nullEqualsNone(obj.feature._levelValue))
     obj.uPrefix.setText(UiUtility.nullEqualsNone(obj.feature._addressNumberPrefix))
     obj.uBase.setText(UiUtility.nullEqualsNone(obj.feature._addressNumber))
     obj.uAlpha.setText(UiUtility.nullEqualsNone(obj.feature._addressNumberSuffix))
     obj.uHigh.setText(UiUtility.nullEqualsNone(obj.feature._addressNumberHigh))
     obj.uRoadCentrelineId.setText(UiUtility.nullEqualsNone(obj.feature._roadCentrelineId))
     obj.uRoadPrefix.setText(UiUtility.nullEqualsNone(obj.feature._roadPrefix))
     obj.uRoadName.setText(UiUtility.nullEqualsNone(obj.feature._roadName))
     obj.uRoadTypeName.setText(UiUtility.nullEqualsNone(obj.feature._roadType))
     obj.uRoadSuffix.setText(UiUtility.nullEqualsNone(obj.feature._roadSuffix))
     obj.uWaterRouteName.setText(UiUtility.nullEqualsNone(obj.feature._waterRoute))
     obj.uWaterName.setText(UiUtility.nullEqualsNone(obj.feature._waterName))
     
     # addressable object
     obj.uObjectType.setCurrentIndex(QComboBox.findText(obj.uObjectType, obj.feature._aoType))
     obj.uObjectName.setText(UiUtility.nullEqualsNone(obj.feature._aoName))
     obj.uExternalObjectId.setText(UiUtility.nullEqualsNone(obj.feature._externalObjectId))
     obj.uExtObjectIdScheme.setText(UiUtility.nullEqualsNone(obj.feature._externalObjectIdScheme))
     obj.uValuationReference.setText(UiUtility.nullEqualsNone(obj.feature._valuationReference))
     obj.uCertificateOfTitle.setText(UiUtility.nullEqualsNone(obj.feature._certificateOfTitle))
     obj.uAppellation.setText(UiUtility.nullEqualsNone(obj.feature._appellation))
     from QueueEditorWidget import QueueEditorWidget
     if isinstance(obj, QueueEditorWidget):
         pass
Example #27
0
class KeywordConfigurationWidget(ConfigurationWidget):
    def __init__(self):
        ConfigurationWidget.__init__(self)
        self.keyIndexCombo = QComboBox()
        self.addRow("Key index:", self.keyIndexCombo)

        self.connect(self.keyIndexCombo, SIGNAL("currentIndexChanged(QString)"), self.applyConfiguration)

    def setKeyIndexList(self, list):
        self.disconnect(self.keyIndexCombo, SIGNAL("currentIndexChanged(QString)"), self.applyConfiguration)
        self.keyIndexCombo.clear()
        self.keyIndexCombo.addItems(list)
        self.connect(self.keyIndexCombo, SIGNAL("currentIndexChanged(QString)"), self.applyConfiguration)

    def setParameter(self, parameter):
        self.parameter = parameter
        self.applyConfiguration(False)

    def applyConfiguration(self, emit=True):
        user_data = {"state": self.getState(), "key_index": self.getKeyIndex()}
        self.parameter.setUserData(user_data)
        self.emitConfigurationChanged(emit)

    def getKeyIndex(self):
        return str(self.keyIndexCombo.currentText())
    def createPresets(self):
        preset_combo = QComboBox()
        for preset in self._presets:
            preset_combo.addItem(preset)

        preset_combo.currentIndexChanged.connect(self.presetSelected)
        return preset_combo
Example #29
0
File: goto.py Project: halbbob/dff
    def createGoto(self):
        self.offbox = QGroupBox("Go to location")
        self.offgrid = QGridLayout()

        #Format
        formatlabel = QLabel("Format :")
        self.format = QComboBox()
        self.format.addItem("Hexadecimal")
        self.format.addItem("Decimal")
        #Type: Offset, Page, Block
        typelabel = QLabel("Type :")
        self.type = QComboBox()
        self.type.addItem("Offset")
        self.type.addItem("Page")
        self.type.addItem("Block")
        #Place
        offsetlabel = QLabel("Place :")
        self.offset = QLineEdit()

        self.offgrid.addWidget(formatlabel, 0, 0)
        self.offgrid.addWidget(self.format, 0, 1)

        self.offgrid.addWidget(typelabel, 1, 0)
        self.offgrid.addWidget(self.type, 1, 1)

        self.offgrid.addWidget(offsetlabel, 2, 0)
        self.offgrid.addWidget(self.offset, 2, 1)

        self.offbox.setLayout(self.offgrid)
        self.vbox.addWidget(self.offbox)
 def OpenProjectFromFile(self, name):
     self.demands = {}
     self.project = Project()
     
     #try:
     self.project.Load(name)
     #except :
         # TODO: proper exceptioning
     #    QMessageBox.critical(self, self.tr("An error occured"), self.tr("File is not a valid project file: ") + name)
     #    return
     self.projectFile = name
     self.resourcesGraphEditor.setData(self.project.resources)
     self.ui.demands.clear()
     for d in self.project.demands:
         it = QTreeWidgetItem(self.ui.demands, QStringList([d.id, str(d.startTime), str(d.endTime), self.tr("No") if d.critical else self.tr("Yes"), self.tr("Yes") if d.assigned else self.tr("No")]))
         cb = QComboBox()
         cb.addItems([self.tr("No"),self.tr("Yes")])
         cb.setCurrentIndex(0 if d.critical else 1)
         QObject.connect(cb, SIGNAL("currentIndexChanged(int)"), it.emitDataChanged)
         self.ui.demands.setItemWidget(it,3,cb)
         it.setFlags(Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable)
         self.demands[it] = d
     self.UpdateRecentFiles()
     self.setWindowTitle(self.project.name + " - " + self.basename)
     self.ui.projectname.setText(self.project.name)
     self.showStats()
     self.backupTimer.start()
     self.autosaveTimer.start()
Example #31
0
    def __init__(self):
        gr.top_block.__init__(self, "Airspy Scan2")
        Qt.QWidget.__init__(self)
        self.setWindowTitle("Airspy Scan2")
        qtgui.util.check_set_qss()
        try:
            self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
        except:
            pass
        self.top_scroll_layout = Qt.QVBoxLayout()
        self.setLayout(self.top_scroll_layout)
        self.top_scroll = Qt.QScrollArea()
        self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
        self.top_scroll_layout.addWidget(self.top_scroll)
        self.top_scroll.setWidgetResizable(True)
        self.top_widget = Qt.QWidget()
        self.top_scroll.setWidget(self.top_widget)
        self.top_layout = Qt.QVBoxLayout(self.top_widget)
        self.top_grid_layout = Qt.QGridLayout()
        self.top_layout.addLayout(self.top_grid_layout)

        self.settings = Qt.QSettings("GNU Radio", "airspy_scan2")
        self.restoreGeometry(self.settings.value("geometry").toByteArray())

        ##################################################
        # Variables
        ##################################################
        #self.samp_rate = samp_rate = 2500000
        self.samp_rate = samp_rate = 2500000 * 4
        self.freq = freq = 88e6

        ##################################################
        # Blocks
        ##################################################

        paraLayout = Qt.QHBoxLayout()
        samprateLabel = Qt.QLabel("f<sub>s</sub>:")
        self.samprateComboBox = QComboBox()
        self.samprateComboBox.addItems(["2.5M", "10M"])
        if samp_rate==2500000:
            self.samprateComboBox.setCurrentIndex(0)
        else:
            self.samprateComboBox.setCurrentIndex(1)

        nSkipLabel = Qt.QLabel("N<sub>skip</sub>:")
        self.nSkipSpinBox=Qt.QSpinBox()
        self.nSkipSpinBox.setRange(4,100)
        self.numSkip=25
        self.nSkipSpinBox.setValue(self.numSkip)
        self.nSkipButton=Qt.QPushButton("Set ns")
        self.nSkipButton.setEnabled(False)
        alphaLabel = Qt.QLabel("alpha:")
        self.alphaSpinBox=Qt.QDoubleSpinBox()
        self.alphaSpinBox.setValue(0.1)
        self.alphaSpinBox.setRange(0,1)
        self.alphaSpinBox.setSingleStep(0.01)
        freqMinLabel = Qt.QLabel("f<sub>min</sub>:")
        self.freqMinSpinBox=Qt.QSpinBox()
        self.freqMinSpinBox.setSuffix("MHz")
        #self.freqMinSpinBox.setAlignment(Qt.AlignRight|Qt.AlignVCenter)
        self.freqMinSpinBox.setRange(30,1800)
        freqMaxLabel = Qt.QLabel("f<sub>max</sub>:")
        self.freqMaxSpinBox=Qt.QSpinBox()
        self.freqMaxSpinBox.setSuffix("MHz")
        #self.freqMaxSpinBox.setAlignment(Qt.AlignRight|Qt.AlignVCenter)
        self.freqMaxSpinBox.setRange(40,1800)
        self.saveCheckBox = Qt.QCheckBox("save raw IQ")
        self.freqSetButton = Qt.QPushButton("Set f")
        self.freqSetButton.setEnabled(False)
        paraLayout.addStretch()
        paraLayout.addWidget(nSkipLabel)
        paraLayout.addWidget(self.nSkipSpinBox)
        paraLayout.addWidget(self.nSkipButton)
        paraLayout.addWidget(alphaLabel)
        paraLayout.addWidget(self.alphaSpinBox)
        paraLayout.addWidget(samprateLabel)
        paraLayout.addWidget(self.samprateComboBox)
        paraLayout.addWidget(freqMinLabel)
        paraLayout.addWidget(self.freqMinSpinBox)
        paraLayout.addWidget(freqMaxLabel)
        paraLayout.addWidget(self.freqMaxSpinBox)
        paraLayout.addWidget(self.freqSetButton)
        paraLayout.addWidget(self.saveCheckBox)


        self.top_layout.addLayout(paraLayout)
        self.osmosdr_source_1 = osmosdr.source( args="numchan=" + str(1) + " " + 'airspy' )
        self.osmosdr_source_1.set_sample_rate(samp_rate)
        self.osmosdr_source_1.set_center_freq(freq, 0)
        self.osmosdr_source_1.set_freq_corr(0, 0)
        self.osmosdr_source_1.set_dc_offset_mode(0, 0)
        self.osmosdr_source_1.set_iq_balance_mode(0, 0)
        self.osmosdr_source_1.set_gain_mode(False, 0)
        self.osmosdr_source_1.set_gain(10, 0)
        self.osmosdr_source_1.set_if_gain(20, 0)
        self.osmosdr_source_1.set_bb_gain(20, 0)
        self.osmosdr_source_1.set_antenna('', 0)
        self.osmosdr_source_1.set_bandwidth(0, 0)

        freqMin,freqMax=88e6,109e6
        # freqMin,freqMax=400e6,420e6
        # freqMin,freqMax=118e6,136e6
        #freqMin,freqMax=40e6,800e6
        freqCenter=freqMin
        self.osmosdr_source_1.set_center_freq(freqCenter, 0)
        self.freqMinSpinBox.setValue(freqMin/1e6)
        self.freqMaxSpinBox.setValue(freqMax/1e6)
        self.xzyblocks_fft_scan_plot_py_vc_0 = xzyblocks.fft_scan_plot_py_vc(self.osmosdr_source_1, samp_rate, 1024, freqCenter, freqMin, freqMax,self.numSkip,512,alpha=0.1)
        #self.xzyblocks_fft_scan_plot_py_vc_0 = xzyblocks.fft_scan_plot_py_vc()
        self.blocks_stream_to_vector_0 = blocks.stream_to_vector(gr.sizeof_gr_complex*1, 1024)

        ##################################################
        # Connections
        ##################################################
        self.connect((self.blocks_stream_to_vector_0, 0), (self.xzyblocks_fft_scan_plot_py_vc_0, 0))
        self.connect((self.osmosdr_source_1, 0), (self.blocks_stream_to_vector_0, 0))
        #self.connect((self.osmosdr_source_1, 0), (self.qtgui_time_sink_x_0, 0))


        self.samprateComboBox.connect(self.samprateComboBox, Qt.SIGNAL("currentIndexChanged(int)"), self.updateSamprate)
        self.freqMaxSpinBox.connect(self.freqMaxSpinBox, Qt.SIGNAL("valueChanged(int)"), self.updateFreq)
        self.freqMinSpinBox.connect(self.freqMinSpinBox, Qt.SIGNAL("valueChanged(int)"), self.updateFreq)
        self.alphaSpinBox.connect(self.alphaSpinBox, Qt.SIGNAL("valueChanged(double)"), self.updateAlpha)
        self.freqSetButton.connect(self.freqSetButton,Qt.SIGNAL("clicked()"),self.freqSet)
        self.nSkipSpinBox.connect(self.nSkipSpinBox, Qt.SIGNAL("valueChanged(int)"),lambda: self.nSkipButton.setEnabled(True))
        self.nSkipButton.connect(self.nSkipButton, Qt.SIGNAL("clicked()"), self.numSkipUpdate)
Example #32
0
class ConflictWindow(QMainWindow):

    mergeCompleted = pyqtSignal()

    def __init__(self, layer, type='conflict', parent=None):
        QMainWindow.__init__(self)

        self.iface = parent.iface
        self.layer = layer
        self.parent = parent
        self.layer_list = parent.layer_list
        settings = QSettings()
        self.tools = PgVersionTools(self)

        # Restore Window Settings
        settings = QSettings()
        try:
            self.restoreGeometry(
                pybytearray(settings.value("/pgVersion/geometry")))
            self.restoreState(
                pybytearray(settings.value("/pgVersion/windowState")))
        except:
            pass

        settings = QSettings()
        self.canvas = QgsMapCanvas()
        self.canvas.setCanvasColor(Qt.white)
        self.canvas.enableAntiAliasing(
            settings.value("/qgis/enable_anti_aliasing", True, type=bool))
        self.canvas.useImageToRender(
            settings.value("/qgis/use_qimage_to_render", True, type=bool))
        action = pyint(settings.value("/qgis/wheel_action", 0))
        zoomFactor = pyint(settings.value("/qgis/zoom_factor", 2))
        self.canvas.setWheelAction(QgsMapCanvas.WheelAction(action),
                                   zoomFactor)

        QgsMapLayerRegistry.instance().addMapLayer(layer)
        self.canvas.setExtent(layer.extent())
        self.canvas.setLayerSet([QgsMapCanvasLayer(layer)])
        self.canvas.zoomToFullExtent()
        self.setCentralWidget(self.canvas)

        actionZoomIn = QAction(
            QIcon(":/plugins/pgversion/icons/mActionZoomIn.png"),
            pystring("Zoom in"), self)
        actionZoomOut = QAction(
            QIcon(":/plugins/pgversion/icons/mActionZoomOut.png"),
            pystring("Zoom out"), self)
        actionZoomFull = QAction(
            QIcon(":/plugins/pgversion/icons/mActionZoomFullExtent.png"),
            pystring("Fullextent"), self)
        actionPan = QAction(QIcon(":/plugins/pgversion/icons/mActionPan.png"),
                            pystring("Pan"), self)

        actionZoomIn.setCheckable(True)
        actionZoomOut.setCheckable(True)
        actionPan.setCheckable(True)

        actionZoomIn.triggered.connect(self.zoomIn)
        actionZoomOut.triggered.connect(self.zoomOut)
        actionZoomFull.triggered.connect(self.zoomFull)
        actionPan.triggered.connect(self.pan)

        self.toolbar = self.addToolBar("Canvas actions")
        self.toolbar.addAction(actionPan)
        self.toolbar.addAction(actionZoomIn)
        self.toolbar.addAction(actionZoomOut)
        self.toolbar.addAction(actionZoomFull)

        self.dockWidget = QDockWidget()
        self.dockWidget.setWidget(QTableWidget())
        self.addDockWidget(Qt.BottomDockWidgetArea, self.dockWidget)
        self.tabView = self.dockWidget.widget()

        # create the map tools
        self.toolPan = QgsMapToolPan(self.canvas)
        self.toolPan.setAction(actionPan)
        self.toolZoomIn = QgsMapToolZoom(self.canvas, False)  # false = in
        self.toolZoomIn.setAction(actionZoomIn)
        self.toolZoomOut = QgsMapToolZoom(self.canvas, True)  # true = out
        self.toolZoomOut.setAction(actionZoomOut)

        self.pan()

        self.conflictLayerList = []

        if type == 'conflict':
            self.cmbMerge = QComboBox()
            self.cmbMerge.addItems(self.tools.confRecords(self.layer))

            self.btnMerge = QPushButton()
            self.cmbMerge.currentIndexChanged.connect(self.toggleBtnMerge)
            self.btnMerge.setText(self.tr('solve conflict'))

            self.toolbar.addWidget(self.cmbMerge)
            self.toolbar.addWidget(self.btnMerge)
            self.manageConflicts()
            self.btnMerge.clicked.connect(self.runMerge)

        self.tabView.itemSelectionChanged.connect(self.showConfObject)
        self.rBand = QgsRubberBand(self.canvas, False)

    def toggleBtnMerge(self):
        #      if not self.btnMerge.isEnabled():
        #          self.btnMerge.setEnabled(False)
        #      else:
        #          self.btnMerge.setEnabled(True)
        return

    def toggleBtnCommit(self):
        #      if not self.btnMerge.isEnabled():
        #          self.btnMerge.setEnabled(False)
        #      else:
        #          self.btnMerge.setEnabled(True)
        return

    def zoomIn(self):
        self.canvas.setMapTool(self.toolZoomIn)

    def zoomOut(self):
        self.canvas.setMapTool(self.toolZoomOut)

    def zoomFull(self):
        self.canvas.zoomToFullExtent()

    def pan(self):
        self.canvas.setMapTool(self.toolPan)

    def closeEvent(self, e):
        """ save window state """
        #      settings = QSettings()
        #      settings.setValue("/pgVersion/windowState", pybytearray(self.saveState()))
        #      settings.setValue("/pgVersion/geometry", pybytearray(self.saveGeometry()))
        QgsMapLayerRegistry.instance().removeMapLayer(
            self.tools.conflictLayer(self.layer).id())
        self.close()

    def showDiffs(self):
        pass

    def showConfObject(self):

        myProject = self.tabView.item(self.tabView.currentRow(), 0).text()
        myId = self.tabView.item(self.tabView.currentRow(), 3).text()

        confLayer = self.tools.conflictLayer(self.layer)
        self.conflictLayerList.append(confLayer)

        self.rBand.reset()
        self.rBand.setColor(QColor(0, 0, 255))
        self.rBand.setWidth(5)

        if confLayer.isValid():
            iter = confLayer.getFeatures()
            for feature in iter:
                geom = feature.geometry()
                attrs = feature.attributes()
                if str(attrs[0]) == myId and attrs[len(attrs) -
                                                   5] == myProject:
                    self.rBand.addGeometry(geom, None)

        return

    def manageConflicts(self):
        QApplication.setOverrideCursor(Qt.WaitCursor)
        vLayer = self.tools.conflictLayer(self.layer)
        if vLayer == None:
            return
        vLayerList = [vLayer, self.layer]
        QgsMapLayerRegistry.instance().addMapLayers(vLayerList, False)
        self.vLayerId = vLayer.id()
        self.canvas.setExtent(vLayer.extent())
        self.canvas.refresh()
        vLayer.triggerRepaint()

        tabData = self.tools.tableRecords(self.layer)

        if tabData <> None:
            self.tools.createGridView(self.tabView, tabData[0], tabData[1],
                                      100, 10)
        else:
            QApplication.restoreOverrideCursor()
            self.mergeCompleted.emit()

        QApplication.restoreOverrideCursor()

    def runMerge(self):
        QApplication.setOverrideCursor(Qt.WaitCursor)
        currentLayer = self.layer
        object = self.cmbMerge.currentText()

        if currentLayer == None:
            QMessageBox.information(
                None, self.tr('Notice'),
                self.tr('Please select a versioned layer for committing'))
            return
        else:
            myDb = self.tools.layerDB('Merge', currentLayer)
            mySchema = self.tools.layerSchema(currentLayer)
            myTable = self.tools.layerTable(currentLayer).replace(
                "_version", "")

        objectArray = object.split(" - ")
        if len(objectArray) == 1:
            return
        elif 'Commit all' in objectArray[0]:
            projectName = objectArray[1].strip()
            sql = "select objectkey from versions.pgvscheck('%s.%s') \
             where myuser = '******' or conflict_user = '******' \
             order by objectkey" % (mySchema, myTable, projectName,
                                    projectName)

            result = myDb.read(sql)
            for i in range(len(result['OBJECTKEY'])):
                sql = "select versions.pgvsmerge('%s.%s',%s,'%s')" % (
                    mySchema, myTable, result['OBJECTKEY'][i], projectName)
                myDb.run(sql)
        else:
            projectName = objectArray[1].strip()
            sql = "select versions.pgvsmerge('%s.%s',%s,'%s')" % (
                mySchema, myTable, objectArray[0], projectName)
            myDb.run(sql)

        self.canvas.refresh()
        self.layer.triggerRepaint()
        self.cmbMerge.clear()
        QApplication.restoreOverrideCursor()

        if self.tools.confRecords(self.layer) == None:
            self.tabView.clear()
            self.tools.setModified(self.parent.layer_list)
            self.close()

        else:
            self.cmbMerge.addItems(self.tools.confRecords(self.layer))
            tabData = self.tools.tableRecords(self.layer)
            self.tools.createGridView(self.tabView, tabData[0], tabData[1],
                                      100, 10)
        self.manageConflicts()

    def loadLayer(self, layer):
        provider = layer.dataProvider()
        uri = provider.dataSourceUri()
        mySchema = self.tools.layerSchema(layer)
        myHost = self.tools.layerHost(layer)
        myDatabase = self.tools.layerDB(layer)
        myPassword = self.tools.layerPassword(layer)
        myPort = self.tools.layerPort(layer)
        myUsername = self.tools.layerUsername(layer)
        myGeometryColumn = self.tools.layerGeomCol(layer)

        myTable = myTable.replace("_version", "")

        myUri = QgsDataSourceURI()
        myUri.setConnection(myHost, myPort, myDatabase, myUsername, myPassword)
        myUri.setDataSource(mySchema, myTable, myGeometryColumn)

        myLayer = QgsVectorLayer(myUri.uri(), "", "postgres")

        QgsMapLayerRegistry.instance().addMapLayer(myLayer, False)
        #      self.canvas.setExtent(myLayer.extent())
        self.canvas.setLayerSet([QgsMapCanvasLayer(myLayer)])
        self.canvas.refresh()
Example #33
0
    def __init__(self):
        QWizardPage.__init__(self)
        self.setTitle(self.tr("New Project Data"))
        self.setSubTitle(self.tr(
            "Complete the following fields to create the Project Structure"))

        gbox = QGridLayout(self)
        #Names of the fields to complete
        self.lblName = QLabel(self.tr("New Project Name (*):"))
        self.lblPlace = QLabel(self.tr("Create in (*):"))
        self.lblDescription = QLabel(self.tr("Project Description:"))
        self.lblLicense = QLabel(self.tr("Project License:"))
        self.lblVenvFolder = QLabel(self.tr("Virtualenv Folder:"))
        gbox.addWidget(self.lblName, 0, 0, Qt.AlignRight)
        gbox.addWidget(self.lblPlace, 1, 0, Qt.AlignRight)
        gbox.addWidget(self.lblDescription, 2, 0, Qt.AlignTop)
        gbox.addWidget(self.lblLicense, 3, 0, Qt.AlignRight)
        gbox.addWidget(self.lblVenvFolder, 4, 0, Qt.AlignRight)

        #Fields on de right of the grid
        #Name
        self.txtName = QLineEdit()
        #Location
        hPlace = QHBoxLayout()
        self.txtPlace = QLineEdit()
        self.txtPlace.setReadOnly(True)
        self.btnExamine = QPushButton(self.tr("Browse..."))
        hPlace.addWidget(self.txtPlace)
        hPlace.addWidget(self.btnExamine)
        #Virtualenv
        vPlace = QHBoxLayout()
        self.vtxtPlace = QLineEdit()
        self._dir_completer = QCompleter()
        self._dir_completer.setModel(QDirModel(self._dir_completer))
        self.vtxtPlace.setCompleter(self._dir_completer)
        self.vbtnExamine = QPushButton(self.tr("Browse..."))
        vPlace.addWidget(self.vtxtPlace)
        vPlace.addWidget(self.vbtnExamine)
        #Project Description
        self.txtDescription = QPlainTextEdit()
        #Project License
        self.cboLicense = QComboBox()
        self.cboLicense.setFixedWidth(250)
        self.cboLicense.addItem('Apache License 2.0')
        self.cboLicense.addItem('Artistic License/GPL')
        self.cboLicense.addItem('Eclipse Public License 1.0')
        self.cboLicense.addItem('GNU General Public License v2')
        self.cboLicense.addItem('GNU General Public License v3')
        self.cboLicense.addItem('GNU Lesser General Public License')
        self.cboLicense.addItem('MIT License')
        self.cboLicense.addItem('Mozilla Public License 1.1')
        self.cboLicense.addItem('Mozilla Public License 2.0')
        self.cboLicense.addItem('New BSD License')
        self.cboLicense.addItem('Other Open Source')
        self.cboLicense.addItem('Other')
        self.cboLicense.setCurrentIndex(4)
        #Add to Grid
        gbox.addWidget(self.txtName, 0, 1)
        gbox.addLayout(hPlace, 1, 1)
        gbox.addWidget(self.txtDescription, 2, 1)
        gbox.addWidget(self.cboLicense, 3, 1)
        gbox.addLayout(vPlace, 4, 1)
        #Signal
        self.connect(self.btnExamine, SIGNAL('clicked()'), self.load_folder)
        self.connect(self.vbtnExamine, SIGNAL('clicked()'),
            self.load_folder_venv)
        self.connect(self.txtName, SIGNAL('textChanged(const QString&)'),
            lambda: self.emit(SIGNAL("completeChanged()")))
Example #34
0
    def __init__(self, parent=None, chunks=[]):
        super(EvtxAdminPannel, self).__init__(parent)
        self.verticalLayout = QVBoxLayout(self)
        spacerItem = QSpacerItem(20, 259, QSizePolicy.Minimum,
                                 QSizePolicy.Expanding)

        self.verticalLayout.setMargin(3)
        self.verticalLayout.addWidget(
            QLabel("Number of chunk(s) : " + str(len(chunks))))

        nb_rec = 0
        for i in chunks:
            nb_rec += i.nbRecord()

        self.nb_rec = nb_rec
        self.verticalLayout.addWidget(
            QLabel("Number of record(s) : " + str(nb_rec)))

        tmp_widget = QWidget()
        self.verticalLayout.addWidget(tmp_widget)
        hor_layout = QHBoxLayout(tmp_widget)
        hor_layout.addWidget(QLabel("Display :"))

        self.admin_events = QPushButton(QIcon(":/green_configure.png"),
                                        "Admin. events")
        hor_layout.addWidget(self.admin_events)

        self.choose_event_type = QComboBox()
        self.choose_event_type.addItem(QIcon(":/internet_explorer"), "All", 42)
        self.choose_event_type.addItem(QIcon(":/audit_success"),
                                       "Audit success", 0)
        self.choose_event_type.addItem(QIcon(":/audit_failure"),
                                       "Audit failure", 1)
        self.choose_event_type.addItem(QIcon(":/error"), "Error", 2)
        self.choose_event_type.addItem(QIcon(":/warning"), "Warning", 3)
        self.choose_event_type.addItem(QIcon(":/info"), "Information", 4)
        self.choose_event_type.addItem(QIcon(":/chat.png"), "Comment", 5)

        hor_layout.addWidget(self.choose_event_type)

        tmp_widget = QWidget()
        self.verticalLayout.addWidget(tmp_widget)
        hor_layout = QHBoxLayout(tmp_widget)
        self.id = QLineEdit()
        hor_layout.addWidget(QLabel("Id :"))
        self.cb = self.initId(chunks, 'id')
        self.cb.setMaxVisibleItems(15)
        hor_layout.addWidget(self.cb)
        hor_layout.addWidget(self.id)
        self.search_id = QPushButton("Go")
        hor_layout.addWidget(self.search_id)

        tmp_widget = QWidget()
        self.verticalLayout.addWidget(tmp_widget)
        hor_layout = QHBoxLayout(tmp_widget)
        self.source = QLineEdit()
        hor_layout.addWidget(QLabel("Source :"))
        self.cbs = self.initId(chunks, 'source')
        hor_layout.addWidget(self.cbs)
        hor_layout.addWidget(self.source)
        self.search_source = QPushButton("Go")
        hor_layout.addWidget(self.search_source)

        self.verticalLayout.addWidget(QLabel("Date debut :"))
        self.select_date_b = QDateTimeEdit()

        self.select_date_b.setDisplayFormat("MMM dd yyyy hh:mm AP")

        self.verticalLayout.addWidget(self.select_date_b)

        self.verticalLayout.addWidget(QLabel("date fin:"))
        self.select_date_e = QDateTimeEdit()
        self.select_date_e.setDisplayFormat("MMM dd yyyy hh:mm AP")

        self.verticalLayout.addWidget(self.select_date_e)
        self.search_date = QPushButton("Go")
        self.verticalLayout.addWidget(self.search_date)

        self.verticalLayout.addItem(spacerItem)
Example #35
0
class EvtxAdminPannel(QWidget):
    def __init__(self, parent=None, chunks=[]):
        super(EvtxAdminPannel, self).__init__(parent)
        self.verticalLayout = QVBoxLayout(self)
        spacerItem = QSpacerItem(20, 259, QSizePolicy.Minimum,
                                 QSizePolicy.Expanding)

        self.verticalLayout.setMargin(3)
        self.verticalLayout.addWidget(
            QLabel("Number of chunk(s) : " + str(len(chunks))))

        nb_rec = 0
        for i in chunks:
            nb_rec += i.nbRecord()

        self.nb_rec = nb_rec
        self.verticalLayout.addWidget(
            QLabel("Number of record(s) : " + str(nb_rec)))

        tmp_widget = QWidget()
        self.verticalLayout.addWidget(tmp_widget)
        hor_layout = QHBoxLayout(tmp_widget)
        hor_layout.addWidget(QLabel("Display :"))

        self.admin_events = QPushButton(QIcon(":/green_configure.png"),
                                        "Admin. events")
        hor_layout.addWidget(self.admin_events)

        self.choose_event_type = QComboBox()
        self.choose_event_type.addItem(QIcon(":/internet_explorer"), "All", 42)
        self.choose_event_type.addItem(QIcon(":/audit_success"),
                                       "Audit success", 0)
        self.choose_event_type.addItem(QIcon(":/audit_failure"),
                                       "Audit failure", 1)
        self.choose_event_type.addItem(QIcon(":/error"), "Error", 2)
        self.choose_event_type.addItem(QIcon(":/warning"), "Warning", 3)
        self.choose_event_type.addItem(QIcon(":/info"), "Information", 4)
        self.choose_event_type.addItem(QIcon(":/chat.png"), "Comment", 5)

        hor_layout.addWidget(self.choose_event_type)

        tmp_widget = QWidget()
        self.verticalLayout.addWidget(tmp_widget)
        hor_layout = QHBoxLayout(tmp_widget)
        self.id = QLineEdit()
        hor_layout.addWidget(QLabel("Id :"))
        self.cb = self.initId(chunks, 'id')
        self.cb.setMaxVisibleItems(15)
        hor_layout.addWidget(self.cb)
        hor_layout.addWidget(self.id)
        self.search_id = QPushButton("Go")
        hor_layout.addWidget(self.search_id)

        tmp_widget = QWidget()
        self.verticalLayout.addWidget(tmp_widget)
        hor_layout = QHBoxLayout(tmp_widget)
        self.source = QLineEdit()
        hor_layout.addWidget(QLabel("Source :"))
        self.cbs = self.initId(chunks, 'source')
        hor_layout.addWidget(self.cbs)
        hor_layout.addWidget(self.source)
        self.search_source = QPushButton("Go")
        hor_layout.addWidget(self.search_source)

        self.verticalLayout.addWidget(QLabel("Date debut :"))
        self.select_date_b = QDateTimeEdit()

        self.select_date_b.setDisplayFormat("MMM dd yyyy hh:mm AP")

        self.verticalLayout.addWidget(self.select_date_b)

        self.verticalLayout.addWidget(QLabel("date fin:"))
        self.select_date_e = QDateTimeEdit()
        self.select_date_e.setDisplayFormat("MMM dd yyyy hh:mm AP")

        self.verticalLayout.addWidget(self.select_date_e)
        self.search_date = QPushButton("Go")
        self.verticalLayout.addWidget(self.search_date)

        self.verticalLayout.addItem(spacerItem)

    def initId(self, chunks, param):
        cb = QComboBox()
        tmp_list = []
        for chunk in chunks:
            events = chunk.events()
            for event in events:
                tmp_list.append(str(events[event][param]))
        tmp_list = self.unique(tmp_list)
        cb.addItems(tmp_list)
        return cb

    def unique(self, seq, idfun=None):
        # order preserving
        if idfun is None:

            def idfun(x):
                return x

        seen = {}
        result = []
        for item in seq:
            marker = idfun(item)
            if marker in seen: continue
            seen[marker] = 1
            if item is not None:
                result.append(item)
        return sorted(result)
Example #36
0
 def createEditor(self, parent, option, index):
     if index.column() == TEU:
         spinbox = QSpinBox(parent)
         spinbox.setRange(0, 200000)
         spinbox.setSingleStep(1000)
         spinbox.setAlignment(Qt.AlignRight|Qt.AlignVCenter)
         return spinbox
     elif index.column() == OWNER:
         combobox = QComboBox(parent)
         combobox.addItems(sorted(index.model().owners))
         combobox.setEditable(True)
         return combobox
     elif index.column() == COUNTRY:
         combobox = QComboBox(parent)
         combobox.addItems(sorted(index.model().countries))
         combobox.setEditable(True)
         return combobox
     elif index.column() == NAME:
         editor = QLineEdit(parent)
         self.connect(editor, SIGNAL("returnPressed()"),
                      self.commitAndCloseEditor)
         return editor
     elif index.column() == DESCRIPTION:
         editor = richtextlineedit.RichTextLineEdit(parent)
         self.connect(editor, SIGNAL("returnPressed()"),
                      self.commitAndCloseEditor)
         return editor
     else:
         return QStyledItemDelegate.createEditor(self, parent, option,
                                                 index)
Example #37
0
class LateralPanel(QWidget):
    def __init__(self, parent=None):
        super(LateralPanel, self).__init__(parent)
        self.has_component = False
        self.vbox = QVBoxLayout(self)
        self.vbox.setContentsMargins(0, 0, 0, 0)
        hbox = QHBoxLayout()
        hbox.setContentsMargins(0, 0, 0, 0)
        self.combo = QComboBox()
        ui_tools.ComboBoxButton(
            self.combo, self.combo.clear,
            self.style().standardPixmap(self.style().SP_TrashIcon))
        self.combo.setToolTip(
            self.trUtf8(
                "Select the item from the Paste "
                "History list.\nYou can Copy items into this list with: "
                "%s\nor Paste them using: %s") %
            (resources.get_shortcut("History-Copy").toString(
                QKeySequence.NativeText),
             resources.get_shortcut("History-Paste").toString(
                 QKeySequence.NativeText)))
        self.combo.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
        hbox.addWidget(self.combo)
        self.vbox.addLayout(hbox)

    def add_component(self, widget):
        self.vbox.insertWidget(0, widget)
        self.has_component = True

    def add_new_copy(self, copy):
        self.combo.insertItem(0, copy)
        self.combo.setCurrentIndex(0)
        if self.combo.count() > settings.COPY_HISTORY_BUFFER:
            self.combo.removeItem(self.combo.count() - 1)

    def get_paste(self):
        return self.combo.currentText()
Example #38
0
    def __init__(self, layer, type='conflict', parent=None):
        QMainWindow.__init__(self)

        self.iface = parent.iface
        self.layer = layer
        self.parent = parent
        self.layer_list = parent.layer_list
        settings = QSettings()
        self.tools = PgVersionTools(self)

        # Restore Window Settings
        settings = QSettings()
        try:
            self.restoreGeometry(
                pybytearray(settings.value("/pgVersion/geometry")))
            self.restoreState(
                pybytearray(settings.value("/pgVersion/windowState")))
        except:
            pass

        settings = QSettings()
        self.canvas = QgsMapCanvas()
        self.canvas.setCanvasColor(Qt.white)
        self.canvas.enableAntiAliasing(
            settings.value("/qgis/enable_anti_aliasing", True, type=bool))
        self.canvas.useImageToRender(
            settings.value("/qgis/use_qimage_to_render", True, type=bool))
        action = pyint(settings.value("/qgis/wheel_action", 0))
        zoomFactor = pyint(settings.value("/qgis/zoom_factor", 2))
        self.canvas.setWheelAction(QgsMapCanvas.WheelAction(action),
                                   zoomFactor)

        QgsMapLayerRegistry.instance().addMapLayer(layer)
        self.canvas.setExtent(layer.extent())
        self.canvas.setLayerSet([QgsMapCanvasLayer(layer)])
        self.canvas.zoomToFullExtent()
        self.setCentralWidget(self.canvas)

        actionZoomIn = QAction(
            QIcon(":/plugins/pgversion/icons/mActionZoomIn.png"),
            pystring("Zoom in"), self)
        actionZoomOut = QAction(
            QIcon(":/plugins/pgversion/icons/mActionZoomOut.png"),
            pystring("Zoom out"), self)
        actionZoomFull = QAction(
            QIcon(":/plugins/pgversion/icons/mActionZoomFullExtent.png"),
            pystring("Fullextent"), self)
        actionPan = QAction(QIcon(":/plugins/pgversion/icons/mActionPan.png"),
                            pystring("Pan"), self)

        actionZoomIn.setCheckable(True)
        actionZoomOut.setCheckable(True)
        actionPan.setCheckable(True)

        actionZoomIn.triggered.connect(self.zoomIn)
        actionZoomOut.triggered.connect(self.zoomOut)
        actionZoomFull.triggered.connect(self.zoomFull)
        actionPan.triggered.connect(self.pan)

        self.toolbar = self.addToolBar("Canvas actions")
        self.toolbar.addAction(actionPan)
        self.toolbar.addAction(actionZoomIn)
        self.toolbar.addAction(actionZoomOut)
        self.toolbar.addAction(actionZoomFull)

        self.dockWidget = QDockWidget()
        self.dockWidget.setWidget(QTableWidget())
        self.addDockWidget(Qt.BottomDockWidgetArea, self.dockWidget)
        self.tabView = self.dockWidget.widget()

        # create the map tools
        self.toolPan = QgsMapToolPan(self.canvas)
        self.toolPan.setAction(actionPan)
        self.toolZoomIn = QgsMapToolZoom(self.canvas, False)  # false = in
        self.toolZoomIn.setAction(actionZoomIn)
        self.toolZoomOut = QgsMapToolZoom(self.canvas, True)  # true = out
        self.toolZoomOut.setAction(actionZoomOut)

        self.pan()

        self.conflictLayerList = []

        if type == 'conflict':
            self.cmbMerge = QComboBox()
            self.cmbMerge.addItems(self.tools.confRecords(self.layer))

            self.btnMerge = QPushButton()
            self.cmbMerge.currentIndexChanged.connect(self.toggleBtnMerge)
            self.btnMerge.setText(self.tr('solve conflict'))

            self.toolbar.addWidget(self.cmbMerge)
            self.toolbar.addWidget(self.btnMerge)
            self.manageConflicts()
            self.btnMerge.clicked.connect(self.runMerge)

        self.tabView.itemSelectionChanged.connect(self.showConfObject)
        self.rBand = QgsRubberBand(self.canvas, False)
Example #39
0
    def initUI(self):
        self.setGeometry(200, 200, 260, 150)
        self.setWindowFlags(Qt.WindowStaysOnTopHint)
        self.setWindowTitle(u'添加基站')
        # 用grid布局
        grid1 = QGridLayout()
        grid1.setSpacing(10)
        grid2 = QGridLayout()
        grid2.setSpacing(10)
        grid3 = QGridLayout()
        grid3.setSpacing(10)
        grid4 = QGridLayout()
        grid4.setSpacing(10)

        lonlat_hobx = QHBoxLayout()
        lonlat_hobx.setSpacing(10)
        site_label = QLabel(u"<b>基站信息:  <\b>")
        grid1.addWidget(site_label, 1, 0)
        SiteId_label = QLabel(u"基站ID:")
        grid1.addWidget(SiteId_label, 2, 0)
        self.site_id = QLineEdit()
        site_id_validator = QIntValidator(0, 999999999,
                                          self)  # SiteId只能为最多9位的纯数字
        self.site_id.setValidator(site_id_validator)
        self.site_id.setPlaceholderText(u'必填(只能为最多9位的纯数字)')
        grid1.addWidget(self.site_id, 2, 1)
        SiteNmae_label = QLabel(u"基站名字:")
        grid1.addWidget(SiteNmae_label, 3, 0)
        self.site_name = QLineEdit()
        self.site_name.setPlaceholderText(u'必填')
        grid1.addWidget(self.site_name, 3, 1)
        RNCBSC_label = QLabel(u"RNC-BSC:")
        grid1.addWidget(RNCBSC_label, 4, 0)
        self.rnc_bsc = QLineEdit()
        self.rnc_bsc.setPlaceholderText(u'若不填则为随机数')
        grid1.addWidget(self.rnc_bsc, 4, 1)

        lon_label = QLabel(u"经度:")
        lonlat_hobx.addWidget(lon_label)
        self.lon = QLineEdit()
        lonlat_hobx.addWidget(self.lon)
        lat_label = QLabel(u"纬度:")
        lonlat_hobx.addWidget(lat_label)
        self.lat = QLineEdit()
        lonlat_hobx.addWidget(self.lat)

        operator_label = QLabel(u'运营商:')
        grid2.addWidget(operator_label, 1, 0)
        self.operator = QComboBox(self)  # 运营商选择下拉框
        self.operator.addItems([u"移动", u"联通", u"电信", u"铁塔"])
        grid2.addWidget(self.operator, 1, 1)
        region_label = QLabel(u'区域类型:')
        grid2.addWidget(region_label, 1, 2)
        self.region = QComboBox(self)  # 区域类型选择下拉框
        self.region.addItems([u"普通市区", u"密集市区", u"郊区乡镇", u"农村"])
        grid2.addWidget(self.region, 1, 3)
        system_label = QLabel(u"网络制式:")
        grid2.addWidget(system_label, 2, 0)
        self.system = QComboBox(self)  # 网络制式选择下拉框
        self.system.addItems([
            u"900", u"1800", u"CDMA", u"WCDMA", u"TD-LTE", u"FDD-LTE",
            u"TDSCDMA"
        ])
        grid2.addWidget(self.system, 2, 1)
        frequency_label = QLabel(u"频段:")
        grid2.addWidget(frequency_label, 2, 2)
        self.frequency = QComboBox(self)  # 频段选择下拉框
        self.frequency.addItems([
            u"700M", u"800M", u"900M", u"1800M", u"1900M", u"2100M", u"2300M",
            u"2600M"
        ])
        grid2.addWidget(self.frequency, 2, 3)

        # cell_label = QtGui.QLabel(u"<b>小区信息:  <\b>(若不需要添加小区请自行把下列的角度信息删除)")
        self.add_cell_checkbox = QCheckBox(u"添加小区")
        self.add_cell_checkbox.setChecked(False)
        grid3.addWidget(self.add_cell_checkbox, 1, 0)
        QObject.connect(self.add_cell_checkbox, SIGNAL("clicked()"),
                        self.add_cell_checkChange)

        azimuth_1_label = QLabel(u'Azimuth 1:')
        grid4.addWidget(azimuth_1_label, 1, 0)
        azimuth_validator = QIntValidator(0, 360, self)
        self.azimuth_1 = QLineEdit()
        self.azimuth_1.setEnabled(False)
        self.azimuth_1.setValidator(azimuth_validator)
        grid4.addWidget(self.azimuth_1, 1, 1)
        titl_1_label = QLabel(u'TILT')
        grid4.addWidget(titl_1_label, 2, 0)
        self.tilt_1 = QLineEdit()
        self.tilt_1.setEnabled(False)
        grid4.addWidget(self.tilt_1, 2, 1)
        etilt_1_label = QLabel(u'ETILT')
        grid4.addWidget(etilt_1_label, 2, 2)
        self.etilt_1 = QLineEdit()
        self.etilt_1.setEnabled(False)
        grid4.addWidget(self.etilt_1, 2, 3)
        mtilt_1_label = QLabel(u"MTILT")
        grid4.addWidget(mtilt_1_label, 2, 4)
        self.mtilt_1 = QLineEdit()
        self.mtilt_1.setEnabled(False)
        grid4.addWidget(self.mtilt_1, 2, 5)

        azimuth_2_label = QLabel(u'Azimuth 2:')
        grid4.addWidget(azimuth_2_label, 3, 0)
        self.azimuth_2 = QLineEdit()
        self.azimuth_2.setEnabled(False)
        self.azimuth_2.setValidator(azimuth_validator)
        grid4.addWidget(self.azimuth_2, 3, 1)
        titl_2_label = QLabel(u'TILT')
        grid4.addWidget(titl_2_label, 4, 0)
        self.tilt_2 = QLineEdit()
        self.tilt_2.setEnabled(False)
        grid4.addWidget(self.tilt_2, 4, 1)
        etitl_2_label = QLabel(u'ETILT')
        grid4.addWidget(etitl_2_label, 4, 2)
        self.etilt_2 = QLineEdit()
        self.etilt_2.setEnabled(False)
        grid4.addWidget(self.etilt_2, 4, 3)
        mtilt_2_label = QLabel(u'MTILT')
        grid4.addWidget(mtilt_2_label, 4, 4)
        self.mtilt_2 = QLineEdit()
        self.mtilt_2.setEnabled(False)
        grid4.addWidget(self.mtilt_2, 4, 5)

        azimuth_3_label = QLabel(u'Azimuth 3:')
        grid4.addWidget(azimuth_3_label, 5, 0)
        self.azimuth_3 = QLineEdit()
        self.azimuth_3.setEnabled(False)
        self.azimuth_3.setValidator(azimuth_validator)
        grid4.addWidget(self.azimuth_3, 5, 1)
        titl_3_label = QLabel(u'TILT')
        grid4.addWidget(titl_3_label, 6, 0)
        self.tilt_3 = QLineEdit()
        self.tilt_3.setEnabled(False)
        grid4.addWidget(self.tilt_3, 6, 1)
        etitl_3_label = QLabel(u'ETILT')
        grid4.addWidget(etitl_3_label, 6, 2)
        self.etilt_3 = QLineEdit()
        self.etilt_3.setEnabled(False)
        grid4.addWidget(self.etilt_3, 6, 3)
        mtilt_3_label = QLabel(u'MTILT')
        grid4.addWidget(mtilt_3_label, 6, 4)
        self.mtilt_3 = QLineEdit()
        self.mtilt_3.setEnabled(False)
        grid4.addWidget(self.mtilt_3, 6, 5)

        azimuth_4_label = QLabel(u'Azimuth 4:')
        grid4.addWidget(azimuth_4_label, 7, 0)
        self.azimuth_4 = QLineEdit()
        self.azimuth_4.setEnabled(False)
        self.azimuth_4.setValidator(azimuth_validator)
        grid4.addWidget(self.azimuth_4, 7, 1)
        titl_4_label = QLabel(u'TILT')
        grid4.addWidget(titl_4_label, 8, 0)
        self.tilt_4 = QLineEdit()
        self.tilt_4.setEnabled(False)
        grid4.addWidget(self.tilt_4, 8, 1)
        etitl_4_label = QLabel(u'ETILT')
        grid4.addWidget(etitl_4_label, 8, 2)
        self.etilt_4 = QLineEdit()
        self.etilt_4.setEnabled(False)
        grid4.addWidget(self.etilt_4, 8, 3)
        mtilt_4_label = QLabel(u'MTILT')
        grid4.addWidget(mtilt_4_label, 8, 4)
        self.mtilt_4 = QLineEdit()
        self.mtilt_4.setEnabled(False)
        grid4.addWidget(self.mtilt_4, 8, 5)

        btn_hbox = QHBoxLayout()
        ok = QPushButton(u"添加")
        self.connect(ok, SIGNAL('clicked()'), self.add)
        cancel = QPushButton(u"取消")
        self.connect(cancel, SIGNAL('clicked()'), self.accept)
        btn_hbox.addStretch(1)
        btn_hbox.addWidget(ok)
        btn_hbox.addWidget(cancel)
        btn_hbox.addStretch(1)

        vbox = QVBoxLayout()
        vbox.addLayout(grid1)
        vbox.addLayout(lonlat_hobx)
        vbox.addLayout(grid2)
        vbox.addLayout(grid3)
        vbox.addLayout(grid4)
        vbox.addStretch(1)
        vbox.addLayout(btn_hbox)
        self.setLayout(vbox)
        self.resize(500, 510)
Example #40
0
 def __init__(self, parent, attrmode=False):
     QComboBox.__init__(self, parent)
     if attrmode:
         self.addItem(QString("matches"))
     for op in OPERATORS:
         self.addItem(QString(op))
Example #41
0
class LateralPanel(QWidget):

    def __init__(self, explorer):
        QWidget.__init__(self)
        vbox = QVBoxLayout(self)
        vbox.setContentsMargins(0, 0, 0, 0)
        vbox.addWidget(explorer)
        hbox = QHBoxLayout()
        hbox.setContentsMargins(0, 0, 0, 0)
        self.labelText = "Ln: %s, Col: %s"
        self.labelCursorPosition = QLabel(self.trUtf8(self.labelText % (0, 0)))
        hbox.addWidget(self.labelCursorPosition)
        self.combo = QComboBox()
        ui_tools.ComboBoxButton(self.combo, self.combo.clear,
            self.style().standardPixmap(self.style().SP_TrashIcon))
        self.combo.setToolTip(self.trUtf8("Select the item from the Paste "
            "Historial list.\nYou can Copy items into this list with: "
            "%s\nor Paste them using: %s") %
                (resources.get_shortcut("History-Copy").toString(
                    QKeySequence.NativeText),
                resources.get_shortcut("History-Paste").toString(
                    QKeySequence.NativeText)))
        self.combo.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
        hbox.addWidget(self.combo)
        vbox.addLayout(hbox)

    def update_line_col(self, line, col):
        self.labelCursorPosition.setText(self.trUtf8(
            self.labelText % (line, col)))

    def add_new_copy(self, copy):
        self.combo.insertItem(0, copy)
        self.combo.setCurrentIndex(0)
        if self.combo.count() > settings.COPY_HISTORY_BUFFER:
            self.combo.removeItem(self.combo.count() - 1)

    def get_paste(self):
        return self.combo.currentText()
Example #42
0
class AddSiteUI(QDialog):
    mouseClicked = pyqtSignal(QgsPoint, Qt.MouseButton)

    def __init__(self, iface, parent=None):
        super(AddSiteUI, self).__init__()
        self.iface = iface
        self.parent = parent
        # 获取项目路径
        self.project_dir = getProjectDir(self.iface)
        # 绑定鼠标单击操作
        self.mapTool = MapTool(self.iface.mapCanvas())
        self.mapTool.canvasClicked.connect(self.mouseClicked)
        self.iface.mapCanvas().setMapTool(self.mapTool)
        self.crsXform = QgsCoordinateTransform()
        self.crsXform.setDestCRS(QgsCoordinateReferenceSystem(4326))

        self.initUI()

    # 初始化界面
    def initUI(self):
        self.setGeometry(200, 200, 260, 150)
        self.setWindowFlags(Qt.WindowStaysOnTopHint)
        self.setWindowTitle(u'添加基站')
        # 用grid布局
        grid1 = QGridLayout()
        grid1.setSpacing(10)
        grid2 = QGridLayout()
        grid2.setSpacing(10)
        grid3 = QGridLayout()
        grid3.setSpacing(10)
        grid4 = QGridLayout()
        grid4.setSpacing(10)

        lonlat_hobx = QHBoxLayout()
        lonlat_hobx.setSpacing(10)
        site_label = QLabel(u"<b>基站信息:  <\b>")
        grid1.addWidget(site_label, 1, 0)
        SiteId_label = QLabel(u"基站ID:")
        grid1.addWidget(SiteId_label, 2, 0)
        self.site_id = QLineEdit()
        site_id_validator = QIntValidator(0, 999999999,
                                          self)  # SiteId只能为最多9位的纯数字
        self.site_id.setValidator(site_id_validator)
        self.site_id.setPlaceholderText(u'必填(只能为最多9位的纯数字)')
        grid1.addWidget(self.site_id, 2, 1)
        SiteNmae_label = QLabel(u"基站名字:")
        grid1.addWidget(SiteNmae_label, 3, 0)
        self.site_name = QLineEdit()
        self.site_name.setPlaceholderText(u'必填')
        grid1.addWidget(self.site_name, 3, 1)
        RNCBSC_label = QLabel(u"RNC-BSC:")
        grid1.addWidget(RNCBSC_label, 4, 0)
        self.rnc_bsc = QLineEdit()
        self.rnc_bsc.setPlaceholderText(u'若不填则为随机数')
        grid1.addWidget(self.rnc_bsc, 4, 1)

        lon_label = QLabel(u"经度:")
        lonlat_hobx.addWidget(lon_label)
        self.lon = QLineEdit()
        lonlat_hobx.addWidget(self.lon)
        lat_label = QLabel(u"纬度:")
        lonlat_hobx.addWidget(lat_label)
        self.lat = QLineEdit()
        lonlat_hobx.addWidget(self.lat)

        operator_label = QLabel(u'运营商:')
        grid2.addWidget(operator_label, 1, 0)
        self.operator = QComboBox(self)  # 运营商选择下拉框
        self.operator.addItems([u"移动", u"联通", u"电信", u"铁塔"])
        grid2.addWidget(self.operator, 1, 1)
        region_label = QLabel(u'区域类型:')
        grid2.addWidget(region_label, 1, 2)
        self.region = QComboBox(self)  # 区域类型选择下拉框
        self.region.addItems([u"普通市区", u"密集市区", u"郊区乡镇", u"农村"])
        grid2.addWidget(self.region, 1, 3)
        system_label = QLabel(u"网络制式:")
        grid2.addWidget(system_label, 2, 0)
        self.system = QComboBox(self)  # 网络制式选择下拉框
        self.system.addItems([
            u"900", u"1800", u"CDMA", u"WCDMA", u"TD-LTE", u"FDD-LTE",
            u"TDSCDMA"
        ])
        grid2.addWidget(self.system, 2, 1)
        frequency_label = QLabel(u"频段:")
        grid2.addWidget(frequency_label, 2, 2)
        self.frequency = QComboBox(self)  # 频段选择下拉框
        self.frequency.addItems([
            u"700M", u"800M", u"900M", u"1800M", u"1900M", u"2100M", u"2300M",
            u"2600M"
        ])
        grid2.addWidget(self.frequency, 2, 3)

        # cell_label = QtGui.QLabel(u"<b>小区信息:  <\b>(若不需要添加小区请自行把下列的角度信息删除)")
        self.add_cell_checkbox = QCheckBox(u"添加小区")
        self.add_cell_checkbox.setChecked(False)
        grid3.addWidget(self.add_cell_checkbox, 1, 0)
        QObject.connect(self.add_cell_checkbox, SIGNAL("clicked()"),
                        self.add_cell_checkChange)

        azimuth_1_label = QLabel(u'Azimuth 1:')
        grid4.addWidget(azimuth_1_label, 1, 0)
        azimuth_validator = QIntValidator(0, 360, self)
        self.azimuth_1 = QLineEdit()
        self.azimuth_1.setEnabled(False)
        self.azimuth_1.setValidator(azimuth_validator)
        grid4.addWidget(self.azimuth_1, 1, 1)
        titl_1_label = QLabel(u'TILT')
        grid4.addWidget(titl_1_label, 2, 0)
        self.tilt_1 = QLineEdit()
        self.tilt_1.setEnabled(False)
        grid4.addWidget(self.tilt_1, 2, 1)
        etilt_1_label = QLabel(u'ETILT')
        grid4.addWidget(etilt_1_label, 2, 2)
        self.etilt_1 = QLineEdit()
        self.etilt_1.setEnabled(False)
        grid4.addWidget(self.etilt_1, 2, 3)
        mtilt_1_label = QLabel(u"MTILT")
        grid4.addWidget(mtilt_1_label, 2, 4)
        self.mtilt_1 = QLineEdit()
        self.mtilt_1.setEnabled(False)
        grid4.addWidget(self.mtilt_1, 2, 5)

        azimuth_2_label = QLabel(u'Azimuth 2:')
        grid4.addWidget(azimuth_2_label, 3, 0)
        self.azimuth_2 = QLineEdit()
        self.azimuth_2.setEnabled(False)
        self.azimuth_2.setValidator(azimuth_validator)
        grid4.addWidget(self.azimuth_2, 3, 1)
        titl_2_label = QLabel(u'TILT')
        grid4.addWidget(titl_2_label, 4, 0)
        self.tilt_2 = QLineEdit()
        self.tilt_2.setEnabled(False)
        grid4.addWidget(self.tilt_2, 4, 1)
        etitl_2_label = QLabel(u'ETILT')
        grid4.addWidget(etitl_2_label, 4, 2)
        self.etilt_2 = QLineEdit()
        self.etilt_2.setEnabled(False)
        grid4.addWidget(self.etilt_2, 4, 3)
        mtilt_2_label = QLabel(u'MTILT')
        grid4.addWidget(mtilt_2_label, 4, 4)
        self.mtilt_2 = QLineEdit()
        self.mtilt_2.setEnabled(False)
        grid4.addWidget(self.mtilt_2, 4, 5)

        azimuth_3_label = QLabel(u'Azimuth 3:')
        grid4.addWidget(azimuth_3_label, 5, 0)
        self.azimuth_3 = QLineEdit()
        self.azimuth_3.setEnabled(False)
        self.azimuth_3.setValidator(azimuth_validator)
        grid4.addWidget(self.azimuth_3, 5, 1)
        titl_3_label = QLabel(u'TILT')
        grid4.addWidget(titl_3_label, 6, 0)
        self.tilt_3 = QLineEdit()
        self.tilt_3.setEnabled(False)
        grid4.addWidget(self.tilt_3, 6, 1)
        etitl_3_label = QLabel(u'ETILT')
        grid4.addWidget(etitl_3_label, 6, 2)
        self.etilt_3 = QLineEdit()
        self.etilt_3.setEnabled(False)
        grid4.addWidget(self.etilt_3, 6, 3)
        mtilt_3_label = QLabel(u'MTILT')
        grid4.addWidget(mtilt_3_label, 6, 4)
        self.mtilt_3 = QLineEdit()
        self.mtilt_3.setEnabled(False)
        grid4.addWidget(self.mtilt_3, 6, 5)

        azimuth_4_label = QLabel(u'Azimuth 4:')
        grid4.addWidget(azimuth_4_label, 7, 0)
        self.azimuth_4 = QLineEdit()
        self.azimuth_4.setEnabled(False)
        self.azimuth_4.setValidator(azimuth_validator)
        grid4.addWidget(self.azimuth_4, 7, 1)
        titl_4_label = QLabel(u'TILT')
        grid4.addWidget(titl_4_label, 8, 0)
        self.tilt_4 = QLineEdit()
        self.tilt_4.setEnabled(False)
        grid4.addWidget(self.tilt_4, 8, 1)
        etitl_4_label = QLabel(u'ETILT')
        grid4.addWidget(etitl_4_label, 8, 2)
        self.etilt_4 = QLineEdit()
        self.etilt_4.setEnabled(False)
        grid4.addWidget(self.etilt_4, 8, 3)
        mtilt_4_label = QLabel(u'MTILT')
        grid4.addWidget(mtilt_4_label, 8, 4)
        self.mtilt_4 = QLineEdit()
        self.mtilt_4.setEnabled(False)
        grid4.addWidget(self.mtilt_4, 8, 5)

        btn_hbox = QHBoxLayout()
        ok = QPushButton(u"添加")
        self.connect(ok, SIGNAL('clicked()'), self.add)
        cancel = QPushButton(u"取消")
        self.connect(cancel, SIGNAL('clicked()'), self.accept)
        btn_hbox.addStretch(1)
        btn_hbox.addWidget(ok)
        btn_hbox.addWidget(cancel)
        btn_hbox.addStretch(1)

        vbox = QVBoxLayout()
        vbox.addLayout(grid1)
        vbox.addLayout(lonlat_hobx)
        vbox.addLayout(grid2)
        vbox.addLayout(grid3)
        vbox.addLayout(grid4)
        vbox.addStretch(1)
        vbox.addLayout(btn_hbox)
        self.setLayout(vbox)
        self.resize(500, 510)

    # 鼠标单击事件
    def mouseClicked(self, pos, button):
        if button == Qt.LeftButton:
            self.show()
            self.geoPos = self.crsXform.transform(pos)
            self.lon.setText(unicode(self.geoPos.x()))
            self.lat.setText(unicode(self.geoPos.y()))

    # 选中添加小区改变事件
    def add_cell_checkChange(self):
        if self.add_cell_checkbox.isChecked():
            # 如果要连带添加小区
            self.azimuth_1.setEnabled(True)
            self.azimuth_1.setText(u"0")
            self.tilt_1.setEnabled(True)
            self.tilt_1.setText(u"4")
            self.etilt_1.setEnabled(True)
            self.etilt_1.setText(u"2")
            self.mtilt_1.setEnabled(True)
            self.mtilt_1.setText(u"2")

            self.azimuth_2.setEnabled(True)
            self.azimuth_2.setText(u"120")
            self.tilt_2.setEnabled(True)
            self.tilt_2.setText(u"4")
            self.etilt_2.setEnabled(True)
            self.etilt_2.setText(u"2")
            self.mtilt_2.setEnabled(True)
            self.mtilt_2.setText(u"2")

            self.azimuth_3.setEnabled(True)
            self.azimuth_3.setText(u"240")
            self.tilt_3.setEnabled(True)
            self.tilt_3.setText(u"4")
            self.etilt_3.setEnabled(True)
            self.etilt_3.setText(u"2")
            self.mtilt_3.setEnabled(True)
            self.mtilt_3.setText(u"2")

            self.azimuth_4.setEnabled(True)
            self.tilt_4.setEnabled(True)
            self.etilt_4.setEnabled(True)
            self.mtilt_4.setEnabled(True)

        else:
            # 把小区信息变回不可编辑状态
            self.azimuth_1.setEnabled(False)
            self.azimuth_1.setText("")
            self.tilt_1.setEnabled(False)
            self.tilt_1.setText("")
            self.etilt_1.setEnabled(False)
            self.etilt_1.setText("")
            self.mtilt_1.setEnabled(False)
            self.mtilt_1.setText("")

            self.azimuth_2.setEnabled(False)
            self.azimuth_2.setText("")
            self.tilt_2.setEnabled(False)
            self.tilt_2.setText("")
            self.etilt_2.setEnabled(False)
            self.etilt_2.setText("")
            self.mtilt_2.setEnabled(False)
            self.mtilt_2.setText("")

            self.azimuth_3.setEnabled(False)
            self.azimuth_3.setText("")
            self.tilt_3.setEnabled(False)
            self.tilt_3.setText("")
            self.etilt_3.setEnabled(False)
            self.etilt_3.setText("")
            self.mtilt_3.setEnabled(False)
            self.mtilt_3.setText("")

            self.azimuth_4.setEnabled(False)
            self.azimuth_4.setText("")
            self.tilt_4.setEnabled(False)
            self.tilt_4.setText("")
            self.etilt_4.setEnabled(False)
            self.etilt_4.setText("")
            self.mtilt_4.setEnabled(False)
            self.mtilt_4.setText("")

    # 点击确定按钮事件
    def add(self):
        # 获取并处理填写的信息
        site_id = self.site_id.text().strip()  # 基站ID(新建基站ID前自动添加N)
        site_name = self.site_name.text().strip()  # 基站名字
        rnc_bsc = self.rnc_bsc.text().strip()  # RNC-BSC
        operator = self.operator.currentText().strip()  # 运营商
        region = self.region.currentText().strip()  # 区域类型
        system = self.system.currentText().strip()  # 网络制式
        frequency = self.frequency.currentText().strip()  # 频段
        system_flag = u"W"  # 默认 W
        if system == u"900":
            system_flag = u"G"
        elif system == u"1800":
            system_flag = u"D"
        elif system == u"CDMA":
            system_flag = u"C"
        elif system == u"WCDMA":
            system_flag = u"W"
        elif system == u"TD-LTE":
            system_flag = u"T"
        elif system == u"FDD-LTE":
            system_flag = u"F"
        elif system == u"TDSCDMA":
            system_flag = u"TDS"
        lon = self.lon.text().strip()  # 经度
        lat = self.lat.text().strip()  # 纬度
        azimuth_1 = self.azimuth_1.text().strip()
        tilt_1 = self.tilt_1.text().strip()
        etilt_1 = self.etilt_1.text().strip()
        mtilt_1 = self.mtilt_1.text().strip()
        azimuth_2 = self.azimuth_2.text().strip()
        tilt_2 = self.tilt_2.text().strip()
        etilt_2 = self.etilt_2.text().strip()
        mtilt_2 = self.mtilt_2.text().strip()
        azimuth_3 = self.azimuth_3.text().strip()
        tilt_3 = self.tilt_3.text().strip()
        etilt_3 = self.etilt_3.text().strip()
        mtilt_3 = self.mtilt_3.text().strip()
        azimuth_4 = self.azimuth_4.text().strip()
        tilt_4 = self.tilt_4.text().strip()
        etilt_4 = self.etilt_4.text().strip()
        mtilt_4 = self.mtilt_4.text().strip()
        # 判断必填项是否已填
        if site_name == "":
            QMessageBox.critical(self, u"提示", u"请填写基站名字!")
            return False
        if site_id == "":
            QMessageBox.critical(self, u"提示", u"请填写基站ID!")
            return False
        if rnc_bsc == "":
            # 赋值随机数
            rnc_bsc = str(random.randint(1, 9999))
        if (lon == "") or (lat == ""):
            QMessageBox.critical(self, u"提示", u"请填写经纬度,或通过点击画布选择坐标!")
            return False
        # 先添加基站
        # 检查ID和名字是否重复
        self.sitelayer = getLayerByName(u'基站', self.iface)  # 基站图层
        allsite = self.sitelayer.getFeatures()
        for site in allsite:
            if site_name == site[u'基站名']:
                QMessageBox.critical(self, u"提示", u"所填写的基站名与项目中的数据有重复,请更改!")
                return False
            if site_id == site[u'基站ID']:
                QMessageBox.critical(self, u"提示", u"所填写的基站ID与项目中的数据有重复,请更改!")
                return False

        siteFeatureAttrs = ['NULL'] * 20
        siteFeatureAttrs[0] = site_id
        siteFeatureAttrs[1] = site_name
        siteFeatureAttrs[2] = rnc_bsc
        siteFeatureAttrs[3] = lon
        siteFeatureAttrs[4] = lat
        siteFeatureAttrs[5] = system_flag
        siteFeatureAttrs[6] = region
        siteFeatureAttrs[8] = operator
        # 生成基站Feature
        add_site_list = []
        siteFeature = createASiteFeature(QgsPoint(float(lon), float(lat)),
                                         siteFeatureAttrs)
        add_site_list.append(siteFeature)

        # 判断是否需要顺带添加小区
        azimuth_list = []
        if azimuth_1 != "":
            if not tilt_1:
                tilt_1 = None
            if not etilt_1:
                etilt_1 = None
            if not mtilt_1:
                mtilt_1 = None
            azimuth_1_info = (int(azimuth_1), tilt_1, etilt_1, mtilt_1)
            azimuth_list.append(azimuth_1_info)
        if azimuth_2 != "":
            if not tilt_2:
                tilt_2 = None
            if not etilt_2:
                etilt_2 = None
            if not mtilt_2:
                mtilt_2 = None
            azimuth_2_info = (int(azimuth_2), tilt_2, etilt_2, mtilt_2)
            azimuth_list.append(azimuth_2_info)
        if azimuth_3 != "":
            if not tilt_3:
                tilt_3 = None
            if not etilt_3:
                etilt_3 = None
            if not mtilt_3:
                mtilt_3 = None
            azimuth_3_info = (int(azimuth_3), tilt_3, etilt_3, mtilt_3)
            azimuth_list.append(azimuth_3_info)
        if azimuth_4 != "":
            if not tilt_4:
                tilt_4 = None
            if not etilt_4:
                etilt_4 = None
            if not mtilt_4:
                mtilt_4 = None
            azimuth_4_info = (int(azimuth_4), tilt_4, etilt_4, mtilt_4)
            azimuth_list.append(azimuth_4_info)

        if len(azimuth_list) != 0:
            # 获取小区大小和长度设置
            setting = getCellGraphicParam(self.iface)
            # 判断是否读取到参数设置
            if not setting:
                QMessageBox.Critical(self.parent, u"错误", u"无法获取小区图形参数设置")
                return

            add_cell_list = []  # 要添加的小区list
            # 若填写了小区
            for index, azimuth_info in enumerate(azimuth_list):
                cell_feature = ['NULL'] * 54
                cell_feature[0] = site_id  # 基站ID
                cell_feature[1] = site_name  # 所属基站名字
                cell_id = u"%s%s" % (site_id, str(index + 1))  # 小区ID
                cell_feature[2] = cell_id  # 小区ID
                cell_name = u"%s-%s" % (site_name, str(index + 1))  # # 小区名字
                cell_feature[3] = cell_name
                cell_feature[4] = index  # Sector ID
                cell_feature[6] = rnc_bsc
                cell_feature[7] = azimuth_info[0]  # Azimuth
                cell_feature[8] = lon
                cell_feature[9] = lat
                cell_feature[10] = system_flag
                cell_feature[11] = region  # 典型环境
                cell_feature[12] = frequency  # 频段
                cell_feature[13] = azimuth_info[1]
                cell_feature[14] = azimuth_info[2]
                cell_feature[15] = azimuth_info[3]
                cell_feature[18] = operator

                # 识别图形设置
                if setting["type"] == 0:
                    if operator == u'移动':
                        szAngle = setting[u"移动"][0]
                        szLength = setting[u"移动"][1]
                    elif operator == u'联通':
                        szAngle = setting[u"联通"][0]
                        szLength = setting[u"联通"][1]
                    elif operator == u'电信':
                        szAngle = setting[u"电信"][0]
                        szLength = setting[u"电信"][1]
                    elif operator == u'铁塔':
                        szAngle = setting[u"铁塔"][0]
                        szLength = setting[u"铁塔"][1]
                else:
                    # 自定义
                    system = cell_feature[10]
                    frequency = cell_feature[12]
                    # 获取默认设置
                    szAngle = setting[u"默认"][0]
                    szLength = setting[u"默认"][1]
                    # 获取分类
                    case_list = setting["case_list"]
                    for (c_system, c_frequency, c_angle,
                         c_length) in case_list:
                        if c_system and (not c_frequency):
                            if system == c_system:
                                szAngle = c_angle
                                szLength = c_length
                        elif (not c_system) and c_frequency:
                            if frequency == c_frequency:
                                szAngle = c_angle
                                szLength = c_length
                        elif c_system and c_frequency:
                            if (system == c_system) and (frequency
                                                         == c_frequency):
                                szAngle = c_angle
                                szLength = c_length
                # 生成小区扇形geometry
                cellGeometry = createSector(QgsPoint(float(lon), float(lat)),
                                            szLength, self.iface, True,
                                            cell_feature[7], szAngle)

                # 判断小区名字和小区ID是否已于现有数据中
                self.celllayer = getLayerByName(u'小区', self.iface)  # 小区图层
                # 检查是否已勾选了小图特曾
                if not self.celllayer:
                    QMessageBox.critical(self.parent, u"错误", u"没有找到小区图层!")
                    return False
                allcell = self.celllayer.getFeatures()
                for cell in allcell:
                    if cell_name == cell[u'小区名']:
                        QMessageBox.critical(
                            self.parent, u"提示",
                            u"生成的小区名: " + cell_name + u" 与项目中的数据有重复,请更改!")
                        return False
                    if cell_id == cell[u"小区ID"]:
                        QMessageBox.critical(
                            self.parent, u"提示",
                            u"生成的小区ID: " + cell_id + u" 与项目中的数据有重复,请更改!")
                        return False
                # 生成小区feature并添加到list中
                cell = createACellFeature(cellGeometry, cell_feature)
                add_cell_list.append(cell)

        button = QMessageBox.question(self, "Question", u"添加后将无法撤回,是否继续?",
                                      QMessageBox.Ok | QMessageBox.Cancel,
                                      QMessageBox.Ok)
        if button == QMessageBox.Ok:
            # 向图层中导入新增的数据
            if len(add_site_list) != 0:
                siteLayer = getLayerByName(u"基站", self.iface)
                result1 = importFeaturesToLayer(siteLayer, add_site_list)
                if len(add_cell_list) != 0 and result1:
                    cellLayer = getLayerByName(u"小区", self.iface)
                    result2 = importFeaturesToLayer(cellLayer, add_cell_list)
                    if not result2:
                        QMessageBox.critical(self, u"添加基站", u"添加基站数据失败!")
                        self.accept()
                        return
                elif not result1:
                    QMessageBox.critical(self, u"添加基站", u"添加基站数据失败!")
                    self.accept()
                    return
            self.iface.actionDraw().trigger()  # 刷新地图
        else:
            return
        if result1 or result2:
            QMessageBox.information(self, u"添加基站", u"添加基站数据成功!")
        self.accept()
Example #43
0
class LCD20x4(PluginBase):
    MAX_LINE = 4
    MAX_POSITION = 20
    qtcb_pressed = pyqtSignal(int)
    qtcb_released = pyqtSignal(int)

    def __init__(self, ipcon, uid):
        PluginBase.__init__(self, ipcon, uid)

        self.lcd = bricklet_lcd_20x4.LCD20x4(self.uid)
        self.ipcon.add_device(self.lcd)
        self.version = '.'.join(map(str, self.lcd.get_version()[1]))

        self.qtcb_pressed.connect(self.cb_pressed)
        self.lcd.register_callback(self.lcd.CALLBACK_BUTTON_PRESSED,
                                   self.qtcb_pressed.emit)
        self.qtcb_released.connect(self.cb_released)
        self.lcd.register_callback(self.lcd.CALLBACK_BUTTON_RELEASED,
                                   self.qtcb_released.emit)

        self.line_label = QLabel('Line: ')
        self.line_combo = QComboBox()
        for i in range(LCD20x4.MAX_LINE):
            self.line_combo.addItem(str(i))

        self.pos_label = QLabel('Position: ')
        self.pos_combo = QComboBox()
        for i in range(LCD20x4.MAX_POSITION):
            self.pos_combo.addItem(str(i))

        self.pos_layout = QHBoxLayout()
        self.pos_layout.addWidget(self.pos_label)
        self.pos_layout.addWidget(self.pos_combo)
        self.pos_layout.addStretch()

        self.line_layout = QHBoxLayout()
        self.line_layout.addWidget(self.line_label)
        self.line_layout.addWidget(self.line_combo)
        self.line_layout.addStretch()

        self.text_label = QLabel('Text: ')
        self.text_edit = QLineEdit()
        self.text_edit.setMaxLength(LCD20x4.MAX_POSITION)
        self.text_button = QPushButton('Send Text')
        self.text_layout = QHBoxLayout()
        self.text_layout.addWidget(self.text_label)
        self.text_layout.addWidget(self.text_edit)
        self.text_layout.addWidget(self.text_button)

        self.clear_button = QPushButton("Clear Display")

        self.bl_button = QPushButton()
        self.cursor_button = QPushButton()
        self.blink_button = QPushButton()

        try:
            if self.lcd.is_backlight_on():
                self.bl_button.setText('Backlight Off')
            else:
                self.bl_button.setText('Backlight On')

            cursor, blink = self.lcd.get_config()
            if cursor:
                self.cursor_button.setText('Cursor Off')
            else:
                self.cursor_button.setText('Cursor On')

            if blink:
                self.blink_button.setText('Blink Off')
            else:
                self.blink_button.setText('Blink On')
        except ip_connection.Error:
            pass

        self.onofflayout = QHBoxLayout()
        self.onofflayout.addWidget(self.bl_button)
        self.onofflayout.addWidget(self.cursor_button)
        self.onofflayout.addWidget(self.blink_button)

        self.b0_label = QLabel('Button 0: Released')
        self.b1_label = QLabel('Button 1: Released')
        self.b2_label = QLabel('Button 2: Released')

        self.cursor_button.pressed.connect(self.cursor_pressed)
        self.blink_button.pressed.connect(self.blink_pressed)
        self.clear_button.pressed.connect(self.clear_pressed)
        self.bl_button.pressed.connect(self.bl_pressed)
        self.text_button.pressed.connect(self.text_pressed)

        layout = QVBoxLayout(self)
        layout.addLayout(self.line_layout)
        layout.addLayout(self.pos_layout)
        layout.addLayout(self.text_layout)
        layout.addWidget(self.clear_button)
        layout.addLayout(self.onofflayout)
        layout.addWidget(self.b0_label)
        layout.addWidget(self.b1_label)
        layout.addWidget(self.b2_label)
        layout.addStretch()

    def start(self):
        pass

    def stop(self):
        pass

    @staticmethod
    def has_name(name):
        return 'LCD 20x4 Bricklet' in name

    def cb_pressed(self, button):
        if button == 0:
            self.b0_label.setText('Button 0: Pressed')
        elif button == 1:
            self.b1_label.setText('Button 1: Pressed')
        elif button == 2:
            self.b2_label.setText('Button 2: Pressed')

    def cb_released(self, button):
        if button == 0:
            self.b0_label.setText('Button 0: Released')
        elif button == 1:
            self.b1_label.setText('Button 1: Released')
        elif button == 2:
            self.b2_label.setText('Button 2: Released')

    def bl_pressed(self):
        try:
            if self.bl_button.text() == 'Backlight On':
                self.lcd.backlight_on()
                self.bl_button.setText('Backlight Off')
            else:
                self.lcd.backlight_off()
                self.bl_button.setText('Backlight On')
        except ip_connection.Error:
            return

    def get_config(self):
        cursor = self.cursor_button.text() == 'Cursor Off'
        blink = self.blink_button.text() == 'Blink Off'
        return (cursor, blink)

    def cursor_pressed(self):
        cursor, blink = self.get_config()
        try:
            self.lcd.set_config(not cursor, blink)
        except ip_connection.Error:
            return

        if cursor:
            self.cursor_button.setText('Cursor On')
        else:
            self.cursor_button.setText('Cursor Off')

    def blink_pressed(self):
        cursor, blink = self.get_config()
        try:
            self.lcd.set_config(cursor, not blink)
        except ip_connection.Error:
            return

        if blink:
            self.blink_button.setText('Blink On')
        else:
            self.blink_button.setText('Blink Off')

    def clear_pressed(self):
        try:
            self.lcd.clear_display()
        except ip_connection.Error:
            return

    def text_pressed(self):
        line = int(self.line_combo.currentText())
        position = int(self.pos_combo.currentText())
        text = str(self.text_edit.text())
        try:
            self.lcd.write_line(line, position, text)
        except ip_connection.Error:
            return
Example #44
0
    def __init__(self, ipcon, uid):
        PluginBase.__init__(self, ipcon, uid)

        self.lcd = bricklet_lcd_20x4.LCD20x4(self.uid)
        self.ipcon.add_device(self.lcd)
        self.version = '.'.join(map(str, self.lcd.get_version()[1]))

        self.qtcb_pressed.connect(self.cb_pressed)
        self.lcd.register_callback(self.lcd.CALLBACK_BUTTON_PRESSED,
                                   self.qtcb_pressed.emit)
        self.qtcb_released.connect(self.cb_released)
        self.lcd.register_callback(self.lcd.CALLBACK_BUTTON_RELEASED,
                                   self.qtcb_released.emit)

        self.line_label = QLabel('Line: ')
        self.line_combo = QComboBox()
        for i in range(LCD20x4.MAX_LINE):
            self.line_combo.addItem(str(i))

        self.pos_label = QLabel('Position: ')
        self.pos_combo = QComboBox()
        for i in range(LCD20x4.MAX_POSITION):
            self.pos_combo.addItem(str(i))

        self.pos_layout = QHBoxLayout()
        self.pos_layout.addWidget(self.pos_label)
        self.pos_layout.addWidget(self.pos_combo)
        self.pos_layout.addStretch()

        self.line_layout = QHBoxLayout()
        self.line_layout.addWidget(self.line_label)
        self.line_layout.addWidget(self.line_combo)
        self.line_layout.addStretch()

        self.text_label = QLabel('Text: ')
        self.text_edit = QLineEdit()
        self.text_edit.setMaxLength(LCD20x4.MAX_POSITION)
        self.text_button = QPushButton('Send Text')
        self.text_layout = QHBoxLayout()
        self.text_layout.addWidget(self.text_label)
        self.text_layout.addWidget(self.text_edit)
        self.text_layout.addWidget(self.text_button)

        self.clear_button = QPushButton("Clear Display")

        self.bl_button = QPushButton()
        self.cursor_button = QPushButton()
        self.blink_button = QPushButton()

        try:
            if self.lcd.is_backlight_on():
                self.bl_button.setText('Backlight Off')
            else:
                self.bl_button.setText('Backlight On')

            cursor, blink = self.lcd.get_config()
            if cursor:
                self.cursor_button.setText('Cursor Off')
            else:
                self.cursor_button.setText('Cursor On')

            if blink:
                self.blink_button.setText('Blink Off')
            else:
                self.blink_button.setText('Blink On')
        except ip_connection.Error:
            pass

        self.onofflayout = QHBoxLayout()
        self.onofflayout.addWidget(self.bl_button)
        self.onofflayout.addWidget(self.cursor_button)
        self.onofflayout.addWidget(self.blink_button)

        self.b0_label = QLabel('Button 0: Released')
        self.b1_label = QLabel('Button 1: Released')
        self.b2_label = QLabel('Button 2: Released')

        self.cursor_button.pressed.connect(self.cursor_pressed)
        self.blink_button.pressed.connect(self.blink_pressed)
        self.clear_button.pressed.connect(self.clear_pressed)
        self.bl_button.pressed.connect(self.bl_pressed)
        self.text_button.pressed.connect(self.text_pressed)

        layout = QVBoxLayout(self)
        layout.addLayout(self.line_layout)
        layout.addLayout(self.pos_layout)
        layout.addLayout(self.text_layout)
        layout.addWidget(self.clear_button)
        layout.addLayout(self.onofflayout)
        layout.addWidget(self.b0_label)
        layout.addWidget(self.b1_label)
        layout.addWidget(self.b2_label)
        layout.addStretch()
Example #45
0
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

        icon = QIcon()
        icon.addPixmap(QPixmap(":/freeseer/logo.png"), QIcon.Normal, QIcon.Off)
        self.setWindowIcon(icon)
        self.resize(400, 400)

        self.mainLayout = QVBoxLayout()
        self.setLayout(self.mainLayout)

        self.setStyleSheet("""
            QToolButton {
                background-color: #D1D1D1;
                border-style: solid;
                border-width: 1px;
                border-radius: 10px;
                border-color: #969696;
                padding: 6px;
            }

            QToolButton:pressed {
                background-color: #A3A2A2;
                border-width: 2px;
                border-color: #707070;
            }

            QToolButton:checked {
                background-color: #A3A2A2;
                border-width: 2px;
                border-color: #707070;
            }

            QToolButton:disabled {
                background-color: #EDEDED;
                border-color: #BFBDBD;
            }

            QToolButton:hover {
                border-width: 2px;
            }
        """)

        boldFont = QFont()
        boldFont.setBold(True)

        fontSize = self.font().pixelSize()
        fontUnit = "px"
        if fontSize == -1:  # Font is set as points, not pixels.
            fontUnit = "pt"
            fontSize = self.font().pointSize()

        # Control bar
        self.controlRow = QHBoxLayout()
        self.mainLayout.addLayout(self.controlRow)

        self.recordIcon = QIcon(":/multimedia/record.png")
        self.stopIcon = QIcon(":/multimedia/stop.png")
        pauseIcon = QIcon(":/multimedia/pause.png")
        playIcon = QIcon(":/multimedia/play.png")
        self.headphoneIcon = QIcon()
        self.headphoneIcon.addPixmap(QPixmap(":/multimedia/headphones.png"),
                                     QIcon.Normal, QIcon.Off)

        self.is_recording = False
        self.recordButton = QToolButton()
        self.recordButton.setToolTip("Record")
        self.recordButton.setFixedSize(QSize(60, 40))
        self.recordButton.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        self.recordButton.setIcon(self.recordIcon)
        self.recordButton.setEnabled(False)
        self.recordButton.setObjectName("recordButton")
        self.controlRow.addWidget(self.recordButton, 0, Qt.AlignLeft)
        self.connect(self.recordButton, SIGNAL("clicked()"),
                     self.setRecordIcon)

        self.playButton = QToolButton()
        self.playButton.setToolTip("Play last recorded Video")
        self.playButton.setFixedSize(QSize(60, 40))
        self.playButton.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        self.playButton.setIcon(playIcon)
        self.playButton.setEnabled(False)
        self.controlRow.addWidget(self.playButton, 0, Qt.AlignLeft)

        self.pauseButton = QToolButton()
        self.pauseButton.setToolTip("Pause")
        self.pauseButton.setIcon(pauseIcon)
        self.pauseButton.setFixedSize(QSize(60, 40))
        self.pauseButton.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        self.pauseButton.setEnabled(False)
        self.pauseButton.setCheckable(True)
        self.controlRow.addWidget(self.pauseButton, 0, Qt.AlignLeft)

        self.controlRow.addSpacerItem(QSpacerItem(30, 40))
        self.controlRow.addStretch(1)

        self.standbyButton = QPushButton("Standby")
        self.standbyButton.setStyleSheet("""
            QPushButton {{
                color: white;
                background-color: #47a447;
                border-style: solid;
                border-width: 0px;
                border-radius: 10px;
                border-color: #398439;
                font: bold {}{};
                padding: 6px;
            }}

            QPushButton:pressed {{
                background-color: #3E8A3E;
                border-color: #327532;
            }}

            QPushButton:hover {{
                border-width: 2px;
            }}
        """.format(fontSize + 3, fontUnit))
        self.standbyButton.setToolTip("Standby")
        self.standbyButton.setFixedSize(QSize(180, 40))
        self.standbyButton.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        self.standbyButton.setCheckable(True)
        self.standbyButton.setObjectName("standbyButton")
        self.controlRow.addWidget(self.standbyButton)

        self.disengageButton = QPushButton("Leave record-mode")
        self.disengageButton.setStyleSheet("""
            QPushButton {{
                color: white;
                background-color: #D14343;
                border-style: solid;
                border-width: 0px;
                border-radius: 10px;
                border-color: #B02C2C;
                font: bold {}{};
                padding: 6px;
            }}

            QPushButton:pressed {{
                background-color: #AD2B2B;
                border-color: #8C2929;
            }}

            QPushButton:hover {{
                border-width: 2px;
            }}

            QPushButton:disabled {{
                background-color: #B89E9E;
        }}
        """.format(fontSize + 3, fontUnit))
        self.disengageButton.setToolTip("Leave record-mode")
        self.disengageButton.setFixedSize(QSize(180, 40))
        self.disengageButton.setSizePolicy(QSizePolicy.Fixed,
                                           QSizePolicy.Fixed)
        self.disengageButton.setHidden(True)
        self.disengageButton.setObjectName("disengageButton")
        self.controlRow.addWidget(self.disengageButton)

        # Filter bar
        self.filterBarLayout = QVBoxLayout()
        self.mainLayout.addLayout(self.filterBarLayout)

        self.filterBarLayoutRow_1 = QHBoxLayout()
        self.filterBarLayout.addLayout(self.filterBarLayoutRow_1)
        self.eventLabel = QLabel("Event")
        self.eventLabel.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
        self.eventComboBox = QComboBox()
        self.eventLabel.setBuddy(self.eventComboBox)
        self.roomLabel = QLabel("Room")
        self.roomLabel.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
        self.roomComboBox = QComboBox()
        self.roomLabel.setBuddy(self.roomComboBox)
        self.dateLabel = QLabel("Date")
        self.dateLabel.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
        self.dateComboBox = QComboBox()
        self.dateLabel.setBuddy(self.dateComboBox)
        self.filterBarLayoutRow_1.addWidget(self.eventLabel)
        self.filterBarLayoutRow_1.addWidget(self.eventComboBox)
        self.filterBarLayoutRow_1.addWidget(self.roomLabel)
        self.filterBarLayoutRow_1.addWidget(self.roomComboBox)
        self.filterBarLayoutRow_1.addWidget(self.dateLabel)
        self.filterBarLayoutRow_1.addWidget(self.dateComboBox)

        self.filterBarLayoutRow_2 = QHBoxLayout()
        self.filterBarLayout.addLayout(self.filterBarLayoutRow_2)
        self.talkLabel = QLabel("Talk ")
        self.talkLabel.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
        self.talkComboBox = QComboBox()
        self.talkComboBox.setFont(boldFont)
        self.talkComboBox.setSizePolicy(QSizePolicy.Minimum,
                                        QSizePolicy.Maximum)
        self.talkComboBox.setSizeAdjustPolicy(
            QComboBox.AdjustToMinimumContentsLength)
        self.filterBarLayoutRow_2.addWidget(self.talkLabel)
        self.filterBarLayoutRow_2.addWidget(self.talkComboBox)

        # Preview Layout
        self.previewLayout = QHBoxLayout()
        self.mainLayout.addLayout(self.previewLayout)

        self.previewWidget = QWidget()
        self.audioSlider = QSlider()
        self.audioSlider.setSizePolicy(QSizePolicy.Fixed,
                                       QSizePolicy.Expanding)
        self.audioSlider.setEnabled(False)
        self.previewLayout.addWidget(self.previewWidget)
        self.previewLayout.addWidget(self.audioSlider)

        self.statusLabel = QLabel()
        self.mainLayout.addWidget(self.statusLabel)

        # Audio Feedback Checkbox
        self.audioFeedbackCheckbox = QCheckBox()
        self.audioFeedbackCheckbox.setLayoutDirection(Qt.RightToLeft)
        self.audioFeedbackCheckbox.setIcon(self.headphoneIcon)
        self.audioFeedbackCheckbox.setToolTip("Enable Audio Feedback")
        self.mainLayout.addWidget(self.audioFeedbackCheckbox)
Example #46
0
class CoordinatesConverterDialog(QtGui.QDialog, FORM_CLASS):
    def __init__(self, parent=None):
        super(CoordinatesConverterDialog, self).__init__(parent)
        self.setupUi(self)

        # Output fields for converted coordinates
        self.coordinate_fields = [
            self.lineEdit_mgrs, self.lineEdit_utm, self.lineEdit_wgs_dms,
            self.lineEdit_wgs_degrees, self.lineEdit_wgs_comma
        ]

        # Input fields for geographic coordinate format
        self.lat_deg_input = QLineEdit()
        self.lat_min_input = QLineEdit()
        self.lat_sec_input = QLineEdit()
        self.long_deg_input = QLineEdit()
        self.long_min_input = QLineEdit()
        self.long_sec_input = QLineEdit()

        # Input fields for utm coordinate format
        self.utm_zone_input = QLineEdit()
        self.hemisphere = QComboBox()
        self.hemisphere.addItem('N')
        self.hemisphere.addItem('S')
        self.utm_easting_input = QLineEdit()
        self.utm_northing_input = QLineEdit()
        self.zone_label = QLabel('Zone')

        # Input fields for mgrs coordinate format
        self.mgrs_zone_input = QLineEdit()
        self.mgrs_square_input = QLineEdit()
        self.mgrs_easting_input = QLineEdit()
        self.mgrs_northing_input = QLineEdit()
        self.square_label = QLabel('100km Quadrat')

        self.comboBox_format.setCurrentIndex(0)
        self.hemisphere.setCurrentIndex(1)
        self.input_fields = [
            self.lat_deg_input, self.lat_min_input, self.lat_sec_input,
            self.long_deg_input, self.long_min_input, self.long_sec_input,
            self.utm_zone_input, self.utm_easting_input,
            self.utm_northing_input, self.mgrs_zone_input,
            self.mgrs_square_input, self.mgrs_easting_input,
            self.mgrs_northing_input
        ]

    def reset(self):
        """Resets the graphical user interface."""
        self.clear_coordinate_fields()
        self.clear_epsg_fields()
        self.statusBar.clearMessage()
        self.clear_format_layout()
        self.comboBox_format.setCurrentIndex(0)
        self.hemisphere.setCurrentIndex(0)
        self.label_input_convert.setText('')
        self.label_utm_ref.setText('MGRS')

    def clear_coordinate_fields(self):
        """Resets the text fields show the converted coordinates."""
        self.label_utm_ref.setText('MGRS')
        for field in self.coordinate_fields:
            field.clear()

    def clear_input_fields(self):
        """Resets the value input fields for the different coordinate systems."""
        self.label_utm_ref.setText('MGRS')
        for field in self.input_fields:
            field.clear()

    def clear_epsg_fields(self):
        """Resets the input field and the text field showing the result for transforming values based on EPSG codes."""
        self.lineEdit_autid_from.clear()
        self.textEdit_from.clear()
        self.lineEdit_autid_to.clear()
        self.textEdit_to.clear()
        self.lineEdit_input_to_x.clear()
        self.lineEdit_input_to_y.clear()
        self.lineEdit_input_from_x.clear()
        self.lineEdit_input_from_y.clear()

    def create_degrees_input(self):
        """Creates the template for entering coordinates in the geographic coordinate system - DEGREES."""
        self.gridLayout_input.addWidget(self.long_deg_input, 0, 0)
        self.gridLayout_input.addWidget(QLabel('\xb0'), 0, 1)
        self.gridLayout_input.addWidget(QLabel('E'), 0, 2)
        self.gridLayout_input.addWidget(self.lat_deg_input, 0, 3)
        self.gridLayout_input.addWidget(QLabel('\xb0'), 0, 4)
        self.gridLayout_input.addWidget(QLabel('N'), 0, 5)

    def create_dms_input(self):
        """Creates the template for entering coordinates in the geographic coordinate system - DEGREES, MINUTES, SECONDS."""
        self.gridLayout_input.addWidget(self.long_deg_input, 0, 0)
        self.gridLayout_input.addWidget(QLabel('\xb0'), 0, 1)
        self.gridLayout_input.addWidget(self.long_min_input, 0, 2)
        self.gridLayout_input.addWidget(QLabel('\''), 0, 3)
        self.gridLayout_input.addWidget(self.long_sec_input, 0, 4)
        self.gridLayout_input.addWidget(QLabel('"'), 0, 5)
        self.gridLayout_input.addWidget(QLabel('E'), 0, 6)
        self.gridLayout_input.addWidget(self.lat_deg_input, 0, 7)
        self.gridLayout_input.addWidget(QLabel('\xb0'), 0, 8)
        self.gridLayout_input.addWidget(self.lat_min_input, 0, 9)
        self.gridLayout_input.addWidget(QLabel('\''), 0, 10)
        self.gridLayout_input.addWidget(self.lat_sec_input, 0, 11)
        self.gridLayout_input.addWidget(QLabel('"'), 0, 12)
        self.gridLayout_input.addWidget(QLabel('N'), 0, 13)

    def create_commaminutes_input(self):
        """Creates the template for entering coordinates in the geographic coordinate system - DEGREES, DECIMAL MINUTES."""
        self.gridLayout_input.addWidget(self.long_deg_input, 0, 0)
        self.gridLayout_input.addWidget(QLabel('\xb0'), 0, 1)
        self.gridLayout_input.addWidget(self.long_min_input, 0, 2)
        self.gridLayout_input.addWidget(QLabel('\''), 0, 3)
        self.gridLayout_input.addWidget(QLabel('E'), 0, 4)
        self.gridLayout_input.addWidget(self.lat_deg_input, 0, 7)
        self.gridLayout_input.addWidget(QLabel('\xb0'), 0, 8)
        self.gridLayout_input.addWidget(self.lat_min_input, 0, 9)
        self.gridLayout_input.addWidget(QLabel('\''), 0, 10)
        self.gridLayout_input.addWidget(QLabel('N'), 0, 11)

    def create_utm_input(self):
        """Creates the template for entering coordinates in the unversial mercator transverse coordinate system - UTM."""
        self.utm_zone_input.setFixedWidth(30)
        self.gridLayout_input.addWidget(self.utm_zone_input, 0, 0)
        self.gridLayout_input.addWidget(self.zone_label, 0, 1)
        self.gridLayout_input.addWidget(self.hemisphere, 0, 2)
        self.gridLayout_input.addWidget(self.utm_easting_input, 0, 3)
        self.gridLayout_input.addWidget(QLabel('E'), 0, 4)
        self.gridLayout_input.addWidget(self.utm_northing_input, 0, 5)
        self.gridLayout_input.addWidget(QLabel('N'), 0, 6)

    def create_mgrs_input(self):
        """Creates the template for entering coordinates in the military grid reference coordinate system - MGRS."""
        self.mgrs_zone_input.setFixedWidth(40)
        self.mgrs_square_input.setFixedWidth(30)
        self.gridLayout_input.addWidget(self.mgrs_zone_input, 0, 0)
        self.gridLayout_input.addWidget(self.zone_label, 0, 1)
        self.gridLayout_input.addWidget(self.mgrs_square_input, 0, 2)
        self.gridLayout_input.addWidget(self.square_label, 0, 3)
        self.gridLayout_input.addWidget(self.mgrs_easting_input, 0, 4)
        self.gridLayout_input.addWidget(QLabel('E'), 0, 5)
        self.gridLayout_input.addWidget(self.mgrs_northing_input, 0, 6)
        self.gridLayout_input.addWidget(QLabel('N'), 0, 7)

    def clear_format_layout(self):
        """Removes all template elements from the gridlayout."""
        for i in reversed(range(self.gridLayout_input.count())):
            self.gridLayout_input.itemAt(i).widget().setParent(None)
        self.clear_input_fields()

    def change_to_english(self):
        self.groupBox_coord.setTitle("convert coordinates")
        self.groupBox_input.setTitle("input")
        self.groupBox_result.setTitle("result")
        self.groupBox_epsg.setTitle("transform based on EPSG code")
        self.groupBox_to.setTitle("from")
        self.groupBox_from.setTitle("to")
        self.label_format_description.setText("choose coordinate system")
        self.label_wgs_degrees.setText("WGS84 (degrees)")
        self.label_wgs_comma.setText("WGS84 (degrees, comma minutes)")
        self.label_wgs_dms.setText("WGS84 (degrees, minutes, seconds)")
        self.label_utm_ref.setText('MGRS')
        self.label_epsg_to.setText("Authority ID")
        self.label_epsg_from.setText("Authority ID")
        self.label_system_to.setText("Coordinate Reference System")
        self.label_system_from.setText("Coordinate Reference System")
        self.label_input_to_x.setText("easting (X)")
        self.label_input_to_y.setText("northing (Y)")
        self.label_input_from_x.setText("easting (X)")
        self.label_input_from_y.setText("northing (Y)")
        self.pushButton_select_to.setText("choose EPSG code")
        self.pushButton_select_from.setText("choose EPSG code")
        self.zone_label.setText("zone")
        self.square_label.setText("100km square")
        self.comboBox_format.clear()
        self.comboBox_format.addItems([
            "Degrees", "Degrees, Comma minutes", "Degrees, Minutes, Seconds",
            "UTM", "MGRS"
        ])
        self.pushButton_help.setText("Help")

    def change_to_german(self):
        self.groupBox_coord.setTitle("Koordinaten umrechnen")
        self.groupBox_input.setTitle("Eingabe")
        self.groupBox_result.setTitle("Ergebnis")
        self.groupBox_epsg.setTitle("anhand EPSG-Code konvertieren")
        self.groupBox_to.setTitle("von")
        self.groupBox_from.setTitle("nach")
        self.label_format_description.setText(
            "Koordinatensystem wählen".decode('UTF-8'))
        self.label_wgs_degrees.setText("WGS84 (Dezimalgrad)")
        self.label_wgs_comma.setText("WGS84 (Grad, Kommaminuten)")
        self.label_wgs_dms.setText("WGS84 (Grad, Minuten, Sekunden)")
        self.label_utm_ref.setText('MGRS')
        self.label_epsg_to.setText("AutoritätsID".decode('UTF-8'))
        self.label_epsg_from.setText("AutoritätsID".decode('UTF-8'))
        self.label_system_to.setText("Koordinatensystem")
        self.label_system_from.setText("Koordinatensystem")
        self.label_input_to_x.setText("Rechtswert (X)")
        self.label_input_to_y.setText("Hochwert (Y)")
        self.label_input_from_x.setText("Rechtswert (X)")
        self.label_input_from_y.setText("Hochwert (Y)")
        self.pushButton_select_to.setText("EPSG auswählen".decode('UTF-8'))
        self.pushButton_select_from.setText("EPSG auswählen".decode('UTF-8'))
        self.zone_label.setText("Zone")
        self.square_label.setText("100km Quadrat")
        self.comboBox_format.clear()
        self.comboBox_format.addItems([
            "Dezimalgrad", "Grad, Kommaminuten", "Grad, Minuten, Sekunden",
            "UTM", "MGRS"
        ])
        self.pushButton_help.setText("Hilfe")
Example #47
0
    def createEditor(self, parent, option, index):
        """
        Create the editor

        @param parent: 
        @type parent:

        @param option: 
        @type option:

        @param index: 
        @type index:

        @return:
        @rtype:
        """
        value = self.getValueRow(index)
        if index.column() == self.col_:
            if value['key'] == 'summary' or value['key'] == 'prerequisites':
                editorDialog = DescriptionDialog(value['value'])
                if editorDialog.exec_() == QDialog.Accepted:
                    testDescr = editorDialog.getDescr()
                    index.model().setData(index, q(testDescr))
                return None
            if value['key'] == 'comments':
                editorDialog = CommentsDialog(value['value'])
                if editorDialog.exec_() == QDialog.Accepted:
                    comments = editorDialog.getComments()
                    index.model().setData(index, comments)
                return None
            elif value['key'] == 'date':  # deprecated
                return None
            elif value['key'] == 'creation date':
                return None
            elif value['key'] == 'data mode':
                wdoc = index.model().getWdoc()
                if wdoc.extension != Workspace.TestData.TYPE:
                    return None
                editorDialog = DataModeDialog()
                if editorDialog.exec_() == QDialog.Accepted:
                    dataMode = editorDialog.getSelectedMode()
                    # update lexer on editor
                    if dataMode == 'Raw':
                        wdoc.deactiveXmlLexer()
                    else:
                        wdoc.activeXmlLexer()
                    # update table
                    index.model().setData(index, dataMode)
                return None
            elif value['key'] == 'libraries':
                serverSutLibs = Settings.instance().serverContext['libraries']
                editor = QComboBox(parent)
                editor.activated.connect(self.onItemActivated)
                editor.addItems(serverSutLibs.split(','))
                return editor
            elif value['key'] == 'adapters':
                serverSutAdps = Settings.instance().serverContext['adapters']
                editor = QComboBox(parent)
                editor.activated.connect(self.onItemActivated)
                editor.addItems(serverSutAdps.split(','))
                return editor
            elif value['key'] == 'state':
                wdoc = index.model().getWdoc()

                if wdoc is None:
                    return

                if not wdoc.isSaved():
                    return

                isTp = False
                isTs = False
                isTu = False
                isTg = False
                isTa = False
                if wdoc.extension == Workspace.TestUnit.TYPE:
                    isTu = True
                if wdoc.extension == Workspace.TestAbstract.TYPE:
                    isTa = True
                if wdoc.extension == Workspace.TestSuite.TYPE:
                    isTs = True
                if wdoc.extension == Workspace.TestPlan.TYPE:
                    isTp = True
                if wdoc.extension == Workspace.TestPlan.TYPE_GLOBAL:
                    isTg = True
                editorDialog = StateDialog()
                if editorDialog.exec_() == QDialog.Accepted:
                    stateTest = editorDialog.getSelectedState()
                    if value['value'] != stateTest:
                        # uci call
                        if stateTest == 'Executing':
                            duration = time.time() - float(
                                wdoc.dataModel.testdev)

                            # rest call
                            RCI.instance().durationTestsWritingMetrics(
                                duration=int(duration),
                                projectId=wdoc.project,
                                isTp=isTp,
                                isTs=isTs,
                                isTu=isTu,
                                isTg=isTg,
                                isTa=isTa)

                        # update data model
                        if stateTest == 'Writing':
                            wdoc.dataModel.testdev = time.time()
                        # update table
                        index.model().setData(index, stateTest)
                return None
            else:
                editor = editor = QLineEdit(parent)
                return editor
        return QItemDelegate.createEditor(self, parent, option, index)
Example #48
0
class ImportJobsDialog(QDialog):
    def __init__(self, jobs):
        """
        Constructor
        :param jobs: all the jobs available for import
        """
        QDialog.__init__(self)
        self.__jobs = jobs
        self.setWindowTitle(
            QCoreApplication.translate("VDLTools", "Choose job"))
        self.resize(300, 100)
        self.__layout = QGridLayout()
        self.__okButton = QPushButton(
            QCoreApplication.translate("VDLTools", "OK"))
        self.__okButton.setMinimumHeight(20)
        self.__okButton.setMinimumWidth(100)

        self.__cancelButton = QPushButton(
            QCoreApplication.translate("VDLTools", "Cancel"))
        self.__cancelButton.setMinimumHeight(20)
        self.__cancelButton.setMinimumWidth(100)

        self.__layout.addWidget(self.__okButton, 100, 1)
        self.__layout.addWidget(self.__cancelButton, 100, 2)

        label = QLabel(QCoreApplication.translate("VDLTools", "Job : "))
        label.setMinimumHeight(20)
        label.setMinimumWidth(50)
        self.__layout.addWidget(label, 0, 1)

        self.__jobCombo = QComboBox()
        self.__jobCombo.setMinimumHeight(20)
        self.__jobCombo.setMinimumWidth(50)
        self.__jobCombo.addItem("")
        for job in self.__jobs:
            self.__jobCombo.addItem(job)
        self.__layout.addWidget(self.__jobCombo, 0, 2)
        self.__jobCombo.currentIndexChanged.connect(self.__jobComboChanged)

        self.setLayout(self.__layout)

    def __jobComboChanged(self):
        """
        When the selected job has changed
        """
        if self.__pointCombo.itemText(0) == "":
            self.__pointCombo.removeItem(0)

    def okButton(self):
        """
        To get the ok button instance
        :return: ok button instance
        """
        return self.__okButton

    def cancelButton(self):
        """
        To get the cancel button instance
        :return: cancel button instance
        """
        return self.__cancelButton

    def job(self):
        """
        To get the selected job
        :return: selected job
        """
        index = self.__jobCombo.currentIndex()
        if self.__jobCombo.itemText(index) == "":
            return None
        else:
            return self.__jobs[index]
    def __init__(self, parent):
        QFrame.__init__(self, parent)
        while not isinstance(parent, QDialog):
            parent = parent.parent()
        self.setObjectName("WindPanel" +
                           str(len(parent.findChildren(WindPanel))))

        #         self.frame_WindIA = QFrame(parent)
        sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.sizePolicy().hasHeightForWidth())
        self.setSizePolicy(sizePolicy)
        self.setFrameShape(QFrame.StyledPanel)
        self.setFrameShadow(QFrame.Raised)
        self.setObjectName(("frame_WindIA"))
        self.hLayout = QHBoxLayout(self)
        self.hLayout.setSpacing(0)
        self.hLayout.setMargin(0)
        self.hLayout.setObjectName(("hLayout"))

        self.basicFrame = Frame(self, "HL")
        self.hLayout.addWidget(self.basicFrame)

        self.lblIA = QLabel(self.basicFrame)
        self.lblIA.setMinimumSize(QSize(200, 0))
        self.lblIA.setMaximumSize(QSize(200, 16777215))
        font = QFont()
        font.setFamily(("Arial"))
        font.setBold(False)
        font.setWeight(50)
        self.lblIA.setFont(font)
        self.lblIA.setObjectName(("lblIA"))
        self.basicFrame.Add = self.lblIA

        self.comboBox = QComboBox(self.basicFrame)
        # sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed)
        # sizePolicy.setHorizontalStretch(0)
        # sizePolicy.setVerticalStretch(0)
        # sizePolicy.setHeightForWidth(self.comboBox.sizePolicy().hasHeightForWidth())
        # self.comboBox.setSizePolicy(sizePolicy)
        # self.comboBox.setMinimumSize(QSize(60, 0))
        font = QFont()
        font.setFamily(("Arial"))
        font.setBold(False)
        font.setWeight(50)
        self.comboBox.setFont(font)
        self.comboBox.setObjectName(("comboBox"))
        self.basicFrame.Add = self.comboBox

        self.speedBox = QLineEdit(self.basicFrame)
        # sizePolicy = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed)
        # sizePolicy.setHorizontalStretch(0)
        # sizePolicy.setVerticalStretch(0)
        # sizePolicy.setHeightForWidth(self.speedBox.sizePolicy().hasHeightForWidth())
        # self.speedBox.setSizePolicy(sizePolicy)
        # self.speedBox.setMinimumSize(QSize(70, 0))
        # self.speedBox.setMaximumSize(QSize(16777215, 16777215))
        font = QFont()
        font.setFamily(("Arial"))
        font.setBold(False)
        font.setWeight(50)
        self.speedBox.setFont(font)
        self.speedBox.setObjectName(("speedBox"))
        self.speedBox.setMinimumSize(QSize(60, 0))
        self.speedBox.setMaximumSize(QSize(60, 16777215))
        self.basicFrame.Add = self.speedBox

        spacerItem = QSpacerItem(0, 0, QSizePolicy.Expanding,
                                 QSizePolicy.Minimum)
        self.basicFrame.layoutBoxPanel.addItem(spacerItem)

        self.altitude = Altitude.NaN()
        self.customValue = Speed(30).Knots
        self.comboBox.addItems(["ICAO", "UK", "Custom"])
        self.comboBox.currentIndexChanged.connect(self.changeWindType)
        self.comboBox.setCurrentIndex(0)
        self.lblIA.setText("Wind (kts):")
        self.speedBox.setEnabled(False)
Example #50
0
    def __init__(self):
        self.techniquesClass = {
            'caesar cipher': caesarCipher,
            'mono alphabetic cipher': monoAlphabeticCipher,
            'vigenere cipher': vigenereCipher,
            'vernan cipher': vernanCipher,
            'one time pad': oneTimePad
        }

        self.rowsview = []
        self.filesview = []
        self.techniques = []

        QDialog.__init__(self)
        self.setWindowTitle("CryptoSystems")
        self.resize(1024, 600)
        self.setMinimumSize(QSize(1024, 600))
        self.setMaximumSize(QSize(1024, 600))

        self.checkBox_2 = QCheckBox(self)
        self.checkBox_2.setGeometry(QRect(620, 10, 130, 20))
        self.checkBox_2.setText('Select All')
        self.checkBox_2.clicked.connect(self.__selectAllFiles)

        self.treeView = QTreeView(self)
        self.treeView.setGeometry(QRect(10, 10, 230, 580))
        self.treeView.setObjectName("treeView")

        self.fileSystemModel = QFileSystemModel(self.treeView)
        self.fileSystemModel.setReadOnly(False)

        self.fileSystemModel.setFilter(QDir.AllDirs | QDir.NoDotAndDotDot)
        root = self.fileSystemModel.setRootPath("/")
        self.treeView.setModel(self.fileSystemModel)
        self.treeView.setRootIndex(root)
        self.treeView.hideColumn(1)
        self.treeView.hideColumn(2)
        self.treeView.hideColumn(3)
        self.treeView.clicked.connect(self.__eventDirectoryChanged)

        self.mygroupbox = QGroupBox(self)
        self.mygroupbox.setGeometry(QRect(0, 0, 1000, 1000))
        self.myform = QFormLayout()
        for j in list(range(100)):
            horizontalLayout = QHBoxLayout()
            self.myform.addRow(horizontalLayout)
            self.rowsview.append(horizontalLayout)

        self.mygroupbox.setLayout(self.myform)
        scroll = QScrollArea(self)
        scroll.setWidget(self.mygroupbox)
        scroll.setWidgetResizable(True)
        scroll.setGeometry(QRect(250, 30, 500, 580))
        scroll.setWidgetResizable(True)

        self.label_4 = QLabel(self)
        self.label_4.setGeometry(QRect(780, 30, 31, 16))
        self.label_4.setPixmap(QPixmap("images/key.png"))
        self.label_4.setScaledContents(True)

        self.lineEdit = QLineEdit(self)
        self.lineEdit.setGeometry(QRect(820, 30, 180, 20))
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit.setPlaceholderText(_fromUtf8('write your password'))
        self.lineEdit.setEchoMode(QLineEdit.Password)

        self.techniquesGroup = QGroupBox(self)
        self.tecniquesform = QFormLayout()
        self.techniquesGroup.setLayout(self.tecniquesform)

        self.techniquesScroll = QScrollArea(self)
        self.techniquesScroll.setGeometry(QRect(770, 100, 230, 300))
        self.techniquesScroll.setWidget(self.techniquesGroup)
        self.techniquesScroll.setWidgetResizable(True)

        self.rowsTechiques = []
        for i in list(range(8)):
            horizontalLayout = QHBoxLayout()
            self.tecniquesform.addRow(horizontalLayout)
            self.rowsTechiques.append(horizontalLayout)

        techniquesCombo = QComboBox()
        techniquesCombo.setGeometry(QRect(10, 50, 171, 22))
        techniquesCombo.addItems(self.techniquesClass.keys())
        self.techniques.append(techniquesCombo)
        self.rowsTechiques[0].addWidget(techniquesCombo)
        self.techniquesNumber = 1

        self.addTechnique = QPushButton()
        self.addTechnique.setGeometry(QRect(90, 90, 31, 21))
        self.addTechnique.setFixedSize(31, 21)
        self.addTechnique.setText('+')
        self.connect(self.addTechnique, SIGNAL("clicked()"),
                     self.__eventAddTechnique)
        self.rowsTechiques[len(self.rowsTechiques) - 1].addWidget(
            self.addTechnique)

        self.okButton = QPushButton(self)
        self.okButton.setGeometry(QRect(920, 560, 80, 20))
        self.okButton.setText('Start...')
        self.connect(self.okButton, SIGNAL("clicked()"),
                     self.__eventInitEncryption)
Example #51
0
class OWImpute(OWWidget):
    name = "Impute"
    description = "Imputes missing values in the data table."
    icon = "icons/Impute.svg"
    priority = 2130

    inputs = [("Data", Orange.data.Table, "set_data"),
              ("Learner", Orange.classification.Fitter, "set_fitter")]
    outputs = [("Data", Orange.data.Table)]

    METHODS = METHODS

    settingsHandler = settings.DomainContextHandler()

    default_method = settings.Setting(1)
    variable_methods = settings.ContextSetting({})
    autocommit = settings.Setting(True)

    want_main_area = False

    def __init__(self, parent=None):
        super().__init__(parent)
        self.modified = False

        box = group_box(self.tr("Default method"), layout=layout(Qt.Vertical))
        self.controlArea.layout().addWidget(box)

        bgroup = QButtonGroup()

        for i, m in enumerate(self.METHODS[1:-1], 1):
            b = radio_button(m.name,
                             checked=i == self.default_method,
                             group=bgroup,
                             group_id=i)
            box.layout().addWidget(b)

        self.defbggroup = bgroup

        bgroup.buttonClicked[int].connect(self.set_default_method)
        box = group_box(self.tr("Individual attribute settings"),
                        layout=layout(Qt.Horizontal))
        self.controlArea.layout().addWidget(box)

        self.varview = QtGui.QListView(
            selectionMode=QtGui.QListView.ExtendedSelection)
        self.varview.setItemDelegate(DisplayFormatDelegate())
        self.varmodel = itemmodels.VariableListModel()
        self.varview.setModel(self.varmodel)
        self.varview.selectionModel().selectionChanged.connect(
            self._on_var_selection_changed)
        self.selection = self.varview.selectionModel()

        box.layout().addWidget(self.varview)

        method_layout = layout(Qt.Vertical, margins=0)
        box.layout().addLayout(method_layout)

        methodbox = group_box(layout=layout(Qt.Vertical))

        bgroup = QButtonGroup()
        for i, m in enumerate(self.METHODS):
            b = radio_button(m.name, group=bgroup, group_id=i)
            methodbox.layout().addWidget(b)

        assert self.METHODS[-1].short == "value"

        self.value_stack = value_stack = QStackedLayout()
        self.value_combo = QComboBox(activated=self._on_value_changed)
        self.value_line = QLineEdit(editingFinished=self._on_value_changed)
        self.value_line.setValidator(QDoubleValidator())
        value_stack.addWidget(self.value_combo)
        value_stack.addWidget(self.value_line)
        methodbox.layout().addLayout(value_stack)

        bgroup.buttonClicked[int].connect(
            self.set_method_for_current_selection)
        reset_button = push_button("Restore all to default",
                                   clicked=self.reset_var_methods,
                                   default=False,
                                   autoDefault=False)

        method_layout.addWidget(methodbox)
        method_layout.addStretch(2)
        method_layout.addWidget(reset_button)
        self.varmethodbox = methodbox
        self.varbgroup = bgroup

        commitbox = group_box("Commit", layout=layout(margins=0))

        cwidget = commit_widget(button_text="Commit",
                                button_default=True,
                                check_text="Commit on any change",
                                checked=self.autocommit,
                                clicked=self.commit)

        def toggle_auto_commit(b):
            self.autocommit = b
            if self.modified:
                self.commit()

        cwidget.auto_commit_check.toggled[bool].connect(toggle_auto_commit)
        commitbox.layout().addWidget(cwidget)

        self.addAction(cwidget.commit_action)
        self.controlArea.layout().addWidget(commitbox)

        self.data = None
        self.fitter = None

    def set_default_method(self, index):
        """
        Set the current selected default imputation method.
        """
        if self.default_method != index:
            self.default_method = index
            self.defbggroup.button(index).setChecked(True)
            self._invalidate()

    def set_data(self, data):
        self.closeContext()
        self.clear()
        self.data = data
        if data is not None:
            self.varmodel[:] = data.domain.variables
            self.openContext(data.domain)
            self.restore_state(self.variable_methods)
            itemmodels.select_row(self.varview, 0)

        self.commit()

    def set_fitter(self, fitter):
        self.fitter = fitter

        if self.data is not None and \
                any(state.model.short == "model" for state in
                    map(self.state_for_column, range(len(self.data.domain)))):
            self.commit()

    def restore_state(self, state):
        for i, var in enumerate(self.varmodel):
            key = variable_key(var)
            if key in state:
                index = self.varmodel.index(i)
                self.varmodel.setData(index, state[key], Qt.UserRole)

    def clear(self):
        self.varmodel[:] = []
        self.variable_methods = {}
        self.data = None
        self.modified = False

    def state_for_column(self, column):
        """
        #:: int -> State
        Return the effective imputation state for `column`.

        :param int column:
        :rtype State:

        """
        var = self.varmodel[column]

        state = self.variable_methods.get(variable_key(var), None)
        if state is None or state.method == METHODS[0]:
            state = State(METHODS[self.default_method], ())
        return state

    def imputer_for_column(self, column):
        state = self.state_for_column(column)
        data = self.data
        var = data.domain[column]
        method, params = state
        if method.short == "leave":
            return None
        elif method.short == "avg":
            return column_imputer_average(var, data)
        elif method.short == "model":
            fitter = self.fitter if self.fitter is not None else MeanFitter()
            return column_imputer_by_model(var, data, fitter=fitter)
        elif method.short == "random":
            return column_imputer_random(var, data)
        elif method.short == "value":
            return column_imputer_defaults(var, data, float(params[0]))
        elif method.short == "as_value":
            return column_imputer_as_value(var, data)
        else:
            assert False

    def commit(self):
        if self.data is not None:
            states = [
                self.state_for_column(i) for i in range(len(self.varmodel))
            ]

            # Columns to filter unknowns by dropping rows.
            filter_columns = [
                i for i, state in enumerate(states)
                if state.method.short == "drop"
            ]

            impute_columns = [
                i for i, state in enumerate(states)
                if state.method.short not in ["drop", "leave"]
            ]

            imputers = [(self.varmodel[i], self.imputer_for_column(i))
                        for i in impute_columns]

            data = self.data

            if imputers:
                table_imputer = ImputerModel(data.domain, dict(imputers))
                data = table_imputer(data)

            if filter_columns:
                filter_ = data_filter.IsDefined(filter_columns)
                data = filter_(data)
        else:
            data = None

        self.send("Data", data)
        self.modified = False

    def _invalidate(self):
        self.modified = True
        if self.autocommit:
            self.commit()

    def _on_var_selection_changed(self):
        indexes = self.selection.selectedIndexes()

        vars = [self.varmodel[index.row()] for index in indexes]
        defstate = State(METHODS[0], ())
        states = [
            self.variable_methods.get(variable_key(var), defstate)
            for var in vars
        ]
        all_cont = all(
            isinstance(var, Orange.data.ContinuousVariable) for var in vars)
        states = list(unique(states))
        method = None
        params = ()
        state = None
        if len(states) == 1:
            state = states[0]
            method, params = state
            mindex = METHODS.index(method)
            self.varbgroup.button(mindex).setChecked(True)
        elif self.varbgroup.checkedButton() is not None:
            self.varbgroup.setExclusive(False)
            self.varbgroup.checkedButton().setChecked(False)
            self.varbgroup.setExclusive(True)

        values, enabled, stack_index = [], False, 0
        value, value_index = "0.0", 0
        if all_cont:
            enabled, stack_index = True, 1
            if method is not None and method.short == "value":
                value = params[0]

        elif len(vars) == 1 and \
                isinstance(vars[0], Orange.data.DiscreteVariable):
            values, enabled, stack_index = vars[0].values, True, 0
            if method is not None and method.short == "value":
                try:
                    value_index = values.index(params[0])
                except IndexError:
                    pass

        self.value_stack.setCurrentIndex(stack_index)
        self.value_stack.setEnabled(enabled)

        if stack_index == 0:
            self.value_combo.clear()
            self.value_combo.addItems(values)
            self.value_combo.setCurrentIndex(value_index)
        else:
            self.value_line.setText(value)

    def _on_value_changed(self):
        # The "fixed" value in the widget has been changed by the user.
        index = self.varbgroup.checkedId()
        self.set_method_for_current_selection(index)

    def set_method_for_current_selection(self, methodindex):
        indexes = self.selection.selectedIndexes()
        self.set_method_for_indexes(indexes, methodindex)

    def set_method_for_indexes(self, indexes, methodindex):
        method = METHODS[methodindex]
        params = (None, )
        if method.short == "value":
            if self.value_stack.currentIndex() == 0:
                value = self.value_combo.currentIndex()
            else:
                value = self.value_line.text()
            params = (value, )
        elif method.short == "model":
            params = ("model", )
        state = State(method, params)

        for index in indexes:
            self.varmodel.setData(index, state, Qt.UserRole)
            var = self.varmodel[index.row()]
            self.variable_methods[variable_key(var)] = state

        self._invalidate()

    def reset_var_methods(self):
        indexes = map(self.varmodel.index, range(len(self.varmodel)))
        self.set_method_for_indexes(indexes, 0)
class WindPanel(QFrame):
    def __init__(self, parent):
        QFrame.__init__(self, parent)
        while not isinstance(parent, QDialog):
            parent = parent.parent()
        self.setObjectName("WindPanel" +
                           str(len(parent.findChildren(WindPanel))))

        #         self.frame_WindIA = QFrame(parent)
        sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.sizePolicy().hasHeightForWidth())
        self.setSizePolicy(sizePolicy)
        self.setFrameShape(QFrame.StyledPanel)
        self.setFrameShadow(QFrame.Raised)
        self.setObjectName(("frame_WindIA"))
        self.hLayout = QHBoxLayout(self)
        self.hLayout.setSpacing(0)
        self.hLayout.setMargin(0)
        self.hLayout.setObjectName(("hLayout"))

        self.basicFrame = Frame(self, "HL")
        self.hLayout.addWidget(self.basicFrame)

        self.lblIA = QLabel(self.basicFrame)
        self.lblIA.setMinimumSize(QSize(200, 0))
        self.lblIA.setMaximumSize(QSize(200, 16777215))
        font = QFont()
        font.setFamily(("Arial"))
        font.setBold(False)
        font.setWeight(50)
        self.lblIA.setFont(font)
        self.lblIA.setObjectName(("lblIA"))
        self.basicFrame.Add = self.lblIA

        self.comboBox = QComboBox(self.basicFrame)
        # sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed)
        # sizePolicy.setHorizontalStretch(0)
        # sizePolicy.setVerticalStretch(0)
        # sizePolicy.setHeightForWidth(self.comboBox.sizePolicy().hasHeightForWidth())
        # self.comboBox.setSizePolicy(sizePolicy)
        # self.comboBox.setMinimumSize(QSize(60, 0))
        font = QFont()
        font.setFamily(("Arial"))
        font.setBold(False)
        font.setWeight(50)
        self.comboBox.setFont(font)
        self.comboBox.setObjectName(("comboBox"))
        self.basicFrame.Add = self.comboBox

        self.speedBox = QLineEdit(self.basicFrame)
        # sizePolicy = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed)
        # sizePolicy.setHorizontalStretch(0)
        # sizePolicy.setVerticalStretch(0)
        # sizePolicy.setHeightForWidth(self.speedBox.sizePolicy().hasHeightForWidth())
        # self.speedBox.setSizePolicy(sizePolicy)
        # self.speedBox.setMinimumSize(QSize(70, 0))
        # self.speedBox.setMaximumSize(QSize(16777215, 16777215))
        font = QFont()
        font.setFamily(("Arial"))
        font.setBold(False)
        font.setWeight(50)
        self.speedBox.setFont(font)
        self.speedBox.setObjectName(("speedBox"))
        self.speedBox.setMinimumSize(QSize(60, 0))
        self.speedBox.setMaximumSize(QSize(60, 16777215))
        self.basicFrame.Add = self.speedBox

        spacerItem = QSpacerItem(0, 0, QSizePolicy.Expanding,
                                 QSizePolicy.Minimum)
        self.basicFrame.layoutBoxPanel.addItem(spacerItem)

        self.altitude = Altitude.NaN()
        self.customValue = Speed(30).Knots
        self.comboBox.addItems(["ICAO", "UK", "Custom"])
        self.comboBox.currentIndexChanged.connect(self.changeWindType)
        self.comboBox.setCurrentIndex(0)
        self.lblIA.setText("Wind (kts):")
        self.speedBox.setEnabled(False)

    def setAltitude(self, value):
        self.altitude = value
        self.method_5()
#     def getValue(self, SpeedUnits_0 = SpeedUnits.KTS):
#         return Speed(float(self.speedBox.text()), SpeedUnits_0)

    def method_3(self, altitude_0):
        altitude = Altitude(float(self.speedBox.text()), AltitudeUnits.FT)
        if (self.comboBox.currentIndex() != 0):
            return altitude
        return Altitude(altitude.Feet - altitude_0.Feet, AltitudeUnits.FT)

    def method_5(self):
        if self.comboBox.currentIndex() == 0:
            self.speedBox.setText(
                str(round(Speed.smethod_1(self.altitude).Knots, 1)))
        elif self.comboBox.currentIndex() == 1:
            self.speedBox.setText(
                str(round(Speed.smethod_2(self.altitude).Knots, 1)))
        else:
            self.speedBox.setText(str(self.customValue))
        if self.comboBox.currentIndex() != 2:
            self.speedBox.setEnabled(False)
        else:
            self.speedBox.setEnabled(True)

    def changeWindType(self):
        self.method_5()

    def method_7(self, string_0):
        # object[] string0 = new object[] { string_0, this.captionLabel.Caption, this.speedBox.ToString(), this.comboBox.Items[this.comboBox.SelectedIndex] };
        return "%s%s\t%s (%s)" % (string_0, "Wind: ", self.speedBox.text(),
                                  self.comboBox.currentText())

    def set_LabelWidth(self, width):
        self.lblIA.setMinimumSize(QSize(width, 0))
        self.lblIA.setMaximumSize(QSize(width, 16777215))

    LabelWidth = property(None, set_LabelWidth, None, None)

    def get_speed(self):
        try:
            return Speed(float(self.speedBox.text()))
        except:
            return None

    Value = property(get_speed, None, None, None)

    def get_isEmpty(self):
        try:
            num = float(self.speedBox.text())
            return False
        except:
            return True

    IsEmpty = property(get_isEmpty, None, None, None)

    def get_Visible(self):
        return self.isVisible()

    def set_Visible(self, bool):
        self.setVisible(bool)

    Visible = property(get_Visible, set_Visible, None, None)
Example #53
0
class NewOrEditOfficeViewWidget(QDialog, FWidget):
    def __init__(self, pp=None, owner=None, parent=None, *args, **kwargs):
        QDialog.__init__(self, parent, *args, **kwargs)

        self.setWindowTitle(u"Nouvel Organisation")
        self.parent = parent

        vbox = QVBoxLayout()

        self.office_group_box()
        vbox.addWidget(self.organGroupBoxBtt)
        self.setLayout(vbox)

    def office_group_box(self):
        self.organGroupBoxBtt = QGroupBox(
            self.tr("Configuration des localités"))

        self.office_box = QComboBox()
        self.office_box.currentIndexChanged.connect(self.change_select_office)

        self.office_list = get_offices()
        self.region_box = QComboBox()
        self.region_label = FLabel()
        self.cercle_label = FLabel()
        self.phone_field = IntLineEdit()
        self.phone_field.setInputMask('## ## ## ##')
        self.bp = LineEdit()
        self.adress_org = QTextEdit()
        self.email_org = LineEdit()

        for index, value in enumerate(self.office_list):
            self.office_box.addItem("{}".format(office_name(value)), value)

        formbox = QFormLayout()
        formbox.addRow(FormLabel(u"Nom service :"), self.office_box)
        formbox.addRow(FormLabel(u"Région"), self.region_label)
        formbox.addRow(FormLabel(u"Cercle"), self.cercle_label)
        formbox.addRow(FormLabel(u"Tel :"), self.phone_field)
        formbox.addRow(FormLabel(u"B.P :"), self.bp)
        formbox.addRow(FormLabel(u"E-mail :"), self.email_org)
        formbox.addRow(FormLabel(u"Adresse complete :"), self.adress_org)
        butt = Button_save(u"Enregistrer")
        butt.clicked.connect(self.save_edit)
        formbox.addRow("", butt)

        self.organGroupBoxBtt.setLayout(formbox)

    def change_select_office(self):
        select_o = self.office_box.itemData(self.office_box.currentIndex())
        self.r_select = office_region(select_o)
        self.c_select = office_cercle(select_o)
        self.region_label.setText(get_entity_name(self.r_select))
        self.cercle_label.setText(get_entity_name(self.c_select))

    def is_valide(self):
        if check_is_empty(self.phone_field):
            return False
        return True

    def save_edit(self):
        ''' add operation '''

        if not self.is_valide():
            return

        office = Office()
        office.slug = self.office_box.itemData(self.office_box.currentIndex())
        office.slug_region = self.r_select
        office.slug_cercle = self.c_select
        office.phone = is_int(self.phone_field.text())
        office.email_org = str(self.email_org.text())
        office.bp = str(self.bp.text())
        office.adress_org = str(self.adress_org.toPlainText())
        office.save_()
        self.accept()
Example #54
0
class EditorConfiguration(QWidget):
    """EditorConfiguration widget class"""
    def __init__(self, parent):
        super(EditorConfiguration, self).__init__()
        self._preferences, vbox = parent, QVBoxLayout(self)

        # groups
        group1 = QGroupBox(translations.TR_PREFERENCES_EDITOR_CONFIG_INDENT)
        group2 = QGroupBox(translations.TR_PREFERENCES_EDITOR_CONFIG_MARGIN)
        group3 = QGroupBox(translations.TR_LINT_DIRTY_TEXT)
        group4 = QGroupBox(translations.TR_PEP8_DIRTY_TEXT)
        group5 = QGroupBox(translations.TR_HIGHLIGHTER_EXTRAS)
        group6 = QGroupBox(translations.TR_TYPING_ASSISTANCE)
        group7 = QGroupBox(translations.TR_DISPLAY_ERRORS)

        # groups container
        container_widget_with_all_preferences = QWidget()
        formFeatures = QGridLayout(container_widget_with_all_preferences)

        # Indentation
        hboxg1 = QHBoxLayout(group1)
        hboxg1.setContentsMargins(5, 15, 5, 5)
        self._spin, self._checkUseTabs = QSpinBox(), QComboBox()
        self._spin.setRange(1, 10)
        self._spin.setValue(settings.INDENT)
        hboxg1.addWidget(self._spin)
        self._checkUseTabs.addItems([
            translations.TR_PREFERENCES_EDITOR_CONFIG_SPACES.capitalize(),
            translations.TR_PREFERENCES_EDITOR_CONFIG_TABS.capitalize()
        ])
        self._checkUseTabs.setCurrentIndex(int(settings.USE_TABS))
        hboxg1.addWidget(self._checkUseTabs)
        formFeatures.addWidget(group1, 0, 0)

        # Margin Line
        hboxg2 = QHBoxLayout(group2)
        hboxg2.setContentsMargins(5, 15, 5, 5)
        self._checkShowMargin = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_SHOW_MARGIN_LINE)
        self._checkShowMargin.setChecked(settings.SHOW_MARGIN_LINE)
        hboxg2.addWidget(self._checkShowMargin)
        self._spinMargin = QSpinBox()
        self._spinMargin.setRange(50, 100)
        self._spinMargin.setSingleStep(2)
        self._spinMargin.setValue(settings.MARGIN_LINE)
        hboxg2.addWidget(self._spinMargin)
        hboxg2.addWidget(QLabel(translations.TR_CHARACTERS))
        formFeatures.addWidget(group2, 0, 1)

        # Display Errors
        hboxDisplay = QHBoxLayout(group7)
        hboxDisplay.setContentsMargins(5, 15, 5, 5)
        self._checkHighlightLine = QComboBox()
        self._checkHighlightLine.addItems([
            translations.TR_PREFERENCES_EDITOR_CONFIG_ERROR_USE_BACKGROUND,
            translations.TR_PREFERENCES_EDITOR_CONFIG_ERROR_USE_UNDERLINE
        ])
        self._checkHighlightLine.setCurrentIndex(
            int(settings.UNDERLINE_NOT_BACKGROUND))
        hboxDisplay.addWidget(self._checkHighlightLine)
        formFeatures.addWidget(group7, 1, 0, 1, 0)

        # Find Lint Errors (highlighter)
        vboxg3 = QVBoxLayout(group3)
        self._checkErrors = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_FIND_ERRORS)
        self._checkErrors.setChecked(settings.FIND_ERRORS)
        self.connect(self._checkErrors, SIGNAL("stateChanged(int)"),
                     self._disable_show_errors)
        self._showErrorsOnLine = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_SHOW_TOOLTIP_ERRORS)
        self._showErrorsOnLine.setChecked(settings.ERRORS_HIGHLIGHT_LINE)
        self.connect(self._showErrorsOnLine, SIGNAL("stateChanged(int)"),
                     self._enable_errors_inline)
        vboxg3.addWidget(self._checkErrors)
        vboxg3.addWidget(self._showErrorsOnLine)
        formFeatures.addWidget(group3, 2, 0)

        # Find PEP8 Errors (highlighter)
        vboxg4 = QVBoxLayout(group4)
        vboxg4.setContentsMargins(5, 15, 5, 5)
        self._checkStyle = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_SHOW_PEP8)
        self._checkStyle.setChecked(settings.CHECK_STYLE)
        self.connect(self._checkStyle, SIGNAL("stateChanged(int)"),
                     self._disable_check_style)
        vboxg4.addWidget(self._checkStyle)
        self._checkStyleOnLine = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_SHOW_TOOLTIP_PEP8)
        self._checkStyleOnLine.setChecked(settings.CHECK_HIGHLIGHT_LINE)
        self.connect(self._checkStyleOnLine, SIGNAL("stateChanged(int)"),
                     self._enable_check_inline)
        vboxg4.addWidget(self._checkStyleOnLine)
        formFeatures.addWidget(group4, 2, 1)

        # Show Python3 Migration, DocStrings and Spaces (highlighter)
        vboxg5 = QVBoxLayout(group5)
        vboxg5.setContentsMargins(5, 15, 5, 5)
        self._showMigrationTips = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_SHOW_MIGRATION)
        self._showMigrationTips.setChecked(settings.SHOW_MIGRATION_TIPS)
        vboxg5.addWidget(self._showMigrationTips)
        self._checkForDocstrings = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_CHECK_FOR_DOCSTRINGS)
        self._checkForDocstrings.setChecked(settings.CHECK_FOR_DOCSTRINGS)
        vboxg5.addWidget(self._checkForDocstrings)
        self._checkShowSpaces = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_SHOW_TABS_AND_SPACES)
        self._checkShowSpaces.setChecked(settings.SHOW_TABS_AND_SPACES)
        vboxg5.addWidget(self._checkShowSpaces)
        formFeatures.addWidget(group5, 3, 0)

        # End of line, Center On Scroll, Trailing space, Word wrap
        vboxg6 = QVBoxLayout(group6)
        vboxg6.setContentsMargins(5, 15, 5, 5)
        self._checkEndOfLine = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_END_OF_LINE)
        self._checkEndOfLine.setChecked(settings.USE_PLATFORM_END_OF_LINE)
        vboxg6.addWidget(self._checkEndOfLine)
        self._checkCenterScroll = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_CENTER_SCROLL)
        self._checkCenterScroll.setChecked(settings.CENTER_ON_SCROLL)
        vboxg6.addWidget(self._checkCenterScroll)
        self._checkTrailing = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_REMOVE_TRAILING)
        self._checkTrailing.setChecked(settings.REMOVE_TRAILING_SPACES)
        vboxg6.addWidget(self._checkTrailing)
        self._allowWordWrap = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_WORD_WRAP)
        self._allowWordWrap.setChecked(settings.ALLOW_WORD_WRAP)
        vboxg6.addWidget(self._allowWordWrap)
        formFeatures.addWidget(group6, 3, 1)

        # pack all the groups
        vbox.addWidget(container_widget_with_all_preferences)
        vbox.addItem(
            QSpacerItem(0, 10, QSizePolicy.Expanding, QSizePolicy.Expanding))

        self.connect(self._preferences, SIGNAL("savePreferences()"), self.save)

    def _enable_check_inline(self, val):
        """Method that takes a value to enable the inline style checking"""
        if val == Qt.Checked:
            self._checkStyle.setChecked(True)

    def _enable_errors_inline(self, val):
        """Method that takes a value to enable the inline errors checking"""
        if val == Qt.Checked:
            self._checkErrors.setChecked(True)

    def _disable_check_style(self, val):
        """Method that takes a value to disable the inline style checking"""
        if val == Qt.Unchecked:
            self._checkStyleOnLine.setChecked(False)

    def _disable_show_errors(self, val):
        """Method that takes a value to disable the inline errors checking"""
        if val == Qt.Unchecked:
            self._showErrorsOnLine.setChecked(False)

    def save(self):
        """Method to save settings"""
        qsettings = IDE.ninja_settings()
        settings.USE_TABS = bool(self._checkUseTabs.currentIndex())
        qsettings.setValue('preferences/editor/useTabs', settings.USE_TABS)
        margin_line = self._spinMargin.value()
        settings.MARGIN_LINE = margin_line
        settings.pep8mod_update_margin_line_length(margin_line)
        qsettings.setValue('preferences/editor/marginLine', margin_line)
        settings.SHOW_MARGIN_LINE = self._checkShowMargin.isChecked()
        qsettings.setValue('preferences/editor/showMarginLine',
                           settings.SHOW_MARGIN_LINE)
        settings.INDENT = self._spin.value()
        qsettings.setValue('preferences/editor/indent', settings.INDENT)
        endOfLine = self._checkEndOfLine.isChecked()
        settings.USE_PLATFORM_END_OF_LINE = endOfLine
        qsettings.setValue('preferences/editor/platformEndOfLine', endOfLine)
        settings.UNDERLINE_NOT_BACKGROUND = \
            bool(self._checkHighlightLine.currentIndex())
        qsettings.setValue('preferences/editor/errorsUnderlineBackground',
                           settings.UNDERLINE_NOT_BACKGROUND)
        settings.FIND_ERRORS = self._checkErrors.isChecked()
        qsettings.setValue('preferences/editor/errors', settings.FIND_ERRORS)
        settings.ERRORS_HIGHLIGHT_LINE = self._showErrorsOnLine.isChecked()
        qsettings.setValue('preferences/editor/errorsInLine',
                           settings.ERRORS_HIGHLIGHT_LINE)
        settings.CHECK_STYLE = self._checkStyle.isChecked()
        qsettings.setValue('preferences/editor/checkStyle',
                           settings.CHECK_STYLE)
        settings.SHOW_MIGRATION_TIPS = self._showMigrationTips.isChecked()
        qsettings.setValue('preferences/editor/showMigrationTips',
                           settings.SHOW_MIGRATION_TIPS)
        settings.CHECK_HIGHLIGHT_LINE = self._checkStyleOnLine.isChecked()
        qsettings.setValue('preferences/editor/checkStyleInline',
                           settings.CHECK_HIGHLIGHT_LINE)
        settings.CENTER_ON_SCROLL = self._checkCenterScroll.isChecked()
        qsettings.setValue('preferences/editor/centerOnScroll',
                           settings.CENTER_ON_SCROLL)
        settings.REMOVE_TRAILING_SPACES = self._checkTrailing.isChecked()
        qsettings.setValue('preferences/editor/removeTrailingSpaces',
                           settings.REMOVE_TRAILING_SPACES)
        settings.ALLOW_WORD_WRAP = self._allowWordWrap.isChecked()
        qsettings.setValue('preferences/editor/allowWordWrap',
                           settings.ALLOW_WORD_WRAP)
        settings.SHOW_TABS_AND_SPACES = self._checkShowSpaces.isChecked()
        qsettings.setValue('preferences/editor/showTabsAndSpaces',
                           settings.SHOW_TABS_AND_SPACES)
        settings.CHECK_FOR_DOCSTRINGS = self._checkForDocstrings.isChecked()
        qsettings.setValue('preferences/editor/checkForDocstrings',
                           settings.CHECK_FOR_DOCSTRINGS)

        if settings.USE_TABS:
            settings.pep8mod_add_ignore("W191")
        else:
            settings.pep8mod_remove_ignore("W191")
        settings.pep8mod_refresh_checks()
Example #55
0
class XViewProfileManager(QWidget):
    currentProfileChanged = qt.Signal(qt.PyObject)
    optionsMenuRequested = qt.Signal(QPoint)

    def __init__(self, parent=None):
        super(XViewProfileManager, self).__init__(parent)

        # define custom properties
        self._profiles = []
        self._optionsMenuPolicy = Qt.DefaultContextMenu
        self._viewWidget = None

        # define the interface
        self._profileCombo = QComboBox(self)
        self._optionsButton = QToolButton(self)
        self._optionsButton.setAutoRaise(True)
        self._optionsButton.setToolTip('Advanced Options')
        self._optionsButton.setIcon(QIcon(resources.find('img/advanced.png')))

        layout = QHBoxLayout()
        layout.setSpacing(0)
        layout.setContentsMargins(0, 0, 0, 0)

        layout.addWidget(self._profileCombo)
        layout.addWidget(self._optionsButton)

        self.setLayout(layout)

        # create connections
        self._profileCombo.currentIndexChanged.connect(
            self.handleProfileChange)
        self._optionsButton.clicked.connect(self.showOptionsMenu)

    def addProfile(self, profile):
        """
        Adds the inputed profile to the system.
        
        :param      profile | <XViewProfile>
        """
        if (profile in self._profiles):
            return

        self._profiles.append(profile)
        self._profileCombo.blockSignals(True)
        self._profileCombo.addItem(profile.name())
        self._profileCombo.setCurrentIndex(self._profileCombo.count() - 1)
        self._profileCombo.blockSignals(False)

    def currentProfile(self):
        """
        Returns the currently selected profile from the system.
        
        :return     <XViewProfile>
        """
        index = self._profileCombo.currentIndex()

        if (0 <= index and index < len(self._profiles)):
            return self._profiles[index]
        return None

    def handleProfileChange(self):
        """
        Emits that the current profile has changed.
        """
        # restore the profile settings
        prof = self.currentProfile()
        vwidget = self.viewWidget()
        if (vwidget):
            prof.restore(vwidget)

        if (not self.signalsBlocked()):
            self.currentProfileChanged.emit(self.currentProfile())

    def optionsMenuPolicy(self):
        """
        Returns the option menu policy for this widget.
        
        :return     <Qt.MenuPolicy>
        """
        return self._optionsMenuPolicy

    def profiles(self):
        """
        Returns a list of all the profiles for this system.
        
        :return     [<XViewProfile>, ..]
        """
        return self._profiles

    def removeProfile(self, profile):
        """
        Adds the inputed profile to the system.
        
        :param      profile | <XViewProfile>
        """
        if (not profile in self._profiles):
            return

        index = self._profiles.index(profile)
        self._profiles.remove(profile)
        self._profileCombo.blockSignals(True)
        self._profileCombo.takeItem(index)
        self._profileCombo.blockSignals(False)

    def restoreSettings(self, settings):
        """
        Restores settings from the application.
        
        :param      settings | <QSettings>
        """
        settings.beginGroup(self.objectName())

        curr_prof = None
        curr_name = qt.unwrapVariant(settings.value('current'))

        profiles = []
        for prof_name in settings.childGroups():
            settings.beginGroup(prof_name)

            prof_str = qt.unwrapVariant(settings.value('profile'))
            profile = XViewProfile.fromString(prof_str)
            profile.setName(prof_name)

            if (prof_name == curr_name):
                curr_prof = profile

            profiles.append(profile)

            settings.endGroup()

        self.blockSignals(True)
        self._profileCombo.blockSignals(True)
        self.setProfiles(profiles)

        if (curr_prof):
            self.setCurrentProfile(curr_prof)

        self._profileCombo.blockSignals(False)
        self.blockSignals(False)

        settings.endGroup()

    def saveSettings(self, settings):
        """
        Saves the settings for this widget to the application
        
        :param      settings | <QSettings>
        """
        settings.beginGroup(self.objectName())

        curr_prof = self.currentProfile()
        if (curr_prof):
            settings.setValue('current', curr_prof.name())

        for profile in self.profiles():
            settings.beginGroup(profile.name())
            settings.setValue('profile', qt.wrapVariant(profile.toString()))
            settings.endGroup()

        settings.endGroup()

    def setCurrentProfile(self, profile):
        """
        Sets the current profile to the inputed profile.
        
        :param      profile | <XViewProfile>
        """
        try:
            index = self._profiles.index(profile)
        except ValueError:
            index = -1

        self._profileCombo.setCurrentIndex(index)

    def setOptionsMenuPolicy(self, menuPolicy):
        """
        Sets the options menu policy for this item.
        
        :param      menuPolicy | <Qt.MenuPolicy>
        """
        self._optionsMenuPolicy = menuPolicy

    def setProfiles(self, profiles):
        """
        Sets a list of profiles to be the options for the manager.
        
        :param      profiles | [<XViewProfile>, ..]
        """
        self.blockSignals(True)
        self._profileCombo.blockSignals(True)

        self._profiles = profiles[:]
        self._profileCombo.clear()
        self._profileCombo.addItems(map(lambda x: x.name(), profiles))

        self._profileCombo.blockSignals(False)
        self.blockSignals(False)

    def setViewWidget(self, viewWidget):
        """
        Sets the view widget instance linked with this manager.
        
        :param      viewWidget | <XViewWidget>
        """
        self._viewWidget = viewWidget

    def showOptionsMenu(self):
        """
        Displays the options menu.  If the option menu policy is set to 
        CustomContextMenu, then the optionMenuRequested signal will be emitted,
        otherwise the default context menu will be displayed.
        """
        point = QPoint(0, self._optionsButton.height())
        global_point = self._optionsButton.mapToGlobal(point)

        # prompt the custom context menu
        if (self.optionsMenuPolicy() == Qt.CustomContextMenu):
            if (not self.signalsBlocked()):
                self.optionsMenuRequested.emit(global_point)
            return

        # use the default context menu
        menu = XViewProfileManagerMenu(self)
        menu.exec_(global_point)

    def viewWidget(self):
        """
        Returns the view widget that is associated with this manager.
        
        :return     <XViewWidget>
        """
        return self._viewWidget
Example #56
0
    def __init__(self, parent):
        super(EditorConfiguration, self).__init__()
        self._preferences, vbox = parent, QVBoxLayout(self)

        # groups
        group1 = QGroupBox(translations.TR_PREFERENCES_EDITOR_CONFIG_INDENT)
        group2 = QGroupBox(translations.TR_PREFERENCES_EDITOR_CONFIG_MARGIN)
        group3 = QGroupBox(translations.TR_LINT_DIRTY_TEXT)
        group4 = QGroupBox(translations.TR_PEP8_DIRTY_TEXT)
        group5 = QGroupBox(translations.TR_HIGHLIGHTER_EXTRAS)
        group6 = QGroupBox(translations.TR_TYPING_ASSISTANCE)
        group7 = QGroupBox(translations.TR_DISPLAY_ERRORS)

        # groups container
        container_widget_with_all_preferences = QWidget()
        formFeatures = QGridLayout(container_widget_with_all_preferences)

        # Indentation
        hboxg1 = QHBoxLayout(group1)
        hboxg1.setContentsMargins(5, 15, 5, 5)
        self._spin, self._checkUseTabs = QSpinBox(), QComboBox()
        self._spin.setRange(1, 10)
        self._spin.setValue(settings.INDENT)
        hboxg1.addWidget(self._spin)
        self._checkUseTabs.addItems([
            translations.TR_PREFERENCES_EDITOR_CONFIG_SPACES.capitalize(),
            translations.TR_PREFERENCES_EDITOR_CONFIG_TABS.capitalize()
        ])
        self._checkUseTabs.setCurrentIndex(int(settings.USE_TABS))
        hboxg1.addWidget(self._checkUseTabs)
        formFeatures.addWidget(group1, 0, 0)

        # Margin Line
        hboxg2 = QHBoxLayout(group2)
        hboxg2.setContentsMargins(5, 15, 5, 5)
        self._checkShowMargin = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_SHOW_MARGIN_LINE)
        self._checkShowMargin.setChecked(settings.SHOW_MARGIN_LINE)
        hboxg2.addWidget(self._checkShowMargin)
        self._spinMargin = QSpinBox()
        self._spinMargin.setRange(50, 100)
        self._spinMargin.setSingleStep(2)
        self._spinMargin.setValue(settings.MARGIN_LINE)
        hboxg2.addWidget(self._spinMargin)
        hboxg2.addWidget(QLabel(translations.TR_CHARACTERS))
        formFeatures.addWidget(group2, 0, 1)

        # Display Errors
        hboxDisplay = QHBoxLayout(group7)
        hboxDisplay.setContentsMargins(5, 15, 5, 5)
        self._checkHighlightLine = QComboBox()
        self._checkHighlightLine.addItems([
            translations.TR_PREFERENCES_EDITOR_CONFIG_ERROR_USE_BACKGROUND,
            translations.TR_PREFERENCES_EDITOR_CONFIG_ERROR_USE_UNDERLINE
        ])
        self._checkHighlightLine.setCurrentIndex(
            int(settings.UNDERLINE_NOT_BACKGROUND))
        hboxDisplay.addWidget(self._checkHighlightLine)
        formFeatures.addWidget(group7, 1, 0, 1, 0)

        # Find Lint Errors (highlighter)
        vboxg3 = QVBoxLayout(group3)
        self._checkErrors = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_FIND_ERRORS)
        self._checkErrors.setChecked(settings.FIND_ERRORS)
        self.connect(self._checkErrors, SIGNAL("stateChanged(int)"),
                     self._disable_show_errors)
        self._showErrorsOnLine = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_SHOW_TOOLTIP_ERRORS)
        self._showErrorsOnLine.setChecked(settings.ERRORS_HIGHLIGHT_LINE)
        self.connect(self._showErrorsOnLine, SIGNAL("stateChanged(int)"),
                     self._enable_errors_inline)
        vboxg3.addWidget(self._checkErrors)
        vboxg3.addWidget(self._showErrorsOnLine)
        formFeatures.addWidget(group3, 2, 0)

        # Find PEP8 Errors (highlighter)
        vboxg4 = QVBoxLayout(group4)
        vboxg4.setContentsMargins(5, 15, 5, 5)
        self._checkStyle = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_SHOW_PEP8)
        self._checkStyle.setChecked(settings.CHECK_STYLE)
        self.connect(self._checkStyle, SIGNAL("stateChanged(int)"),
                     self._disable_check_style)
        vboxg4.addWidget(self._checkStyle)
        self._checkStyleOnLine = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_SHOW_TOOLTIP_PEP8)
        self._checkStyleOnLine.setChecked(settings.CHECK_HIGHLIGHT_LINE)
        self.connect(self._checkStyleOnLine, SIGNAL("stateChanged(int)"),
                     self._enable_check_inline)
        vboxg4.addWidget(self._checkStyleOnLine)
        formFeatures.addWidget(group4, 2, 1)

        # Show Python3 Migration, DocStrings and Spaces (highlighter)
        vboxg5 = QVBoxLayout(group5)
        vboxg5.setContentsMargins(5, 15, 5, 5)
        self._showMigrationTips = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_SHOW_MIGRATION)
        self._showMigrationTips.setChecked(settings.SHOW_MIGRATION_TIPS)
        vboxg5.addWidget(self._showMigrationTips)
        self._checkForDocstrings = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_CHECK_FOR_DOCSTRINGS)
        self._checkForDocstrings.setChecked(settings.CHECK_FOR_DOCSTRINGS)
        vboxg5.addWidget(self._checkForDocstrings)
        self._checkShowSpaces = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_SHOW_TABS_AND_SPACES)
        self._checkShowSpaces.setChecked(settings.SHOW_TABS_AND_SPACES)
        vboxg5.addWidget(self._checkShowSpaces)
        formFeatures.addWidget(group5, 3, 0)

        # End of line, Center On Scroll, Trailing space, Word wrap
        vboxg6 = QVBoxLayout(group6)
        vboxg6.setContentsMargins(5, 15, 5, 5)
        self._checkEndOfLine = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_END_OF_LINE)
        self._checkEndOfLine.setChecked(settings.USE_PLATFORM_END_OF_LINE)
        vboxg6.addWidget(self._checkEndOfLine)
        self._checkCenterScroll = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_CENTER_SCROLL)
        self._checkCenterScroll.setChecked(settings.CENTER_ON_SCROLL)
        vboxg6.addWidget(self._checkCenterScroll)
        self._checkTrailing = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_REMOVE_TRAILING)
        self._checkTrailing.setChecked(settings.REMOVE_TRAILING_SPACES)
        vboxg6.addWidget(self._checkTrailing)
        self._allowWordWrap = QCheckBox(
            translations.TR_PREFERENCES_EDITOR_CONFIG_WORD_WRAP)
        self._allowWordWrap.setChecked(settings.ALLOW_WORD_WRAP)
        vboxg6.addWidget(self._allowWordWrap)
        formFeatures.addWidget(group6, 3, 1)

        # pack all the groups
        vbox.addWidget(container_widget_with_all_preferences)
        vbox.addItem(
            QSpacerItem(0, 10, QSizePolicy.Expanding, QSizePolicy.Expanding))

        self.connect(self._preferences, SIGNAL("savePreferences()"), self.save)
    def setup_ui(self, dock_widget):
        """
        initiate main Qt building blocks of interface
        :param dock_widget: QDockWidget instance
        """

        dock_widget.setObjectName("dock_widget")
        dock_widget.setAttribute(Qt.WA_DeleteOnClose)

        self.dock_widget_content = QWidget(self)
        self.dock_widget_content.setObjectName("dockWidgetContent")

        self.main_vlayout = QVBoxLayout(self)
        self.dock_widget_content.setLayout(self.main_vlayout)

        # add button to add objects to graphs
        self.button_bar_hlayout = QHBoxLayout(self)

        self.show_manual_input_button = QPushButton(self)
        self.button_bar_hlayout.addWidget(self.show_manual_input_button)
        self.show_manual_input_button.setDisabled(True)

        self.button_bar_hlayout.addWidget(QLabel("filter t/m categorie:"))
        self.category_combo = QComboBox(self)
        self.button_bar_hlayout.addWidget(self.category_combo)

        self.next_endpoint_button = QPushButton(self)
        self.button_bar_hlayout.addWidget(self.next_endpoint_button)
        self.next_endpoint_button.setDisabled(True)

        self.child_selection_strategy_combo = QComboBox(self)
        self.button_bar_hlayout.addWidget(QLabel("doortrekken tot:"))
        self.button_bar_hlayout.addWidget(self.child_selection_strategy_combo)

        spacer_item = QSpacerItem(40,
                                  20,
                                  QSizePolicy.Expanding,
                                  QSizePolicy.Minimum)
        self.button_bar_hlayout.addItem(spacer_item)

        # self.button_bar_hlayout.addItem(QLabel("doortrekken tot:"))
        # self.button_bar_hlayout.addItem(self.begroeiings_strategy_combo)

        self.main_vlayout.addLayout(self.button_bar_hlayout)
        # add tabWidget for graphWidgets
        self.contentLayout = QHBoxLayout(self)

        self.tree_table_tab = QTabWidget(self)
        sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.tree_table_tab.sizePolicy().hasHeightForWidth())
        self.tree_table_tab.setSizePolicy(sizePolicy)
        self.tree_table_tab.setMinimumSize(QSize(850, 0))

        self.contentLayout.addWidget(self.tree_table_tab)

        # startpointTree
        self.startpoint_tree_widget = StartpointTreeWidget(self, self.area_model)
        # sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Expanding)
        # sizePolicy.setHorizontalStretch(0)
        # sizePolicy.setVerticalStretch(0)
        # sizePolicy.setHeightForWidth(
        #     self.legger_tree_widget.sizePolicy().hasHeightForWidth())
        # self.legger_tree_widget.setSizePolicy(sizePolicy)
        # self.legger_tree_widget.setMinimumSize(QSize(750, 0))

        self.tree_table_tab.addTab(self.startpoint_tree_widget, 'startpunten')

        # LeggerTree
        self.legger_tree_widget = LeggerTreeWidget(self, self.legger_model)
        # sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Expanding)
        # sizePolicy.setHorizontalStretch(0)
        # sizePolicy.setVerticalStretch(0)
        # sizePolicy.setHeightForWidth(
        #     self.legger_tree_widget.sizePolicy().hasHeightForWidth())
        # self.legger_tree_widget.setSizePolicy(sizePolicy)
        # self.legger_tree_widget.setMinimumSize(QSize(750, 0))

        self.tree_table_tab.addTab(self.legger_tree_widget, 'hydrovakken')

        # graphs
        self.graph_vlayout = QVBoxLayout(self)

        # Graph
        self.plot_widget = LeggerPlotWidget(
            self, session=self.session,
            legger_model=self.legger_model,
            variant_model=self.variant_model)
        sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(1)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(
            self.plot_widget.sizePolicy().hasHeightForWidth())
        self.plot_widget.setSizePolicy(sizePolicy)
        self.plot_widget.setMinimumSize(QSize(250, 150))

        self.graph_vlayout.addWidget(self.plot_widget, 2)

        # Sideview Graph
        self.sideview_widget = LeggerSideViewPlotWidget(
            self, session=self.session,
            legger_model=self.legger_model)
        sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(1)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(
            self.sideview_widget.sizePolicy().hasHeightForWidth())
        self.sideview_widget.setSizePolicy(sizePolicy)
        self.sideview_widget.setMinimumSize(QSize(250, 150))

        self.graph_vlayout.addWidget(self.sideview_widget)

        self.contentLayout.addLayout(self.graph_vlayout, 2)

        self.rightVstack = QVBoxLayout(self)
        sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)

        self.begroeiings_combo = QComboBox(self)
        self.begroeiings_strategy_combo = QComboBox(self)
        self.groupBox_begroeiings = QGroupBox(self)
        self.groupBox_begroeiings.setTitle("begroeiingsfilter en voor welk deel")
        vbox_strat = QVBoxLayout()
        vbox_strat.addWidget(self.begroeiings_combo)
        vbox_strat.addWidget(self.begroeiings_strategy_combo)
        self.groupBox_begroeiings.setLayout(vbox_strat)
        self.rightVstack.addWidget(self.groupBox_begroeiings)

        # variantentable
        self.plot_item_table = VariantenTable(self, variant_model=self.variant_model)
        self.plot_item_table.setMinimumWidth(380)

        self.rightVstack.addWidget(self.plot_item_table)

        self.selected_variant_remark = QPlainTextEdit(self)
        self.selected_variant_remark.setFixedHeight(100)
        self.selected_variant_remark.setDisabled(True)

        self.rightVstack.addWidget(self.selected_variant_remark)

        self.contentLayout.addLayout(self.rightVstack, 0)

        self.main_vlayout.addLayout(self.contentLayout)

        # add dockwidget
        dock_widget.setWidget(self.dock_widget_content)
        self.retranslate_ui(dock_widget)
        QMetaObject.connectSlotsByName(dock_widget)
Example #58
0
class Listener(QWidget):
    def __init__(self, core_file_name):
        super(Listener, self).__init__()
        self.core_file_name = core_file_name

        self.setup_ui()
        self.setup_timers()

        port = SERIAL_PORT
        self.serial = serial.Serial(port, BAUDE_RATE, timeout=0)
        self.incoming_data = []

        self.imu = IMU(PLATFORM_SPECIFIC_QUOTIENTS['stm'])
        self.stroke = Stroke()
        self.selector = Selector(self.core_file_name)

        self.acceleration_filter = AperiodicFilter(ACCELERATION_TIME_CONST)

        self.stroke.widget = self.display
        self.stroke.on_done = self.get_stroke

        self.previous_time = None

        self.data_buffer = ''

        self.init_selector()


    def setup_ui(self):
        self.resize(500, 500)
        self.out = QLabel(self)
        self.out.setMinimumHeight(100)
        font = QFont()
        font.setPixelSize(80)
        self.out.setFont(font)
        self.grid = QGridLayout(self)
        self.display = StrokeWidget()
        self.letter_selector = QComboBox()
        self.grid.addWidget(self.display, 0, 0, 1, 1)
        self.grid.addWidget(self.letter_selector, 1, 0, 1, 1)
        self.grid.addWidget(self.out, 2, 0, 1, 1)

    def setup_timers(self):
        self.serial_timer = QTimer()
        self.serial_timer.setInterval(SERIAL_INTERVAL)
        self.serial_timer.timeout.connect(self.get_data)
        self.serial_timer.start()

        self.process_timer = QTimer()
        self.process_timer.setInterval(PROCESS_INTERVAL)
        self.process_timer.timeout.connect(self.process)
        self.process_timer.start()

        self.display_timer = QTimer()
        self.display_timer.setInterval(DISPLAY_TIMEOUT)
        self.display_timer.setSingleShot(True)
        self.display_timer.timeout.connect(self.set_background)


    def init_selector(self):
        sel_lines = self.selector.letters_dict.keys()
        sel_lines.insert(0, 'new strokes')
        sel_lines.insert(0, 'free run')
        self.letter_selector.addItems(sel_lines)
        self.letter_selector.currentIndexChanged.connect(self.set_background)

    def set_background(self):
        letter = str(self.letter_selector.currentText())
        self.display.set_background(self.core_file_name, letter)

    def store_stroke(self, key, stroke, existing=True):
        file_name = '{key}{time}.txt'.format(key=key, time=int(time()))
        file_path = os.path.join(LEARNED_FOLDER, file_name)
        np.savetxt(file_path, stroke)
        if existing:
            self.display.set_background(self.core_file_name, key, color='g')
            self.display_timer.start()        

    def get_stroke(self, data):
        stroke = data['stroke']
        dimention = data['dimention']
        if dimention < MIN_DIMENTION:
            print 'too small'
            return

        letter = str(self.letter_selector.currentText())
        if letter == 'new strokes':
            self.store_stroke('_', stroke, existing=False)
            print 'recorded'

        try:
            letters = self.selector.check_stroke(stroke)
        except: #TODO: check unify_stroke
            return

        if letters:
            self.out.setText(self.out.text()+letters[0])

        if letter == 'free run' and letters:
            self.store_stroke(letters[0], stroke)
        elif letter in letters:
            self.store_stroke(letter, stroke)

    def process(self):
        local_data_storage = deepcopy(self.incoming_data)
        self.incoming_data = []

        for data in local_data_storage:
            if self.previous_time is None:
                self.previous_time = data[0]
                continue

            data[0], self.previous_time = data[0] - self.previous_time, data[0]

            if data[0] < MAX_DATA_TIMELAPSE:
                self.imu.calc(data)
                gyro = np.linalg.norm(np.array([data[7:]]))
                accel = self.imu.get_global_acceleration()

                accel = self.acceleration_filter.set_input(accel, data[0])

                accel_magnitude = np.linalg.norm(accel)

                if accel_magnitude > ACCELERATION_RESET:
                    self.execute_spell()

                Yr = self.imu.get_y_direction()

                self.stroke.set_data(Yr, gyro)

                self.stroke.process_size(data[0], accel)

        self.setVisible(not self.imu.in_calibration)

    def execute_spell(self):
        self.out.setText('')

    def get_data(self):
        try:
            self.data_buffer += self.serial.read(self.serial.inWaiting())
            if self.data_buffer == '':
                return
            data_pieces = self.data_buffer.split(BUFFER_DELIMITER)

            # Put incomplete piece back to the buffer
            self.data_buffer = data_pieces.pop(-1)

            # If there are no complete data pieces - return from function
            if not data_pieces:
                return

            # Else - get the last of the pieces and discard the rest
            line = data_pieces[-1]

            result = [float(d) for d in line.split()]
            if len(result) != 9:
                raise ValueError('Nine pieces of data should be provided.')
            new_line = [time()] + result
            self.incoming_data.append(new_line)
        except KeyboardInterrupt:
            raise
        except Exception as e:
            # Something went wrong... nobody cares.
            print e
Example #59
0
    def eContFill(self, a):

        sid = 23
        data = self.pullStudents(a)
        self.resize(430, 530)

        #self.tabz = QTabWidget(self)
        self.tabz.clear()

        self.tab1 = QWidget(self)
        self.tab2 = QWidget(self)
        self.tab3 = QWidget(self)

        self.schno = QLabel("School Number")
        self.schnoData = QLineEdit()
        self.schnoData.setObjectName("schno")
        if (data['schno'] and len(data['schno']) > 1):
            self.schnoData.setText(data['schno'])
        else:
            self.schnoData.setPlaceholderText("00000000")

        self.surname = QLabel("Surname")
        self.surnameData = QLineEdit()
        self.surnameData.setObjectName("surname")
        if (data['surname'] and len(data['surname']) > 1):
            tx = data['surname']
            self.surnameData.setText(tx.title())
        else:
            self.surnameData.setPlaceholderText("Surname")

        self.firstname = QLabel("Firstname")
        self.firstnameData = QLineEdit()
        self.firstnameData.setObjectName("firstname")
        if (data['firstname'] and len(data['firstname'])):
            tx = data['firstname']
            self.firstnameData.setText(tx.title())
        else:
            self.firstnameData.setPlaceholderText("Firstname")

        self.middlename = QLabel("Middlename")
        self.middlenameData = QLineEdit()
        self.middlenameData.setObjectName("middlename")
        if (data['othername'] and len(data['othername']) > 1):
            tx = data['othername']
            self.middlenameData.setText(tx.title())
        else:
            self.middlenameData.setPlaceholderText("othername")

        self.soo = QLabel("State/Region of Origin")
        self.sooData = QLineEdit()
        self.sooData.setObjectName("soo")
        if (data['soo'] and len(data['soo']) > 1):
            tx = data['soo']
            self.sooData.setText(tx.title())
        else:
            self.sooData.setPlaceholderText("Lagos")

        self.lga = QLabel("LGA/District")
        self.lgaData = QLineEdit()
        self.lgaData.setObjectName("lga")
        if (data['lga'] and len(data['lga'])):
            tx = data['lga']
            self.lgaData.setText(tx.title())
        else:
            self.lgaData.setPlaceholderText("Ikeja")

        self.addr = QLabel("House Address")
        self.addrData = QTextEdit()
        self.addrData.setObjectName("addr")
        if (data['addr'] and len(data['addr'])):
            tx = data['addr']
            self.addrData.setText(tx)
        else:
            pass

        self.dob = QLabel("Date of Birth")
        self.dobData = QDateEdit()
        self.dobData.setObjectName("dob")
        tx = QDate.fromString(data['dob'], 'yyyy-MM-dd')
        self.dobData.setDate(QDate(tx.year(), tx.month(), tx.day()))

        self.admit = QLabel("Date Admitted")
        self.admitData = QDateEdit()
        self.admitData.setObjectName("admit")
        tx = QDate.fromString(data['admit'], 'yyyy-MM-dd')
        self.admitData.setDate(QDate(tx.year(), tx.month(), tx.day()))

        self.pb4 = QPushButton()
        self.pb4.setObjectName("Submit")
        self.pb4.setText("Submit")

        self.pb5 = QPushButton()
        self.pb5.setObjectName("Cancel")
        self.pb5.setText("Cancel")

        hbo = QHBoxLayout()
        self.gender = QLabel('Gender')
        self.r1 = QRadioButton('Male')
        self.r2 = QRadioButton('Female')
        if (data['gender'] == 'Male'):
            self.r1.setChecked(True)
        elif (data['gender'] == 'Female'):
            self.r2.setChecked(True)

        hbo.addWidget(self.r1)
        hbo.addWidget(self.r2)

        Formlayout = QFormLayout()
        Formlayout.addRow(self.schno, self.schnoData)
        Formlayout.addRow(self.surname, self.surnameData)
        Formlayout.addRow(self.firstname, self.firstnameData)
        Formlayout.addRow(self.middlename, self.middlenameData)
        Formlayout.addRow(self.gender, hbo)
        Formlayout.addRow(self.dob, self.dobData)
        Formlayout.addRow(self.admit, self.admitData)
        Formlayout.addRow(self.soo, self.sooData)
        Formlayout.addRow(self.lga, self.lgaData)
        Formlayout.addRow(self.addr, self.addrData)

        grid = QGridLayout()
        grid.addWidget(self.pb1, 0, 1)
        grid.addWidget(self.pb, 0, 0)

        groupBox = QGroupBox('BIODATA')
        groupBox.setLayout(Formlayout)

        vbox = QVBoxLayout()
        vbox.addWidget(groupBox)
        vbox.addStretch()
        vbox.addLayout(grid)

        #self.setLayout(vbox)
        self.connect(self.pb4, SIGNAL("clicked()"),
                     lambda: self.button1_click(sid))
        self.connect(self.pb5, SIGNAL("clicked()"), self.close)
        self.tab1.setLayout(vbox)

        relations = [
            'Father', 'Mother', 'Aunt', 'Uncle', 'Grand Parent', 'Guardian',
            'Others'
        ]

        #first guardian details
        self.g1name = QLabel("First Guardian")
        self.g1Data = QLineEdit()
        self.g1Data.setObjectName("g1name")
        if (data['g1'] and len(data['g1']) > 1):
            tx = data['g1']
            self.g1Data.setText(tx.title())
        else:
            self.g1Data.setPlaceholderText("Mr. Surname Lastname")

        self.g1rel = QLabel('Relationship')
        self.g1relData = QComboBox()
        self.g1relData.addItems(relations)
        if data['g1rel'] and len(data['g1rel']) > 0:
            index1 = self.g1relData.findText(data['g1rel'],
                                             Qt.QtMatchFixedString)
            if index1 >= 0:
                self.g1relData.setCurrentIndex(index1)

        self.g1p1 = QLabel("Phone Number")
        self.g1p1Data = QLineEdit()
        self.g1p1Data.setObjectName("g1p1")
        if (data['g1p1'] and len(data['g1p1']) > 1):
            tx = data['g1p1']
            self.g1p1Data.setText(tx.title())
        else:
            self.g1p1Data.setPlaceholderText("08000000000")

        self.g1p2 = QLabel("Alt. Phone Number")
        self.g1p2Data = QLineEdit()
        self.g1p2Data.setObjectName("g1p2")
        if (data['g1p2'] and len(data['g1p2']) > 1):
            tx = data['g1p2']
            self.g1p2Data.setText(tx.title())
        else:
            self.g1p2Data.setPlaceholderText("08000000000")

        self.g1email = QLabel("Email")
        self.g1emailData = QLineEdit()
        self.g1emailData.setObjectName("g1email")
        if (data['g1email'] and len(data['g1email']) > 1):
            tx = data['g1email']
            self.g1Data.setText(tx.title())
        else:
            self.g1Data.setPlaceholderText("*****@*****.**")

        self.g1addr = QLabel("Address")
        self.g1addrData = QTextEdit()
        self.g1addrData.setObjectName("g1add")
        if (data['g1addr'] and len(data['g1addr']) > 1):
            tx = data['g1addr']
            self.g1Data.setText(tx.title())
        else:
            pass

        #second guardian details
        self.g2name = QLabel("Second Guardian")
        self.g2Data = QLineEdit()
        self.g2Data.setObjectName("g2name")
        if (data['g2'] and len(data['g2']) > 1):
            tx = data['g2']
            self.g2Data.setText(tx.title())
        else:
            self.g2Data.setPlaceholderText("Title. Surname Lastname")

        self.g2rel = QLabel('Relationship')
        self.g2relData = QComboBox()
        self.g2relData.addItems(relations)
        if data['g2rel'] and len(data['g2rel']) > 0:
            index2 = self.g2relData.findText(data['g2rel'],
                                             Qt.QtMatchFixedString)
            if index2 >= 0:
                self.g2relData.setCurrentIndex(index2)

        self.g2p1 = QLabel("Phone Number")
        self.g2p1Data = QLineEdit()
        self.g2p1Data.setObjectName("g2p1")
        if (data['g2p1'] and len(data['g2p1']) > 1):
            tx = data['g2p1']
            self.g2p1Data.setText(tx.title())
        else:
            self.g2p1Data.setPlaceholderText("08000000000")

        self.g2p2 = QLabel("Alt. Phone Number")
        self.g2p2Data = QLineEdit()
        self.g2p2Data.setObjectName("g2p2")
        if (data['g2p2'] and len(data['g2p2']) > 1):
            tx = data['g2p2']
            self.g2p2Data.setText(tx.title())
        else:
            self.g2p2Data.setPlaceholderText("0800000000")

        self.g2email = QLabel("Email")
        self.g2emailData = QLineEdit()
        self.g2emailData.setObjectName("g2email")
        if (data['g2email'] and len(data['g2email']) > 1):
            tx = data['g2email']
            self.g2emailData.setText(tx.title())
        else:
            self.g2emailData.setPlaceholderText("*****@*****.**")

        self.g2addr = QLabel("Address")
        self.g2addrData = QTextEdit()
        self.g2addrData.setObjectName("g2add")
        if (data['g2addr'] and len(data['g2addr']) > 1):
            tx = data['g2addr']
            self.g2Data.setText(tx.title())
        else:
            pass

        self.pb = QPushButton()
        self.pb.setObjectName("Submit")
        self.pb.setText("Submit")

        self.pb1 = QPushButton()
        self.pb1.setObjectName("Cancel")
        self.pb1.setText("Cancel")

        hbo = QHBoxLayout()

        self.gender = QLabel('Gender')
        self.r1 = QRadioButton('Male')
        self.r2 = QRadioButton('Female')
        hbo.addWidget(self.r1)
        hbo.addWidget(self.r2)

        Formlayout1 = QFormLayout()
        Formlayout1.addRow(self.g1name, self.g1Data)
        Formlayout1.addRow(self.g1rel, self.g1relData)
        Formlayout1.addRow(self.g1p1, self.g1p1Data)
        Formlayout1.addRow(self.g1p2, self.g1p2Data)
        Formlayout1.addRow(self.g1email, self.g1emailData)
        Formlayout1.addRow(self.g1addr, self.g1addrData)

        Formlayout2 = QFormLayout()
        Formlayout2.addRow(self.g2name, self.g2Data)
        Formlayout2.addRow(self.g2rel, self.g2relData)
        Formlayout2.addRow(self.g2p1, self.g2p1Data)
        Formlayout2.addRow(self.g2p2, self.g2p2Data)
        Formlayout2.addRow(self.g2email, self.g2emailData)
        Formlayout2.addRow(self.g2addr, self.g2addrData)

        grid1 = QGridLayout()
        grid1.addWidget(self.pb, 0, 0)
        grid1.addWidget(self.pb1, 0, 1)

        hbox1 = QHBoxLayout()
        hbox1.addLayout(Formlayout1)
        hbox1.addStretch()
        hbox1.addLayout(Formlayout2)

        groupBox2 = QGroupBox('GUARDIAN')
        groupBox2.setLayout(hbox1)

        vbox1 = QVBoxLayout()
        vbox1.addWidget(groupBox2)
        vbox1.addStretch()
        vbox1.addLayout(grid1)

        self.tab2.setLayout(vbox1)

        #photo
        picstyle = QSize(120, 180)
        picstyle1 = Qt.KeepAspectRatio

        self.pic1Lbl = QLabel('YEAR 1 & 2')
        self.pic2Lbl = QLabel('YEAR 3 & 4')
        self.pic3Lbl = QLabel('YEAR 5 & 6')

        self.pic1 = QLabel()
        pixmap1 = QPixmap('img/studentz.png').scaled(picstyle, picstyle1)
        self.pic1.setPixmap(pixmap1)

        self.pic2 = QLabel()
        pixmap2 = QPixmap('img/studentz.png').scaled(picstyle, picstyle1)
        self.pic2.setPixmap(pixmap2)

        self.pic3 = QLabel()
        pixmap3 = QPixmap('img/studentz.png').scaled(picstyle, picstyle1)
        self.pic3.setPixmap(pixmap3)

        self.picBtn1 = QPushButton('Select Image')
        self.picBtn1.clicked.connect(self.getFilez)

        self.picBtn2 = QPushButton('Select Image')
        self.picBtn2.clicked.connect(self.getFilez)

        self.picBtn3 = QPushButton('Select Image')
        self.picBtn3.clicked.connect(self.getFilez)

        self.pic1Lbl.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.pic2Lbl.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.pic3Lbl.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)

        self.picBtn1.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.picBtn2.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.picBtn3.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)

        h1pic = QVBoxLayout()
        h2pic = QVBoxLayout()
        h3pic = QVBoxLayout()
        vpic = QHBoxLayout()

        h1pic.addWidget(self.pic1Lbl)
        h1pic.addStretch(0)
        h1pic.addWidget(self.pic1)
        h1pic.addStretch(0)
        h1pic.addWidget(self.picBtn1)
        h1pic.setContentsMargins(0, 0, 0, 0)
        h1pic.setSpacing(0)
        h1pic.setMargin(0)

        h2pic.addWidget(self.pic2Lbl)
        h2pic.addStretch(0)
        h2pic.addWidget(self.pic2)
        h2pic.addStretch(0)
        h2pic.addWidget(self.picBtn2)
        h2pic.setContentsMargins(0, 0, 0, 0)
        h2pic.setSpacing(0)
        h2pic.setMargin(0)

        h3pic.addWidget(self.pic3Lbl)
        h3pic.addStretch(0)
        h3pic.addWidget(self.pic3)
        h3pic.addStretch(0)
        h3pic.addWidget(self.picBtn3)
        h3pic.setContentsMargins(0, 0, 0, 0)
        h3pic.setSpacing(0)
        h3pic.setMargin(0)

        vpic.addLayout(h1pic)
        vpic.addStretch(0)
        vpic.addLayout(h2pic)
        vpic.addStretch(0)
        vpic.addLayout(h3pic)
        vpic.setSpacing(0)
        vpic.setMargin(0)
        vpic.setContentsMargins(0, 0, 0, 0)

        self.tab3.setLayout(vpic)
        self.tab3.resize(100, 100)
        self.tab3.setStyleSheet(
            "background-color: red; margin:5px; border:1px solid red;")

        self.tabz.addTab(self.tab1, 'Bio-Data')
        self.tabz.addTab(self.tab2, 'Contact Details')
        self.tabz.addTab(self.tab3, 'Passports')

        self.setWindowTitle("Add Student Data")
        self.show()
Example #60
0
class ScoreProperties(object):
    """This is only the base class, it should be mixed in with a widget or a different way."""
    def createWidgets(self):
        """Creates all widgets."""
        self.createKeySignatureWidget()
        self.createTimeSignatureWidget()
        self.createPickupWidget()
        self.createMetronomeWidget()
        self.createTempoWidget()

    def layoutWidgets(self, layout):
        """Adds all widgets to a vertical layout."""
        self.layoutKeySignatureWidget(layout)
        self.layoutTimeSignatureWidget(layout)
        self.layoutPickupWidget(layout)
        self.layoutMetronomeWidget(layout)
        self.layoutTempoWidget(layout)

    def translateWidgets(self):
        self.translateKeySignatureWidget()
        self.translateTimeSignatureWidget()
        self.translatePickupWidget()
        self.tranlateMetronomeWidget()
        self.translateTempoWidget()

    def ly(self, node, builder):
        """Adds appropriate LilyPond command nodes to the parent node.
        
        Settings from the builder are used where that makes sense.
        All widgets must be present.
        
        """
        self.lyKeySignature(node, builder)
        self.lyTimeSignature(node, builder)
        self.lyPickup(node, builder)
        self.lyTempo(node, builder)

    def globalSection(self, builder):
        """Returns a sequential expression between { } containing the output of ly()."""
        seq = ly.dom.Seq()
        self.ly(seq, builder)
        return seq

    # Key signature
    def createKeySignatureWidget(self):
        self.keySignatureLabel = QLabel()
        self.keyNote = QComboBox()
        self.keyNote.setModel(
            listmodel.ListModel(keyNames['nederlands'], self.keyNote))
        self.keyMode = QComboBox()
        self.keyMode.setModel(
            listmodel.ListModel(modes,
                                self.keyMode,
                                display=listmodel.translate_index(1)))
        self.keySignatureLabel.setBuddy(self.keyNote)

    def translateKeySignatureWidget(self):
        self.keySignatureLabel.setText(_("Key signature:"))
        self.keyMode.model().update()

    def layoutKeySignatureWidget(self, layout):
        """Adds our widgets to a layout, assuming it is a QVBoxLayout."""
        box = QHBoxLayout()
        box.addWidget(self.keySignatureLabel)
        box.addWidget(self.keyNote)
        box.addWidget(self.keyMode)
        layout.addLayout(box)

    def setPitchLanguage(self, language='nederlands'):
        self.keyNote.model()._data = keyNames[language or 'nederlands']
        self.keyNote.model().update()

    def lyKeySignature(self, node, builder):
        """Adds the key signature to the ly.dom node parent."""
        note, alter = keys[self.keyNote.currentIndex()]
        alter = fractions.Fraction(alter, 2)
        mode = modes[self.keyMode.currentIndex()][0]
        ly.dom.KeySignature(note, alter, mode, node).after = 1

    # Time signature
    def createTimeSignatureWidget(self):
        self.timeSignatureLabel = QLabel()
        self.timeSignature = QComboBox(editable=True)
        icons = {
            '(4/4)': symbols.icon('time_c44'),
            '(2/2)': symbols.icon('time_c22'),
        }
        self.timeSignature.setModel(
            listmodel.ListModel(timeSignaturePresets,
                                self.timeSignature,
                                icon=icons.get))
        self.timeSignature.setCompleter(None)
        self.timeSignatureLabel.setBuddy(self.timeSignature)

    def translateTimeSignatureWidget(self):
        self.timeSignatureLabel.setText(_("Time signature:"))

    def layoutTimeSignatureWidget(self, layout):
        """Adds our widgets to a layout, assuming it is a QVBoxLayout."""
        box = QHBoxLayout()
        box.addWidget(self.timeSignatureLabel)
        box.addWidget(self.timeSignature)
        layout.addLayout(box)

    def lyTimeSignature(self, node, builder):
        """Adds the time signature to the ly.dom node parent."""
        sig = self.timeSignature.currentText().strip()
        if '+' in sig:
            pass  # TODO: implement support for \compoundMeter
        else:
            if sig == '(2/2)':
                ly.dom.TimeSignature(2, 2, node).after = 1
            elif sig == '(4/4)':
                ly.dom.TimeSignature(4, 4, node).after = 1
            else:
                match = re.search(r'(\d+).*?(\d+)', sig)
                if match:
                    if builder.lyVersion >= (2, 11, 44):
                        ly.dom.Line(r"\numericTimeSignature", node)
                    else:
                        ly.dom.Line(
                            r"\override Staff.TimeSignature #'style = #'()",
                            node)
                    num, beat = map(int, match.group(1, 2))
                    ly.dom.TimeSignature(num, beat, node).after = 1

    # Pickup bar
    def createPickupWidget(self):
        self.pickupLabel = QLabel()
        self.pickup = QComboBox()
        pickups = ['']
        pickups.extend(durations)
        self.pickup.setModel(
            listmodel.ListModel(pickups,
                                self.pickup,
                                display=lambda item: item or _("None"),
                                icon=lambda item: symbols.icon(
                                    'note_{0}'.format(item.replace('.', 'd')))
                                if item else None))
        self.pickup.view().setIconSize(QSize(22, 22))
        self.pickupLabel.setBuddy(self.pickup)

    def translatePickupWidget(self):
        self.pickupLabel.setText(_("Pickup measure:"))
        self.pickup.model().update()

    def layoutPickupWidget(self, layout):
        box = QHBoxLayout()
        box.addWidget(self.pickupLabel)
        box.addWidget(self.pickup)
        layout.addLayout(box)

    def lyPickup(self, node, builder):
        if self.pickup.currentIndex() > 0:
            dur, dots = partialDurations[self.pickup.currentIndex() - 1]
            ly.dom.Partial(dur, dots, parent=node)

    # Metronome value
    def createMetronomeWidget(self):
        self.metronomeLabel = QLabel()
        self.metronomeNote = QComboBox()
        self.metronomeNote.setModel(
            listmodel.ListModel(
                durations,
                display=None,
                icon=lambda item: symbols.icon('note_{0}'.format(
                    item.replace('.', 'd')))))
        self.metronomeNote.setCurrentIndex(durations.index('4'))
        self.metronomeNote.view().setIconSize(QSize(22, 22))
        self.metronomeEqualSign = QLabel('=')
        self.metronomeEqualSign.setFixedWidth(
            self.metronomeEqualSign.minimumSizeHint().width())
        self.metronomeValue = QComboBox(editable=True)
        self.metronomeValue.setModel(
            listmodel.ListModel(metronomeValues,
                                self.metronomeValue,
                                display=format))
        self.metronomeValue.setCompleter(None)
        self.metronomeValue.setValidator(
            QIntValidator(0, 999, self.metronomeValue))
        self.metronomeValue.setCurrentIndex(metronomeValues.index(100))
        self.metronomeTempo = widgets.tempobutton.TempoButton()
        self.metronomeTempo.tempo.connect(self.setMetronomeValue)
        self.metronomeLabel.setBuddy(self.metronomeNote)
        self.metronomeRound = QCheckBox()

    def layoutMetronomeWidget(self, layout):
        grid = QGridLayout()
        grid.addWidget(self.metronomeLabel, 0, 0)

        box = QHBoxLayout(spacing=0)
        box.addWidget(self.metronomeNote)
        box.addWidget(self.metronomeEqualSign)
        box.addWidget(self.metronomeValue)
        box.addWidget(self.metronomeTempo)
        grid.addLayout(box, 0, 1)

        grid.addWidget(self.metronomeRound, 1, 1)
        layout.addLayout(grid)

    def tranlateMetronomeWidget(self):
        self.metronomeLabel.setText(_("Metronome mark:"))
        self.metronomeRound.setText(_("Round tap tempo value"))
        self.metronomeRound.setToolTip(
            _("Round the entered tap tempo to a common value."))

    def setMetronomeValue(self, bpm):
        """ Tap the tempo tap button """
        if self.metronomeRound.isChecked():
            l = [abs(t - bpm) for t in metronomeValues]
            m = min(l)
            if m < 6:
                self.metronomeValue.setCurrentIndex(l.index(m))

        else:
            self.metronomeValue.setEditText(str(bpm))

    # Tempo indication
    def createTempoWidget(self):
        self.tempoLabel = QLabel()
        self.tempo = widgets.lineedit.LineEdit()
        completionmodel.complete(self.tempo,
                                 "scorewiz/completion/scoreproperties/tempo")
        self.tempo.completer().setCaseSensitivity(Qt.CaseInsensitive)
        self.tempoLabel.setBuddy(self.tempo)

    def layoutTempoWidget(self, layout):
        box = QHBoxLayout()
        box.addWidget(self.tempoLabel)
        box.addWidget(self.tempo)
        layout.addLayout(box)

    def translateTempoWidget(self):
        self.tempoLabel.setText(_("Tempo indication:"))

    def lyTempo(self, node, builder):
        """Returns an appropriate tempo indication."""
        text = self.tempo.text().strip()
        if builder.showMetronomeMark:
            dur = durations[self.metronomeNote.currentIndex()]
            val = self.metronomeValue.currentText() or '60'
        elif text:
            dur = None
            val = None
        else:
            return
        tempo = ly.dom.Tempo(dur, val, node)
        if text:
            ly.dom.QuotedString(text, tempo)

    def lyMidiTempo(self, node):
        """Sets the configured tempo in the tempoWholesPerMinute variable."""
        node['tempoWholesPerMinute'] = ly.dom.Scheme(self.schemeMidiTempo())

    def schemeMidiTempo(self):
        """Returns a string with the tempo like '(ly:make-moment 100 4)' from the settings."""
        base, mul = midiDurations[self.metronomeNote.currentIndex()]
        val = int(self.metronomeValue.currentText() or '60') * mul
        return "(ly:make-moment {0} {1})".format(val, base)

    def lySimpleMidiTempo(self, node):
        r"""Return a simple \tempo x=y node for the currently set tempo."""
        dur = durations[self.metronomeNote.currentIndex()]
        val = self.metronomeValue.currentText() or '60'
        return ly.dom.Tempo(dur, val, node)