Ejemplo n.º 1
0
class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        internet_usage = search()
        super(MainWindow, self).__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.lcdNumber.display(internet_usage)

        # daily limit 20GB
        usage_percent = float(internet_usage) / 20 * 100
        print(usage_percent)

        # set the progress bar
        self.ui.progressBar.setValue(usage_percent)
        self.ui.progressBar.setFormat("%.02f %%" % usage_percent)

        # this is a thread which can get the data and reflash the window
        self.thread = Thread()
        self.thread.trigger.connect(self.reflasher)

        self.thread.start()

        self.setWindowTitle("網路用量表 %.01f %%" % usage_percent)

    def reflasher(self, internet_usage):
        usage_percent = float(internet_usage) / 20 * 100
        print(usage_percent)

        self.setWindowTitle("網路用量表 %.01f %%" % usage_percent)

        self.ui.progressBar.setValue(usage_percent)
        self.ui.progressBar.setFormat("%.02f %%" % usage_percent)

        self.ui.lcdNumber.display(internet_usage)
        print('refreshed')
Ejemplo n.º 2
0
Archivo: app.py Proyecto: pymft/mft-05
class AppWindow(QDialog):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Dialog()

        self.ui.setupUi(self)
        self.show()
Ejemplo n.º 3
0
class dialog(QtWidgets.QDialog):
    def __init__(self, parent=None):
        super().__init__(parent)
        # Create an instance of the GUI
        self.ui = Ui_Dialog()
        # Run the .setupUi() method to show the GUI
        self.ui.setupUi(self)
Ejemplo n.º 4
0
def verifyUser(licenseId, random_code):

    syntaxSms = "Syxtax SMS: V " + str(licenseId) + \
        " " + str(random_code) + " Send +84343021605"
    note = """
    * You have 3 attempts OTP *
    * Don't share OTP for anyone *
    * OTP will 5 minutes expired *
    """
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    ui.lSmsSyntax.setText(syntaxSms)
    ui.lDetails.setStyleSheet("color: red")
    font = QtGui.QFont()
    font.setPointSize(10)
    font.setItalic(True)
    ui.lDetails.setFont(font)
    ui.lDetails.setText(note)
    if Dialog.exec_() == QtWidgets.QDialog.Accepted:
        value = ui.lineEdit.text()
        Dialog.deleteLater()
        return value
    else:
        import sys
        sys.exit()
    Dialog.show()
Ejemplo n.º 5
0
    def __init__(self, stu):
        self.dialog = QtWidgets.QDialog()
        window = Ui_Dialog()
        window.setupUi(self.dialog)
        self.dialog.setWindowTitle("信息修改")
        self.dialog.setWindowModality(QtCore.Qt.ApplicationModal)
        self.dialog.setWindowFlags(QtCore.Qt.WindowCloseButtonHint)
        self.id = window.lineEdit_id
        self.name = window.lineEdit_name
        self.gender = window.lineEdit_gender
        self.grade = window.lineEdit_grade
        self.major = window.lineEdit_major
        self.score1 = window.lineEdit_score1
        self.score2 = window.lineEdit_score2
        self.score3 = window.lineEdit_score3
        self.score4 = window.lineEdit_score4
        self.okButton = window.buttonBox.accepted
        self.cancelButton = window.buttonBox.rejected

        self.id.setText(stu.id)
        self.id.setEnabled(False)
        self.name.setText(stu.name)
        self.gender.setText(stu.gender)
        self.grade.setText(stu.grade)
        self.major.setText(stu.major)
        self.score1.setText(stu.score1)
        self.score2.setText(stu.score2)
        self.score3.setText(stu.score3)
        self.score4.setText(stu.score4)

        self.okButton.connect(self.getValue)
Ejemplo n.º 6
0
 def raiseerror(self):
     dialog = QtWidgets.QDialog()
     ex = Ui_Dialog()
     ex.setupUi(dialog)
     dialog.activateWindow()
     dialog.exec_()
     dialog.show()
Ejemplo n.º 7
0
class Ui(QtWidgets.QDialog):
    def __init__(self, parent=None):
        super(Ui, self).__init__(parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self) #inittial
        self.ui.tableWidget.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) #read only
        self.ui.tableWidget.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)#单个选择
        self.ui.tableWidget.setAlternatingRowColors(1) #隔行显示颜色

        self.result = []


    def search(self):
        key = self.ui.lineEdit.text()
        if len(key)==40:
            #composite link
            link = MAGNET_HEAD+key
        else:
            handle = NetHandler()
            self.result=handle.getMagnetLink(key) #search from web
        #show in tableWidget
        j=0
        #debug
        '''for i in result:
            print type(i),i['hash']'''
        for i in self.result:
            self.ui.tableWidget.setItem(j,0,QtWidgets.QTableWidgetItem(MAGNET_HEAD+(self.result[j]['hash'])))
            self.ui.tableWidget.setItem(j,1,QtWidgets.QTableWidgetItem(self.result[j]['size']))
            self.ui.tableWidget.setItem(j,2,QtWidgets.QTableWidgetItem(self.result[j]['date']))
            j+=1
        #self.ui.tableWidget.resizeColumnsToContents()

    def currentRow(self):
        return 0 if self.ui.tableWidget.currentColumn() != 0 else self.ui.tableWidget.currentRow()

    def currenritem(self):
        return self.ui.tableWidget.item(0,0) if self.ui.tableWidget.currentColumn()!=0 else self.ui.tableWidget.currentItem()

    def copy(self):
         QtGui.QGuiApplication.clipboard().setText(self.currenritem().text())

    def download(self):
        key_hash = self.currenritem().text()[-40:]
        filePath = QtWidgets.QFileDialog.getSaveFileName(self,u"保存种子",self.result[self.currentRow()]['name'],"*.torrent") #*.torrent;; *.png;; *.jpg
        if filePath==None:
            return
        handle=NetHandler()
        handle.getTorrent(key_hash,filePath[0]+'.torrent')

     #status bar
    def showStatus(self):
        pass

    def bindEvent(self):
        #bind event
        self.ui.searchBtn.clicked.connect(self.search)
        self.ui.copyBtn.clicked.connect(self.copy)
        self.ui.downBtn.clicked.connect(self.download)
Ejemplo n.º 8
0
class MainApplication(QDialog):
    """SetUp the dialog generated with pyside-uic."""
    def __init__(self, parent=None):
        super(MainApplication, self).__init__(parent)
        self.createWidgets()

    def createWidgets(self):
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
Ejemplo n.º 9
0
    def show_dialog(self):
        self.dialog = QtWidgets.QDialog()
        ui = Ui_Dialog()
        ui.setupUi(self.dialog)
        self.dialog.show()

        rsp = self.dialog.exec_()
        if rsp == QtWidgets.QDialog.finished:
            self.on_new_click()
Ejemplo n.º 10
0
class Dialog(QDialog):
    def __init__(self, error, parent=None):
        super().__init__(parent)
        self.ui = Ui_Dialog()
        self.error = error
        self.ui.setupUi(self)
        if self.error == "reserve":
            self.ui.Error.setText("Cannot reserve today")
        if self.error == "date":
            self.ui.Error.setText("Invalid date format. Valid date format is day.month.year")
        if self.error == 'daterange':
            self.ui.Error.setText("Invalid date range")
Ejemplo n.º 11
0
class Dialog(QtGui.QDialog):
    def __init__(self):
        QtGui.QDialog.__init__(self)
        self.settings = Storage()
        self.ui = MainDlg()
        self.ui.setupUi(self)
        self.resize(self.settings.size)
        self.move(self.settings.pos)

        self.file_filter = ''
        self.modelCommits = CommitModel(self.ui.listCommit, self._on_select_commit)
        self.modelFiles = DirFileModel(self.ui.listFiles, self._on_select_file)
        self.modelFileHistory = FileHistoryModel(self.ui.listFileHistory)
        self.ui.edtFindFile.textChanged.connect(self.set_file_filter)
        self.ui.btnCleanFltr.pressed.connect(lambda: self.ui.edtFindFile.clear())
        self.ui.btnSettings.pressed.connect(self._show_settings)

        self._fill_commits()

    def closeEvent(self, e):
        self.settings.Save(self)
        e.accept()

    def done(self, p_int):
        self.settings.Save(self)
        QtGui.QDialog.done(self, p_int)


    def set_file_filter(self, word):
        self.file_filter = word.upper()
        self._fill_commits()

    def _fill_commits(self):
        self.modelCommits.set_commits([])
        try:
            self.git_repo = Git2Repo(self.settings.workdir)
            commits = self.git_repo.get_commits(self.file_filter)
            self.modelCommits.set_commits(commits)
        except Exception as e:
            QtGui.QMessageBox.critical(self, "workdir", "[%s] no working dir" % e)

    def _on_select_commit(self, commit):
        self.modelFiles.set_files(commit, self.git_repo, self.file_filter)
        self.modelFileHistory.set_commits(None, [], None)

    def _on_select_file(self, file_oid, file_name):
        commits = self.git_repo.get_file_history_commits(file_oid, file_name)
        self.modelFileHistory.set_commits(self.git_repo.repo, commits, file_name)

    def _show_settings(self):
        if(self.settings.ShowDlg()):
            self._fill_commits()
Ejemplo n.º 12
0
class Dialog(QDialog):
    def __init__(self):
        super(Dialog, self).__init__()

        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

        tbl = self.ui.schedule_tbl

        self.in_file = open('/Users/howard/PreferencesDialog/workfile')
        self.preference_string = self.in_file.read()

        #       self.preference_string = self.preference_string.strip('(')
        #        self.preference_string = self.preference_string.strip(')')
        self.preference_string = self.preference_string.split(sep=';')

        self.preference_string = list(filter(
            None, self.preference_string))  # fastest

        self.emp = []
        for x in self.preference_string:
            y = x.split(sep=',')
            z = list(filter(None, y))
            self.emp.append(z)

#       self.preferences = (self.preference_string,)

        pref_btn = self.ui.preferences_btn
        rec_btn = self.ui.recommendations_btn
        make_btn = self.ui.create_schedule_btn
        lkahd_btn = self.ui.look_ahead_btn

        pref_btn.clicked.connect(self.gt_prefs)
        rec_btn.clicked.connect(self.gt_rec)
        make_btn.clicked.connect(self.mk_sched)
        lkahd_btn.clicked.connect(self.lkahd)

    @pyqtSlot()
    def gt_prefs(self):
        pass

    @pyqtSlot()
    def gt_rec(self):
        pass

    @pyqtSlot()
    def mk_sched(self):
        pass

    @pyqtSlot()
    def lkahd(self):
        pass
class Dialog(QDialog):
    def __init__(self):
        QDialog.__init__(self)
        self.dialog = Ui_Dialog()
        self.dialog.setupUi(self)

        self.dialog.pushButton.clicked.connect(self.dialog_close)

    def dialog_close(self):
        self.close()

    def dialog_change(self, text):
        self.dialog.label.setText(text)
Ejemplo n.º 14
0
class myfirstui(QtWidgets.QDialog, Ui_Dialog):
    def __init__(self):
        super(myfirstui,self).__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.buttonBox.accepted.connect(self.pushClick)
        self.ui.buttonBox.rejected.connect(self.close)

    def pushClick(self):
        print ("ok button clicked")

        
    def close(self):
        print("cancel button clicked")
Ejemplo n.º 15
0
 def __add_liquid_button_clicked(self):
     Dialog = QtWidgets.QDialog()
     ui = Ui_Dialog(LIQUIDS[self.ui.theoryCombobox.currentText()])
     ui.setupUi(Dialog)
     Dialog.show()
     rsp = Dialog.exec_()
     if rsp == QtWidgets.QDialog.Accepted:
         self.liquids[self.ui.theoryCombobox.currentText()] = []
         for index in range(ui.myList.count()):
             self.liquids[self.ui.theoryCombobox.currentText()].append(
                 ui.myList.item(index).text())
         self.__create_input_bar()
         self.__fullfill_table()
     else:
         pass
Ejemplo n.º 16
0
class QmyDialog(QDialog):
    def __init__(self, parent=None):
        super().__init__(parent=parent)  # 构造窗体
        self._ui = Ui_Dialog()  # 构造UI对象
        self._ui.setupUi(self)  # 构造UI

        # 将信号与函数绑定
        self._ui.radioRed.clicked.connect(self.my_setTextColor)
        self._ui.radioBlack.clicked.connect(self.my_setTextColor)
        self._ui.radioBlue.clicked.connect(self.my_setTextColor)

    def on_btnClear_clicked(self):  # 清除文本框
        self._ui.textEdit.clear()

    @pyqtSlot(bool)
    def on_checkBoxBold_clicked(self, checked: bool):  # 设置粗体
        font = self._ui.textEdit.font()  # 获取字体样式
        font.setBold(checked)  # 设置粗体
        self._ui.textEdit.setFont(font)  # 改变文本框字体c

    # @pyqtSlot(bool)
    def on_chkBoxUnder_clicked(self):  # 设置下划线
        font = self._ui.textEdit.font()
        checked = self._ui.chkBoxUnder.isChecked()  # 获取勾选状态,和使用装饰器效果一致
        font.setUnderline(checked)
        self._ui.textEdit.setFont(font)

    @pyqtSlot(bool)
    def on_chkBoxItalic_clicked(self, checked: bool):  # 示威者斜体
        font = self._ui.textEdit.font()
        font.setItalic(checked)
        self._ui.textEdit.setFont(font)

    def my_setTextColor(self):  # 设置颜色
        palette = self._ui.textEdit.palette()  # 获取字体调色板

        if (self._ui.radioBlack.isChecked()):  # 更改调色板颜色
            palette.setColor(QPalette.Text, Qt.black)
        elif (self._ui.radioBlue.isChecked()):
            palette.setColor(QPalette.Text, Qt.blue)
        else:
            palette.setColor(QPalette.Text, Qt.red)

        self._ui.textEdit.setPalette(palette)  # 设置字体颜色
Ejemplo n.º 17
0
class DialogApplication(QtWidgets.QDialog):
    def __init__(self):
        super().__init__()

        # Set up the dialog
        self.dialog = Ui_Dialog()
        self.dialog.setupUi(self)

        # Setup buttons
        self.dialog.radioButtonCelcius2Farenheit.clicked.connect(self.handle_change)
        self.dialog.radioButtonMeters2Centimeters.clicked.connect(self.handle_change)


        # Present the dialog
        self.show()

    def handle_change(self):

        string_input = self.dialog.lineEditInput.text()

        if self.get_option() == 1:
            result = self.meters2centimeters(string_input)
        else:
            result = self.celsius2fahrenheit(string_input)

        self.dialog.lineEditOutput.setText(result)
        
    def get_option(self):
        if self.dialog.radioButtonMeters2Centimeters.isChecked():
            return 1
        else:
            return 2

    def meters2centimeters(self, meters : str):
        target = int(meters)
        result = target * 100
        return str(result) + " cm"

    def celsius2fahrenheit(self, celsius: str):
        target = int(celsius)
        result = round(((target * 9 / 5) + 32), 2)
        return str(result) + " F"
Ejemplo n.º 18
0
    def __init__(self):
        self.dialog = QtWidgets.QDialog()
        window = Ui_Dialog()
        window.setupUi(self.dialog)
        self.dialog.setWindowTitle("档案信息")
        self.dialog.setWindowModality(QtCore.Qt.ApplicationModal)
        self.dialog.setWindowFlags(QtCore.Qt.WindowCloseButtonHint)
        self.id = window.lineEdit_id
        self.name = window.lineEdit_name
        self.gender = window.lineEdit_gender
        self.grade = window.lineEdit_grade
        self.major = window.lineEdit_major
        self.score1 = window.lineEdit_score1
        self.score2 = window.lineEdit_score2
        self.score3 = window.lineEdit_score3
        self.score4 = window.lineEdit_score4
        self.okButton = window.buttonBox.accepted
        self.cancelButton = window.buttonBox.rejected

        self.okButton.connect(self.getValue)
Ejemplo n.º 19
0
def searchInspector(search):
    """
    A Qt based GUI to inspect the output of search algorithms. 
    
    Parameters
    ----------
    search: list of Register.optstepnd-array
        The output of a registration.
    """
    
    try:
        from PyQt4.QtGui import QApplication, QDialog
        from dialog import Ui_Dialog
    except Exception:
        print "Missing a required library - please install pyQt4."
        return
    
    app = QApplication(sys.argv)
    window = QDialog()
    ui = Ui_Dialog()
    ui.setupUi(window)
    ui.updateList(search)
    window.show()
    app.exec_()
Ejemplo n.º 20
0
def searchInspector(search):
    """
    A Qt based GUI to inspect the output of search algorithms. 
    
    Parameters
    ----------
    search: list of Register.optstepnd-array
        The output of a registration.
    """

    try:
        from PyQt4.QtGui import QApplication, QDialog
        from dialog import Ui_Dialog
    except Exception:
        print "Missing a required library - please install pyQt4."
        return

    app = QApplication(sys.argv)
    window = QDialog()
    ui = Ui_Dialog()
    ui.setupUi(window)
    ui.updateList(search)
    window.show()
    app.exec_()
