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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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]
Ejemplo n.º 5
0
Archivo: mplayer.py Proyecto: Ptaah/Ekd
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
Ejemplo n.º 6
0
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()
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
        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
Ejemplo n.º 10
0
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
Ejemplo n.º 11
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()