Exemplo n.º 1
0
    def lineEditor(self, name, item, props, parent):
        """ Creates a new editor suitable for selecting a series or index.

        @param name item parameter name, as string, to receive value updates
        @param item IndexItem instance
        @param props mapping of index class constructor properties
        @param parent ancestor of new widget
        @return QComboBox widget
        """
        children = list(item.root().children(True))
        editor = QComboBox(parent)
        editor.addItem('')
        exclude = [item.text(), self.defaultText]
        items = [c.text() for c in children if c.text() not in exclude]
        editor.addItems(items)
        try:
            editor.setCurrentIndex(editor.findText(item.parameters[name]))
        except (KeyError, ):
            item.parameters[name] = ''

        @pyqtSignature('int')
        def onChange(index):
            item.parameters[name] = str(editor.currentText())
            self.emit(Signals.modified)

        editor.onChange = onChange
        editor.connect(editor, Signals.currentIndexChanged, onChange)
        return editor
Exemplo n.º 2
0
    def lineEditor(self, name, item, props, parent):
        """ Creates a new editor suitable for selecting a series or index.

        @param name item parameter name, as string, to receive value updates
        @param item IndexItem instance
        @param props mapping of index class constructor properties
        @param parent ancestor of new widget
        @return QComboBox widget
        """
        children = list(item.root().children(True))
        editor = QComboBox(parent)
        editor.addItem('')
        exclude = [item.text(), self.defaultText]
        items = [c.text() for c in children if c.text() not in exclude]
        editor.addItems(items)
        try:
            editor.setCurrentIndex(editor.findText(item.parameters[name]))
        except (KeyError, ):
            item.parameters[name] = ''
        @pyqtSignature('int')
        def onChange(index):
            item.parameters[name] = str(editor.currentText())
            self.emit(Signals.modified)
        editor.onChange = onChange
        editor.connect(editor, Signals.currentIndexChanged, onChange)
        return editor
Exemplo n.º 3
0
class airspy_scan2(gr.top_block, Qt.QWidget):

    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)

    def numSkipUpdate(self):
        self.xzyblocks_fft_scan_plot_py_vc_0.set_numSkip(self.nSkipSpinBox.value())


    def updateAlpha(self, alpha):
        self.xzyblocks_fft_scan_plot_py_vc_0.set_alpha(alpha)
    def closeEvent(self, event):
        self.settings = Qt.QSettings("GNU Radio", "airspy_scan2")
        self.settings.setValue("geometry", self.saveGeometry())
        event.accept()

    def get_samp_rate(self):
        return self.samp_rate

    def set_samp_rate(self, samp_rate):
        self.samp_rate = samp_rate
        #self.qtgui_time_sink_x_0.set_samp_rate(self.samp_rate)
        self.lock()
        self.osmosdr_source_1.set_sample_rate(samp_rate)
        self.xzyblocks_fft_scan_plot_py_vc_0.set_samp_rate(samp_rate)
        time.sleep(0.01)
        self.unlock()
    
    def freqSet(self):
        self.lock()
        self.xzyblocks_fft_scan_plot_py_vc_0.set_freqRange(self.freqMinSpinBox.value() *1e6,
                                                           self.freqMaxSpinBox.value() *1e6)
        self.unlock()
        self.freqSetButton.setEnabled(False)

    def updateFreq(self,freq):
        if self.freqMinSpinBox.value()<=self.freqMaxSpinBox.value():
            self.freqSetButton.setEnabled(True)
        else:
            self.freqSetButton.setEnabled(False)

    def updateFreqMax(self,freq):
        self.stop()
        self.xzyblocks_fft_scan_plot_py_vc_0.set_freqMax(freq*1e6)
        self.run()

    def updateSamprate(self):
        #pass
        if self.samprateComboBox.currentIndex() == 0:
            self.set_samp_rate(2500000)
        else:
            self.set_samp_rate(10000000)


    def get_freq(self):
        return self.freq

    def set_freq(self, freq):
        self.freq = freq
        self.osmosdr_source_1.set_center_freq(self.freq, 0)