Ejemplo n.º 21
0
class AppWindow(QDialog):
	def __init__(self):
		super().__init__()
		self.ui = Ui_Dialog()
		self.ui.setupUi(self)

		print("prepare face_detection")
		self.detector = MTCNN()
		K.set_image_data_format('channels_first')
		self.FRmodel = faceRecoModel(input_shape=(3, 96, 96))

		self.FRmodel.compile(optimizer = 'adam', loss = self.triplet_loss, metrics = ['accuracy'])
		load_weights_from_FaceNet(self.FRmodel)

		print("Load model security")
		self.model_name = "trained_models/replay_attack_trained_models/replay-attack_ycrcb_luv_extraTreesClassifier.pkl"
		self.thresh = 0.725
		self.clf = None
		self.sample_number = 1
		self.count = 0
		self.measures = np.zeros(self.sample_number, dtype=np.float)

		try:
			self.clf = joblib.load(self.model_name)
		except IOError as e:
			print ("Error loading model")
			exit(0)

		print("onnect database-server")
		self.myclient = pymongo.MongoClient("mongodb+srv://VuGiaBao:[email protected]/face_recognition?retryWrites=true&w=majority")
		self.mydb = self.myclient["Attendance_checking"]
		self.CSDL_col = self.mydb["CSDL"]
		self.Cham_cong_col = self.mydb["Cham_cong"]

		print("call database func")
		self.data=self.prepare_database()

		print("create a timer")
		self.timer = QTimer()
		print("set timer timeout callback function")
		self.timer.timeout.connect(self.recog_pushdata)
		print("Get control_bt callback clicked  function")
		self.ui.Open_bt.clicked.connect(self.controlTimer)

	def calc_hist(self,img):
		histogram = [0] * 3
		for j in range(3):
			histr = cv2.calcHist([img], [j], None, [256], [0, 256])
			histr *= 255.0 / histr.max()
			histogram[j] = histr
		return np.array(histogram)

	#create triploss function
	def triplet_loss(self,y_true, y_pred, alpha = 0.3):
		anchor, positive, negative = y_pred[0], y_pred[1], y_pred[2]
		pos_dist = tf.reduce_sum(tf.square(tf.subtract(anchor,positive)), axis=-1)
		neg_dist = tf.reduce_sum(tf.square(tf.subtract(anchor,negative)), axis=-1)
		basic_loss = tf.add(tf.subtract(pos_dist, neg_dist), alpha)
		self.loss = tf.reduce_sum(tf.maximum(basic_loss, 0.0))
		return self.loss

	#define database
	def prepare_database(self):
		self.database = {}
		for folder in glob.glob("facenet_face_recognition_master/images/*"):
			for file in glob.glob(folder+"/*"):
				self.identity = os.path.splitext(os.path.basename(file))[0]
				self.database[self.identity] = img_path_to_encoding(file, self.FRmodel)
		return self.database

	#define recog function
	def who_is_it(self,image, database, model):
		self.encoding = img_to_encoding(image, model)
		self.min_dist = 100
		self.identity = None

		# Loop over the database dictionary's names and encodings.
		for (name, db_enc) in database.items():
			dist = np.linalg.norm(db_enc - self.encoding)
			if dist < self.min_dist:
				self.min_dist = dist
				self.identity = name

		if self.min_dist > 0.52:
			return None
		else:
			self.identity=self.identity.split("_")[0]
			return self.identity

	def recog_pushdata(self):
		# Capture frame-by-frame
		ret, image = self.cap.read()
		result = self.detector.detect_faces(image)
		self.measures[self.count%self.sample_number]=0
		point = (0,0)


		print("Running...")
		for person in result:
			bounding_box = person['box']
			cv2.rectangle(image,(bounding_box[0], bounding_box[1]),(bounding_box[0]+bounding_box[2], bounding_box[1] + bounding_box[3]),(0,155,255),2)
			crop_img = image[bounding_box[1]:bounding_box[1]+bounding_box[3], bounding_box[0]:bounding_box[0] + bounding_box[2]]

			(x, y, h, w) = bounding_box
			roi = image[y:y+h, x:x+w]

			img_ycrcb = cv2.cvtColor(roi, cv2.COLOR_BGR2YCR_CB)
			img_luv = cv2.cvtColor(roi, cv2.COLOR_BGR2LUV)

			ycrcb_hist = self.calc_hist(img_ycrcb)
			luv_hist = self.calc_hist(img_luv)

			feature_vector = np.append(ycrcb_hist.ravel(), luv_hist.ravel())
			feature_vector = feature_vector.reshape(1, len(feature_vector))

			prediction = self.clf.predict_proba(feature_vector)
			prob = prediction[0][1]

			self.measures[self.count % self.sample_number] = prob
			point = (x, y-5)

			if 0 not in self.measures:
				text = "FAKE"
				if np.mean(self.measures) >= np.float(self.thresh):
					text = "REAL"
					cv2.putText(img=image, text=text, org=point, fontFace=cv2.FONT_HERSHEY_SIMPLEX, fontScale=0.9, color=(0, 255, 0),thickness=2, lineType=cv2.LINE_AA)
					real = True
				else:
					cv2.putText(img=image, text=text, org=point, fontFace=cv2.FONT_HERSHEY_SIMPLEX, fontScale=0.9,color=(255, 0, 0), thickness=2, lineType=cv2.LINE_AA)
					real = False

			#call recog func
			if (real):
				id=self.who_is_it(crop_img, self.data, self.FRmodel)
				image=cv2.putText(image,id,(bounding_box[0],bounding_box[1]+bounding_box[3]),cv2.FONT_HERSHEY_SIMPLEX,1, (255, 255, 255), 2, cv2.LINE_AA)
				print (id)

				#push database
				if id == None:
					pass
				else:
					self.ID_found={"ID":id}
					self.res=self.CSDL_col.find_one(self.ID_found,{"_id":0})
					self.res['realtime']= datetime.now(pytz.timezone("Asia/Bangkok"))
					self.Cham_cong_col.insert_one(self.res)


		# get frame infos
		image=cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
		height, width, channel = image.shape
		step = channel * width
		print("create QImage from RGB frame")
		qImg = QImage(image, width, height, step, QImage.Format_RGB888)
		print("show frame in img_label")
		self.ui.label.setPixmap(QPixmap.fromImage(qImg))

	# start/stop timer
	def controlTimer(self):
		# if timer is stopped
		if not self.timer.isActive():
			# create video capture
			self.cap = cv2.VideoCapture(0)
			# start timer
			self.timer.start(20)
			# update control_bt text
			self.ui.Open_bt.setText("Close")

		# if timer is started
		else:
			# stop timer
			self.timer.stop()
			# release video capture
			self.cap.release()
			# update control_bt text
			self.ui.Open_bt.setText("Open")
Ejemplo n.º 22
0
class Dialog(QDialog):
    def __init__(self):
        super(Dialog, self).__init__()
        #list that will store all info from preferences
        #to be written to file
        #must use set() function after apply

        info = []

        self.out_file = open('workfile', 'w')

        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

        self.buttons = self.ui.buttonBox.buttons()
        self.apply_button = self.buttons[2]
        self.cancel_button = self.buttons[1]
        self.ok_button = self.buttons[0]

        self.ok_button.clicked.connect(self.accept)
        self.cancel_button.clicked.connect(self.reject)
        self.apply_button.clicked.connect(self.apply_changes)

        self.all_chk = self.get_child_widget(self.ui.days_available_grpbox,
                                             QCheckBox, "all_days_chk")
        self.all_chk.clicked.connect(self.check_all_days)

        self.time_from_edit = self.get_child_widget(
            self.ui.time_available_grpbox, QTimeEdit,
            "available_from_time_edit")
        self.time_to_edit = self.get_child_widget(
            self.ui.time_available_grpbox, QTimeEdit, "available_to_time_edit")

    @pyqtSlot()
    def apply_changes(self):

        print(self.get_all_options())

    def get_all_options(self):
        loc = self.get_location()
        cat = self.get_category()
        prof = self.get_professor()
        days = self.get_days()
        time_to = self.get_time_to()
        time_from = self.get_time_from()
        time_interval = self.get_time_available()
        subjects = self.get_subject()
        num_courses = self.get_num_course_interval()

        info_pre = (loc, cat, prof, days, time_to, time_from, time_interval,
                    subjects, num_courses)
        #go to beginning of file
        self.out_file.seek(0)
        #delete contents
        self.out_file.truncate()
        #finally, write new tuple to file
        #       self.out_file.write(str(info_pre))

        for x in info_pre:
            y = str(x)
            z = y.strip('(')
            q = z.strip(')')
            self.out_file.write(str(q) + ";")

        return info_pre

    def get_time_available(self):
        return tuple(map(sub, self.get_time_to(), self.get_time_from()))

    def get_time_from(self):
        time_from = self.get_child_widget(self.ui.time_available_grpbox,
                                          QTimeEdit,
                                          "available_from_time_edit")
        return (time_from.time().hour(), time_from.time().minute())
        #print(time_from.time().hour())
        #print(str(time_to.time().hour()))
    def get_time_to(self):
        time_to = self.get_child_widget(self.ui.time_available_grpbox,
                                        QTimeEdit, "available_to_time_edit")
        return (time_to.time().hour(), time_to.time().minute())

    def get_category(self):
        # category = self.ui.category_grpbox.findChild(QComboBox,"category_comb")
        # category_text = str(category.currentText())
        return (self.get_cwtext(self.ui.category_grpbox, QComboBox,
                                "category_comb"), )

    def get_location(self):
        return (self.get_cwtext(self.ui.location_grpbox, QComboBox,
                                "location_comb"), )

    def get_days(self):

        return (self.get_checkbox_helper(self.ui.days_available_grpbox,
                                         QCheckBox, "all_days_chk"),
                self.get_checkbox_helper(self.ui.days_available_grpbox,
                                         QCheckBox, "monday_chk"),
                self.get_checkbox_helper(self.ui.days_available_grpbox,
                                         QCheckBox, "tues_chk"),
                self.get_checkbox_helper(self.ui.days_available_grpbox,
                                         QCheckBox, "wed_chk"),
                self.get_checkbox_helper(self.ui.days_available_grpbox,
                                         QCheckBox, "thurs_chk"),
                self.get_checkbox_helper(self.ui.days_available_grpbox,
                                         QCheckBox, "fri_chk"))

    @pyqtSlot()
    def check_all_days(self):
        all_is_checked = self.get_checkbox_helper(
            self.ui.days_available_grpbox, QCheckBox, "all_days_chk")
        if all_is_checked:
            self.check_rest()

    def check_rest(self):
        monday = self.get_child_widget(self.ui.days_available_grpbox,
                                       QCheckBox, "monday_chk")
        tuesday = self.get_child_widget(self.ui.days_available_grpbox,
                                        QCheckBox, "tues_chk")
        wednesday = self.get_child_widget(self.ui.days_available_grpbox,
                                          QCheckBox, "wed_chk")
        thursday = self.get_child_widget(self.ui.days_available_grpbox,
                                         QCheckBox, "thurs_chk")
        friday = self.get_child_widget(self.ui.days_available_grpbox,
                                       QCheckBox, "fri_chk")

        monday.setChecked(True)
        tuesday.setChecked(True)
        wednesday.setChecked(True)
        thursday.setChecked(True)
        friday.setChecked(True)

        #immediately update gui to reflect changes
        #note: choice of monday is arbitrary
        monday.repaint()

    def get_subject(self):
        return (self.get_cwtext(self.ui.subject_grpbox, QComboBox,
                                "subject_comb"), )

    def get_num_course_interval(self):
        #        min_course_w = self.get_child_widget(self.ui.min_courses_grpbox,QSpinBox,"min_coursees_spin").value()
        min_course_w = self.ui.min_courses_grpbox.findChild(
            QSpinBox, "min_courses_spin")
        min_num_course = min_course_w.value()
        #        max_course_w = self.get_child_widget(self.ui.max_courses_grpbox, QSpinBox, "max_courses_spin").value()
        max_course_w = self.ui.max_courses_grpbox.findChild(
            QSpinBox, "max_courses_spin")
        max_num_course = max_course_w.value()
        return (min_num_course, max_num_course)

    def get_child_widget(self, parent, child_widget_type, child_name):
        child = parent.findChild(child_widget_type, child_name)
        return child

    def get_checkbox_helper(self, parent, child_widget_type, child_name):
        child = parent.findChild(child_widget_type, child_name)
        child_is_checked = child.isChecked()
        return child_is_checked

    def get_professor(self):
        #comma after makes it a tuple
        return (self.get_cwtext(self.ui.professor_grpbox, QComboBox,
                                "professor_comb"), )

    def get_cwtext(self, parent, child_widget_type, child_name):
        child = parent.findChild(child_widget_type, child_name)
        child_text = str(child.currentText())
        return child_text
Ejemplo n.º 23
0
class Preferences_Dialog(QDialog):
    def __init__(self):
        super(Preferences_Dialog, self).__init__()
        #list that will store all info from preferences
        #to be written to file
        #must use set() function after apply

        #info = []

        #self.out_file = open('workfile','w')

        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

        self.buttons = self.ui.buttonBox.buttons()
        self.apply_button = self.buttons[2]
        self.cancel_button = self.buttons[1]
        self.ok_button = self.buttons[0]

        self.remove_cat_btn = self.ui.remove_cat_btn
        self.remove_loc_btn = self.ui.remove_loc_btn
        self.remove_prof_btn = self.ui.remove_prof_btn
        self.remove_subj_btn = self.ui.remove_sub_btn

        self.ok_button.clicked.connect(self.accept)
        self.cancel_button.clicked.connect(self.reject)
        self.apply_button.clicked.connect(self.apply_changes)

        self.all_chk = self.get_child_widget(self.ui.days_available_grpbox,
                                             QCheckBox, "all_days_chk")
        self.all_chk.clicked.connect(self.check_all_days)

        self.time_from_edit = self.get_child_widget(
            self.ui.time_available_grpbox, QTimeEdit,
            "available_from_time_edit")
        self.time_to_edit = self.get_child_widget(
            self.ui.time_available_grpbox, QTimeEdit, "available_to_time_edit")

        self.cat_list = self.ui.cat_list
        self.loc_list = self.ui.loc_list
        self.prof_list = self.ui.prof_list
        self.subj_list = self.ui.sub_list

        self.remove_cat_btn.clicked.connect(
            lambda: self.remove_item(self.cat_list))
        self.remove_loc_btn.clicked.connect(
            lambda: self.remove_item(self.loc_list))
        self.remove_prof_btn.clicked.connect(
            lambda: self.remove_item(self.prof_list))
        self.remove_subj_btn.clicked.connect(
            lambda: self.remove_item(self.subj_list))

        self.df = pd.read_csv(
            '/Users/howard/AdviseMeRW/Recommendations/Recommendations/newFile.csv'
        )
        self.df_dict = self.df.to_dict('records')

        self.cat_comb = self.ui.category_comb
        self.loc_comb = self.ui.location_comb
        self.prof_comb = self.ui.professor_comb
        self.subj_comb = self.ui.subject_comb

        # self.cat_list.addItems(self.df_dict['Categories'] for d in self.df_dict.strip('.').split('.'))

        set_cat = set()
        for i, cat in enumerate(d['Categories'] for d in self.df_dict):
            if cat != 'none':
                cat = cat.strip('.')
                cat = cat.split('.')
                set_cat.update(cat)
        self.cat_comb.addItems(set_cat)

        set_loc = set()

        for i, loc in enumerate(d['Location'] for d in self.df_dict):
            if loc != 'none' and type(loc) != float:
                loc = loc.strip()
                loc = loc.split(' ')
                loc.pop(1)
                loc = loc[0]
                set_loc.add(loc)

        self.loc_comb.addItems(set_loc)

        set_subj = set()
        for i, subj in enumerate(d['Subject'] for d in self.df_dict):
            if subj != 'none' and type(loc) != float:
                subj = subj.strip()
                subj = subj.title()

                set_subj.add(subj)

        self.subj_comb.addItems(set_subj)

        set_prof = set()
        for i, prof in enumerate(d['Instructor'] for d in self.df_dict):
            if prof != 'none' and type(prof) != float:
                prof = prof.strip()
                set_prof.add(prof)

        self.prof_comb.addItems(set_prof)

    @pyqtSlot()
    def apply_changes(self):

        #need to write categories, locations, professors, subjects
        category = self.get_category()
        location = self.get_location()
        professor = self.get_professor()
        subject = self.get_subject()

        if category not in self.get_all_from_list(self.cat_list):
            self.cat_list.addItem(category)
        if location not in self.get_all_from_list(self.loc_list):
            self.loc_list.addItem(location)
        if professor not in self.get_all_from_list(self.prof_list):
            self.prof_list.addItem(professor)
        if subject not in self.get_all_from_list(self.subj_list):
            self.subj_list.addItem(subject)

    @pyqtSlot()
    def remove_item(self, input_list):
        item = input_list.takeItem(input_list.currentRow())
        item = None

    @pyqtSlot()
    def accept(self):
        #loc = self.get_location()
        #cat = self.get_category()
        #prof = self.get_professor()
        days = self.get_days()

        locs = self.get_all_from_list(self.loc_list)
        cats = self.get_all_from_list(self.cat_list)
        profs = self.get_all_from_list(self.prof_list)
        subjects = self.get_all_from_list(self.subj_list)

        time_to = self.get_time_to()
        time_from = self.get_time_from()
        time_interval = self.get_time_available()
        #subjects = self.get_subject()
        num_courses = self.get_num_course_interval()

        final_courses_list = constraints.main(locs, cats, profs, days, time_to,
                                              time_from, time_interval,
                                              subjects, num_courses)
        #print(final_courses_list)

        self.sched = Schedule.Schedule_Dialog(final_courses_list)
        self.close()
        self.sched.show()

#       sched = Schedule.main()


#        self.close()

