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
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)
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")