def initUI(self): self.setTitle("Orbital type") radio1 = QRadioButton("&Gaussian") radio1.setObjectName("gaussian") radio2 = QRadioButton("&Slater") radio2.setObjectName("slater") vbox = QHBoxLayout() vbox.addWidget(radio1) vbox.addWidget(radio2) vbox.addStretch(1) self.setLayout(vbox)
def __createTextWidgetForAxis__(self, axis): textWidget = AxisTextWidget(axis, self) self.axisModel.addAxisObserver(textWidget, axis) showInX = QRadioButton() showInY = QRadioButton() showInX.setObjectName(str(axis)) showInY.setObjectName(str(axis)) showInX.setLayoutDirection(Qt.RightToLeft) showInY.setLayoutDirection(Qt.RightToLeft) showInX.setMaximumSize(24, 24) showInY.setMaximumSize(24, 24) self.xGroup.addButton(showInX) self.yGroup.addButton(showInY) gridLayout = QGridLayout() gridLayout.addWidget(textWidget, 0, 0, 1, 2) gridLayout.addWidget(showInX, 0, 2, 1, 1) gridLayout.addWidget(showInY, 0, 3, 1, 1) self.addLayoutToScrollArea(gridLayout)
class CADOptionsToolbar_Modify(CADOptionsToolbar): def __init__(self, layerType): super(CADOptionsToolbar_Modify, self).__init__() self.add_btn = QRadioButton( tr(u"Add"), self.optionsToolBar) self.add_btn.setToolTip( tr(u"Add extension")) self.add_btn.setObjectName("add_rbtn") self.modify_btn = QRadioButton( tr(u"Modify"), self.optionsToolBar) self.modify_btn.setToolTip( tr(u"Modify the entity")) self.modify_btn.setObjectName("modify_rbtn") self.extend_btn = QRadioButton( tr(u"Add opposite"), self.optionsToolBar) self.extend_btn.setToolTip( tr(u"Add an extended line")) self.extend_btn.setObjectName("extend_rbtn") self.optionsToolBar.addWidget(self.add_btn) self.optionsToolBar.addWidget(self.modify_btn) self.optionsToolBar.addWidget(self.extend_btn) self.add_btn.setChecked(True) if layerType == QGis.Polygon: self.modify_btn.setChecked(True) self.add_btn.setEnabled(False) self.extend_btn.setEnabled(False) else: self.add_btn.setEnabled(True) self.extend_btn.setEnabled(True)
class PsychomotoCaDialog(QDialog): pagetitle = 'Skill-Assessment' holdc = {} hold = [] def __init__(self, parent=None): super(PsychomotoCaDialog, self).__init__(parent) ko = 0 self.subjects = self.pullSubjects() self.frame1 = QGroupBox('Skills') self.frame2 = QGroupBox('Categories') hc1_box = QVBoxLayout() hc2_box = QVBoxLayout() self.li = [] self.liID = [] for subject in self.subjects: num = subject['id'] self.liID.append(num) self.c = QRadioButton('cb' + str(num)) self.c.setText(str(subject['name']).upper()) self.c.setObjectName("chk" + str(num)) self.c.setChecked(False) self.c.toggled.connect( lambda state, x=num, y=self.c: self.catItems(x, y)) hc1_box.addWidget(self.c) self.li.append(self.c) ko += 1 self.li1 = [] self.li1ID = [] self.hc2_box = QVBoxLayout() self.frame1.setLayout(hc1_box) #frame1.setFrameShape(QFrame.StyledPanel) self.frame2.setLayout(self.hc2_box) #frame2.setFrameShape(QFrame.StyledPanel) h_box = QHBoxLayout() h_box.addWidget(self.frame1) h_box.addWidget(self.frame2) self.pb = QPushButton() self.pb.setObjectName("MakeEntries") self.pb.setText("Edit View") self.pb1 = QPushButton() self.pb1.setObjectName("View Report") self.pb1.setText("Report View") self.pb2 = QPushButton() self.pb2.setObjectName("Cancel") self.pb2.setText("Cancel") but_box = QHBoxLayout() but_box.addWidget(self.pb2) but_box.addWidget(self.pb1) but_box.addWidget(self.pb) main_box = QVBoxLayout() main_box.addLayout(h_box) main_box.addLayout(but_box) self.setLayout(main_box) self.connect(self.pb, SIGNAL("clicked()"), lambda: self.button_click()) self.connect(self.pb, SIGNAL("clicked()"), lambda: self.button_click()) self.connect(self.pb2, SIGNAL("clicked()"), lambda: self.button_close()) self.setWindowTitle(self.pagetitle) def catItems(self, a, b): _a = a self.cas = self.pullCas(_a) print(self.hold) self.li1 = [] self.li1ID = [] for rp in self.hold: self.hc2_box.removeWidget(rp) sip.delete(rp) self.hold = [] ko = 0 for ca in self.cas: num = ca['id'] self.li1ID.append(num) self.c1 = QCheckBox('cbx' + str(num)) self.c1.setText(str(ca['name']).upper()) self.c1.setObjectName("chkx" + str(num)) self.c1.setChecked(True) self.hc2_box.addWidget(self.c1) self.hold.append(self.c1) self.li1.append(self.c1) ko += 1 #self.hc2_box.show() def pullSubjects(self): cn = Db() arr = cn.selectn('datas', '', '', {'pubID': 9}) return arr def pullCas(self, a): _a = a cn = Db() arr = cn.selectn('datas', '', '', {'subID': _a}) return arr def button_close(self): self.reject() def button_click(self): self.accept() def getValue(self): k1 = [] k2 = [] for s in range(0, len(self.li)): if self.li[s].isChecked(): k1.append(self.liID[s]) else: k2.append(self.liID[s]) k11 = [] k21 = [] for s in range(0, len(self.li1)): if self.li1[s].isChecked(): k11.append(self.li1ID[s]) else: k21.append(self.li1ID[s]) return [k1, k11]
class Mplayer(QDialog): REVENIR, PAS_PRECEDENT_SUIVANT, PRECEDENT_SUIVANT, CURSEUR_SUR_UNE_LIGNE,\ CURSEUR_A_PART, PARCOURIR, PAS_PARCOURIR, LIST, RATIO = range(9) HAUTEUR, LARGEUR = range(2) def __init__(self, cheminVideo=[], taille=(250,225), choixWidget=(RATIO, REVENIR, PAS_PRECEDENT_SUIVANT,CURSEUR_SUR_UNE_LIGNE,PAS_PARCOURIR,LIST), debutFin=(0,0), cheminMPlayer=None, barreTaches=None, facteurLimitant=HAUTEUR, cheminParcourir=None, parent=None): """widget mplayer""" QDialog.__init__(self, parent) #=== Paramètres généraux ===# self.setAttribute(Qt.WA_DeleteOnClose) self.setWindowTitle(_(u"Player vidéo")) #On réduit la marge pour gagner de l'espace self.setContentsMargins(0,0,0,0) self.systeme = os.name ### Quand EKD windows est installé, le chemin des dépendances sont ########### ### positionnées dans les variables d'environnement donc pas besoin de ####### ### collecter le chemin des ces dépendances ################################## self.cheminMPlayer = "mplayer" ############################################################################## # liste de chemins vidéos if type(cheminVideo) != list : self.listeVideos=[cheminVideo] else : self.listeVideos = cheminVideo # est-ce que la vidéo est lue? self.estLue=False # est-ce que la vidéo est en pause? self.estEnPause=False self.debutFin = debutFin # Nom du fichier courant (le self n'est pas encore utile) txtParDefaut = u"Pas de fichier lu" if self.listeVideos.__len__()!=0: self.fichierCourant = [txtParDefaut, self.listeVideos[0]] else: self.fichierCourant = [txtParDefaut, ""] # Barre des tâches de la fenêtre self.barreTaches = barreTaches # Taille de la vidéo self.tailleLargeur=taille[0] self.tailleHauteur=taille[1] # paramètres des boutons-icones iconTaille=22 flat=1 # Pour récupérer le temps courant depuis certains cadre self.temps = 0 self.dureeTimer = 10 # temps en ms ############################################################################################################################### #Pour être plus précis lors de la lecture, on prend comme unité la miliseconde. ###################### ## Il faut donc utiliser une echelle 1000 fois plus grande pour les unités du slider self.echelle=1000 ############################################################################################################################### # Permet de récupérer la durée de la vidéo depuis une instance de la classe # Sert dans certains cadres self.dureeVideo = 0 # Chemin sur lequel peut s'ouvrir la boite de dialogue de fichier # associée au bouton parcourir self.cheminPourBoutonParcourir = cheminParcourir self.taille = taille debug("self.taille avant lecture : %s %s" % (self.taille, type(self.taille))) #=== Widgets ===# self.icone_lire=QIcon("Icones" + os.sep + "player_play.png") self.icone_pause=QIcon("Icones" + os.sep + "player_pause.png") self.icone_arret=QIcon("Icones" + os.sep + "player_stop.png") if Mplayer.REVENIR in choixWidget: self.bout_revenir = QPushButton(u"Revenir") self.bout_revenir.setIcon(QIcon("Icones" + os.sep + "revenir.png")) if Mplayer.PARCOURIR in choixWidget: self.bout_ouvVideo = QPushButton(u"Parcourir...") if Mplayer.PRECEDENT_SUIVANT in choixWidget: self.bout_prec = QPushButton(QIcon("Icones" + os.sep + "player_rew.png"),"") self.bout_prec.setIconSize(QSize(iconTaille, iconTaille)) self.bout_prec.setFlat(flat) self.bout_suivant = QPushButton(QIcon("Icones" + os.sep + "player_fwd.png"),"") self.bout_suivant.setIconSize(QSize(iconTaille, iconTaille)) self.bout_suivant.setFlat(flat) self.LISTW=False if Mplayer.LIST in choixWidget : self.LISTW = True self.listFichiers = QComboBox() self.listFichiers.hide() self.setListeVideo() self.bout_LectPause = QPushButton(self.icone_lire,"") self.bout_LectPause.setIconSize(QSize(iconTaille, iconTaille)) self.bout_LectPause.setFlat(flat) self.bout_Arret = QPushButton(self.icone_arret,"") self.bout_Arret.setIconSize(QSize(iconTaille, iconTaille)) self.bout_Arret.setFlat(flat) # widget qui contiendra la vidéo self.cibleVideo = DisplayVid(self) # par défaut le widget-cible est noir color = QColor(0, 0, 0) self.cibleVideo.setAutoFillBackground(True) self.cibleVideo.setPalette(QPalette(color)) self.cibleVideo.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) self.cibleVideo.setFixedHeight(self.taille[1]) self.cibleVideo.setToolTip(self.fichierCourant[0]) #Choix de l'aspect ratio de la vidéo if Mplayer.RATIO in choixWidget : self.conf = QGroupBox() self.conf.setContentsMargins(0,0,0,0) self.conf.setMinimumSize(QSize(self.tailleLargeur, 0)) self.conf.setObjectName("conf") self.verticalLayout = QHBoxLayout(self.conf) self.verticalLayout.setObjectName("verticalLayout") self.choicenorm = QRadioButton(self.conf) self.choicenorm.setObjectName("choicenorm") self.verticalLayout.addWidget(self.choicenorm) self.choicewide = QRadioButton(self.conf) self.choicewide.setObjectName("choicewide") self.verticalLayout.addWidget(self.choicewide) self.choiceone = QRadioButton(self.conf) self.choiceone.setObjectName("choiceone") self.verticalLayout.addWidget(self.choiceone) self.choicenorm.setText("4:3") self.choicewide.setText("16:9") self.choiceone.setText("w:h") # Checked le ratio de la vidéo if self.listeVideos.__len__()!=0: self.changeRatio(self.listeVideos[0]) else : self.setRatio(4.0/3.0) if Mplayer.RATIO in choixWidget : self.choicenorm.setChecked(True) self.slider = QSlider(Qt.Horizontal) self.slider.setEnabled(True) self.mplayerProcess = QProcess(self) self.timer = QTimer(self) self.tempsChrono = TracerChrono() #=== mise-en-page/plan ===# mhbox = QHBoxLayout() vbox = QVBoxLayout() vbox.addWidget(self.cibleVideo) if Mplayer.RATIO in choixWidget : vbox.addWidget(self.conf) hbox = QHBoxLayout() if Mplayer.REVENIR in choixWidget: hbox.addWidget(self.bout_revenir) if Mplayer.PARCOURIR in choixWidget: hbox.addWidget(self.bout_ouvVideo) hbox.addWidget(self.bout_LectPause) hbox.addWidget(self.bout_Arret) if Mplayer.PRECEDENT_SUIVANT in choixWidget: hbox.addWidget(self.bout_prec) hbox.addWidget(self.bout_suivant) hbox.addWidget(self.tempsChrono) if Mplayer.CURSEUR_A_PART not in choixWidget: hbox.addWidget(self.slider) vbox.addLayout(hbox) if Mplayer.CURSEUR_A_PART in choixWidget: hbox.setAlignment(Qt.AlignLeft) hbox = QHBoxLayout() hbox.addWidget(self.slider) vbox.addLayout(hbox) # Liste fichier dans combobox if self.LISTW : hbox = QHBoxLayout() hbox.addWidget(self.listFichiers) vbox.addLayout(hbox) mhbox.addLayout(vbox) self.setLayout(mhbox) #=== connexion des widgets à des fonctions ===# if Mplayer.REVENIR in choixWidget: self.connect(self.bout_revenir, SIGNAL('clicked()'), SLOT('close()')) if Mplayer.PARCOURIR in choixWidget: self.connect(self.bout_ouvVideo, SIGNAL('clicked()'), self.ouvrirVideo) if Mplayer.PRECEDENT_SUIVANT in choixWidget: self.connect(self.bout_prec, SIGNAL('clicked()'), self.precedent) self.connect(self.bout_suivant, SIGNAL('clicked()'), self.suivant) #Ajouté le 08/11/2009 - Liste des fichiers dans une combobox if self.LISTW : self.connect(self.listFichiers, SIGNAL('currentIndexChanged(int)'), self.changeVideo) self.connect(self.bout_LectPause, SIGNAL('clicked()'), self.lectPause) self.connect(self.bout_Arret, SIGNAL('clicked()'), self.arretMPlayer) self.connect(self.mplayerProcess, SIGNAL('readyReadStandardOutput()'), self.recupSortie) self.connect(self.mplayerProcess, SIGNAL('finished(int,QProcess::ExitStatus)'), self.finVideo) self.connect(self.timer, SIGNAL('timeout()'), self.sonderTempsActuel) self.connect(self.slider, SIGNAL('sliderMoved(int)'), self.changerTempsCurseur) self.connect(self.cibleVideo, SIGNAL('changeSize'), self.sizeMplayer) if Mplayer.RATIO in choixWidget : self.connect(self.choicenorm, SIGNAL("clicked(bool)"), self.defRatio) self.connect(self.choicewide, SIGNAL("clicked(bool)"), self.defRatio) self.connect(self.choiceone, SIGNAL("clicked(bool)"), self.defRatio) def setListeVideo(self) : self.referenceVideo = [] self.listFichiers.clear() for vid in self.listeVideos : self.referenceVideo.append(vid) self.listFichiers.addItem(os.path.basename(vid)) if self.listeVideos.__len__() > 1 : self.listFichiers.show() def setAudio(self,au) : if au : self.cibleVideo.hide() if "conf" in self.__dict__ : self.conf.hide() else : self.cibleVideo.show() if "conf" in self.__dict__ : self.conf.show() def changeVideo(self, index) : self.arretMPlayer() if index >= 0 : # Condition ajoutée pour éviter une erreure de dépassement de range dans la liste. self.listeVideos = self.referenceVideo[index] self.listFichiers.setCurrentIndex(index) def defRatio(self, state=0) : if state : if self.choicenorm.isChecked() : self.setRatio(4.0/3.0) if self.choicewide.isChecked() : self.setRatio(16.0/9.0) if self.choiceone.isChecked() : try : dim=getVideoSize(unicode(self.listeVideos[0])) self.setRatio(dim[0]/dim[1]) except : None self.defRatio() else : self.adjustSize() def setRatio(self,ratio) : self.ratio = ratio self.sizeMplayer() def changeRatio(self,video) : rv = getVideoRatio(video) if rv[0]==0.0 and type(rv[1])==float : rat = rv[1] else : rat = rv[0] if rat > 1.7 : if "choicewide" in self.__dict__ : self.choicewide.setChecked(True) self.setRatio(16.0/9.0) elif rat > 1.3 and rat <= 1.7 : if "choicenorm" in self.__dict__ : self.choicenorm.setChecked(True) self.setRatio(4.0/3.0) elif rat < 1.3 and rat != 0.0 : if "choiceone" in self.__dict__ : self.choiceone.setChecked(True) dim=getVideoSize(video) self.setRatio(dim[0]/dim[1]) else : if "choicenorm" in self.__dict__ : self.choicenorm.setChecked(True) self.setRatio(4.0/3.0) def sizeMplayer(self) : self.cibleVideo.setFixedHeight(int(self.cibleVideo.width()/self.ratio)) def ouvrirVideo(self): """Ouverture de la boîte de dialogue de fichiers""" txt = u"Fichiers vidéo" if self.cheminPourBoutonParcourir: chemin = self.cheminPourBoutonParcourir else: try: chemin = EkdConfig.get('general','video_input_path').decode("UTF8") except: chemin = os.path.expanduser('~') liste=QFileDialog.getOpenFileNames(None, u"Ouvrir", chemin, "%s (*.avi *.mpg *.mpeg *.mjpeg *.flv *.mp4 *.ogg *.vob *.mov *.wmv *.3gp *.h264)\n*" %txt) if not liste: return self.listeVideos = liste self.changeRatio(unicode(self.listeVideos[0])) chemin = unicode(self.listeVideos[0]) EkdConfig.set('general','video_input_path',os.path.dirname(chemin).encode("UTF8")) def setVideos(self, videos) : '''Définie proprement la liste des vidéos à jouer''' if type(videos) != list : self.listeVideos = [videos] else : self.listeVideos = videos if self.LISTW and videos.__len__() > 1 : self.setListeVideo() elif self.LISTW : self.listFichiers.hide() def demarrerMPlayer(self): """démarrage de mplayer avec les arguments choisis""" if self.estLue: return True args = QStringList() # Liste Qt qui contiendra les options de mplayer # Ajout d'options à liste: args << "-option" # mplayer fonctionnera comme un terminal dans ce script args << "-slave" # on ne veut pas avoir des commentaires sans grand intérêt args << "-quiet" # Sous linux, aucun driver n'a été nécessaire et pas de manip pour Wid :) if self.systeme=='posix': # try - except? # la fenêtre de mplayer restera attaché à la fenêtre # wid prend en valeur le nombre identifiant le widget (celui qui contiendra la vidéo) args << "-wid" << QString.number(self.cibleVideo.winId()) # Objet QString car args est une liste de ch de caractères settings = QSettings() videoOutput = settings.value("vo", QVariant('')).toString() if videoOutput: args << '-vo' << videoOutput # Sous windows else: # reinterpret_cast<qlonglong> obligatoire, winId() ne se laissant pas convertir gentiment ;) args << "-wid" << self.cibleVideo.winId().__hex__() args << "-vo" << "directx:noaccel" #args << "-vo" << "gl" # alternative # chemin de la vidéo args << self.listeVideos if PYQT_VERSION_STR >= "4.1.0": # mode de canal: on fusionne le canal de sortie normal (stdout) et celui des erreurs (stderr) self.mplayerProcess.setProcessChannelMode(QProcess.MergedChannels) # démarrage de mplayer (en tenant compte des arguments définis ci-dessus) # comme un nouveau processus self.mplayerProcess.start(self.cheminMPlayer, args) # au cas où mplayer ne démarrerait pas au bout de 3 sec (ex. problème de codec) if not self.mplayerProcess.waitForStarted(3000): QMessageBox.critical(self, u"Avertissement", u"Bogue au lancement de la vidéo avec mplayer") return False # donne le temps toutes les x secondes self.timer.start(self.dureeTimer) self.estLue = True return True def recupSortie(self): """récupère les lignes d'information émises par QProcess (mplayerProcess) et en tire les conséquences""" while self.mplayerProcess.canReadLine(): # renvoie True si une ligne complète peut être lue à partir du système # stocker l'ensemble des bits d'une ligne tampon=QByteArray(self.mplayerProcess.readLine()) # readline: lit une ligne ascii à partir du système # On vérifie si on a eu des réponses if tampon.startsWith("Playing"): # On récupère les infos de base ('$ mplayer -input cmdlist' pour avoir la liste complète - file:///usr/share/doc/mplayer-doc/tech/slave.txt.gz pour plus de détails) self.mplayerProcess.write("get_video_resolution\n") # récupère la résolution de la vidéo self.mplayerProcess.write("get_time_length\n") # Nouveau fichier chargé -> on récupère son nom ind = tampon.length() - 2 # suppression du '.' à la fin tampon.remove(ind,ind) tampon.remove(0, 8) # vire Playing tampon.replace(QByteArray("\n"), QByteArray("")) tampon.replace(QByteArray("\r"), QByteArray("")) try: # Tour de passe-passe pour ne pas avoir de problème d'accents # Condition pour détection windows if os.name == 'nt': self.fichierCourant[1]=unicode(QString(tampon)) # Condition pour détection Linux ou MacOSX elif os.name in ['posix', 'mac']: self.fichierCourant[1]=unicode(QString(tampon)).encode("Latin1").decode("UTF8") except UnicodeEncodeError, e: debug(e) self.fichierCourant[1]="?" self.cibleVideo.setToolTip(self.fichierCourant[1]) if self.barreTaches is not None: self.barreTaches.showMessage(self.fichierCourant[1]) # réponse à get_video_resolution : ANS_VIDEO_RESOLUTION='<width> x <height>' if tampon.startsWith("ANS_VIDEO_RESOLUTION"): # retourne True si l'ensemble de bits démarre avec "..." debug("tampon : %s" % tampon) # ex. -> ANS_VIDEO_RESOLUTION='352 x 288' tampon.remove(0, 21) # suppression des 21 1er caract -> '352 x 288' tampon.replace(QByteArray("'"), QByteArray("")) # -> 352 x 288 tampon.replace(QByteArray(" "), QByteArray("")) # -> 352x288 tampon.replace(QByteArray("\n"), QByteArray("")) # -> 352x288 # retour chariot unix tampon.replace(QByteArray("\r"), QByteArray("")) # -> 352x288 # retour chariot windows #print "-----tampon.indexOf('x') :", tampon.indexOf('x'), type(tampon.indexOf('x')) sepIndex = tampon.indexOf('x') # récupère la position de 'x' # 3 <type 'int'> #print "-----tampon.left(sepIndex).toInt():", tampon.left(sepIndex).toInt(), type(tampon.left(sepIndex).toInt()) resX = tampon.left(sepIndex).toInt()[0] # -> 352 # (352, True) <type 'tuple'> #print "-----tampon.mid(sepIndex+1).toInt() :", tampon.mid(sepIndex+1).toInt(), type(tampon.mid(sepIndex+1).toInt()) resY = tampon.mid(sepIndex+1).toInt()[0] # -> 288 # (288, True) <type 'tuple'> # on définit les nouvelles dimensions de l'image du widget-mplayer. # try pour éviter les bogues sur les fichiers audio (sans dimension d'image)!!! #try: if resX!=0 or resY!=0: debug( "ratio : %s - %s" % (self.ratio, type(self.ratio))) else: debug("fichier audio") # réponse à get_time_length : ANS_LENGTH=xx.yy elif tampon.startsWith("ANS_LENGTH"): debug("tampon : %s" % tampon) # -> ANS_LENGTH=279.38 tampon.remove(0, 11) # vire ANS_LENGTH= tampon.replace(QByteArray("'"), QByteArray("")) tampon.replace(QByteArray(" "), QByteArray("")) tampon.replace(QByteArray("\n"), QByteArray("")) tampon.replace(QByteArray("\r"), QByteArray("")) # -> 279.38 #print "-----tampon.toFloat() :", tampon.toFloat(), type(tampon.toFloat()) tempsMax = tampon.toFloat()[0] # (279.3800048828125, True) <type 'tuple'> self.dureeVideo = tempsMax ## Modifié le 28/05/2009 : On augmente la précision du slider #self.slider.setMaximum(tempsMax) # déf du domaine de valeur du curseur self.slider.setMaximum(tempsMax*self.echelle) # ATTENTION J'AI COMMENTE CETTE LIGNE !!! #self.slider.setMaximum(tempsMax) # réponse à get_time_pos : ANS_TIME_POSITION=xx.y elif tampon.startsWith("ANS_TIME_POSITION"): #print "tampon :",tampon # -> ANS_TIME_POSITION=1.4 (temps courant) tampon.remove(0, 18) # vire ANS_TIME_POSITION= tampon.replace(QByteArray("'"), QByteArray("")) tampon.replace(QByteArray(" "), QByteArray("")) tampon.replace(QByteArray("\n"), QByteArray("")) tampon.replace(QByteArray("\r"), QByteArray("")) #print "-----tampon.toFloat() :", tampon.toFloat(), type(tampon.toFloat()) tempsCourant = tampon.toFloat()[0] # (1.3999999761581421, True) <type 'tuple'> # récupération du temps courant: utile dans certains cadres self.temps = tempsCourant # Programmer un arrêt. Utile pour les aperçus temps = float("%.1f" %self.temps) if self.debutFin!=(0,0) and self.debutFin[1]==temps: self.arretMPlayer() return self.slider.setValue(tempsCourant*self.echelle) ############################################################################# self.changerTempsChrono(tempsCourant) # modifier le chrono du bouton
class SessionForm(QDialog): pagetitle = 'Session Manager' def __init__(self, parent=None): super(SessionForm, self).__init__(parent) ko = 0 layout1 = QGridLayout() arr = self.pullClass() hold = {} for val in arr: self.num = val self.c = QRadioButton('cb' + str(val)) self.c.setText(str(arr[val][0])) self.c.setObjectName("chk" + str(val)) if (arr[val][3] == 1): self.c.setChecked(True) else: self.c.setChecked(False) self.c.toggled.connect( lambda state, x=val, y=self.c: self.chkFunc(x, y)) self.d = QLabel() sd = datetime.datetime.strptime(arr[val][1], '%Y-%m-%d').date() ed = datetime.datetime.strptime(arr[val][2], '%Y-%m-%d').date() sd = "{:%d, %b %Y}".format(sd) ed = "{:%d, %b %Y}".format(ed) self.d.setText(sd + ' - ' + ed) self.b = QPushButton() self.b.setObjectName("btn" + str(val)) self.b.setText('Terms') self.b1 = QPushButton() self.b1.setObjectName("btn1" + str(val)) self.b1.setText('Edit') hold["btn" + str(val)] = self.b hold["btnx" + str(val)] = self.b1 layout1.addWidget(self.c, ko, 0) layout1.addWidget(self.d, ko, 1) layout1.addWidget(self.b, ko, 2) layout1.addWidget(self.b1, ko, 3) ko += 1 for j in arr: self.h = j b = "btn" + str(j) b1 = "btnx" + str(j) self.connect(hold[b], SIGNAL("clicked()"), lambda gh=j: self.lunchUnitForm(gh, self)) self.connect(hold[b1], SIGNAL("clicked()"), lambda gh=j: self.lunchEditForm(gh, self)) groupBox1 = QGroupBox('All Sessions') groupBox1.setLayout(layout1) self.pb = QPushButton() self.pb.setObjectName("Add") self.pb.setText("Add Session") self.pb1 = QPushButton() self.pb1.setObjectName("Cancel") self.pb1.setText("Cancel") hbo = QHBoxLayout() hbo.addWidget(self.pb1) hbo.addStretch() hbo.addWidget(self.pb) groupBox2 = QGroupBox('') groupBox2.setLayout(hbo) grid = QGridLayout() grid.addWidget(groupBox1, 0, 0) grid.addWidget(groupBox2, 1, 0) self.setLayout(grid) self.connect(self.pb, SIGNAL("clicked()"), lambda: self.lunchAddForm(self)) self.connect(self.pb1, SIGNAL("clicked()"), lambda: self.button_close()) self.setWindowTitle(self.pagetitle) def chkFunc(self, a, b): # shost is a QString object self.a = a self.b = b g = Db() g.update('session', {'active': 0}, {'active': 1}) if b.isChecked() == True: y = {'active': 1} else: y = {'active': 0} z = {'id': self.a} j = g.update('session', y, z) return j def pullClass(self): cn = Db() students = cn.select('session', '', '') arr = {} try: for j in students: arr[j[0]] = [j[1], j[2], j[3], j[4]] except: pass return arr def lunchUnitForm(self, a, b): b.close() self.a = a form = TermForm(self.a) form.show() if form.exec_() == QDialog.Accepted: rtt = form.getValue() def lunchEditForm(self, a, b): b.close() self.a = a self.form = EditForm(self.a) self.form.show() def lunchAddForm(self, a): a.close() self.form = AddForm() self.form.show() def lunchForm(self): self.__init__() self.reloadSession() def button_close(self): self.close()
class UserMngForm(QDialog): def __init__(self, parent=None): QDialog.__init__(self) self.setObjectName(("ui_UserMngForm")) self.resize(200, 200) font = QFont() font.setFamily(("Arial")) font.setBold(False) font.setWeight(50) self.setFont(font) self.vlForm = QVBoxLayout(self) self.vlForm.setObjectName(("vl_UserMngForm")) self.vlForm.setSpacing(9) self.vlForm.setMargin(9) self.setWindowTitle("User Manage Dialog") self.basicFrame = Frame(self) self.vlForm.addWidget(self.basicFrame) self.userContentFrm = Frame(self.basicFrame, "HL") self.basicFrame.Add = self.userContentFrm self.groupbox = GroupBox(self.userContentFrm) self.groupbox.Caption = "Users" self.userContentFrm.Add = self.groupbox self.listBoxUser = ListBox(self.groupbox) self.groupbox.Add = self.listBoxUser self.userDataFrm = Frame(self.userContentFrm) self.userContentFrm.Add = self.userDataFrm self.groupBoxUserinfo = GroupBox(self.userDataFrm) self.groupBoxUserinfo.Caption = "User Information" self.userDataFrm.Add = self.groupBoxUserinfo self.userFullFrm = Frame(self.groupBoxUserinfo, "HL") self.groupBoxUserinfo.Add = self.userFullFrm self.textFirstName = TextBoxPanel(self.userFullFrm) self.textFirstName.Caption = "First Name" self.textFirstName.LabelWidth = 70 self.textFirstName.Width = 120 self.userFullFrm.Add = self.textFirstName self.textLastName = TextBoxPanel(self.userFullFrm) self.textLastName.Caption = "Last Name" self.textLastName.LabelWidth = 70 self.textLastName.Width = 120 self.userFullFrm.Add = self.textLastName self.userEmailPhoneFrm = Frame(self.groupBoxUserinfo, "HL") self.groupBoxUserinfo.Add = self.userEmailPhoneFrm self.textEMail = TextBoxPanel(self.userEmailPhoneFrm) self.textEMail.Caption = "E-Mail" self.textEMail.LabelWidth = 70 self.textEMail.Width = 120 self.userEmailPhoneFrm.Add = self.textEMail self.textPhone = TextBoxPanel(self.userEmailPhoneFrm) self.textPhone.Caption = "Phone" self.textPhone.LabelWidth = 70 self.textPhone.Width = 120 self.userEmailPhoneFrm.Add = self.textPhone self.userAddressCityFrm = Frame(self.groupBoxUserinfo, "HL") self.groupBoxUserinfo.Add = self.userAddressCityFrm self.textAddress = TextBoxPanel(self.userAddressCityFrm) self.textAddress.Caption = "Address" self.textAddress.LabelWidth = 70 self.textAddress.Width = 120 self.userAddressCityFrm.Add = self.textAddress self.textCity = TextBoxPanel(self.userAddressCityFrm) self.textCity.Caption = "City" self.textCity.LabelWidth = 70 self.textCity.Width = 120 self.userAddressCityFrm.Add = self.textCity self.userPostCodeStateFrm = Frame(self.groupBoxUserinfo, "HL") self.groupBoxUserinfo.Add = self.userPostCodeStateFrm self.textPostcode = TextBoxPanel(self.userPostCodeStateFrm) self.textPostcode.Caption = "Post Code" self.textPostcode.LabelWidth = 70 self.textPostcode.Width = 120 self.userPostCodeStateFrm.Add = self.textPostcode self.textState = TextBoxPanel(self.userPostCodeStateFrm) self.textState.Caption = "State" self.textState.LabelWidth = 70 self.textState.Width = 120 self.userPostCodeStateFrm.Add = self.textState self.groupBoxUserRoles = GroupBox(self.userDataFrm, "HL") self.groupBoxUserRoles.Caption = "User Roles" self.userDataFrm.Add = self.groupBoxUserRoles self.radioAdmin = QRadioButton(self.groupBoxUserRoles) self.radioAdmin.setObjectName("radioAdmin") self.radioAdmin.setText("Administrator") self.radioAdmin.setChecked(True) self.groupBoxUserRoles.Add = self.radioAdmin self.radioSuperuser = QRadioButton(self.groupBoxUserRoles) self.radioSuperuser.setObjectName("radioSuperuser") self.radioSuperuser.setText("Super User") self.groupBoxUserRoles.Add = self.radioSuperuser self.radioReadwrite = QRadioButton(self.groupBoxUserRoles) self.radioReadwrite.setObjectName("radioReadwrite") self.radioReadwrite.setText("Read / Write") self.groupBoxUserRoles.Add = self.radioReadwrite self.radioReadonly = QRadioButton(self.groupBoxUserRoles) self.radioReadonly.setObjectName("radioReadonly") self.radioReadonly.setText("Read Only") self.groupBoxUserRoles.Add = self.radioReadonly self.groupBoxUserDisplayInfo = GroupBox(self.userDataFrm, "HL") self.groupBoxUserDisplayInfo.Caption = "User Display Information" self.userDataFrm.Add = self.groupBoxUserDisplayInfo self.textName = TextBoxPanel(self.groupBoxUserDisplayInfo) self.textName.Caption = "Name" self.textName.LabelWidth = 70 self.textName.Width = 120 self.groupBoxUserDisplayInfo.Add = self.textName self.textPassword = TextBoxPanel(self.groupBoxUserDisplayInfo) self.textPassword.Caption = "Password" self.textPassword.LabelWidth = 70 self.textPassword.Width = 120 self.textPassword.EchoMode = "Password" self.groupBoxUserDisplayInfo.Add = self.textPassword self.btnFrame = Frame(self.basicFrame, "HL") self.basicFrame.Add = self.btnFrame self.buttonAddUser = QPushButton(self.btnFrame) self.buttonAddUser.setObjectName("buttonAddUser") self.buttonAddUser.setText("Add") self.btnFrame.Add = self.buttonAddUser self.buttonModifyUser = QPushButton(self.btnFrame) self.buttonModifyUser.setObjectName("buttonModifyUser") self.buttonModifyUser.setText("Modify") self.btnFrame.Add = self.buttonModifyUser self.buttonDeleteUser = QPushButton(self.btnFrame) self.buttonDeleteUser.setObjectName("buttonDeleteUser") self.buttonDeleteUser.setText("Delete") self.btnFrame.Add = self.buttonDeleteUser self.buttonSaveUser = QPushButton(self.btnFrame) self.buttonSaveUser.setObjectName("buttonSaveUser") self.buttonSaveUser.setText("Save") self.buttonSaveUser.setVisible(False) self.btnFrame.Add = self.buttonSaveUser self.buttonCloseUser = QPushButton(self.btnFrame) self.buttonCloseUser.setObjectName("buttonCloseProject") self.buttonCloseUser.setText("Close") self.btnFrame.Add = self.buttonCloseUser self.connect(self.listBoxUser, SIGNAL("Event_0"), self.listBoxUser_SelectedIndexChanged) self.buttonAddUser.clicked.connect(self.buttonAddUser_Click) self.buttonModifyUser.clicked.connect(self.buttonModifyUser_Click) self.buttonDeleteUser.clicked.connect(self.buttonDeleteUser_Click) self.buttonSaveUser.clicked.connect(self.buttonSaveUser_Click) self.buttonCloseUser.clicked.connect(self.buttonCloseUser_Click) for ui in AirCraftOperation.g_userList.ListUserInfo: self.listBoxUser.Add(ui.Name) def listBoxUser_SelectedIndexChanged(self): try: if (self.listBoxUser.SelectedIndex < 0): return selectedName = self.listBoxUser.Items[ self.listBoxUser.SelectedIndex] ui = AirCraftOperation.g_userList.FindUser(selectedName) if (ui.FName != None): self.textFirstName.Text = ui.FName else: self.textFirstName.Text = "" if (ui.LName != None): self.textLastName.Text = ui.LName else: self.textLastName.Text = "" if (ui.EMail != None): self.textEMail.Text = ui.EMail else: self.textEMail.Text = "" if (ui.Phone != None): self.textPhone.Text = ui.Phone else: self.textPhone.Text = "" if (ui.Address != None): self.textAddress.Text = ui.Address else: self.textAddress.Text = "" if (ui.PCode != None): self.textPostcode.Text = ui.PCode else: self.textPostcode.Text = "" if (ui.City != None): self.textCity.Text = ui.City else: self.textCity.Text = "" if (ui.State != None): self.textState.Text = ui.State else: self.textState.Text = "" if (ui.Name != None): self.textName.Text = ui.Name else: self.textName.Text = "" if (ui.Password != None): self.textPassword.Text = ui.Password else: self.textPassword.Text = "" if ui.Right == enumUserRight.ur_Admin: self.radioAdmin.setChecked(True) elif ui.Right == enumUserRight.ur_SuperUser: self.radioSuperuser.setChecked(True) elif ui.Right == enumUserRight.ur_ReadWrite: self.radioReadwrite.setChecked(True) elif ui.Right == enumUserRight.ur_ReadOnly: self.radioReadonly.setChecked(True) except: pass def buttonAddUser_Click(self): if (not self.CheckInputValues()): return newUser = self.SetUserInfo() if (AirCraftOperation.g_userList.AddUser(newUser)): self.listBoxUser.Add(newUser.Name) self.buttonSaveUser.Enabled = True def buttonModifyUser_Click(self): try: if (self.listBoxUser.SelectedIndex < 0): QMessageBox.warning( self, "Warning", "Please select an user in users list box!") if (not self.CheckInputValues()): return newUser = self.SetUserInfo() oldUser = AirCraftOperation.g_userList.FindUser( self.listBoxUser.Items[self.listBoxUser.SelectedIndex]) if (oldUser != None): AirCraftOperation.g_userList.DeleteUser(oldUser) AirCraftOperation.g_userList.AddUser(newUser) self.listBoxUser.Clear() for ui in AirCraftOperation.g_userList.ListUserInfo: self.listBoxUser.Add(ui.Name) self.buttonSaveUser.setEnabled(True) except: pass def buttonDeleteUser_Click(self): if (self.listBoxUser.SelectedIndex > -1): res = QMessageBox.question( self, "Question", "Do you want to delete this user information?", QMessageBox.Yes | QMessageBox.No) if (res == QMessageBox.No): return userName = self.listBoxUser.Items[self.listBoxUser.SelectedIndex] AirCraftOperation.g_userList.DeleteUser(userName) self.listBoxUser.Clear() for ui in AirCraftOperation.g_userList.ListUserInfo: self.listBoxUser.Add(ui.Name) AirCraftOperation.g_userList.WriteUserInfoFile() # self.buttonSaveUser.setEnabled(True) self.listBoxUser.SelectedIndex = self.listBoxUser.SelectedIndex - 1 if ( self.listBoxUser.SelectedIndex > 0) else 0 self.listBoxUser_SelectedIndexChanged() def buttonSaveUser_Click(self): if (self.buttonSaveUser.isEnabled() == True): res = QMessageBox.question(self, "Question", "Save changes to user information?", QMessageBox.Yes | QMessageBox.No) if (res == QMessageBox.Yes): AirCraftOperation.g_userList.WriteUserInfoFile() self.buttonSaveUser.setEnabled(False) def buttonCloseUser_Click(self): if (self.buttonSaveUser.isEnabled() == True): res = QMessageBox.question(self, "Question", "Save changes to user information?", QMessageBox.Yes | QMessageBox.No) if (res == QMessageBox.Yes): AirCraftOperation.g_userList.WriteUserInfoFile() self.buttonSaveUser.setEnabled(False) self.accept() def CheckInputValues(self): try: if (self.textFirstName.Text == ""): QMessageBox.warning( self, "Warning", "First name is required! Please input first name.") return False if (self.textLastName.Text == ""): QMessageBox.warning( self, "Warning", "Last name is required! Please input last name.") return False if (self.textName.Text == ""): QMessageBox.warning( self, "Warning", "Name is required! Please input display name.") return False return True except: return False def SetUserInfo(self): ui = MYUSERINFO() try: if (self.radioAdmin.isChecked()): ui.Right = enumUserRight.ur_Admin elif (self.radioSuperuser.isChecked()): ui.Right = enumUserRight.ur_SuperUser elif (self.radioReadwrite.isChecked()): ui.Right = enumUserRight.ur_ReadWrite elif (self.radioReadonly.isChecked()): ui.Right = enumUserRight.ur_ReadOnly if (self.textFirstName.Text != None): ui.FName = self.textFirstName.Text if (self.textFirstName.Text != None): ui.LName = self.textLastName.Text if (self.textFirstName.Text != None): ui.EMail = self.textEMail.Text if (self.textFirstName.Text != None): ui.Phone = self.textPhone.Text if (self.textFirstName.Text != None): ui.Address = self.textAddress.Text if (self.textFirstName.Text != None): ui.PCode = self.textPostcode.Text if (self.textFirstName.Text != None): ui.City = self.textCity.Text if (self.textFirstName.Text != None): ui.State = self.textState.Text if (self.textFirstName.Text != None): ui.Name = self.textName.Text if (self.textFirstName.Text != None): ui.Password = self.textPassword.Text return ui except: return None
def initGui(): def setData(): buttonPath.setText(self.data["path"]) radioVisual.setChecked(self.data["isVisual"]) radioAnalytic.setChecked(not self.data["isVisual"]) chkBoxSquare.setChecked(self.data["isSquare"]) d1 = self.data["date1"] d2 = self.data["date2"] date1.setDate(d1) date2.setDate(d2) date1.setMaximumDate(d2.addDays(-1)) date2.setMinimumDate(d1.addDays(+1)) spinDay.setValue(d1.daysTo(d2)) def connect(): buttonOK.clicked.connect(self.onOK) buttonPath.clicked.connect(self.onPath) date1.dateChanged.connect(self.onDateChanged1) date2.dateChanged.connect(self.onDateChanged2) spinDay.valueChanged.connect(self.onValueChanged) windowTitle = "Setting download images Planet Labs" self.setWindowTitle(windowTitle) self.setWindowIcon(icon) grpImage = QGroupBox("Images", self) radioVisual = QRadioButton("Visual", grpImage) radioVisual.setObjectName("rbVisual") radioAnalytic = QRadioButton("Analytic", grpImage) chkBoxSquare = QCheckBox("Square thumbnail", grpImage) chkBoxSquare.setObjectName("cbBoxSquare") buttonPath = QPushButton(self.titleSelectDirectory, grpImage) buttonPath.setObjectName("pbPath") layoutRadioButtons = QHBoxLayout() for item in (radioVisual, radioAnalytic): layoutRadioButtons.addWidget(item) layoutImage = QVBoxLayout(grpImage) layoutImage.addLayout(layoutRadioButtons) layoutImage.addWidget(chkBoxSquare) layoutImage.addWidget(buttonPath) grpDateSearch = QGroupBox("Dates for search", self) date1 = QDateEdit(grpDateSearch) date1.setObjectName("deDate1") date2 = QDateEdit(grpDateSearch) date2.setObjectName("deDate2") for item in [date1, date2]: item.setCalendarPopup(True) format = item.displayFormat().replace("yy", "yyyy") item.setDisplayFormat(format) spinDay = QSpinBox(grpDateSearch) spinDay.setObjectName("sbDay") spinDay.setSingleStep(1) spinDay.setSuffix(" Days") spinDay.setRange(1, 1000 * 360) layoutDate = QHBoxLayout(grpDateSearch) layoutDate.addWidget(QLabel("From", grpDateSearch)) layoutDate.addWidget(date1) layoutDate.addWidget(QLabel("To", grpDateSearch)) layoutDate.addWidget(date2) layoutDate.addWidget(spinDay) buttonOK = QPushButton("OK", self) layout = QVBoxLayout(self) layout.addWidget(grpImage) layout.addWidget(grpDateSearch) layout.addWidget(buttonOK) self.resize(5 * len(windowTitle) + 200, 30) if not self.data is None: setData() else: radioVisual.setChecked(True) radioAnalytic.setChecked(False) chkBoxSquare.setChecked(False) d2 = QDate.currentDate() d1 = d2.addMonths(-1) date1.setDate(d1) date2.setDate(d2) date1.setMaximumDate(d2.addDays(-1)) date2.setMinimumDate(d1.addDays(+1)) spinDay.setValue(d1.daysTo(d2)) connect()
class Ui_TurnProtectionAndObstacleAssessment(object): def setupUi(self, Form): Form.setObjectName(_fromUtf8("Form")) Form.resize(435, 580) self.verticalLayout = QVBoxLayout(Form) self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) self.gbGeneral = GroupBox(Form) self.gbGeneral.Caption = "General" self.verticalLayout.addWidget(self.gbGeneral) # self.cmbAerodrome = ComboBoxPanel(self.gbGeneral, True) # self.cmbAerodrome.Caption = "Aerodrome" # self.cmbAerodrome.LabelWidth = 120 # self.gbGeneral.Add = self.cmbAerodrome # # self.cmbRwyDir = ComboBoxPanel(self.gbGeneral, True) # self.cmbRwyDir.Caption = "Runway Direction" # self.cmbRwyDir.LabelWidth = 120 # self.cmbRwyDir.Width = 120 # self.gbGeneral.Add = self.cmbRwyDir self.cmbRnavSpecification = ComboBoxPanel(self.gbGeneral) self.cmbRnavSpecification.Caption = "Rnav Specification" self.cmbRnavSpecification.LabelWidth = 150 self.gbGeneral.Add = self.cmbRnavSpecification self.frameChbThree = Frame(self.gbGeneral, "HL") self.gbGeneral.Add = self.frameChbThree self.chbUseTwoWpt = CheckBox(self.frameChbThree) self.chbUseTwoWpt.Caption = "Use 2 Waypoints" self.frameChbThree.Add = self.chbUseTwoWpt self.chbInsertSymbol = CheckBox(self.frameChbThree) self.chbInsertSymbol.Caption = "Insert Symbol(s)" self.frameChbThree.Add = self.chbInsertSymbol self.chbCatH = CheckBox(self.frameChbThree) self.chbCatH.Caption = "Cat.H" self.frameChbThree.Add = self.chbCatH self.cmbPhaseOfFlight = ComboBoxPanel(self.gbGeneral) self.cmbPhaseOfFlight.Caption = "Phase Of Flight" self.cmbPhaseOfFlight.LabelWidth = 150 self.gbGeneral.Add = self.cmbPhaseOfFlight self.pnlArp = PositionPanel(self.gbGeneral) self.pnlArp.Caption = "Aerodrome Reference Point(ARP)" self.pnlArp.btnCalculater.hide() self.pnlArp.hideframe_Altitude() self.gbGeneral.Add = self.pnlArp self.gbWaypoint1 = GroupBox(self.gbGeneral) self.gbWaypoint1.Caption = "Waypoint1" self.gbGeneral.Add = self.gbWaypoint1 self.cmbType1 = ComboBoxPanel(self.gbWaypoint1) self.cmbType1.Caption = "Type" self.cmbType1.LabelWidth = 150 self.gbWaypoint1.Add = self.cmbType1 self.pnlTolerances = RnavTolerancesPanel(self.gbWaypoint1) self.pnlTolerances.set_Att(Distance(0.8, DistanceUnits.NM)) self.pnlTolerances.set_Xtt(Distance(1, DistanceUnits.NM)) self.pnlTolerances.set_Asw(Distance(2, DistanceUnits.NM)) self.gbWaypoint1.Add = self.pnlTolerances self.pnlWaypoint1 = PositionPanel(self.gbWaypoint1) self.pnlWaypoint1.btnCalculater.hide() self.pnlWaypoint1.hideframe_Altitude() self.gbWaypoint1.Add = self.pnlWaypoint1 self.gbWaypoint2 = GroupBox(self.gbGeneral) self.gbWaypoint2.Caption = "Waypoint2" self.gbGeneral.Add = self.gbWaypoint2 self.cmbType2 = ComboBoxPanel(self.gbWaypoint2) self.cmbType2.Caption = "Type" self.cmbType2.LabelWidth = 150 self.gbWaypoint2.Add = self.cmbType2 self.pnlTolerances2 = RnavTolerancesPanel(self.gbWaypoint2) self.pnlTolerances2.set_Att(Distance(0.8, DistanceUnits.NM)) self.pnlTolerances2.set_Xtt(Distance(1, DistanceUnits.NM)) self.pnlTolerances2.set_Asw(Distance(2, DistanceUnits.NM)) self.gbWaypoint2.Add = self.pnlTolerances2 self.pnlWaypoint2 = PositionPanel(self.gbWaypoint2) self.pnlWaypoint2.btnCalculater.hide() self.pnlWaypoint2.hideframe_Altitude() self.gbWaypoint2.Add = self.pnlWaypoint2 self.frmRadioBtns = Frame(self.gbGeneral, "HL") self.gbGeneral.Add = self.frmRadioBtns self.rdnTF = QRadioButton(self.frmRadioBtns) self.rdnTF.setObjectName("rdnTF") self.rdnTF.setText("TF") self.rdnTF.setChecked(True) self.frmRadioBtns.Add = self.rdnTF self.rdnDF = QRadioButton(self.frmRadioBtns) self.rdnDF.setObjectName("rdnDF") self.rdnDF.setText("DF") self.frmRadioBtns.Add = self.rdnDF self.rdnCF = QRadioButton(self.frmRadioBtns) self.rdnCF.setObjectName("rdnCF") self.rdnCF.setText("CF") self.frmRadioBtns.Add = self.rdnCF self.chbCircularArcs = CheckBox(self.gbGeneral) self.chbCircularArcs.Caption = "Use Circular Arcs Method for Turns <= 30" self.gbGeneral.Add = self.chbCircularArcs self.gbParameters = GroupBox(Form) self.gbParameters.Caption = "Parameters" self.verticalLayout.addWidget(self.gbParameters) self.cmbSelectionMode = ComboBoxPanel(self.gbParameters) self.cmbSelectionMode.Caption = "Selection Mode" self.cmbSelectionMode.LabelWidth = 150 self.gbParameters.Add = self.cmbSelectionMode self.pnlInbound = TrackRadialBoxPanel(self.gbParameters) self.pnlInbound.Caption = "In-bound Track" self.pnlInbound.LabelWidth = 150 self.gbParameters.Add = self.pnlInbound self.pnlOutbound = TrackRadialBoxPanel(self.gbParameters) self.pnlOutbound.Caption = "Out-bound Track" self.pnlOutbound.LabelWidth = 150 self.gbParameters.Add = self.pnlOutbound # icon = QIcon() # icon.addPixmap(QPixmap(_fromUtf8("Resource/coordinate_capture.png")), QIcon.Normal, QIcon.Off) self.pnlIas = SpeedBoxPanel(self.gbParameters) self.pnlIas.Caption = "IAS" self.pnlIas.LabelWidth = 150 self.pnlIas.Value = Speed(250) self.gbParameters.Add = self.pnlIas self.pnlTas = SpeedBoxPanel(self.gbParameters) self.pnlTas.Caption = "TAS" self.pnlTas.Enabled = False self.pnlTas.LabelWidth = 150 self.gbParameters.Add = self.pnlTas self.pnlAltitude = AltitudeBoxPanel(self.gbParameters) self.pnlAltitude.Caption = "Altitude" self.pnlAltitude.LabelWidth = 150 self.pnlAltitude.Value = Altitude(1000) self.gbParameters.Add = self.pnlAltitude self.pnlIsa = NumberBoxPanel(self.gbParameters, "0.0") self.pnlIsa.CaptionUnits = define._degreeStr + "C" self.pnlIsa.Caption = "ISA" self.pnlIsa.LabelWidth = 150 self.pnlIsa.Value = 15 self.gbParameters.Add = self.pnlIsa self.pnlBankAngle = NumberBoxPanel(self.gbParameters, "0.0") self.pnlBankAngle.CaptionUnits = define._degreeStr self.pnlBankAngle.Caption = "Bank Angle" self.pnlBankAngle.LabelWidth = 150 self.pnlBankAngle.Value = 25 self.gbParameters.Add = self.pnlBankAngle self.pnlBankEstTime = NumberBoxPanel(self.gbParameters, "0.0") self.pnlBankEstTime.Caption = "Bank Establishment Time" self.pnlBankEstTime.Value = 1 self.pnlBankEstTime.LabelWidth = 150 self.pnlBankEstTime.Value = 5 self.gbParameters.Add = self.pnlBankEstTime self.pnlPilotTime = NumberBoxPanel(self.gbParameters, "0.0") self.pnlPilotTime.Caption = "Pilot Reaction Time" self.pnlPilotTime.Value = 6 self.pnlPilotTime.LabelWidth = 150 self.gbParameters.Add = self.pnlPilotTime self.pnlWind = WindPanel(self.gbParameters) self.pnlWind.LabelWidth = 145 self.gbParameters.Add = self.pnlWind self.pnlPrimaryMoc = AltitudeBoxPanel(self.gbParameters) self.pnlPrimaryMoc.Caption = "Primary Moc" self.pnlPrimaryMoc.LabelWidth = 150 self.gbParameters.Add = self.pnlPrimaryMoc self.cmbConstructionType = ComboBoxPanel(self.gbParameters) self.cmbConstructionType.Caption = "Construction Type" self.cmbConstructionType.LabelWidth = 150 self.gbParameters.Add = self.cmbConstructionType self.frameMOCmultipiler = Frame(self.gbParameters, "HL") self.gbParameters.Add = self.frameMOCmultipiler self.labelMOCmultipiler = QLabel(self.frameMOCmultipiler) self.labelMOCmultipiler.setMinimumSize(QSize(145, 0)) self.labelMOCmultipiler.setMaximumSize(QSize(145, 16777215)) font = QFont() font.setBold(False) font.setWeight(50) self.labelMOCmultipiler.setFont(font) self.labelMOCmultipiler.setObjectName(_fromUtf8("labelMOCmultipiler")) self.labelMOCmultipiler.setText("MOCmultipiler") self.frameMOCmultipiler.Add = self.labelMOCmultipiler self.mocSpinBox = QSpinBox(self.frameMOCmultipiler) sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.mocSpinBox.sizePolicy().hasHeightForWidth()) self.mocSpinBox.setSizePolicy(sizePolicy) self.mocSpinBox.setMinimumSize(QSize(70, 0)) self.mocSpinBox.setMaximumSize(QSize(70, 16777215)) self.mocSpinBox.setMinimum(1) self.mocSpinBox.setObjectName(_fromUtf8("mocSpinBox")) self.frameMOCmultipiler.Add = self.mocSpinBox spacerItem = QSpacerItem(10,10,QSizePolicy.Expanding, QSizePolicy.Minimum) self.frameMOCmultipiler.layoutBoxPanel.addItem(spacerItem) self.chbDrawTolerance = CheckBox(self.gbParameters) self.chbDrawTolerance.Caption = "Draw Waypoint Tolerance" self.gbParameters.Add = self.chbDrawTolerance
class DlgAixmInsertLeg(QDialog): def __init__(self, parent=None): QDialog.__init__(self, parent) self.resize(290, 136) self.setWindowTitle("Insert Leg") sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.sizePolicy().hasHeightForWidth()) self.setSizePolicy(sizePolicy) verticalLayoutDlg = QVBoxLayout(self) verticalLayoutDlg.setObjectName(("verticalLayoutDlg")) self.groupBox = GroupBox(self) verticalLayoutDlg.addWidget(self.groupBox) self.optBefore = QRadioButton(self.groupBox) self.optBefore.setObjectName("optBefore") self.optBefore.setText("Insert Before") self.groupBox.Add = self.optBefore self.optAfter = QRadioButton(self.groupBox) self.optAfter.setObjectName("optAfter") self.optAfter.setText("Insert After") self.groupBox.Add = self.optAfter self.optAppend = QRadioButton(self.groupBox) self.optAppend.setObjectName("optAppend") self.optAppend.setText("Append") self.groupBox.Add = self.optAppend self.btnBoxOkCancel = QDialogButtonBox(self) self.btnBoxOkCancel.setObjectName(("btnBoxOkCancel")) self.btnBoxOkCancel.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Ok) # btnOK = self.btnBoxOkCancel.button(QDialogButtonBox.Ok) # btnOK.setText("Create") self.connect(self.btnBoxOkCancel, SIGNAL("accepted()"), self.acceptDlg) self.connect(self.btnBoxOkCancel, SIGNAL("rejected()"), self.reject) verticalLayoutDlg.addWidget(self.btnBoxOkCancel) def acceptDlg(self): self.accept() @staticmethod def smethod_0(listInsertPosition_0): flag = False dlgAixmInsertLeg = DlgAixmInsertLeg() if (listInsertPosition_0 == ListInsertPosition.Before): dlgAixmInsertLeg.optBefore.setChecked(True) elif (listInsertPosition_0 != ListInsertPosition.After): dlgAixmInsertLeg.optAppend.setChecked(True) else: dlgAixmInsertLeg.optAfter.setChecked(True) resultDlg = dlgAixmInsertLeg.exec_() if (resultDlg != 1): flag = False else: if (dlgAixmInsertLeg.optBefore.isChecked()): listInsertPosition_0 = ListInsertPosition.Before elif (not dlgAixmInsertLeg.optAfter.isChecked()): listInsertPosition_0 = ListInsertPosition.Append else: listInsertPosition_0 = ListInsertPosition.After flag = True return flag, listInsertPosition_0
class CompForm(QDialog): def __init__(self, sid, parent=None): super(CompForm, self).__init__(parent) self.sid = sid ko = 0 layout1 = QGridLayout() try: details = self.pullDetails(self.sid) pagetitle = str(details[1]) +' ' except: details = [] pagetitle = 'None' arr = self.pullClass(self.sid) hold ={} for val in arr: self.num = val self.c = QRadioButton('cb'+str(val)) self.c.setText(str(arr[val][0])) self.c.setObjectName("chk"+str(val)) if (arr[val][3] == 1): self.c.setChecked(True) else: self.c.setChecked(False) self.c.toggled.connect(lambda state, x=val, y=self.c: self.chkFunc(x, y)) self.d = QLabel() self.d.setText(arr[val][1] + ' - '+ arr[val][2]) self.b = QPushButton() self.b.setObjectName("btn"+str(val)) self.b.setText('Terms') self.b1 = QPushButton() self.b1.setObjectName("btn1"+str(val)) self.b1.setText('Edit') hold["btn"+str(val)] = self.b layout1.addWidget(self.c, ko, 0) layout1.addWidget(self.d, ko, 1) layout1.addWidget(self.b, ko, 2) ko += 1 for j in arr: self.h = j b = "btn"+str(j) self.connect(hold[b], SIGNAL("clicked()"), lambda gh=j: self.lunchEditForm(gh, self)) groupBox1 = QGroupBox('All Terms') groupBox1.setLayout(layout1) self.pb = QPushButton() self.pb.setObjectName("Add") self.pb.setText("Add Term") self.pb1 = QPushButton() self.pb1.setObjectName("Cancel") self.pb1.setText("Cancel") hbo = QHBoxLayout() hbo.addWidget(self.pb1) hbo.addStretch() hbo.addWidget(self.pb) groupBox2 = QGroupBox('') groupBox2.setLayout(hbo) grid = QGridLayout() grid.addWidget(groupBox1, 0, 0) grid.addWidget(groupBox2, 1, 0) self.setLayout(grid) self.connect(self.pb, SIGNAL("clicked()"), lambda: self.lunchAddForm(self.sid, self)) self.connect(self.pb1, SIGNAL("clicked()"), lambda: self.button_close(self)) self.setWindowTitle(pagetitle) def chkFunc(self, a, b): # shost is a QString object self.a = a self.b = b g = Db() g.update('datas', {'active':1}, {'active':0}) if b.isChecked() == True: y = { 'active':0} else: y = { 'active':1} z = {'id': self.a} j = g.update('datas', y, z) return j def pullClass(self, a): self.a = a cn = Db() cn.createData() datas = cn.select('datas', '' , '', {'subID':self.a}) arr = {} try: for j in datas: arr[j[0]] =[j[1], j[3], j[4], j[5]] except: pass return arr def pullDetails(self, a): self.a = a cn = Db() datas = cn.select('datas', '' , 1, {'id':self.a}) return datas def lunchEditForm(self, a, b): b.close() self.a = a self.form = EditForm(self.a) self.form.show() def lunchAddForm(self, a, b): b.close() self.a = a self.form = AddForm(self.a) self.form.show() def lunchForm(self): self.form = super.SubjectForm() self.form.show() def button_close(self, a): a.close() from frmsubject import SubjectForm self.form = SubjectForm() self.form.show()