#method essentially taken from user @delnan from Stack Overflow: https://stackoverflow.com/questions/4629584/pyqt4-how-do-you-iterate-all-items-in-a-qlistwidget

    def get_all_from_list(self, list_w):
        list_items = []
        for i in range(list_w.count()):
            list_items.append(list_w.item(i).text())
        return list_items

    def get_time_available(self):
        return tuple(map(sub, self.get_time_to(), self.get_time_from()))

    def get_time_from(self):
        time_from = self.get_child_widget(self.ui.time_available_grpbox,
                                          QTimeEdit,
                                          "available_from_time_edit")
        return (time_from.time().hour(), time_from.time().minute())
        #print(time_from.time().hour())
        #print(str(time_to.time().hour()))
    def get_time_to(self):
        time_to = self.get_child_widget(self.ui.time_available_grpbox,
                                        QTimeEdit, "available_to_time_edit")
        return (time_to.time().hour(), time_to.time().minute())

    def get_category(self):
        # category = self.ui.category_grpbox.findChild(QComboBox,"category_comb")
        # category_text = str(category.currentText())
        #cat_list = []
        return self.get_cwtext(self.ui.category_grpbox, QComboBox,
                               "category_comb")
        #return cat_list

    def get_location(self):
        #loc_list = []
        return self.get_cwtext(self.ui.location_grpbox, QComboBox,
                               "location_comb")
        #return loc_list

    def get_days(self):

        return (self.get_checkbox_helper(self.ui.days_available_grpbox,
                                         QCheckBox, "all_days_chk"),
                self.get_checkbox_helper(self.ui.days_available_grpbox,
                                         QCheckBox, "monday_chk"),
                self.get_checkbox_helper(self.ui.days_available_grpbox,
                                         QCheckBox, "tues_chk"),
                self.get_checkbox_helper(self.ui.days_available_grpbox,
                                         QCheckBox, "wed_chk"),
                self.get_checkbox_helper(self.ui.days_available_grpbox,
                                         QCheckBox, "thurs_chk"),
                self.get_checkbox_helper(self.ui.days_available_grpbox,
                                         QCheckBox, "fri_chk"))

    @pyqtSlot()
    def check_all_days(self):
        all_is_checked = self.get_checkbox_helper(
            self.ui.days_available_grpbox, QCheckBox, "all_days_chk")
        if all_is_checked:
            self.check_rest()

    def check_rest(self):
        monday = self.get_child_widget(self.ui.days_available_grpbox,
                                       QCheckBox, "monday_chk")
        tuesday = self.get_child_widget(self.ui.days_available_grpbox,
                                        QCheckBox, "tues_chk")
        wednesday = self.get_child_widget(self.ui.days_available_grpbox,
                                          QCheckBox, "wed_chk")
        thursday = self.get_child_widget(self.ui.days_available_grpbox,
                                         QCheckBox, "thurs_chk")
        friday = self.get_child_widget(self.ui.days_available_grpbox,
                                       QCheckBox, "fri_chk")

        monday.setChecked(True)
        tuesday.setChecked(True)
        wednesday.setChecked(True)
        thursday.setChecked(True)
        friday.setChecked(True)

        #immediately update gui to reflect changes
        #note: choice of monday is arbitrary
        monday.repaint()

    def get_subject(self):
        #subject_list = []
        return self.get_cwtext(self.ui.subject_grpbox, QComboBox,
                               "subject_comb")
        #return subject_list

    def get_num_course_interval(self):
        min_course_w = self.ui.min_courses_grpbox.findChild(
            QSpinBox, "min_courses_spin")
        min_num_course = min_course_w.value()
        max_course_w = self.ui.max_courses_grpbox.findChild(
            QSpinBox, "max_courses_spin")
        max_num_course = max_course_w.value()
        return (min_num_course, max_num_course)

    def get_child_widget(self, parent, child_widget_type, child_name):
        child = parent.findChild(child_widget_type, child_name)
        return child

    def get_checkbox_helper(self, parent, child_widget_type, child_name):
        child = parent.findChild(child_widget_type, child_name)
        child_is_checked = child.isChecked()
        return child_is_checked

    def get_professor(self):
        #prof_list = []
        return self.get_cwtext(self.ui.professor_grpbox, QComboBox,
                               "professor_comb")
        #return prof_list

    def get_cwtext(self, parent, child_widget_type, child_name):
        child = parent.findChild(child_widget_type, child_name)
        child_text = str(child.currentText())
        return child_text
Ejemplo n.º 24
0
    def clicked(self, text):

        if text == "New":
            self.bat = 0
            self.bow = 0
            self.ar = 0
            self.wk = 0
            self.used = 0
            self.avail = 0
            self.name = ""
            self.selected = []
            self.check_player.clear()
            name, ok = QtWidgets.QInputDialog.getText(MainWindow, "Team Name",
                                                      "Enter name of team:")
            if ok:
                if name != "":
                    self.name = name
                    self.avail = 1000

                    # c = self.conn.cursor()

                    self.checkBtnState(True)
                    self.check_bat.setChecked(True)
                    self.team_name.setText(str(self.name))
                    self.setFields()

                else:
                    while ok and name == "":
                        name, ok = QtWidgets.QInputDialog.getText(
                            MainWindow, "Team Name", "Enter name of team:")

        elif text == "open":
            print(text)
            self.bat = 0
            self.bow = 0
            self.ar = 0
            self.wk = 0
            self.used = 0
            self.avail = 0
            self.name = ""
            self.selected = []
            self.check_player.clear()
            self.add_player.clear()
            c = self.conn.cursor()
            c.execute("SELECT name FROM Teams")
            teams = []
            data = c.fetchall()
            for row in data:
                teams.append(row[0])
            team, ok = QtWidgets.QInputDialog.getItem(MainWindow, "Dream",
                                                      "Choose A Team", teams,
                                                      0, False)
            c.execute("SELECT players FROM Teams where name = '" + team + "'")
            names = c.fetchone()
            names = names[0].split(", ")
            points = 0
            for name in names:
                name = name.strip("'")
                self.check_player.addItem(name)
                c.execute("SELECT value,ctg FROM fantasy WHERE player = '" +
                          name + "'")
                val_ctg = c.fetchone()
                val = val_ctg[0]
                ctg = val_ctg[1]
                points += val
                if ctg == "BAT":
                    self.bat += 1
                elif ctg == "BWL":
                    self.bow += 1
                elif ctg == "AR":
                    self.ar += 1
                elif ctg == "WK":
                    self.wk += 1
            self.used = points
            self.team_name.setText(str(name))
            self.setFields()

        elif text == "save":
            c = self.conn.cursor()
            c.execute(
                "CREATE TABLE IF NOT EXISTS Teams(name text, players text,value integer)"
            )
            if len(self.selected) != 11:
                self.warn("not enough players")
            else:
                players = str(self.selected)[1:-1]
                print(type(self.used))
                sql = 'INSERT INTO Teams VALUES ("' + self.name + '","' + players + '","' + str(
                    self.used) + '")'
                print("done")
                c.execute(sql)
                self.warn("Team Has been saved")
                self.conn.commit()

        elif text == "evaluate":
            from dialog import Ui_Dialog
            Dialog = QtWidgets.QDialog()
            ui = Ui_Dialog()
            ui.setupUi(Dialog)
            ret = Dialog.exec()
Ejemplo n.º 25
0
class MyApp:
    def __init__(self):
        self.app = QtWidgets.QApplication(sys.argv)

        self.main_window = QtWidgets.QMainWindow()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self.main_window)

        self.dialog = QtWidgets.QDialog()
        self.dialog_ui = Ui_Dialog()
        self.dialog_ui.setupUi(self.dialog)

        self.ui.textEdit.textChanged.connect(self.auto_save)
        self.ui.actionOpen.triggered.connect(self.on_open_click)
        self.ui.actionSave.triggered.connect(self.on_save_click)
        self.ui.actionNew.triggered.connect(self.on_new_click)

        self.main_window.show()
        sys.exit(self.app.exec_())

    def show_dialog(self):
        self.dialog = QtWidgets.QDialog()
        ui = Ui_Dialog()
        ui.setupUi(self.dialog)
        self.dialog.show()

        rsp = self.dialog.exec_()
        if rsp == QtWidgets.QDialog.finished:
            self.on_new_click()

    def change_window_title(self, new_title):
        self.main_window.setWindowTitle(new_title)

    # def alert(self, content):
    #     msg = QtWidgets.QMessageBox()
    #     msg.setIcon(QtWidgets.QMessageBox.Warning)
    #     msg.setWindowTitle('Something wrong')
    #     msg.setText("An error have occured.")
    #     msg.setDetailedText(content)
    #     msg.exec_()

    def dialog_alert(self, content):
        self.dialog_ui.label.setText(content)
        self.dialog_ui.pushButton.clicked.connect(self.dialog.close)

        self.dialog.show()
        self.dialog.exec_()

    @staticmethod
    def write_file(filename, content):
        with open(filename, 'w') as f:
            f.write(content)

    def auto_save(self):
        self.write_file('tmp.txt', self.ui.textEdit.toPlainText())

    def on_open_click(self):
        fname = QtWidgets.QFileDialog.getOpenFileName(parent=None, caption='Open file', directory='D:\\',
                                                      filter="Text files (*.txt);;"
                                                             "Yaml files (*.yaml);;"
                                                             "csv files (*.csv);;"
                                                             "Json files (*.json);;"
                                                             "All files (*)")
        if len(fname[0]) > 1:
            try:
                with open(fname[0], 'r') as f1:
                    self.ui.textEdit.setText(f1.read())
                self.change_window_title(fname[0])
            except Exception as e:
                self.dialog_alert(str(e))
                self.on_new_click()
        else:
            pass

    def on_save_click(self):
        fname = QtWidgets.QFileDialog.getSaveFileName(parent=None, caption='Save file', directory='D:\\',
                                                      filter="Text files (*.txt);;"
                                                             "Yaml files (*.yaml);;"
                                                             "csv files (*.csv);;"
                                                             "Json files (*.json);;"
                                                             "All files (*)")
        if len(fname[0]) > 1:
            self.write_file(fname[0], self.ui.textEdit.toPlainText())
            self.change_window_title(fname[0])
        else:
            pass

    def on_new_click(self):
        self.ui.textEdit.clear()
        self.change_window_title("Empty file")
Ejemplo n.º 26
0
class Ui(QMainWindow):
    showUpdate = pyqtSignal(list)

    def __init__(self):
        super(Ui, self).__init__()
        self.downloadPath = os.path.abspath('.')
        self.configParser = configparser.ConfigParser()
        self.configPath = ".config"
        self.md5LogName = os.path.join(self.configPath, "md5log.json")
        if not os.path.exists(self.configPath):
            os.makedirs(self.configPath)
        self.confName = os.path.join(self.configPath, "cache.cfg")
        self.login = {}
        self.coursesList = []
        self.resourceInfos = []
        self.sess = requests.session()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.initUI()
        self.show()

    def initUI(self):
        """ Initialize UI by adding more attributes to it. """
        # add button events
        self.ui.loginButton.clicked.connect(self.onClickLogin)
        self.ui.loginButton.setDefault(True)
        self.ui.getCourses.clicked.connect(self.onClickGetCourses)
        self.ui.choosePath.clicked.connect(self.onClickChoosePath)
        self.ui.downloadAll.clicked.connect(self.onClickDownloadAll)
        self.ui.refreshCertCode.clicked.connect(self.showCertImage)
        # set text editer properties
        self.ui.passwd.setEchoMode(QLineEdit.Password)
        self.ui.getCourses.setEnabled(False)
        self.ui.downloadAll.setEnabled(False)
        self.ui.logInfo.setReadOnly(True)
        self.ui.progressInfo.setReadOnly(True)
        self.ui.certCode.setPlaceholderText("验证码")
        self.ui.hintInfo.setText("以下是你选修的课程:")
        # check login configurations
        self.checkConf()
        self.ui.showPath.setText(self.downloadPath)
        # show the certification code image
        self.showCertImage()
        # initialize the status of the progress bar
        self.ui.progressBar.setRange(0, 0)
        self.ui.subProgressBar.setRange(0, 0)
        self.ui.fileProcessBar.setRange(0, 0)
        # set window title
        self.setWindowTitle("UCAS Coursewares AutoDownloader")

    def checkConf(self):
        """ Check login configurations """
        if not os.path.exists(self.confName):
            return
        self.configParser.read(self.confName)
        username = self.configParser.get('Default', 'usrname')
        password = self.configParser.get('Default', 'passwd')
        self.downloadPath = self.configParser.get('Default', 'downloadPath')
        self.ui.userName.setText(username)
        self.ui.passwd.setText(password)
        self.ui.remPasswd.setChecked(True)

    def updateConfig(self):
        """ Update config file. """
        if self.ui.remPasswd.isChecked():
            self.configParser['Default'] = {
                'usrname': self.login["userName"],
                'passwd': self.login["pwd"],
                'downloadPath': self.downloadPath
            }
            with open(self.confName, 'w') as f:
                self.configParser.write(f)

    def showCertImage(self):
        """ Show the certification image on the UI. """
        self.certCodeThread = CertCodeThread(self.sess)
        self.certCodeThread.updateUiSignal.connect(self.updateCertCode)
        self.certCodeThread.killSignal.connect(self.killShowCertCode)
        self.certCodeThread.start()

    def updateCertCode(self, signalDict):
        """ Update the certification image on the UI window. """
        self.ui.logInfo.setText(signalDict["text"])
        if signalDict["scene"] != "":
            self.ui.certImage.setScene(signalDict["scene"])

    def killShowCertCode(self):
        """ Kill show certification code image thread. """
        self.certCodeThread.terminate()

    def onClickLogin(self):
        """ Click to login. """
        self.login["userName"] = self.ui.userName.text()
        self.login["pwd"] = self.ui.passwd.text()
        self.login["certCode"] = self.ui.certCode.text()
        self.login["sb"] = "sb"
        self.login["rememberMe"] = "1"
        # print(self.login)
        self.updateConfig()
        self.loginThread = LoginThread(self.sess, self.login)
        self.loginThread.loginSignal.connect(self.updateLogInfoText)
        self.loginThread.failSignal.connect(self.failToLogin)
        self.loginThread.start()

    def updateLogInfoText(self, signalDict):
        """ Update log information window by getting signal from thread. """
        self.ui.logInfo.setText(signalDict["text"])
        self.sess = signalDict["session"]
        self.ui.certCode.setReadOnly(True)
        self.ui.userName.setReadOnly(True)
        self.ui.passwd.setReadOnly(True)
        self.ui.remPasswd.setDisabled(True)
        self.ui.getCourses.setEnabled(True)
        self.loginThread.terminate()

    def failToLogin(self, text):
        """ Work when login fails. """
        self.ui.logInfo.setText(text)
        self.loginThread.terminate()

    def onClickChoosePath(self):
        """ Choose the path to store coursewares. """
        path = QFileDialog.getExistingDirectory(self, "选择文件夹", ".")
        if path == "":
            self.ui.showPath.setText("请选择文件夹~!")
            return
        self.downloadPath = path
        self.ui.showPath.setText(self.downloadPath)
        self.ui.choosePath.setDefault(False)

    def onClickGetCourses(self):
        """ Get all the course information. """
        self.updateConfig()
        self.getCoursesThread = GetCourseThread(self.sess)
        self.getCoursesThread.getCourseSignal.connect(self.updateCoursesList)
        self.getCoursesThread.finishSignal.connect(self.killCourseThread)
        self.getCoursesThread.error.connect(self.showError)
        self.getCoursesThread.start()
        self.ui.getCourses.setDefault(False)
        self.ui.downloadAll.setDefault(True)

    def updateCoursesList(self, signalDict):
        """ Update course list by getting signal from thread. """
        self.sess = signalDict["session"]
        course = signalDict["course"]
        self.coursesList.append(course)
        self.ui.coursesList.addItem("{:02d}\t{:s}".format(
            signalDict["idx"], course["name"]))
        # self.getCoursesThread.terminate()

    def killCourseThread(self):
        """ Kill get courese thread. """
        self.ui.downloadAll.setEnabled(True)
        self.getCoursesThread.terminate()

    def showError(self, text):
        """ Show error information on GUI. """
        self.ui.logInfo.setText(text)

    def onClickDownloadAll(self):
        """ Download all the coursewares of all courses after catch the click. """
        self.ui.progressBar.setRange(0, len(self.coursesList))
        self.downloadThread = DownloadThread(self.sess, self.coursesList,
                                             self.downloadPath,
                                             self.md5LogName)
        self.downloadThread.updateUiSignal.connect(self.updateProgress)
        self.downloadThread.updateSubBar.connect(self.updateSubProgress)
        self.downloadThread.updateFileBar.connect(self.updateFileProgress)
        self.downloadThread.killSignal.connect(self.killDownloadThread)
        self.downloadThread.start()

    def updateProgress(self, signalDict):
        """ Update the progress of main processbar. """
        self.ui.progressBar.setValue(signalDict["value"])
        self.ui.progressInfo.setText(signalDict["text"])

    def updateSubProgress(self, signalDict):
        """ Update the progress of sub processbar. """
        self.ui.subProgressBar.setRange(0, signalDict["max"])
        self.ui.subProgressBar.setValue(signalDict["value"])

    def updateFileProgress(self, signalDict):
        """ Update the progress of file downloading processbar. """
        self.ui.fileProcessBar.setRange(0, signalDict["max"])
        self.ui.fileProcessBar.setValue(signalDict["value"])

    def killDownloadThread(self, changeLogs):
        """ Kill download files thread. """
        self.ui.downloadAll.setEnabled(False)
        self.showUpdate.emit(changeLogs)
        self.downloadThread.terminate()