Exemplo n.º 4
0
class StockOutputWidget(FWidget):

    def __init__(self, product="", parent=0, *args, **kwargs):
        super(StockOutputWidget, self).__init__(parent=parent, *args, **kwargs)
        self.parentWidget().setWindowTitle(
            Config.NAME_ORGA + u"      SORTIE STOCK ")
        self.parent = parent

        vbox = QVBoxLayout(self)
        hbox = QHBoxLayout(self)
        editbox = QGridLayout()

        self.date_out = FormatDate(QDate.currentDate())

        # Combobox widget for add store
        self.liste_store = Store.all()

        self.box_store = QComboBox()
        for index in xrange(0, len(self.liste_store)):
            op = self.liste_store[index]
            sentence = u"{name}".format(name=op.name)
            self.box_store.addItem(sentence, op.id)

        self.search_field = QLineEdit()
        self.search_field.setPlaceholderText("Rechercher un article")
        self.search_field.setMaximumSize(
            200, self.search_field.maximumSize().height())
        self.search_field.textChanged.connect(self.finder)

        self.vline = QFrame()
        self.vline.setFrameShape(QFrame.VLine)
        self.vline.setFrameShadow(QFrame.Sunken)

        self.table_resultat = ResultatTableWidget(parent=self)
        self.table_info = InfoTableWidget(parent=self)
        self.table_out = InproductTableWidget(parent=self)
        self.box_store.connect(self.box_store,
                               SIGNAL("currentIndexChanged(int)"),
                               self.table_out.changed_value)

        self.table_resultat.refresh_("")
        # editbox.addWidget(FormLabel(u"Recherche:"), 0, 0)
        editbox.addWidget(self.search_field, 0, 0)

        editbox.addWidget(self.vline, 0, 2, 1, 1)

        editbox.addWidget(FormLabel(u"Magasin:"), 0, 4)
        editbox.addWidget(self.box_store, 0, 5)
        editbox.addWidget(FormLabel(u"Date d'achat:"), 0, 6)
        editbox.addWidget(self.date_out, 0, 7)

        editbox.setColumnStretch(3, 3)
        splitter = QSplitter(Qt.Horizontal)

        splitter_left = QSplitter(Qt.Vertical)
        # splitter_left.addWidget(FBoxTitle(u"Les products"))
        splitter_left.addWidget(self.table_resultat)

        splitter_down = QSplitter(Qt.Vertical)
        splitter_down.resize(15, 20)
        splitter_down.addWidget(self.table_info)

        splitter_rigth = QSplitter(Qt.Vertical)
        # splitter_rigth.addWidget(FBoxTitle(u"Les products achatés"))
        splitter_rigth.addWidget(self.table_out)
        splitter_rigth.resize(500, 900)

        splitter_left.addWidget(splitter_down)
        splitter.addWidget(splitter_left)
        splitter.addWidget(splitter_rigth)

        hbox.addWidget(splitter)
        vbox.addLayout(editbox)
        vbox.addLayout(hbox)
        self.setLayout(vbox)

    def finder(self):
        value = str(self.search_field.text())
        self.table_resultat.refresh_(value)

    def save_report(self):
        ''' add operation '''
        # entete de la facture
        self.table_out.changed_value()
        if not self.table_out.isvalid:
            return False
        date_out = str(self.date_out.text())
        datetime_ = date_to_datetime(date_out)
        self.current_store = self.liste_store[self.box_store.currentIndex()]

        values_t = self.table_out.get_table_items()

        for qty, name in values_t:
            rep = Reports(type_=Reports.S, store=self.current_store,
                          date=datetime_, product=Product.get(name=name),
                          qty_use=int(qty))
            try:
                rep.save()
            except:
                self.parent.Notify(
                    u"Ce mouvement n'a pas pu être enrgistré dans les raports", "error")
                return False

        self.parent.change_context(GReportViewWidget)
        self.parent.Notify(u"La sortie des articles avec succès", "success")