Ejemplo n.º 27
0
class Dialog(QtGui.QDialog):
    """ This class is a simple example of how to use QSharedMemory.  It is a
    simple dialog that presents a few buttons.  Run the executable twice to
    create two processes running the dialog.  In one of the processes, press
    the button to load an image into a shared memory segment, and then select
    an image file to load.  Once the first process has loaded and displayed the
    image, in the second process, press the button to read the same image from
    shared memory.  The second process displays the same image loaded from its
    new location in shared memory.

    The class contains a data member sharedMemory, which is initialized with
    the key "QSharedMemoryExample" to force all instances of Dialog to access
    the same shared memory segment.  The constructor also connects the
    clicked() signal from each of the three dialog buttons to the slot function
    appropriate for handling each button.
    """

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

        self.sharedMemory = QtCore.QSharedMemory('QSharedMemoryExample')

        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

        self.ui.loadFromFileButton.clicked.connect(self.loadFromFile)
        self.ui.loadFromSharedMemoryButton.clicked.connect(self.loadFromMemory)

        self.setWindowTitle("SharedMemory Example")

    def loadFromFile(self):
        """ This slot function is called when the "Load Image From File..."
        button is pressed on the firs Dialog process.  First, it tests whether
        the process is already connected to a shared memory segment and, if so,
        detaches from that segment.  This ensures that we always start the
        example from the beginning if we run it multiple times with the same
        two Dialog processes.  After detaching from an existing shared memory
        segment, the user is prompted to select an image file.  The selected
        file is loaded into a QImage.  The QImage is displayed in the Dialog
        and streamed into a QBuffer with a QDataStream.  Next, it gets a new
        shared memory segment from the system big enough to hold the image data
        in the QBuffer, and it locks the segment to prevent the second Dialog
        process from accessing it.  Then it copies the image from the QBuffer
        into the shared memory segment.  Finally, it unlocks the shared memory
        segment so the second Dialog process can access it.  After self
        function runs, the user is expected to press the "Load Image from
        Shared Memory" button on the second Dialog process.
        """

        if self.sharedMemory.isAttached():
            self.detach()

        self.ui.label.setText("Select an image file")
        fileName = QtGui.QFileDialog.getOpenFileName(self, None, None,
                "Images (*.png *.xpm *.jpg)")
        image = QtGui.QImage()
        if not image.load(fileName):
            self.ui.label.setText(
                    "Selected file is not an image, please select another.")
            return

        self.ui.label.setPixmap(QtGui.QPixmap.fromImage(image))

        # Load into shared memory.
        buf = QtCore.QBuffer()
        buf.open(QtCore.QBuffer.ReadWrite)
        out = QtCore.QDataStream(buf)
        out << image
        size = buf.size()

        if not self.sharedMemory.create(size):
            self.ui.label.setText("Unable to create shared memory segment.")
            return

        size = min(self.sharedMemory.size(), size)
        self.sharedMemory.lock()

        # Copy image data from buf into shared memory area.
        self.sharedMemory.data()[:] = buf.data().data()
        self.sharedMemory.unlock()

    def loadFromMemory(self):
        """ This slot function is called in the second Dialog process, when the
        user presses the "Load Image from Shared Memory" button.  First, it
        attaches the process to the shared memory segment created by the first
        Dialog process.  Then it locks the segment for exclusive access, copies
        the image data from the segment into a QBuffer, and streams the QBuffer
        into a QImage.  Then it unlocks the shared memory segment, detaches
        from it, and finally displays the QImage in the Dialog.
        """

        if not self.sharedMemory.attach():
            self.ui.label.setText(
                    "Unable to attach to shared memory segment.\nLoad an "
                    "image first.")
            return
 
        buf = QtCore.QBuffer()
        ins = QtCore.QDataStream(buf)
        image = QtGui.QImage()

        self.sharedMemory.lock()
        buf.setData(self.sharedMemory.constData())
        buf.open(QtCore.QBuffer.ReadOnly)
        ins >> image
        self.sharedMemory.unlock()
        self.sharedMemory.detach()

        self.ui.label.setPixmap(QtGui.QPixmap.fromImage(image))

    def detach(self):
        """ This private function is called by the destructor to detach the
        process from its shared memory segment.  When the last process detaches
        from a shared memory segment, the system releases the shared memory.
        """

        if not self.sharedMemory.detach():
            self.ui.label.setText("Unable to detach from shared memory.")
class StartQT4(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.setWindowTitle('Linkbot Diagnostics')
        self.ui.pushButton_start.clicked.connect(self.startTests)
        self.ui.pushButton_quit.clicked.connect(self.exit)

    def exit(self):
        sys.exit(0)

    def startTests(self):
        try:
            linkbot = TestLinkbot('LOCL')
            x,y,z = linkbot.getAccelerometer()
            if abs(x) > 0.1 or \
               abs(x) > 0.1 or \
               abs(z-1) > 0.1:
                QtGui.QMessageBox.warning(self, 
                    "Accelerometer readings have anomalies!")
            con = sql.connect('testlog.db')
            initialize_tables(con.cursor())
            cur = con.cursor()
# Check to see if this linkbot is in our database already. Add it if not
            cur.execute('SELECT * FROM robot_type WHERE Id=\'{}\''.format(linkbot.getSerialId()))
            rows = cur.fetchall()
            formFactor = None
            if linkbot.getFormFactor() == Linkbot.FormFactor.I:
                formFactor = "Linkbot-I"
                motor2index = 2
            elif linkbot.getFormFactor() == Linkbot.FormFactor.L:
                formFactor = "Linkbot-L"
                motor2index = 1
            else:
                formFactor = "UNKNOWN"
            print ("Testing LinkBot {}".format(linkbot.getSerialId()))
            d = LinkbotDiagnostic(linkbot)
            results = d.runLinearityTest()
            now = time.strftime('%Y-%m-%d %H:%M:%S')
            if len(rows) == 0:
                cur.execute('INSERT INTO robot_type VALUES(\'{}\', \'{}\')'.format(
                    linkbot.getSerialId(), formFactor))
            cur.execute("INSERT INTO linearity_tests "
                "VALUES('{}', '{}', {}, {}, {}, {}, {}, {}, {}, {})".format(
                    linkbot.getSerialId(),
                    now,
                    results[0]['forward_slope'],
                    results[0]['forward_rvalue'],
                    results[0]['backward_slope'],
                    results[0]['backward_rvalue'],
                    results[motor2index]['forward_slope'],
                    results[motor2index]['forward_rvalue'],
                    results[motor2index]['backward_slope'],
                    results[motor2index]['backward_rvalue']))

            con.commit()
            con.close()
            self.ui.m1f.setText(str(results[0]['forward_slope']))
            self.ui.m1fl.setText(str(results[0]['forward_rvalue']))
            self.ui.m1b.setText(str(results[0]['backward_slope']))
            self.ui.m1bl.setText(str(results[0]['backward_rvalue']))

            self.ui.m2f.setText(str(results[motor2index]['forward_slope']))
            self.ui.m2fl.setText(str(results[motor2index]['forward_rvalue']))
            self.ui.m2b.setText(str(results[motor2index]['backward_slope']))
            self.ui.m2bl.setText(str(results[motor2index]['backward_rvalue']))
            speeds = [ 
                        results[0]['forward_slope'],
                        results[0]['backward_slope'],
                        results[motor2index]['forward_slope'],
                        results[motor2index]['backward_slope'],
                     ]
            linearities = [
                results[0]['forward_rvalue'],
                results[0]['backward_rvalue'],
                results[motor2index]['forward_rvalue'],
                results[motor2index]['backward_rvalue'],
                          ]
            if any(abs(x) < 210 for x in speeds):
                self.ui.lineEdit_status.setText('FAIL')
            elif any(x < 0.99 for x in linearities):
                self.ui.lineEdit_status.setText('FAIL')
            else:
                self.ui.lineEdit_status.setText('Pass')

        except Exception as e:
            QtGui.QMessageBox.warning(self, 
                    "Test Failed: " + str(e))
Ejemplo n.º 29
0
class Window(QtGui.QWidget):
    def __init__(self, width, height, host_orch, host_pp):
        # pdb.set_trace()
        QtGui.QWidget.__init__(self)
        #Dialog component
        self.dialog = QtGui.QDialog()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self.dialog)

        #Tab widget
        self.tabWidget = QtGui.QTabWidget()
        self.tab = Ui_TabWidget()
        self.tab.setupUi(self.tabWidget, width / 2, height / 2, host_orch,
                         host_pp)

        #Column widget
        self.column = QtGui.QWidget()
        self.col = Ui_column()
        self.col.setupUi(self.column, width, height)

        self.video_widget = Phonon.VideoWidget()
        self.video = Ui_Video()
        self.video.setupUi(self.video_widget, width / 2, height / 2)

        #List Widget
        # self.list = QtGui.QListWidget(self)
        # self.list.setMaximumSize(width/2,height/2)
        # #self.list.hide()
        #Log Widget

        self.scrollArea = QtGui.QScrollArea()
        self.scroll = Ui_ScrollArea()
        self.scroll.setupUi(self.scrollArea)
        # self.listView = QtGui.Qlabel(self)
        # self.listView.setObjectName("listView")

        #Connecting Handlers
        self.col.set_handler_about(self.__show_about_handle)
        self.col.set_handler_start(self.__start_scenario)
        self.col.set_handler_stop(self.__stop_scenario)
        self.col.set_handler_clean(self.__clean_logs)

        #Including in the grid
        layout = QtGui.QGridLayout(self)
        layout.addWidget(self.video_widget, 0, 0)
        layout.addWidget(self.scrollArea, 1, 2)
        layout.addWidget(self.tabWidget, 1, 0)
        layout.addWidget(self.column, 0, 2)

    # def __handleButton(self):
    #     if self.media.state() == Phonon.PlayingState:
    #         self.media.stop()
    #     else:
    #         path = QtGui.QFileDialog.getOpenFileName(self, self.button.text())
    #         if path:
    #             self.media.setCurrentSource(Phonon.MediaSource(path))
    #             self.media.play()
    #     self.dialog.show()
    def __start_scenario(self):
        try:
            self.__clean_logs()
            scenario = self.col.getScenario()
            self.controller.startScenario(scenario + 1)
        except Exception as e:
            print e
            self.show_exception(e)

        self.video.start_reproduction(
            "/home/Data/Videos/Demo_Scenario2_3D_T.wmv")

    def __stop_scenario(self):
        self.controller.stopScenario()

    def __clean_logs(self):
        self.scroll.clean_text()

    def __show_about_handle(self):
        self.dialog.show()

    def show_exception(self, exception):
        print "EXCEPTION ", exception
        #TODO

    def scenarioInitiated(self):
        print "SHOW WINDOW SCENARIO INITIATED"

    def setController(self, controller):
        self.controller = controller

    # def __handleStateChanged(self, newstate, oldstate):
    #     if newstate == Phonon.PlayingState:
    #         self.button.setText('Stop')
    #     elif (newstate != Phonon.LoadingState and
    #           newstate != Phonon.BufferingState):
    #         self.button.setText('Choose File')
    #         if newstate == Phonon.ErrorState:
    #             source = self.media.currentSource().fileName()
    #             print ('ERROR: could not play:', source.toLocal8Bit().data())
    #             print ('  %s' % self.media.errorString().toLocal8Bit().data())

    # def add_new_hit(self,hit):
    #     self.list.addItems(hit)

    def log(self, msg):
        self.scroll.append_text(msg)

    def stop(self):
        None
Ejemplo n.º 30
0
class Dialog(QDialog):
    """ This class is a simple example of how to use QSharedMemory.  It is a
    simple dialog that presents a few buttons.  Run the executable twice to
    create two processes running the dialog.  In one of the processes, press
    the button to load an image into a shared memory segment, and then select
    an image file to load.  Once the first process has loaded and displayed the
    image, in the second process, press the button to read the same image from
    shared memory.  The second process displays the same image loaded from its
    new location in shared memory.

    The class contains a data member sharedMemory, which is initialized with
    the key "QSharedMemoryExample" to force all instances of Dialog to access
    the same shared memory segment.  The constructor also connects the
    clicked() signal from each of the three dialog buttons to the slot function
    appropriate for handling each button.
    """
    def __init__(self, parent=None):
        super(Dialog, self).__init__(parent)

        self.sharedMemory = QSharedMemory('QSharedMemoryExample')

        self.ui = Ui_Dialog()
        self.ui.setupUi(self)

        self.ui.loadFromFileButton.clicked.connect(self.loadFromFile)
        self.ui.loadFromSharedMemoryButton.clicked.connect(self.loadFromMemory)

        self.setWindowTitle("SharedMemory Example")

    def loadFromFile(self):
        """ This slot function is called when the "Load Image From File..."
        button is pressed on the firs Dialog process.  First, it tests whether
        the process is already connected to a shared memory segment and, if so,
        detaches from that segment.  This ensures that we always start the
        example from the beginning if we run it multiple times with the same
        two Dialog processes.  After detaching from an existing shared memory
        segment, the user is prompted to select an image file.  The selected
        file is loaded into a QImage.  The QImage is displayed in the Dialog
        and streamed into a QBuffer with a QDataStream.  Next, it gets a new
        shared memory segment from the system big enough to hold the image data
        in the QBuffer, and it locks the segment to prevent the second Dialog
        process from accessing it.  Then it copies the image from the QBuffer
        into the shared memory segment.  Finally, it unlocks the shared memory
        segment so the second Dialog process can access it.  After self
        function runs, the user is expected to press the "Load Image from
        Shared Memory" button on the second Dialog process.
        """

        if self.sharedMemory.isAttached():
            self.detach()

        self.ui.label.setText("Select an image file")
        fileName, _ = QFileDialog.getOpenFileName(
            self, None, None, "Images (*.png *.xpm *.jpg)")
        image = QImage()
        if not image.load(fileName):
            self.ui.label.setText(
                "Selected file is not an image, please select another.")
            return

        self.ui.label.setPixmap(QPixmap.fromImage(image))

        # Load into shared memory.
        buf = QBuffer()
        buf.open(QBuffer.ReadWrite)
        out = QDataStream(buf)
        out << image
        size = buf.size()

        if not self.sharedMemory.create(size):
            self.ui.label.setText("Unable to create shared memory segment.")
            return

        size = min(self.sharedMemory.size(), size)
        self.sharedMemory.lock()

        # Copy image data from buf into shared memory area.
        self.sharedMemory.data()[:] = buf.data().data()
        self.sharedMemory.unlock()

    def loadFromMemory(self):
        """ This slot function is called in the second Dialog process, when the
        user presses the "Load Image from Shared Memory" button.  First, it
        attaches the process to the shared memory segment created by the first
        Dialog process.  Then it locks the segment for exclusive access, copies
        the image data from the segment into a QBuffer, and streams the QBuffer
        into a QImage.  Then it unlocks the shared memory segment, detaches
        from it, and finally displays the QImage in the Dialog.
        """

        if not self.sharedMemory.attach():
            self.ui.label.setText(
                "Unable to attach to shared memory segment.\nLoad an "
                "image first.")
            return

        buf = QBuffer()
        ins = QDataStream(buf)
        image = QImage()

        self.sharedMemory.lock()
        buf.setData(self.sharedMemory.constData())
        buf.open(QBuffer.ReadOnly)
        ins >> image
        self.sharedMemory.unlock()
        self.sharedMemory.detach()

        self.ui.label.setPixmap(QPixmap.fromImage(image))

    def detach(self):
        """ This private function is called by the destructor to detach the
        process from its shared memory segment.  When the last process detaches
        from a shared memory segment, the system releases the shared memory.
        """

        if not self.sharedMemory.detach():
            self.ui.label.setText("Unable to detach from shared memory.")
Ejemplo n.º 31
0
class Dialog(QDialog):
    def __init__(self, parent=None):
        super(Dialog, self).__init__(parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.setStyleSheet(dialog_style_sheet)
Ejemplo n.º 32
0
class Test(QtGui.QDialog, Toplevel):
    def __init__(self, parent):
        QtGui.QMainWindow.__init__(self, parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.pushButton_2.setEnabled(False)

        self.backExstro()
        self.backFeel()
        self.backIntro()
        self.backIntusi()
        self.backJudg()
        self.backPercep()
        self.backSense()
        self.backThink()
        self.actTombol()
        self.act()

    ##############################################
    ################InstalasiVariable###################
    ##############################################

    def backIntusi(self):
        self.Intuisi = 0
        self.subIntuisi1 = 0
        self.subIntuisi2 = 0
        self.subIntuisi3 = 0
        self.subIntuisi4 = 0
        self.subIntuisi5 = 0

    def backSense(self):
        self.Sense = 0
        self.subSense1 = 0
        self.subSense2 = 0
        self.subSense3 = 0
        self.subSense4 = 0
        self.subSense5 = 0

    def backExstro(self):
        self.Exstro = 0
        self.subExstro1 = 0
        self.subExstro2 = 0
        self.subExstro3 = 0
        self.subExstro4 = 0
        self.subExstro5 = 0

    def backIntro(self):
        self.Intro = 0
        self.subIntro1 = 0
        self.subIntro2 = 0
        self.subIntro3 = 0
        self.subIntro4 = 0
        self.subIntro5 = 0

    def backJudg(self):
        self.Judg = 0
        self.subJudg1 = 0
        self.subJudg2 = 0
        self.subJudg3 = 0
        self.subJudg4 = 0
        self.subJudg5 = 0

    def backPercep(self):
        self.Percep = 0
        self.subPercep1 = 0
        self.subPercep2 = 0
        self.subPercep3 = 0
        self.subPercep4 = 0
        self.subPercep5 = 0

    def backThink(self):
        self.Think = 0
        self.subThink1 = 0
        self.subThink2 = 0
        self.subThink3 = 0
        self.subThink4 = 0
        self.subThink5 = 0

    def backFeel(self):
        self.Feel = 0
        self.subFeel1 = 0
        self.subFeel2 = 0
        self.subFeel3 = 0
        self.subFeel4 = 0
        self.subFeel5 = 0

    ##############################################
    ################Action###################
    ##############################################

    def actTombol(self):
        self.ui.pushButton.clicked.connect(self.jumTotal)
        self.ui.pushButton_2.clicked.connect(self.kalkulasi)

    def act(self):
        self.ui.radioButtonP1.clicked.connect(self.soal1)
        self.ui.radioButtonJ1.clicked.connect(self.soal1)

        self.ui.radioButtonI1.clicked.connect(self.soal2)
        self.ui.radioButtonE1.clicked.connect(self.soal2)

        self.ui.radioButtonT1.clicked.connect(self.soal3)
        self.ui.radioButtonF1.clicked.connect(self.soal3)

        self.ui.radioButtonN1.clicked.connect(self.soal4)
        self.ui.radioButtonS1.clicked.connect(self.soal4)

        self.ui.radioButtonJ1_2.clicked.connect(self.soal5)
        self.ui.radioButtonP1_2.clicked.connect(self.soal5)

        self.ui.radioButtonI1_2.clicked.connect(self.soal6)
        self.ui.radioButtonE1_2.clicked.connect(self.soal6)

        self.ui.radioButtonN2.clicked.connect(self.soal7)
        self.ui.radioButtonS2.clicked.connect(self.soal7)

        self.ui.radioButtonE2.clicked.connect(self.soal8)
        self.ui.radioButtonI2.clicked.connect(self.soal8)

        self.ui.radioButtonJ2.clicked.connect(self.soal9)
        self.ui.radioButtonP2.clicked.connect(self.soal9)

        self.ui.radioButtonF2.clicked.connect(self.soal10)
        self.ui.radioButtonT2.clicked.connect(self.soal10)

        self.ui.radioButtonS2_2.clicked.connect(self.soal11)
        self.ui.radioButtonN2_2.clicked.connect(self.soal11)

        self.ui.radioButtonT2_2.clicked.connect(self.soal12)
        self.ui.radioButtonF2_2.clicked.connect(self.soal12)

        self.ui.radioButtonS3.clicked.connect(self.soal13)
        self.ui.radioButtonN3.clicked.connect(self.soal13)

        self.ui.radioButtonJ3.clicked.connect(self.soal14)
        self.ui.radioButtonP3.clicked.connect(self.soal14)

        self.ui.radioButtonN3_3.clicked.connect(self.soal15)
        self.ui.radioButtonS3_3.clicked.connect(self.soal15)

        self.ui.radioButtonI3.clicked.connect(self.soal16)
        self.ui.radioButtonE3.clicked.connect(self.soal16)

        self.ui.radioButtonF3.clicked.connect(self.soal17)
        self.ui.radioButtonT3.clicked.connect(self.soal17)

        self.ui.radioButtonJ3_2.clicked.connect(self.soal18)
        self.ui.radioButtonP3_2.clicked.connect(self.soal18)

        self.ui.radioButtonE4.clicked.connect(self.soal19)
        self.ui.radioButtonI4.clicked.connect(self.soal19)

        self.ui.radioButtonT4.clicked.connect(self.soal20)
        self.ui.radioButtonF4.clicked.connect(self.soal20)

    ##############################################
    ################ Check Button Choice ###################
    ##############################################

    def soal1(self):
        if (self.ui.radioButtonP1.isChecked()):
            self.jwb1 = 1
        elif (self.ui.radioButtonJ1.isChecked()):
            self.jwb1 = 2

    def soal2(self):
        if (self.ui.radioButtonI1.isChecked()):
            self.jwb2 = 1
        elif (self.ui.radioButtonE1.isChecked()):
            self.jwb2 = 2

    def soal3(self):
        if (self.ui.radioButtonT1.isChecked()):
            self.jwb3 = 1
        elif (self.ui.radioButtonF1.isChecked()):
            self.jwb3 = 2

    ###################

    def soal4(self):
        if (self.ui.radioButtonN1.isChecked()):
            self.jwb4 = 1
        elif (self.ui.radioButtonS1.isChecked()):
            self.jwb4 = 2

    def soal5(self):
        if (self.ui.radioButtonJ1_2.isChecked()):
            self.jwb5 = 1
        elif (self.ui.radioButtonP1_2.isChecked()):
            self.jwb5 = 2

    def soal6(self):
        if (self.ui.radioButtonI1_2.isChecked()):
            self.jwb6 = 1
        elif (self.ui.radioButtonE1_2.isChecked()):
            self.jwb6 = 2

    #####################

    def soal7(self):
        if (self.ui.radioButtonN2.isChecked()):
            self.jwb7 = 1
        elif (self.ui.radioButtonS2.isChecked()):
            self.jwb7 = 2

    def soal8(self):
        if (self.ui.radioButtonE2.isChecked()):
            self.jwb8 = 1
        elif (self.ui.radioButtonI2.isChecked()):
            self.jwb8 = 2

    def soal9(self):
        if (self.ui.radioButtonJ2.isChecked()):
            self.jwb9 = 1
        elif (self.ui.radioButtonP2.isChecked()):
            self.jwb9 = 2

    def soal10(self):
        if (self.ui.radioButtonF2.isChecked()):
            self.jwb10 = 1
        elif (self.ui.radioButtonT2.isChecked()):
            self.jwb10 = 2

    def soal11(self):
        if (self.ui.radioButtonS2_2.isChecked()):
            self.jwb11 = 1
        elif (self.ui.radioButtonN2_2.isChecked()):
            self.jwb11 = 2

    def soal12(self):
        if (self.ui.radioButtonT2_2.isChecked()):
            self.jwb12 = 1
        elif (self.ui.radioButtonF2_2.isChecked()):
            self.jwb12 = 2

    ################

    def soal13(self):
        if (self.ui.radioButtonS3.isChecked()):
            self.jwb13 = 1
        elif (self.ui.radioButtonN3.isChecked()):
            self.jwb13 = 2

    def soal14(self):
        if (self.ui.radioButtonJ3.isChecked()):
            self.jwb14 = 1
        elif (self.ui.radioButtonP3.isChecked()):
            self.jwb14 = 2

    def soal15(self):
        if (self.ui.radioButtonN3_3.isChecked()):
            self.jwb15 = 1
        elif (self.ui.radioButtonS3_3.isChecked()):
            self.jwb15 = 2

    ###################

    def soal16(self):
        if (self.ui.radioButtonI3.isChecked()):
            self.jwb16 = 1
        elif (self.ui.radioButtonE3.isChecked()):
            self.jwb16 = 2

    def soal17(self):
        if (self.ui.radioButtonF3.isChecked()):
            self.jwb17 = 1
        elif (self.ui.radioButtonT3.isChecked()):
            self.jwb17 = 2

    def soal18(self):
        if (self.ui.radioButtonJ3_2.isChecked()):
            self.jwb18 = 1
        elif (self.ui.radioButtonP3_2.isChecked()):
            self.jwb18 = 2

    #####################

    def soal19(self):
        if (self.ui.radioButtonE4.isChecked()):
            self.jwb19 = 1
        elif (self.ui.radioButtonI4.isChecked()):
            self.jwb19 = 2

    def soal20(self):
        if (self.ui.radioButtonT4.isChecked()):
            self.jwb20 = 1
        elif (self.ui.radioButtonF4.isChecked()):
            self.jwb20 = 2

    ##############################################
    ################subJumlah###################
    ##############################################

    def jumSoal1(self):
        if (self.jwb1 == 1):
            self.subPercep1 = +1
        else:
            self.subJudg1 = +1

    def jumSoal2(self):
        if (self.jwb2 == 1):
            self.subIntro1 = +1
        else:
            self.subExstro1 = +1

    def jumSoal3(self):
        if (self.jwb3 == 1):
            self.subThink1 = +1
        else:
            self.subFeel1 = +1

    ##############

    def jumSoal4(self):
        if (self.jwb4 == 1):
            self.subIntuisi1 = +1
        else:
            self.subSense1 = +1

    def jumSoal5(self):
        if (self.jwb5 == 1):
            self.subJudg2 = +1
        else:
            self.subPercep2 = +1

    def jumSoal6(self):
        if (self.jwb6 == 1):
            self.subIntro2 = +1
        else:
            self.subExstro2 = +1

    #########################

    def jumSoal7(self):
        if (self.jwb7 == 1):
            self.subIntuisi2 = +1
        else:
            self.subSense2 = +1

    def jumSoal8(self):
        if (self.jwb8 == 1):
            self.subExstro3 = +1
        else:
            self.subIntro3 = +1

    def jumSoal9(self):
        if (self.jwb9 == 1):
            self.subJudg3 = +1
        else:
            self.subPercep3 = +1

    def jumSoal10(self):
        if (self.jwb10 == 1):
            self.subFeel2 = +1
        else:
            self.subThink2 = +1

    def jumSoal11(self):
        if (self.jwb11 == 1):
            self.subSense3 = +1
        else:
            self.subIntuisi3 = +1

    def jumSoal12(self):
        if (self.jwb12 == 1):
            self.subThink3 = +1
        else:
            self.subFeel3 = +1

    def jumSoal13(self):
        if (self.jwb13 == 1):
            self.subSense4 = +1
        else:
            self.subIntuisi4 = +1

    def jumSoal14(self):
        if (self.jwb14 == 1):
            self.subJudg4 = +1
        else:
            self.subPercep4 = +1

    def jumSoal15(self):
        if (self.jwb15 == 1):
            self.subIntuisi5 = +1
        else:
            self.subSense5 = +1

    def jumSoal16(self):
        if (self.jwb16 == 1):
            self.subIntro4 = +1
        else:
            self.subExstro4 = +1

    def jumSoal17(self):
        if (self.jwb17 == 1):
            self.subFeel4 = +1
        else:
            self.subThink4 = +1

    def jumSoal18(self):
        if (self.jwb18 == 1):
            self.subJudg5 = +1
        else:
            self.subPercep5 = +1

    def jumSoal19(self):
        if (self.jwb19 == 1):
            self.subExstro5 = +1
        else:
            self.subIntro5 = +1

    def jumSoal20(self):
        if (self.jwb20 == 1):
            self.subThink5 = +1
        else:
            self.subFeel5 = +1

    ##############################################
    ################jumlahTotal###################
    ##############################################

    def jumTotal(self):

        if ((self.ui.radioButtonP1.isChecked()
             or self.ui.radioButtonJ1.isChecked())
                and (self.ui.radioButtonI1.isChecked()
                     or self.ui.radioButtonE1.isChecked())
                and (self.ui.radioButtonT1.isChecked()
                     or self.ui.radioButtonF1.isChecked())
                and (self.ui.radioButtonN1.isChecked()
                     or self.ui.radioButtonS1.isChecked())
                and (self.ui.radioButtonJ1_2.isChecked()
                     or self.ui.radioButtonP1_2.isChecked())
                and (self.ui.radioButtonI1_2.isChecked()
                     or self.ui.radioButtonE1_2.isChecked())
                and (self.ui.radioButtonN2.isChecked()
                     or self.ui.radioButtonS2.isChecked())
                and (self.ui.radioButtonE2.isChecked()
                     or self.ui.radioButtonI2.isChecked())
                and (self.ui.radioButtonJ2.isChecked()
                     or self.ui.radioButtonP2.isChecked())
                and (self.ui.radioButtonF2.isChecked()
                     or self.ui.radioButtonT2.isChecked())
                and (self.ui.radioButtonS2_2.isChecked()
                     or self.ui.radioButtonN2_2.isChecked())
                and (self.ui.radioButtonT2_2.isChecked()
                     or self.ui.radioButtonF2_2.isChecked())
                and (self.ui.radioButtonS3.isChecked()
                     or self.ui.radioButtonN3.isChecked())
                and (self.ui.radioButtonJ3.isChecked()
                     or self.ui.radioButtonP3.isChecked())
                and (self.ui.radioButtonN3_3.isChecked()
                     or self.ui.radioButtonS3_3.isChecked())
                and (self.ui.radioButtonI3.isChecked()
                     or self.ui.radioButtonE3.isChecked())
                and (self.ui.radioButtonF3.isChecked()
                     or self.ui.radioButtonT3.isChecked())
                and (self.ui.radioButtonJ3_2.isChecked()
                     or self.ui.radioButtonP3_2.isChecked())
                and (self.ui.radioButtonE4.isChecked()
                     or self.ui.radioButtonI4.isChecked())
                and (self.ui.radioButtonT4.isChecked()
                     or self.ui.radioButtonF4.isChecked())):

            self.jumSoal1()
            self.jumSoal2()
            self.jumSoal3()
            self.jumSoal4()
            self.jumSoal5()
            self.jumSoal6()
            self.jumSoal7()
            self.jumSoal8()
            self.jumSoal9()
            self.jumSoal10()
            self.jumSoal11()
            self.jumSoal12()
            self.jumSoal13()
            self.jumSoal14()
            self.jumSoal15()
            self.jumSoal16()
            self.jumSoal17()
            self.jumSoal18()
            self.jumSoal19()
            self.jumSoal20()
            self.ui.pushButton_2.setEnabled(True)
            QDialog.QMessageBox.information(
                self, "Pehatihan", "Silahkan tekan tombol Lihat hasil", "Oke")
        else:
            QDialog.QMessageBox.information(
                self, "Pehatihan", "Tolong isi semua pilihan Terlebih dahulu",
                "Oke")

    ##############################################
    ################KalkulasiTotal###################
    ##############################################

    def kalkulasi(self):
        self.ui.pushButton_2.setEnabled(False)
        self.Intro = self.subIntro1 + self.subIntro2 + self.subIntro3 + self.subIntro4 + self.subIntro5
        self.Exstro = self.subExstro1 + self.subExstro2 + self.subExstro3 + self.subExstro4 + self.subExstro5
        self.Percep = self.subPercep1 + self.subPercep2 + self.subPercep3 + self.subPercep4 + self.subPercep5
        self.Judg = self.subJudg1 + self.subJudg2 + self.subJudg3 + self.subJudg4 + self.subJudg5
        self.Feel = self.subFeel1 + self.subFeel2 + self.subFeel3 + self.subFeel4 + self.subFeel5
        self.Think = self.subThink1 + self.subThink2 + self.subThink3 + self.subThink4 + self.subThink5
        self.Sense = self.subSense1 + self.subSense2 + self.subSense3 + self.subSense4 + self.subSense5
        self.Intuisi = self.subIntuisi1 + self.subIntuisi2 + self.subIntuisi3 + self.subIntuisi4 + self.subIntuisi5

        if (self.Intro < self.Exstro):
            self.IorE = "E"
        elif (self.Intro > self.Exstro):
            self.IorE = "I"

        if (self.Sense < self.Intuisi):
            self.SorI = "N"
        else:
            self.SorI = "S"

        if (self.Think < self.Feel):
            self.TorF = "F"
        else:
            self.TorF = "T"

        if (self.Percep < self.Judg):
            self.PorJ = "J"
        else:
            self.PorJ = "P"

        self.ui.label_2.setText(
            "Skor Inrovert anda adalah : %d" % self.Intro + "\n" +
            "Skor Extrovert anda adalah : %d" % self.Exstro + "\n" +
            "Skor Peception anda adalah : %d" % self.Percep + "\n" +
            "Skor Jugje anda adalah : %d" % self.Judg + "\n" +
            "Skor Feel anda adalah : %d" % self.Feel + "\n" +
            "Skor Think anda adalah : %d" % self.Think + "\n" +
            "Skor Sense anda adalah : %d" % self.Sense + "\n" +
            "Skor Intuisi anda adalah : %d" % self.Intuisi + "\n" +
            "Anda Adalah : " + self.IorE + self.SorI + self.TorF + self.PorJ)

        QDialog.QMessageBox.information(
            self, "Pehatihan", "Selamat anda adalah seorang  %s%s%s%s" %
            (self.IorE, self.SorI, self.TorF, self.PorJ), "Terimakasih :)")

        print "nilai Inrovert anda adalah : %d" % self.Intro
        print "nilai Extrovert anda adalah : %d" % self.Exstro
        print "Nilai Peception anda adalah : %d" % self.Percep
        print "Nilai Jugje anda adalah : %d" % self.Judg
        print "Nilai Feel anda adalah : %d" % self.Feel
        print "Nilai Think anda adalah : %d" % self.Think
        print "Nilai Sense anda adalah : %d" % self.Sense
        print "Nilai Intuisi anda adalah : %d" % self.Intuisi
Ejemplo n.º 33
0
class Ui_MainWindow(object):
	def __init__(self):
		self.rest_5min = [0,0,0,0]

	def setupUi(self, MainWindow):
		MainWindow.setObjectName("MainWindow")
		MainWindow.resize(1200, 768)
		MainWindow.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(215,196,187, 255), stop:1 rgba(215,196,187, 255));")
		MainWindow.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates))
		self.centralwidget = QtWidgets.QWidget(MainWindow)
		self.centralwidget.setObjectName("centralwidget")
		self.gridLayoutWidget = QtWidgets.QWidget(self.centralwidget)
		self.gridLayoutWidget.setGeometry(QtCore.QRect(80, 80, 761, 351))
		self.gridLayoutWidget.setObjectName("gridLayoutWidget")
		self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
		self.gridLayout.setContentsMargins(0, 0, 0, 0)
		self.gridLayout.setObjectName("gridLayout")
		self.rest1 = QtWidgets.QLabel(self.gridLayoutWidget)
		self.rest1.setMaximumSize(QtCore.QSize(16777215, 60))
		self.rest1.setStyleSheet('background-color: rgba(0, 35, 163, 0)')
		self.rest1.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates))
		self.rest1.setFrameShape(QtWidgets.QFrame.NoFrame)
		self.rest1.setText("")
		self.rest1.setObjectName("rest1")
		self.gridLayout.addWidget(self.rest1, 0, 1, 1, 1)
		self.label_2 = QtWidgets.QLabel(self.gridLayoutWidget)
		self.label_2.setEnabled(True)
		self.label_2.setLocale(QtCore.QLocale(QtCore.QLocale.Dzongkha, QtCore.QLocale.Bhutan))
		self.label_2.setAlignment(QtCore.Qt.AlignCenter)
		self.label_2.setObjectName("label_2")
		self.gridLayout.addWidget(self.label_2, 0, 0, 1, 1)
		self.label = QtWidgets.QLabel(self.gridLayoutWidget)
		self.label.setMaximumSize(QtCore.QSize(200, 16777215))
		self.label.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates))
		self.label.setAlignment(QtCore.Qt.AlignCenter)
		self.label.setObjectName("label")
		self.gridLayout.addWidget(self.label, 1, 0, 1, 1)
		self.rest3 = QtWidgets.QLabel(self.gridLayoutWidget)
		self.rest3.setMaximumSize(QtCore.QSize(16777215, 60))
		self.rest3.setStyleSheet('background-color: rgba(0, 35, 163, 0)')
		self.rest3.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates))
		self.rest3.setText("")
		self.rest3.setObjectName("rest3")
		self.gridLayout.addWidget(self.rest3, 2, 1, 1, 1)
		self.label_3 = QtWidgets.QLabel(self.gridLayoutWidget)
		self.label_3.setLocale(QtCore.QLocale(QtCore.QLocale.Embu, QtCore.QLocale.Kenya))
		self.label_3.setAlignment(QtCore.Qt.AlignCenter)
		self.label_3.setObjectName("label_3")
		self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
		self.rest2 = QtWidgets.QLabel(self.gridLayoutWidget)
		self.rest2.setMaximumSize(QtCore.QSize(16777215, 60))
		self.rest2.setStyleSheet('background-color: rgba(0, 35, 163, 0)')
		self.rest2.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates))
		self.rest2.setText("")
		self.rest2.setObjectName("rest2")
		self.gridLayout.addWidget(self.rest2, 1, 1, 1, 1)
		self.label_4 = QtWidgets.QLabel(self.gridLayoutWidget)
		self.label_4.setLocale(QtCore.QLocale(QtCore.QLocale.Dzongkha, QtCore.QLocale.Bhutan))
		self.label_4.setAlignment(QtCore.Qt.AlignCenter)
		self.label_4.setObjectName("label_4")
		self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1)
		self.rest4 = QtWidgets.QLabel(self.gridLayoutWidget)
		self.rest4.setMaximumSize(QtCore.QSize(16777215, 60))
		self.rest4.setStyleSheet('background-color: rgba(0, 35, 163, 0)')
		self.rest4.setLocale(QtCore.QLocale(QtCore.QLocale.Dzongkha, QtCore.QLocale.Bhutan))
		self.rest4.setText("")
		self.rest4.setObjectName("rest4")
		self.gridLayout.addWidget(self.rest4, 3, 1, 1, 1)
		self.label_7 = QtWidgets.QLabel(self.centralwidget)
		self.label_7.setGeometry(QtCore.QRect(520, 70, 111, 21))
		self.label_7.setObjectName("label_7")

		#  The last pomodoro's break
		self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
		self.verticalLayoutWidget.setGeometry(QtCore.QRect(100, 425, 761, 61))
		self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
		self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
		self.verticalLayout.setContentsMargins(0, 0, 0, 0)
		self.verticalLayout.setObjectName("verticalLayout")
		self.rest30_1 = QtWidgets.QLabel(self.verticalLayoutWidget)
		self.rest30_1.setEnabled(True)
		self.rest30_1.setMaximumSize(QtCore.QSize(16777215, 60))
		self.rest30_1.setStyleSheet('background-color: rgba(0, 35, 163, 0)')
		self.rest30_1.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates))
		self.rest30_1.setText("")
		self.rest30_1.setObjectName("rest30_1")
		self.verticalLayout.addWidget(self.rest30_1)

		# Text 'Additional time slot'
		self.label_10 = QtWidgets.QLabel(self.centralwidget)
		self.label_10.setGeometry(QtCore.QRect(400, 500, 200, 32))
		self.label_10.setAlignment(QtCore.Qt.AlignCenter)
		self.label_10.setObjectName("label_10")

		# Additional time slot = 30 x 2
		self.verticalLayoutWidget_2 = QtWidgets.QWidget(self.centralwidget)
		self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(100, 525, 761, 160))
		self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2")
		self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_2)
		self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
		self.verticalLayout_2.setObjectName("verticalLayout_2")
		self.rest30_2 = QtWidgets.QLabel(self.verticalLayoutWidget_2)
		self.rest30_2.setMaximumSize(QtCore.QSize(16777215, 60))
		self.rest30_2.setStyleSheet('background-color: rgba(0, 35, 163, 0)')
		self.rest30_2.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates))
		self.rest30_2.setText("")
		self.rest30_2.setObjectName("rest30_2")
		self.verticalLayout_2.addWidget(self.rest30_2)
		self.rest30_3 = QtWidgets.QLabel(self.verticalLayoutWidget_2)
		self.rest30_3.setMaximumSize(QtCore.QSize(16777215, 60))
		self.rest30_3.setStyleSheet('background-color: rgba(0, 35, 163, 0)')
		self.rest30_3.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates))
		self.rest30_3.setText("")
		self.rest30_3.setObjectName("rest30_3")
		self.verticalLayout_2.addWidget(self.rest30_3)



		self.menu = QtWidgets.QComboBox(self.centralwidget)
		self.menu.setGeometry(QtCore.QRect(100, 680, 180, 32))
		self.menu.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates))
		self.menu.setObjectName("menu")
		self.menu.addItem("")
		self.menu.addItem("")
		self.menu.addItem("")
		self.menu.addItem("")
		self.menu.addItem("")
		self.menu.addItem("")

		# Add button
		self.add = QtWidgets.QPushButton(self.centralwidget)
		self.add.setGeometry(QtCore.QRect(290, 680, 110, 32))
		self.add.setObjectName("add")

		# Press to start the program
		self.pushButton = QtWidgets.QPushButton(self.centralwidget)
		self.pushButton.setGeometry(QtCore.QRect(340, 8, 110, 32))
		self.pushButton.setObjectName("pushButton")
		font = QtGui.QFont()
		font.setFamily("Arial")
		font.setBold(True)
		font.setWeight(75)
		self.add.setFont(font)
		self.add.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates))
		self.add.setObjectName("add")

		# Confirm to change time
		self.change_time = QtWidgets.QPushButton(self.centralwidget)
		self.change_time.setGeometry(QtCore.QRect(220, 8, 110, 32))
		self.change_time.setObjectName("change_time")

		# Edit time (default time = 25)
		self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
		self.lineEdit.setObjectName("lineEdit")
		self.lineEdit.setGeometry(QtCore.QRect(100, 8, 110, 32))
		self.lineEdit.setText("25")

		'''
		# black BG
		self.frame = QtWidgets.QFrame(self.centralwidget)
		self.frame.setGeometry(QtCore.QRect(70, 270, 291, 191))
		self.frame.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0,0,0, 255), stop:1 rgba(0,0,0, 255));")
		self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
		self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
		self.frame.setObjectName("frame")
		'''



		self.rest_5min_widgets = [self.rest1,self.rest2,self.rest3,self.rest4]
		self.rest_30min = [0]
		self.rest_30min_widgets = [self.rest30_1]
		self.rest_240min = [0,0]
		self.rest_240min_widgets = [self.rest30_2,self.rest30_3]
		self.item_list = {}
		self.item_list['Working'] = (25,'no')
		self.item_list['Cooking & Eating'] = (30,'no')
		self.item_list['Washing the clothes'] = (30,'Strong yes')
		self.item_list['Opening the door'] = (5,'no')
		self.item_list['Reminder'] = (1,'no')
		self.item_list['Boiling the water'] = (5,'Strong yes')


		self.dialog = Ui_Dialog()



		# table
		self.verticalLayoutWidget1 = QtWidgets.QWidget(self.centralwidget)
		self.verticalLayoutWidget1.setGeometry(QtCore.QRect(850, 50, 233, 371))
		self.verticalLayoutWidget1.setObjectName("verticalLayoutWidget1")
		self.verticalLayout1 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget1)
		self.verticalLayout1.setContentsMargins(0, 0, 0, 0)
		self.verticalLayout1.setSpacing(0)
		self.verticalLayout1.setObjectName("verticalLayout1")
		
		self.tableWidget = QtWidgets.QTableWidget(self.verticalLayoutWidget1)
		self.tableWidget.setObjectName("tableWidget")
		self.tableWidget.setColumnCount(3)
		self.tableWidget.setRowCount(1)
		self.tableWidget.setColumnWidth(0, 100)
		self.tableWidget.setColumnWidth(1, 100)
		self.tableWidget.setColumnWidth(2, 30)
		item = QtWidgets.QTableWidgetItem()
		font = QtGui.QFont()
		font.setBold(True)
		font.setWeight(75)
		item.setFont(font)
		self.tableWidget.setVerticalHeaderItem(0, item)
		item = QtWidgets.QTableWidgetItem()
		self.tableWidget.setVerticalHeaderItem(1, item)
		item = QtWidgets.QTableWidgetItem()
		font = QtGui.QFont()
		font.setBold(False)
		font.setWeight(50)
		item.setFont(font)
		self.tableWidget.setHorizontalHeaderItem(0, item)
		item = QtWidgets.QTableWidgetItem()
		self.tableWidget.setHorizontalHeaderItem(1, item)
		item = QtWidgets.QTableWidgetItem()
		self.tableWidget.setHorizontalHeaderItem(2, item)
		item = QtWidgets.QTableWidgetItem()
		item.setTextAlignment(QtCore.Qt.AlignCenter)
		font = QtGui.QFont()
		font.setBold(True)
		font.setWeight(75)
		item.setFont(font)
		self.tableWidget.setItem(0, 0, item)
		item = QtWidgets.QTableWidgetItem()
		item.setTextAlignment(QtCore.Qt.AlignCenter)
		font = QtGui.QFont()
		font.setBold(True)
		font.setWeight(75)
		item.setFont(font)
		self.tableWidget.setItem(0, 1, item)
		self.tableWidget.horizontalHeader().setVisible(False)
		self.tableWidget.horizontalHeader().setHighlightSections(False)
		self.tableWidget.verticalHeader().setVisible(False)
		self.tableWidget.verticalHeader().setHighlightSections(False)
		self.verticalLayout1.addWidget(self.tableWidget)
		self.label_table = QtWidgets.QLabel(self.verticalLayoutWidget1)
		font = QtGui.QFont()
		font.setPointSize(16)
		self.label_table.setFont(font)
		self.label_table.setAlignment(QtCore.Qt.AlignCenter)
		self.label_table.setObjectName("label_table")
		self.verticalLayout1.addWidget(self.label_table)
		self.tableWidget_2 = QtWidgets.QTableWidget(self.verticalLayoutWidget1)
		self.tableWidget_2.setObjectName("tableWidget_2")
		self.tableWidget_2.setColumnCount(3)
		self.tableWidget_2.setRowCount(0)
		self.tableWidget_2.setColumnWidth(0, 100)
		self.tableWidget_2.setColumnWidth(1, 100)
		self.tableWidget_2.setColumnWidth(2, 30)
		item = QtWidgets.QTableWidgetItem()
		self.tableWidget_2.setHorizontalHeaderItem(0, item)
		item = QtWidgets.QTableWidgetItem()
		self.tableWidget_2.setHorizontalHeaderItem(1, item)
		item = QtWidgets.QTableWidgetItem()
		self.tableWidget_2.setHorizontalHeaderItem(2, item)
		self.tableWidget_2.horizontalHeader().setVisible(False)
		self.tableWidget_2.verticalHeader().setVisible(False)
		self.verticalLayout1.addWidget(self.tableWidget_2)
		self.label_table.setStyleSheet("border-width: 1px;border-style: solid;")
		self.tableWidget.setStyleSheet("border-width: 1px;border-style: solid;")
		self.tableWidget_2.setStyleSheet("border-width: 1px;border-style: solid;")
		self.table_1_count = 1
		self.table_2_count = 0
		self.tableWidget.itemClicked.connect(self.table1_click)
		self.tableWidget_2.itemClicked.connect(self.table2_click)
		
		
		self.table_list = []
		
		
		self.add.raise_()
		# self.frame.raise_()raise_
		self.gridLayoutWidget.raise_()
		self.label_7.raise_()
		self.verticalLayoutWidget.raise_()
		self.label_10.raise_()
		self.verticalLayoutWidget_2.raise_()
		self.menu.raise_()
		self.add.raise_()
		self.rest30_3.raise_()
		MainWindow.setCentralWidget(self.centralwidget)
		self.statusbar = QtWidgets.QStatusBar(MainWindow)
		self.statusbar.setObjectName("statusbar")
		MainWindow.setStatusBar(self.statusbar)
		self.menubar = QtWidgets.QMenuBar(MainWindow)
		self.menubar.setGeometry(QtCore.QRect(0, 0, 1920, 22))
		self.menubar.setObjectName("menubar")
		MainWindow.setMenuBar(self.menubar)

		self.retranslateUi(MainWindow)
		QtCore.QMetaObject.connectSlotsByName(MainWindow)


	def retranslateUi(self, MainWindow):
		_translate = QtCore.QCoreApplication.translate
		MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
		self.label.setText(_translate("MainWindow", "Working time 25 min"))
		self.label_2.setText(_translate("MainWindow", "Working time 25 min"))
		self.label_3.setText(_translate("MainWindow", "Working time 25 min"))
		self.label_4.setText(_translate("MainWindow", "Working time 25 min"))
		self.label_7.setText(_translate("MainWindow", "5mins break"))
		# self.label_8.setText(_translate("MainWindow", "work time: "))
		self.label_10.setText(_translate("MainWindow", "Additional time slot"))
		self.menu.setItemText(0, _translate("MainWindow", "Working"))
		self.menu.setItemText(1, _translate("MainWindow", "Cooking & Eating"))
		self.menu.setItemText(2, _translate("MainWindow", "Washing the clothes"))
		self.menu.setItemText(3, _translate("MainWindow", "Opening the door"))
		self.menu.setItemText(4, _translate("MainWindow", "Reminder"))
		self.menu.setItemText(5, _translate("MainWindow", "Boiling the water"))
		self.menu.setItemText(6, _translate("MainWindow", "Custom"))
		self.add.setText(_translate("MainWindow", "add"))
		self.change_time.setText(_translate("MainWindow", "set time"))
		self.add.clicked.connect(self.buttonClicked)
		self.pushButton.setText(_translate("MainWindow", "start"))
		self.pushButton.clicked.connect(self.timer_buttonClicked)
		self.change_time.clicked.connect(self.change_working_time)
		
		item = self.tableWidget.verticalHeaderItem(0)
#		item.setText(_translate("MainWindow", "New Row"))
		item = self.tableWidget.horizontalHeaderItem(0)
#		item.setText(_translate("MainWindow", "New Column"))
		item = self.tableWidget.horizontalHeaderItem(1)
#		item.setText(_translate("MainWindow", "New Column"))
		item = self.tableWidget.horizontalHeaderItem(2)
#		item.setText(_translate("MainWindow", "New Column"))
		__sortingEnabled = self.tableWidget.isSortingEnabled()
		self.tableWidget.setSortingEnabled(True)
		item = self.tableWidget.item(0, 0)
		item.setText(_translate("MainWindow", "Event"))
		item = self.tableWidget.item(0, 1)
		item.setText(_translate("MainWindow", "Duration"))
		self.tableWidget.setSortingEnabled(__sortingEnabled)
		self.label_table.setText(_translate("MainWindow", "\n2 mins\n"))
		item = self.tableWidget_2.horizontalHeaderItem(0)
		item.setText(_translate("MainWindow", "New Column"))
		item = self.tableWidget_2.horizontalHeaderItem(1)
		item.setText(_translate("MainWindow", "New Column"))
		item = self.tableWidget_2.horizontalHeaderItem(2)
		item.setText(_translate("MainWindow", "New Column"))

	def change_working_time(self):
		self.work_time = int(self.lineEdit.text())
		self.label.setText("Working time " + str(self.work_time) +" min")
		self.label_2.setText("Working time " + str(self.work_time) +" min")
		self.label_3.setText("Working time " + str(self.work_time) +" min")
		self.label_4.setText("Working time " + str(self.work_time) +" min")


	def timer_buttonClicked(self):
		timer_thread = threading.Thread(target=start_timer)
		timer_thread.start()
		self.work_time = int(self.lineEdit.text())
		self.rest_time = 5
		self.work_and_rest = self.work_time + self.rest_time

	def buttonClicked(self,wechat = 0,minutes = 0):
		txt = self.menu.currentText()
		if wechat == 1:
			activity = 'WeChat'
		elif wechat == 2:
			activity = 'Email'
		else:
			activity = txt
		if wechat == 1 or wechat ==2:

			setted = False
			same_time = self.item_list[txt][1]
			full = False
			i = 0
			j = 0
			j_changed = False
			if minutes <= 5:
				for i in range(len(self.rest_5min)):
					if 5 - self.rest_5min[i] >= minutes:
						self.rest_5min[i] += minutes
						self.rest_5min_widgets[i].setText(self.rest_5min_widgets[i].text() + ' ' + activity)
						self.rest_5min_widgets[i].setStyleSheet("background-color: rgba(0, 35, 163,"+ str(255*self.rest_5min[i]/self.work_and_rest) + ")")
						setted = True
						self.table_list.append((i,activity,minutes))
						break
				if setted == False:
					full = True
					if 30 - self.rest_30min[j] >= minutes:
						self.rest_30min[j] += minutes
						self.rest_30min_widgets[j].setText(self.rest_30min_widgets[j].text() + ' ' + activity)
						self.rest_30min_widgets[j].setStyleSheet("background-color: rgba(0, 35, 163,"+ str(255*self.rest_30min[j]/30) + ")")
						setted = True
						j_changed = True
						self.table_list.append((4,activity,minutes))
				if setted == False:
					for j in range(len(self.rest_240min)):
						if 240 - self.rest_240min[j] >= minutes:
							self.rest_240min[j] += minutes
							self.rest_240min_widgets[j].setText(self.rest_240min_widgets[j].text() + ' ' + activity)
							self.rest_240min_widgets[j].setStyleSheet("background-color: rgba(0, 35, 163,"+ str(255*self.rest_240min[j]/240) + ")")
							setted = True
							j_changed = True
							j += 1
							self.table_list.append((j+4,activity,minutes))
							break
				if setted:
					if minutes > 2:
						self.table_1_count += 1
						self.tableWidget.setRowCount(self.table_1_count)
						item = QTableWidgetItem(activity)
						item.setTextAlignment(QtCore.Qt.AlignCenter)
						self.tableWidget.setItem(self.table_1_count - 1,0, item)
						item = QTableWidgetItem(str(minutes))
						item.setTextAlignment(QtCore.Qt.AlignCenter)
						self.tableWidget.setItem(self.table_1_count - 1,1, item)
						item = QTableWidgetItem("x")
						item.setTextAlignment(QtCore.Qt.AlignCenter)
						self.tableWidget.setItem(self.table_1_count - 1,2, item)
						
						self.table_1_items = []
						for idx in range(1,self.table_1_count):
							self.table_1_items.append((self.tableWidget.item(idx,0).text(),int(self.tableWidget.item(idx,1).text())))
							
						
						self.table_1_items = sorted(self.table_1_items, key=lambda x: x[1],reverse=True)
						
						for idx,(act,mnt) in enumerate(self.table_1_items):
							item = QTableWidgetItem(act)
							item.setTextAlignment(QtCore.Qt.AlignCenter)
							self.tableWidget.setItem(idx + 1,0, item)
							item = QTableWidgetItem(str(mnt))
							item.setTextAlignment(QtCore.Qt.AlignCenter)
							self.tableWidget.setItem(idx + 1,1, item)
						
						
					else:
						self.table_2_count += 1
						self.tableWidget_2.setRowCount(self.table_2_count)
						item = QTableWidgetItem(activity)
						item.setTextAlignment(QtCore.Qt.AlignCenter)
						self.tableWidget_2.setItem(self.table_2_count - 1,0, item)
						item = QTableWidgetItem(str(minutes))
						item.setTextAlignment(QtCore.Qt.AlignCenter)
						self.tableWidget_2.setItem(self.table_2_count - 1,1, item)
						item = QTableWidgetItem("x")
						item.setTextAlignment(QtCore.Qt.AlignCenter)
						self.tableWidget_2.setItem(self.table_2_count - 1,2, item)
						
						
						self.table_2_items = []
						for idx in range(self.table_2_count):
							self.table_2_items.append((self.tableWidget_2.item(idx,0).text(),int(self.tableWidget_2.item(idx,1).text())))
							
						
						self.table_2_items = sorted(self.table_2_items, key=lambda x: x[1],reverse=True)
						
						for idx,(act,mnt) in enumerate(self.table_2_items):
							item = QTableWidgetItem(act)
							item.setTextAlignment(QtCore.Qt.AlignCenter)
							self.tableWidget_2.setItem(idx ,0, item)
							item = QTableWidgetItem(str(mnt))
							item.setTextAlignment(QtCore.Qt.AlignCenter)
							self.tableWidget_2.setItem(idx ,1, item)
				if setted == False:
					return "Sorry, Weijie cannot make that long time today, but he will try to arrange his time to contact you asap."
				else:
					global start_time
					time_now = datetime.now()
					diff = time_now-start_time
					diff_minutes = diff.seconds/60

					time_togo = 0
					if i == 0 and j_changed == False:
						time_togo = self.work_time - diff_minutes
					elif i > 0 and not full:
						time_togo = self.work_and_rest * (i+1) - diff_minutes - 5
						
					elif j == 0 and full:
						time_togo = self.work_and_rest *4
					elif j > 0 or full:
						return "Weijie will contact you in some time, maybe during the lunch break or dinner break"
					return "Weijie is busy now, he will contact you " + str(round(time_togo,2)) + " minutes later. If you have something very important, please add \"#important\" before your message"
					


		if (txt != 'Custom') and (activity == txt):
			
			
			setted = False
			minutes = self.item_list[txt][0]
			same_time = self.item_list[txt][1]
			if minutes <= 5:
				for i in range(len(self.rest_5min)):
					if 5 - self.rest_5min[i] >= minutes:
						self.rest_5min[i] += minutes
						self.rest_5min_widgets[i].setText(self.rest_5min_widgets[i].text() + ' ' + txt)
						self.rest_5min_widgets[i].setStyleSheet("background-color: rgba(0, 35, 163,"+ str(255*self.rest_5min[i]/30) + ")")
						setted = True
						self.table_list.append((i,activity,minutes))
						break
			if setted == False:
				j = 0
				if 30 - self.rest_30min[j] >= minutes:
					self.rest_30min[j] += minutes
					self.rest_30min_widgets[j].setText(self.rest_30min_widgets[j].text() + ' ' + activity)
					self.rest_30min_widgets[j].setStyleSheet("background-color: rgba(0, 35, 163,"+ str(255*self.rest_30min[j]/30) + ")")
					setted = True
					j_changed = True
					self.table_list.append((4,activity,minutes))
			if setted == False:
				for j in range(len(self.rest_240min)):
					if 240 - self.rest_240min[j] >= minutes:
						self.rest_240min[j] += minutes
						self.rest_240min_widgets[j].setText(self.rest_240min_widgets[j].text() + ' ' + activity)
						self.rest_240min_widgets[j].setStyleSheet("background-color: rgba(0, 35, 163,"+ str(255*self.rest_240min[j]/240) + ")")
						setted = True
						j_changed = True
						j += 1
						self.table_list.append((j + 4,activity,minutes))
						break
			if setted == False:
				print("wwj")
				msg = QMessageBox()
				msg.setText("无法继续添加")
				msg.setStandardButtons(QMessageBox.Ok)
				retval = msg.exec_()
				
			if setted:
				if minutes > 2:
					self.table_1_count += 1
					self.tableWidget.setRowCount(self.table_1_count)
					item = QTableWidgetItem(activity)
					item.setTextAlignment(QtCore.Qt.AlignCenter)
					self.tableWidget.setItem(self.table_1_count - 1,0, item)
					item = QTableWidgetItem(str(minutes))
					item.setTextAlignment(QtCore.Qt.AlignCenter)
					self.tableWidget.setItem(self.table_1_count - 1,1, item)
					item = QTableWidgetItem("x")
					item.setTextAlignment(QtCore.Qt.AlignCenter)
					self.tableWidget.setItem(self.table_1_count - 1,2, item)
					
					self.table_1_items = []
					for idx in range(1,self.table_1_count):
						self.table_1_items.append((self.tableWidget.item(idx,0).text(),str(self.tableWidget.item(idx,1).text())))
						
					
					self.table_1_items = sorted(self.table_1_items, key=lambda x: x[1],reverse=True)
					
					for idx,(act,mnt) in enumerate(self.table_1_items):
						item = QTableWidgetItem(act)
						item.setTextAlignment(QtCore.Qt.AlignCenter)
						self.tableWidget.setItem(idx + 1,0, item)
						item = QTableWidgetItem(str(mnt))
						item.setTextAlignment(QtCore.Qt.AlignCenter)
						self.tableWidget.setItem(idx + 1,1, item)
					
					
				else:
					self.table_2_count += 1
					self.tableWidget_2.setRowCount(self.table_2_count)
					item = QTableWidgetItem(activity)
					item.setTextAlignment(QtCore.Qt.AlignCenter)
					self.tableWidget_2.setItem(self.table_2_count - 1,0, item)
					item = QTableWidgetItem(str(minutes))
					item.setTextAlignment(QtCore.Qt.AlignCenter)
					self.tableWidget_2.setItem(self.table_2_count - 1,1, item)
					item = QTableWidgetItem("x")
					item.setTextAlignment(QtCore.Qt.AlignCenter)
					self.tableWidget_2.setItem(self.table_2_count - 1,2, item)
					
					
					self.table_2_items = []
					for idx in range(self.table_2_count):
						self.table_2_items.append((self.tableWidget_2.item(idx,0).text(),int(self.tableWidget_2.item(idx,1).text())))
						
					
					self.table_2_items = sorted(self.table_2_items, key=lambda x: x[1],reverse=True)
					
					for idx,(act,mnt) in enumerate(self.table_2_items):
						item = QTableWidgetItem(act)
						item.setTextAlignment(QtCore.Qt.AlignCenter)
						self.tableWidget_2.setItem(idx ,0, item)
						item = QTableWidgetItem(str(mnt))
						item.setTextAlignment(QtCore.Qt.AlignCenter)
						self.tableWidget_2.setItem(idx ,1, item)
					
				
		elif txt == 'Custom':

			d = QDialog()
			self.dialog.setupUi(d)
			if d.exec_() == QDialog.Accepted:
				name = self.dialog.lineEdit.text()
				period = self.dialog.lineEdit_2.text()
				same_time =self.dialog.comboBox.currentText()
				self.menu.addItem("")
				self.item_list[name] = (int(period),same_time)
				self.menu.setItemText(self.menu.count() - 2, name)
				self.menu.setItemText(self.menu.count() - 1, 'Custom')
				
	# delete items
	def table1_click(self,item):
		if (item.column() == 2) and item.row()>0:
			self.table_1_count -= 1
			
			activity, minutes = self.table_1_items.pop(item.row()-1)
			minutes = int(minutes)
			label_idx = 0
			for i,(idx,act,mnt) in enumerate(self.table_list):
				if (act == activity) and (minutes == mnt):
					label_idx = idx
					break
			self.table_list.pop(i)
			if label_idx < 4:
#				self.rest_5min[label_idx] -= minutes
				self.rest_5min_widgets[label_idx].setText(self.rest_5min_widgets[label_idx].text().replace(' ' + activity, "", 1))
#				self.rest_5min_widgets[label_idx].setStyleSheet("background-color: rgba(0, 35, 163,"+ str(255*self.rest_5min[label_idx]/30) + ")")
			elif label_idx == 4:
#				self.rest_30min[0] -= minutes
				self.rest_30min_widgets[0].setText(self.rest_30min_widgets[0].text().replace(' ' + activity, "", 1))
#				self.rest_30min_widgets[0].setStyleSheet("background-color: rgba(0, 35, 163,"+ str(255*self.rest_30min[0]/30) + ")")
			else:
#				self.rest_240min[label_idx-5] -= minutes
				self.rest_240min_widgets[label_idx-5].setText(self.rest_240min_widgets[label_idx-5].text().replace(' ' + activity, "", 1))
#				self.rest_240min_widgets[label_idx-5].setStyleSheet("background-color: rgba(0, 35, 163,"+ str(255*self.rest_240min[label_idx-5]/240) + ")")
			
			
			
			for idx,(act,mnt) in enumerate(self.table_1_items):
				item = QTableWidgetItem(act)
				item.setTextAlignment(QtCore.Qt.AlignCenter)
				self.tableWidget.setItem(idx + 1,0, item)
				item = QTableWidgetItem(str(mnt))
				item.setTextAlignment(QtCore.Qt.AlignCenter)
				self.tableWidget.setItem(idx + 1,1, item)
			self.tableWidget.setRowCount(self.table_1_count)
			
	
	def table2_click(self,item):
		if (item.column() == 2) and item.row()>=0:
			
			self.table_2_count -= 1
			activity, minutes = self.table_2_items.pop(item.row())
			minutes = int(minutes)
			label_idx = 0
			for i,(idx,act,mnt) in enumerate(self.table_list):
				if (act == activity) and (minutes == mnt):
					label_idx = idx
					break
			self.table_list.pop(i)
			if label_idx < 4:
#				self.rest_5min[label_idx] -= minutes
				self.rest_5min_widgets[label_idx].setText(self.rest_5min_widgets[label_idx].text().replace(' ' + activity, "", 1))
#				self.rest_5min_widgets[label_idx].setStyleSheet("background-color: rgba(0, 35, 163,"+ str(255*self.rest_5min[label_idx]/30) + ")")
			elif label_idx == 4:
#				self.rest_30min[0] -= minutes
				self.rest_30min_widgets[0].setText(self.rest_30min_widgets[0].text().replace(' ' + activity, "", 1))
#				self.rest_30min_widgets[0].setStyleSheet("background-color: rgba(0, 35, 163,"+ str(255*self.rest_30min[0]/30) + ")")
			else:
#				self.rest_240min[label_idx-5] -= minutes
				self.rest_240min_widgets[label_idx-5].setText(self.rest_240min_widgets[label_idx-5].text().replace(' ' + activity, "", 1))
#				self.rest_240min_widgets[label_idx-5].setStyleSheet("background-color: rgba(0, 35, 163,"+ str(255*self.rest_240min[label_idx-5]/240) + ")")
			

			for idx,(act,mnt) in enumerate(self.table_2_items):
				item = QTableWidgetItem(act)
				item.setTextAlignment(QtCore.Qt.AlignCenter)
				self.tableWidget_2.setItem(idx,0, item)
				item = QTableWidgetItem(str(mnt))
				item.setTextAlignment(QtCore.Qt.AlignCenter)
				self.tableWidget_2.setItem(idx,1, item)
			self.tableWidget_2.setRowCount(self.table_2_count)
Ejemplo n.º 34
0
class Window(QtGui.QWidget):
    def __init__(self,width,height,host_orch,host_pp):
       # pdb.set_trace()
        QtGui.QWidget.__init__(self)
        #Dialog component
        self.dialog = QtGui.QDialog()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self.dialog)
        
        #Tab widget
        self.tabWidget=QtGui.QTabWidget()
        self.tab= Ui_TabWidget()
        self.tab.setupUi(self.tabWidget,width/2,height/2,host_orch,host_pp)
        
        #Column widget
        self.column = QtGui.QWidget()
        self.col = Ui_column()
        self.col.setupUi(self.column,width,height)
        
        self.video_widget = Phonon.VideoWidget()
        self.video = Ui_Video()
        self.video.setupUi(self.video_widget,width/2,height/2)

        #List Widget
        # self.list = QtGui.QListWidget(self)
        # self.list.setMaximumSize(width/2,height/2)
        # #self.list.hide()
        #Log Widget
        
        self.scrollArea = QtGui.QScrollArea()
        self.scroll=Ui_ScrollArea()
        self.scroll.setupUi(self.scrollArea)
        # self.listView = QtGui.Qlabel(self)
        # self.listView.setObjectName("listView")

        #Connecting Handlers
        self.col.set_handler_about(self.__show_about_handle)
        self.col.set_handler_start(self.__start_scenario)
        self.col.set_handler_stop(self.__stop_scenario)
        self.col.set_handler_clean(self.__clean_logs)


        #Including in the grid
        layout = QtGui.QGridLayout(self)
        layout.addWidget(self.video_widget, 0,0)
        layout.addWidget(self.scrollArea,1,2)
        layout.addWidget(self.tabWidget,1,0)
        layout.addWidget(self.column,0,2)

    # def __handleButton(self):
    #     if self.media.state() == Phonon.PlayingState:
    #         self.media.stop()
    #     else:
    #         path = QtGui.QFileDialog.getOpenFileName(self, self.button.text())
    #         if path:
    #             self.media.setCurrentSource(Phonon.MediaSource(path))
    #             self.media.play()
    #     self.dialog.show()
    def __start_scenario(self):
        try:
            self.__clean_logs()
            scenario = self.col.getScenario()
            self.controller.startScenario(scenario+1)
        except Exception as e:
	    print e
            self.show_exception(e)

        self.video.start_reproduction("/home/Data/Videos/Demo_Scenario2_3D_T.wmv")

    def __stop_scenario(self):
        self.controller.stopScenario()
        
    def __clean_logs(self):
        self.scroll.clean_text()
        
    def __show_about_handle(self):
        self.dialog.show()
    
    def show_exception(self,exception):
        print "EXCEPTION ",exception
        #TODO
    
    def scenarioInitiated(self):
        print "SHOW WINDOW SCENARIO INITIATED"

    def setController(self,controller):
        self.controller = controller
    # def __handleStateChanged(self, newstate, oldstate):
    #     if newstate == Phonon.PlayingState:
    #         self.button.setText('Stop')
    #     elif (newstate != Phonon.LoadingState and
    #           newstate != Phonon.BufferingState):
    #         self.button.setText('Choose File')
    #         if newstate == Phonon.ErrorState:
    #             source = self.media.currentSource().fileName()
    #             print ('ERROR: could not play:', source.toLocal8Bit().data())
    #             print ('  %s' % self.media.errorString().toLocal8Bit().data())

    # def add_new_hit(self,hit):
    #     self.list.addItems(hit)

    def log(self,msg):
        self.scroll.append_text(msg)

    def stop(self):
        None
Ejemplo n.º 35
0
#coding=utf8
__author__ = 'rookiefly'

import PyQt4
import sys
from dialog import Ui_Dialog

if __name__ == "__main__":
    app = PyQt4.QtGui.QApplication(sys.argv)
    dialogWidget = PyQt4.QtGui.QDialog()
    mainDialog = Ui_Dialog()
    mainDialog.setupUi(dialogWidget)
    dialogWidget.show()
    sys.exit(app.exec_())
Ejemplo n.º 36
0
class AppWindow(QDialog) :
    def __init__ (self) :
        """Menghubungkan tiap tombol dalam GUI dengan metode yang akan dilakukan sebagai respon terhadap aksi pengguna."""
        super().__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)        
        self.ui.randomizeButton.clicked.connect(self.randomClick)
        self.ui.loadDirectoryButton.clicked.connect(self.pickDirectory)
        self.ui.loadDatabaseButton.clicked.connect(self.pickDatabase)
        self.ui.saveDbButton.clicked.connect(self.saveDatabase)
        self.ui.batchProcessButton.clicked.connect(self.processDirToDb)
        self.ui.cosRadioButton.toggled.connect(lambda:self.matchMethod(self.ui.cosRadioButton))
        self.ui.euclidRadioButton.toggled.connect(lambda:self.matchMethod(self.ui.euclidRadioButton))
        self.ui.loadImageButton.clicked.connect(self.loadImageClick)
        self.ui.matchButton.clicked.connect(self.matchClick)

        """Inisialisasi keadaan awal program"""
        self.curDbDir = 'No Database Loaded'
        self.matchingMethod = 1
        self.dirLoaded = False
        self.db = None
        self.show()

        """Mengatur metode pencocokan (dengan cosine similarity atau euclidean distance) sesuai dengan pilihan pengguna."""
    def matchMethod(self, radio) :
        if radio.text() == 'Cosine Similarity' :
            if radio.isChecked() == True :
                print("Method switched : Cosine Similarity")
                self.matchingMethod = 1
            
        if radio.text() == 'Euclidean Distance' :
            if radio.isChecked() == True :
                print("Method switched : Euclidean Distance")
                self.matchingMethod = 2

        """Pemilihan direktori oleh pengguna."""
    def pickDirectory(self) :
        directory = str(QFileDialog.getExistingDirectory(self, "Select Directory"))
        if (directory != '') :
            self.ui.currentDirLabel.setText(directory)
            self.dirLoaded = True

        """Pemilihan database oleh pengguna."""
    def pickDatabase(self) :
        database = str(QFileDialog.getOpenFileName(self, "Select Database", "./", "Pickle file (*.pck)")[0])
        if (database != '') :
            self.ui.currentDbLabel.setText(database)
            self.loadDatabase()
    
        """Penyimpanan database yang sedang digunakan pengguna."""
    def saveDatabase(self) :
        db_dest = str(QFileDialog.getSaveFileName(self, "Save Database", "./extracted", "PIckle file (*.pck)")[0])
        # print(db_dest)
        if (self.db == None) :
            print("Empty database. Please load database or process a folder first.")
        else :
            print("Database is not empty. Proceeding to save database.")
            appLogic.write_db(self.db, db_dest)
    
        """Loading database yang dipilih pengguna."""
    def loadDatabase(self) :
        # loads database to a file on this context
        db_path = self.ui.currentDbLabel.text()
        self.db = appLogic.loadDb(db_path)
        print("Database loaded successfully")

        """Pembuatan database dari suatu database atas perintah Batch Process dari pengguna."""
    def processDirToDb(self) :
        if self.dirLoaded :
            currentDir = self.ui.currentDirLabel.text()
            if (currentDir == None) :
                self.showAlertBox("No directory selected. Aborting.")
            else :
                print("Processing...")
                self.db = appLogic.batch_extract(currentDir)
                if (self.db != None) :
                    print("Database has loaded with the current directory.")
                    self.curDbDir = currentDir
                    self.ui.currentDbLabel.setText("Using volatile database.")
        else :
            self.showAlertBox("No directory selected.")
    
        """Mengubah tampilan gambar yang sedang diuji."""
    def changeTestImage(self, filename) :
        image_path = filename
        image_profile = QtGui.QImage(image_path)
        image_profile = image_profile.scaled(350, 350, aspectRatioMode=QtCore.Qt.KeepAspectRatio, transformMode=QtCore.Qt.SmoothTransformation)
        self.ui.testImage.setPixmap(QtGui.QPixmap.fromImage(image_profile))

        """Memilih gambar dengan tombol Load Image."""
    def loadImageClick(self):
        image_path = str(QFileDialog.getOpenFileName(self, "Select Image", "./", "Image file (*.jpg);;Image file (*.png)")[0])
        if os.path.isfile(image_path):
            self.dirLoaded = False
            image_profile = QtGui.QImage(image_path)
            image_profile = image_profile.scaled(350, 350, aspectRatioMode=QtCore.Qt.KeepAspectRatio, transformMode=QtCore.Qt.SmoothTransformation)
            self.ui.testImage.setPixmap(QtGui.QPixmap.fromImage(image_profile))
            self.ui.currentImageLabel.setText(image_path)

        else:
            self.showAlertBox("No picture selected.")

        """Memilih gambar dan melakukan match sesuai dengan perintah Randomize, kemudian menampilkan hasilnya."""
    def randomClick(self):
        if self.dirLoaded :
            image_path = appLogic.random_sampling(self.ui.currentDirLabel.text())
            self.ui.currentImageLabel.setText(image_path)
            currentDir = self.curDbDir
            image_profile = QtGui.QImage(image_path)
            stringFormat = ""
            image_profile = image_profile.scaled(350, 350, aspectRatioMode=QtCore.Qt.KeepAspectRatio, transformMode=QtCore.Qt.SmoothTransformation)
            self.ui.testImage.setPixmap(QtGui.QPixmap.fromImage(image_profile))
            self.matches_arr = None
            if self.matchingMethod == 1 :
                # Cosine similarity == 1
                self.matches_arr = appLogic.match(image_path, self.db)
                stringFormat = "{}%"
            if self.matchingMethod == 2 :
                # Euclidean Distance == 2
                self.matches_arr = appLogic.match_euclid(image_path, self.db)
                stringFormat = "{}"
    
            imgProf = QtGui.QImage(currentDir + '/' + str(self.matches_arr[1][0]))
            if os.path.isfile(currentDir + '/' + str(self.matches_arr[1][0])):
                image_profile = imgProf.scaled(150, 150, aspectRatioMode=QtCore.Qt.KeepAspectRatio, transformMode=QtCore.Qt.SmoothTransformation)
                self.ui.resImage.setPixmap(QtGui.QPixmap.fromImage(image_profile))
                self.ui.matchRate.setText(stringFormat.format(int(round(self.matches_arr[1][1]*100))))
            else:
                self.showAlertBox("Picture " + str(self.matches_arr[1][0]) + " is not found.")

            imgProf = QtGui.QImage(currentDir + '/' + str(self.matches_arr[2][0]))
            if os.path.isfile(currentDir + '/' + str(self.matches_arr[2][0])):
                image_profile = imgProf.scaled(150, 150, aspectRatioMode=QtCore.Qt.KeepAspectRatio, transformMode=QtCore.Qt.SmoothTransformation)
                self.ui.resImage_2.setPixmap(QtGui.QPixmap.fromImage(image_profile))
                self.ui.matchRate_2.setText(stringFormat.format(int(round(self.matches_arr[2][1]*100))))
            else:
                self.showAlertBox("Picture " + str(self.matches_arr[2][0]) + " is not found.")

            imgProf = QtGui.QImage(currentDir + '/' + str(self.matches_arr[3][0]))
            if os.path.isfile(currentDir + '/' + str(self.matches_arr[3][0])):
                image_profile = imgProf.scaled(150, 150, aspectRatioMode=QtCore.Qt.KeepAspectRatio, transformMode=QtCore.Qt.SmoothTransformation)
                self.ui.resImage_3.setPixmap(QtGui.QPixmap.fromImage(image_profile))
                self.ui.matchRate_3.setText(stringFormat.format(int(round(self.matches_arr[3][1]*100))))
            else:
                self.showAlertBox("Picture " + str(self.matches_arr[3][0]) + " is not found.")

            imgProf = QtGui.QImage(currentDir + '/' + str(self.matches_arr[4][0]))
            if os.path.isfile(currentDir + '/' + str(self.matches_arr[4][0])):
                image_profile = imgProf.scaled(150, 150, aspectRatioMode=QtCore.Qt.KeepAspectRatio, transformMode=QtCore.Qt.SmoothTransformation)
                self.ui.resImage_4.setPixmap(QtGui.QPixmap.fromImage(image_profile))
                self.ui.matchRate_4.setText(stringFormat.format(int(round(self.matches_arr[4][1]*100))))
            else:
                self.showAlertBox("Picture " + str(self.matches_arr[4][0]) + " is not found.")

            imgProf = QtGui.QImage(currentDir + '/' + str(self.matches_arr[5][0]))
            if os.path.isfile(currentDir + '/' + str(self.matches_arr[5][0])):
                image_profile = imgProf.scaled(150, 150, aspectRatioMode=QtCore.Qt.KeepAspectRatio, transformMode=QtCore.Qt.SmoothTransformation)
                self.ui.resImage_5.setPixmap(QtGui.QPixmap.fromImage(image_profile))
                self.ui.matchRate_5.setText(stringFormat.format(int(round(self.matches_arr[5][1]*100))))
            else:
                self.showAlertBox("Picture " + str(self.matches_arr[5][0]) + " is not found.")
            
        else :
            self.showAlertBox("No directory loaded")

        """Melakukan matching dengan tombol Match."""
    def matchClick(self):
        image_path = self.ui.currentImageLabel.text()
        if os.path.isfile(image_path):
            currentDir = self.curDbDir
            image_profile = QtGui.QImage(image_path)
            stringFormat = ""
            image_profile = image_profile.scaled(350, 350, aspectRatioMode=QtCore.Qt.KeepAspectRatio, transformMode=QtCore.Qt.SmoothTransformation)
            self.ui.testImage.setPixmap(QtGui.QPixmap.fromImage(image_profile))
            self.matches_arr = None
            if self.matchingMethod == 1 :
                # Cosine similarity == 1
                self.matches_arr = appLogic.match(image_path, self.db)
                stringFormat = "{}%"
            if self.matchingMethod == 2 :
                # Euclidean Distance == 2
                self.matches_arr = appLogic.match_euclid(image_path, self.db)
                stringFormat = "{}"

            imgProf = QtGui.QImage(currentDir + '/' + str(self.matches_arr[0][0]))
            if os.path.isfile(currentDir + '/' + str(self.matches_arr[0][0])):
                image_profile = imgProf.scaled(150, 150, aspectRatioMode=QtCore.Qt.KeepAspectRatio, transformMode=QtCore.Qt.SmoothTransformation)
                self.ui.resImage.setPixmap(QtGui.QPixmap.fromImage(image_profile))
                self.ui.matchRate.setText(stringFormat.format(int(round(self.matches_arr[0][1]*100))))
            else:
                self.showAlertBox("Image " + str(self.matches_arr[0][0]) + " is not found.")

            imgProf = QtGui.QImage(currentDir + '/' + str(self.matches_arr[1][0]))
            if os.path.isfile(currentDir + '/' + str(self.matches_arr[1][0])):
                image_profile = imgProf.scaled(150, 150, aspectRatioMode=QtCore.Qt.KeepAspectRatio, transformMode=QtCore.Qt.SmoothTransformation)
                self.ui.resImage_2.setPixmap(QtGui.QPixmap.fromImage(image_profile))
                self.ui.matchRate_2.setText(stringFormat.format(int(round(self.matches_arr[1][1]*100))))
            else:
                self.showAlertBox("Image " + str(self.matches_arr[1][0]) + " is not found.")

            imgProf = QtGui.QImage(currentDir + '/' + str(self.matches_arr[2][0]))
            if os.path.isfile(currentDir + '/' + str(self.matches_arr[2][0])):
                image_profile = imgProf.scaled(150, 150, aspectRatioMode=QtCore.Qt.KeepAspectRatio, transformMode=QtCore.Qt.SmoothTransformation)
                self.ui.resImage_3.setPixmap(QtGui.QPixmap.fromImage(image_profile))
                self.ui.matchRate_3.setText(stringFormat.format(int(round(self.matches_arr[2][1]*100))))
            else:
                self.showAlertBox("Image " + str(self.matches_arr[2][0]) + " is not found.")

            imgProf = QtGui.QImage(currentDir + '/' + str(self.matches_arr[3][0]))
            if os.path.isfile(currentDir + '/' + str(self.matches_arr[3][0])):
                image_profile = imgProf.scaled(150, 150, aspectRatioMode=QtCore.Qt.KeepAspectRatio, transformMode=QtCore.Qt.SmoothTransformation)
                self.ui.resImage_4.setPixmap(QtGui.QPixmap.fromImage(image_profile))
                self.ui.matchRate_4.setText(stringFormat.format(int(round(self.matches_arr[3][1]*100))))
            else:
                self.showAlertBox("Image " + str(self.matches_arr[3][0]) + " is not found.")

            imgProf = QtGui.QImage(currentDir + '/' + str(self.matches_arr[4][0]))
            if os.path.isfile(currentDir + '/' + str(self.matches_arr[4][0])):
                image_profile = imgProf.scaled(150, 150, aspectRatioMode=QtCore.Qt.KeepAspectRatio, transformMode=QtCore.Qt.SmoothTransformation)
                self.ui.resImage_5.setPixmap(QtGui.QPixmap.fromImage(image_profile))
                self.ui.matchRate_5.setText(stringFormat.format(int(round(self.matches_arr[4][1]*100))))
            else:
                self.showAlertBox("Image " + str(self.matches_arr[4][0]) + " is not found.")
            
        else :
            self.showAlertBox("No image loaded")

        """Menunjukkan pesan peringatan."""
    def showAlertBox(self, msg) :
        alert = QMessageBox()
        alert.setText(msg)
        alert.setWindowTitle("Error")
        alert.setIcon(QMessageBox.Critical)
        alert.setStandardButtons(QMessageBox.Ok)
        alert.exec_()
Ejemplo n.º 37
0
    def menufunction(self, action):
        txt = (action.text())
        if txt == 'NEW Team':
            sql = "SELECT name FROM teams;"
            try:
                cur.execute(sql)
                result = cur.fetchall()
                name, ok = QtWidgets.QInputDialog.getText(
                    MainWindow, "Team",
                    "Enter name of team:")  #Dialog to enter teamName
                teamName = (name, )
                if ok and name == "":
                    self.showdlg(
                        "Teamname can't be empty!!!"
                    )  #Popup if teamName column is left empty and ok is pressed
                elif teamName in result:
                    self.showdlg("Team with this name already exists!!!"
                                 )  #Popup if the teamName already exists
                elif ok and name != "":
                    self.team.setText(str(name))
                    self.rb1.setEnabled(True)
                    self.rb2.setEnabled(True)
                    self.rb3.setEnabled(True)
                    self.rb4.setEnabled(True)

                    self.bat = 0
                    self.bwl = 0
                    self.ar = 0
                    self.wk = 0
                    self.av_pts = 1000
                    self.used_pts = 0
                    self.total_pl = 0
                    self.av_players.clear()
                    self.selected_pl.clear()

                self.show_count()
            except:
                pass

        if txt == 'SAVE Team':
            if self.total_pl < 11:
                self.showdlg(
                    "The team must consist of 11 players"
                )  #Team can't be saved until it consists of 11 players
            else:
                sql = "SELECT name FROM teams;"
                try:
                    cur.execute(sql)
                    result = cur.fetchall()
                    teamName = (self.team.text(),
                                )  #If a user modifies already saved team and
                    if teamName in result:  #wants to save this changed team with the same name
                        try:
                            sql = "DELETE FROM teams WHERE name='" + self.team.text(
                            ) + "';"  #The previously existing team is deleted
                            cur.execute(sql)  #and new modified team is saved
                            Mydb.commit()
                        except:
                            Mydb.rollback()
                    players = []
                    for i in range(self.selected_pl.count()):
                        players.append(self.selected_pl.item(i).text())
                    my_players = ",".join(players)
                    try:
                        cur.execute(
                            "INSERT INTO teams(name,player,value) VALUES(?,?,?);",
                            (self.team.text(), my_players, self.used_pts))
                        Mydb.commit(
                        )  #Team gets saved in the database.If not,message is displayed
                        self.showdlg("Your team is saved")
                    except:
                        self.showdlg("Some Error occurred")
                        Mydb.rollback()
                except:
                    pass

        if txt == 'OPEN Team':
            sql = "SELECT name FROM teams"
            try:
                cur.execute(sql)
                result = cur.fetchall()
                teamnames = []

                for i in result:
                    teamnames.append(i[0])
                item, ok = QtWidgets.QInputDialog.getItem(
                    MainWindow, "OpenTeam", "Select any team to open",
                    teamnames, 0, False)  #Dialog with teamNames is displayed

                if ok and item:
                    self.team.setText(item)
                    self.av_players.clear()
                    self.selected_pl.clear()
                    self.bat = 0
                    self.bwl = 0
                    self.ar = 0
                    self.wk = 0
                    self.total_pl = 11

                    self.rb1.setEnabled(
                        True
                    )  #If the user selects OPEN Team menu in the starting,
                    self.rb2.setEnabled(
                        True)  #then all radio buttons are enabled
                    self.rb3.setEnabled(True)
                    self.rb4.setEnabled(True)

                    sql = "SELECT player,value FROM teams WHERE name='" + item + "';"
                    cur.execute(sql)
                    result = cur.fetchone()
                    players = result[0].split(",")
                    for i in players:
                        sql = "SELECT ctg FROM stats WHERE player='" + i + "';"
                        try:
                            cur.execute(sql)
                            category = cur.fetchone()
                            if category[0] == "BAT": self.bat += 1
                            if category[0] == "BWL": self.bwl += 1
                            if category[0] == "AR": self.ar += 1
                            if category[0] == "WK":
                                self.wk += 1  #Players of the selected team are displayed along with all counts
                            self.selected_pl.addItem(i)  #and points
                        except:
                            pass
                    self.used_pts = int(result[1])
                    self.av_pts = 1000 - self.used_pts
                self.show_count()
            except:
                pass

        if txt == 'EVALUATE Team':
            Dialog = QtWidgets.QDialog(
            )  #New dialog box for evaluating your saved team
            ui = Ui_Dialog()
            ui.setupUi(Dialog)
            ret = Dialog.exec()
Ejemplo n.º 38
0
    web.goTo(url)
    web.show()


if __name__ == '__main__':
    # Init main window
    Qapp = QtWidgets.QApplication(sys.argv)
    Qhome = QtWidgets.QMainWindow()
    home = Ui_Home()
    home.setupUi(Qhome)
    web = Ui_Web()

    # Init dialog window
    Qdialog = QtWidgets.QDialog()
    dialog = Ui_Dialog()
    dialog.setupUi(Qdialog)

    # Link widgets to funtions
    home.btnLED.clicked.connect(lambda: Arduino('leds'))
    home.btnLaser.clicked.connect(lambda: Arduino('laser'))
    home.btnWeb.clicked.connect(lambda: Browser('localhost:3000'))

    home.actionQuit.triggered.connect(Qapp.exit)
    home.actionAbout.triggered.connect(Qdialog.show)
    home.actionSave.triggered.connect(Plot)

    # Load main window
    Qhome.setWindowTitle(config['app_name'])
    Qhome.show()
    Qapp.exec_()
    config.save(sort_keys=False)