def remove_item(self): self.action = "remove" selected_index = self.listWidgetAlyObj.currentRow() #selected_text = self.listWidgetAlyObj.currentItem().text() selected_item_data = self.listWidgetAlyObj.currentItem().data(Qt.UserRole).toString() self.xml_name = str(selected_item_data) #self.xml_name = selected_text + ".xml" if self.xml_name.endswith("_RectFinder.xml"): self.alyvix_finder_controller = AlyvixRectFinderView(self) elif self.xml_name.endswith("_ImageFinder.xml"): self.alyvix_finder_controller = AlyvixImageFinderView(self) elif self.xml_name.endswith("_TextFinder.xml"): self.alyvix_finder_controller = AlyvixTextFinderView(self) elif self.xml_name.endswith("_ObjectFinder.xml"): self.alyvix_finder_controller = AlyvixObjectFinderView(self) elif self.xml_name.endswith("_CustomCode.xml"): self.alyvix_finder_controller = AlyvixCustomCodeView(self) self.alyvix_finder_controller.remove_code_from_py_file() if self.xml_name.endswith("_ObjectFinder.xml"): self.alyvix_finder_controller.delete_lock_list() os.remove(self.path + os.sep + str(self.xml_name).replace("_ObjectFinder.xml","_old_code.txt")) elif self.xml_name.endswith("_CustomCode.xml"): os.remove(self.path + os.sep + str(self.xml_name).replace("_CustomCode.xml","_old_code.txt")) else: os.remove(self.path + os.sep + str(self.xml_name).replace("xml","png")) """ if not self.xml_name.endswith("_ObjectFinder.xml"): os.remove(self.path + os.sep + str(self.xml_name).replace("xml","png")) else: self.alyvix_finder_controller.delete_lock_list() os.remove(self.path + os.sep + str(self.xml_name).replace("_ObjectFinder.xml","_old_code.txt")) """ os.remove(self.path + os.sep + str(self.xml_name)) template_path = self.path + os.sep + str(self.xml_name).replace("_ImageFinder.xml","") if os.path.exists(template_path): shutil.rmtree(template_path) #self.update_list() item = self.listWidgetAlyObj.takeItem(selected_index) self.listWidgetAlyObj.removeItemWidget(item) self.update_list()
def open_textfinder_view(self): self.xml_name = None self.restore_view() screen_manager = ScreenManager() self.hide() self.sleep_before_action() time.sleep(0.600) img_color = screen_manager.grab_desktop(screen_manager.get_color_mat) img_color = cv2.cvtColor(img_color, cv2.COLOR_BGR2RGB) image = QImage(img_color, img_color.shape[1], img_color.shape[0], img_color.strides[0], QImage.Format_RGB888) self.alyvix_text_finder_controller = AlyvixTextFinderView(self) self.alyvix_text_finder_controller.set_bg_pixmap(image) self.alyvix_text_finder_controller.showFullScreen()
def edit_item(self): self.action = "edit" if self.listWidgetAlyObj.currentRow() < 0: return #print self.listWidgetAlyObj.currentRow() selected_item_data = self.listWidgetAlyObj.currentItem().data(Qt.UserRole).toString() self.xml_name = str(selected_item_data) #print selected_item_data if self.xml_name.endswith("_ObjectFinder.xml"): self.hide() time.sleep(0.600) self.alyvix_finder_controller = AlyvixObjectFinderView(self) self.alyvix_finder_controller.show() return if self.xml_name.endswith("_CustomCode.xml"): self.hide() time.sleep(0.600) self.alyvix_finder_controller = AlyvixCustomCodeView(self) self.alyvix_finder_controller.show() return screen_manager = ScreenManager() self.hide() time.sleep(0.600) img_color = cv2.imread(str(self.xml_name).replace("xml","png")) #screen_manager.grab_desktop(screen_manager.get_color_mat) #print "imgggg", self.path + os.sep + self.xml_name image = QImage(self.path + os.sep + self.xml_name.replace("xml", "png")) #print self.path, self.robot_file_name, self.xml_name if self.xml_name.endswith("_RectFinder.xml"): self.alyvix_finder_controller = AlyvixRectFinderView(self) elif self.xml_name.endswith("_ImageFinder.xml"): self.alyvix_finder_controller = AlyvixImageFinderView(self) elif self.xml_name.endswith("_TextFinder.xml"): self.alyvix_finder_controller = AlyvixTextFinderView(self) #self.alyvix_rect_finder_controller.set_path(self.full_file_name) self.alyvix_finder_controller.set_bg_pixmap(image) self.alyvix_finder_controller.showFullScreen()
def remove_item(self): self.action = "remove" selected_index = self.listWidgetAlyObj.currentRow() #selected_text = self.listWidgetAlyObj.currentItem().text() selected_item_data = self.listWidgetAlyObj.currentItem().data( Qt.UserRole).toString() self.xml_name = str(selected_item_data) #self.xml_name = selected_text + ".xml" if self.xml_name.endswith("_RectFinder.xml"): self.alyvix_finder_controller = AlyvixRectFinderView(self) elif self.xml_name.endswith("_ImageFinder.xml"): self.alyvix_finder_controller = AlyvixImageFinderView(self) elif self.xml_name.endswith("_TextFinder.xml"): self.alyvix_finder_controller = AlyvixTextFinderView(self) elif self.xml_name.endswith("_ObjectFinder.xml"): self.alyvix_finder_controller = AlyvixObjectFinderView(self) elif self.xml_name.endswith("_CustomCode.xml"): self.alyvix_finder_controller = AlyvixCustomCodeView(self) self.alyvix_finder_controller.remove_code_from_py_file() if self.xml_name.endswith("_ObjectFinder.xml"): self.alyvix_finder_controller.delete_lock_list() os.remove(self.path + os.sep + str(self.xml_name).replace( "_ObjectFinder.xml", "_old_code.txt")) elif self.xml_name.endswith("_CustomCode.xml"): os.remove( self.path + os.sep + str(self.xml_name).replace("_CustomCode.xml", "_old_code.txt")) else: os.remove(self.path + os.sep + str(self.xml_name).replace("xml", "png")) """ if not self.xml_name.endswith("_ObjectFinder.xml"): os.remove(self.path + os.sep + str(self.xml_name).replace("xml","png")) else: self.alyvix_finder_controller.delete_lock_list() os.remove(self.path + os.sep + str(self.xml_name).replace("_ObjectFinder.xml","_old_code.txt")) """ os.remove(self.path + os.sep + str(self.xml_name)) template_path = self.path + os.sep + str(self.xml_name).replace( "_ImageFinder.xml", "") if os.path.exists(template_path): shutil.rmtree(template_path) #self.update_list() item = self.listWidgetAlyObj.takeItem(selected_index) self.listWidgetAlyObj.removeItemWidget(item) self.update_list()
def edit_item(self): self.action = "edit" if self.listWidgetAlyObj.currentRow() < 0: return #print self.listWidgetAlyObj.currentRow() selected_item_data = self.listWidgetAlyObj.currentItem().data( Qt.UserRole).toString() self.xml_name = str(selected_item_data) #print selected_item_data if self.xml_name.endswith("_ObjectFinder.xml"): self.hide() time.sleep(0.600) self.alyvix_finder_controller = AlyvixObjectFinderView(self) self.alyvix_finder_controller.show() return if self.xml_name.endswith("_CustomCode.xml"): self.hide() time.sleep(0.600) self.alyvix_finder_controller = AlyvixCustomCodeView(self) self.alyvix_finder_controller.show() return screen_manager = ScreenManager() self.hide() time.sleep(0.600) img_color = cv2.imread(str(self.xml_name).replace( "xml", "png")) #screen_manager.grab_desktop(screen_manager.get_color_mat) #print "imgggg", self.path + os.sep + self.xml_name image = QImage(self.path + os.sep + self.xml_name.replace("xml", "png")) #print self.path, self.robot_file_name, self.xml_name if self.xml_name.endswith("_RectFinder.xml"): self.alyvix_finder_controller = AlyvixRectFinderView(self) elif self.xml_name.endswith("_ImageFinder.xml"): self.alyvix_finder_controller = AlyvixImageFinderView(self) elif self.xml_name.endswith("_TextFinder.xml"): self.alyvix_finder_controller = AlyvixTextFinderView(self) #self.alyvix_rect_finder_controller.set_path(self.full_file_name) self.alyvix_finder_controller.set_bg_pixmap(image) self.alyvix_finder_controller.showFullScreen()
class AlyvixMainMenuController(QDialog, Ui_Form): def __init__(self): QDialog.__init__(self) # Set up the user interface from Designer. self.setupUi(self) self.setFixedSize(self.size()) #self.setWindowTitle('Application Object Properties') self.setWindowFlags(Qt.WindowCloseButtonHint | Qt.WindowStaysOnTopHint) self.connect(self.pushButtonNew, SIGNAL("clicked()"), self.add_item) self.connect(self.pushButtonEdit, SIGNAL("clicked()"), self.edit_item) self.connect(self.pushButtonRemove, SIGNAL("clicked()"), self.remove_item) self.connect(self.pushButtonCancel, SIGNAL("clicked()"), self.cancel_action) self.connect(self.pushButtonRF, SIGNAL("clicked()"), self.open_rectfinder_view) self.connect(self.pushButtonIF, SIGNAL("clicked()"), self.open_imagefinder_view) self.connect(self.pushButtonTF, SIGNAL("clicked()"), self.open_textfinder_view) self.connect(self.pushButtonOF, SIGNAL("clicked()"), self.open_objectfinder_controller) self.connect(self.pushButtonCC, SIGNAL("clicked()"), self.open_customcode_controller) self.window = None self.full_file_name = None self.path = None self.robot_file_name = None self.action = "" self.xml_name = "" if len(sys.argv) > 1: self.full_file_name = sys.argv[1] #print self.full_file_name self.update_path() self.update_list() self.gridLayoutWidget.hide() self.pushButtonCancel.hide() def update_path(self): lines = self.full_file_name.split(os.sep) self.path = "" cnt = 0 for line in lines: if cnt == len(lines) - 1: break self.path = self.path + line + os.sep cnt = cnt + 1 self.robot_file_name = lines[len(lines) - 1] self.robot_file_name = self.robot_file_name.split('.')[0] self.robot_file_name = self.robot_file_name self.path = self.path[:-1] + os.sep + "Alyvix" + lines[len(lines) - 1].split('.')[0] + "Objects" #print "path", self.path def remove_item(self): self.action = "remove" selected_index = self.listWidgetAlyObj.currentRow() #selected_text = self.listWidgetAlyObj.currentItem().text() selected_item_data = self.listWidgetAlyObj.currentItem().data(Qt.UserRole).toString() self.xml_name = str(selected_item_data) #self.xml_name = selected_text + ".xml" if self.xml_name.endswith("_RectFinder.xml"): self.alyvix_finder_controller = AlyvixRectFinderView(self) elif self.xml_name.endswith("_ImageFinder.xml"): self.alyvix_finder_controller = AlyvixImageFinderView(self) elif self.xml_name.endswith("_TextFinder.xml"): self.alyvix_finder_controller = AlyvixTextFinderView(self) elif self.xml_name.endswith("_ObjectFinder.xml"): self.alyvix_finder_controller = AlyvixObjectFinderView(self) elif self.xml_name.endswith("_CustomCode.xml"): self.alyvix_finder_controller = AlyvixCustomCodeView(self) self.alyvix_finder_controller.remove_code_from_py_file() if self.xml_name.endswith("_ObjectFinder.xml"): self.alyvix_finder_controller.delete_lock_list() os.remove(self.path + os.sep + str(self.xml_name).replace("_ObjectFinder.xml","_old_code.txt")) elif self.xml_name.endswith("_CustomCode.xml"): os.remove(self.path + os.sep + str(self.xml_name).replace("_CustomCode.xml","_old_code.txt")) else: os.remove(self.path + os.sep + str(self.xml_name).replace("xml","png")) """ if not self.xml_name.endswith("_ObjectFinder.xml"): os.remove(self.path + os.sep + str(self.xml_name).replace("xml","png")) else: self.alyvix_finder_controller.delete_lock_list() os.remove(self.path + os.sep + str(self.xml_name).replace("_ObjectFinder.xml","_old_code.txt")) """ os.remove(self.path + os.sep + str(self.xml_name)) template_path = self.path + os.sep + str(self.xml_name).replace("_ImageFinder.xml","") if os.path.exists(template_path): shutil.rmtree(template_path) #self.update_list() item = self.listWidgetAlyObj.takeItem(selected_index) self.listWidgetAlyObj.removeItemWidget(item) self.update_list() def update_list(self): self.listWidgetAlyObj.clear() #dirs = os.listdir(self.full_file_name) #dirs = [d for d in os.listdir(self.path) if os.path.isdir(os.path.join(self.path, d))] # path to the directory (relative or absolute) dirpath = self.path try: # get all entries in the directory w/ stats entries = (os.path.join(dirpath, fn) for fn in os.listdir(dirpath)) entries = ((os.stat(path), path) for path in entries) except: return # leave only regular files, insert creation date entries = ((stat[ST_CTIME], path) for stat, path in entries if S_ISREG(stat[ST_MODE])) #NOTE: on Windows `ST_CTIME` is a creation date # but on Unix it could be something else #NOTE: use `ST_MTIME` to sort by a modification date if os.path.exists(self.path + os.sep + "lock_list.xml"): f = open(self.path + os.sep + "lock_list.xml") string = f.read() for cdate, path in sorted(entries): filename = os.path.basename(path) if os.path.exists(self.path + os.sep + "lock_list.xml"): if "<name>" + filename + "</name>" in string: continue if filename.endswith('.xml') and not filename.endswith('list.xml') and not filename.endswith('data.xml'): item = QListWidgetItem() if filename.endswith('_RectFinder.xml'): item.setText(filename[:-15] + " [RF]") elif filename.endswith('_ImageFinder.xml'): item.setText(filename[:-16] + " [IF]") elif filename.endswith("_TextFinder.xml"): item.setText(filename[:-15] + " [TF]") elif filename.endswith('_ObjectFinder.xml'): item.setText(filename[:-17] + " [OF]") elif filename.endswith('_CustomCode.xml'): item.setText(filename[:-15] + " [CC]") item.setData(Qt.UserRole, filename) self.listWidgetAlyObj.addItem(item) #print time.ctime(cdate), os.path.basename(path) """ files = [] files += [each for each in os.listdir(self.path) if each.endswith('.xml')] for file in files: item = QListWidgetItem() #item.setCheckState(Qt.Checked) item.setText(file[:-4]) self.listWidgetAlyObj.addItem(item) print self.listWidgetAlyObj.count() """ def keyPressEvent(self, event): if event.key() == Qt.Key_Escape: #print "dummy" self.close() def closeEvent(self, event): if self.window is not None: self.window.close() def cancel_action(self): self.restore_view() def restore_view(self): self.gridLayoutWidget.hide() self.pushButtonCancel.hide() self.spinBoxDelay.hide() self.label_2.hide() self.listWidgetAlyObj.setGeometry(QRect(8, 28, 218, 181)) self.pushButtonEdit.show() self.pushButtonNew.show() self.pushButtonRemove.show() self.listWidgetAlyObj.show() self.label.show() #self.spinBoxDelay.setGeometry(QRect(62, 500, 111, 23)) self.label_2.setGeometry(QRect(135, 333, 37, 20)) self.spinBoxDelay.setGeometry(QRect(184, 332, 42, 22)) self.gridLayoutWidget.setGeometry(QRect(8, 330, 218, 177)) self.pushButtonCancel.setGeometry(QRect(62, 500, 111, 23)) def add_item(self): self.action = "new" self.pushButtonEdit.hide() self.pushButtonNew.hide() self.pushButtonRemove.hide() self.listWidgetAlyObj.hide() self.label.hide() self.gridLayoutWidget.show() self.pushButtonCancel.show() self.spinBoxDelay.show() self.label_2.show() self.label_2.setGeometry(QRect(135, 12, 37, 20)) self.spinBoxDelay.setGeometry(QRect(182, 10, 42, 22)) self.gridLayoutWidget.setGeometry(QRect(8, 38, 218, 197)) self.pushButtonCancel.setGeometry(QRect(62, 235, 111, 23)) def edit_item(self): self.action = "edit" if self.listWidgetAlyObj.currentRow() < 0: return #print self.listWidgetAlyObj.currentRow() selected_item_data = self.listWidgetAlyObj.currentItem().data(Qt.UserRole).toString() self.xml_name = str(selected_item_data) #print selected_item_data if self.xml_name.endswith("_ObjectFinder.xml"): self.hide() time.sleep(0.600) self.alyvix_finder_controller = AlyvixObjectFinderView(self) self.alyvix_finder_controller.show() return if self.xml_name.endswith("_CustomCode.xml"): self.hide() time.sleep(0.600) self.alyvix_finder_controller = AlyvixCustomCodeView(self) self.alyvix_finder_controller.show() return screen_manager = ScreenManager() self.hide() time.sleep(0.600) img_color = cv2.imread(str(self.xml_name).replace("xml","png")) #screen_manager.grab_desktop(screen_manager.get_color_mat) #print "imgggg", self.path + os.sep + self.xml_name image = QImage(self.path + os.sep + self.xml_name.replace("xml", "png")) #print self.path, self.robot_file_name, self.xml_name if self.xml_name.endswith("_RectFinder.xml"): self.alyvix_finder_controller = AlyvixRectFinderView(self) elif self.xml_name.endswith("_ImageFinder.xml"): self.alyvix_finder_controller = AlyvixImageFinderView(self) elif self.xml_name.endswith("_TextFinder.xml"): self.alyvix_finder_controller = AlyvixTextFinderView(self) #self.alyvix_rect_finder_controller.set_path(self.full_file_name) self.alyvix_finder_controller.set_bg_pixmap(image) self.alyvix_finder_controller.showFullScreen() def add_new_item_on_list(self): #self.update_list() dirpath = self.path # get all entries in the directory w/ stats entries = (os.path.join(dirpath, fn) for fn in os.listdir(dirpath) if not fn.endswith(".txt") and not fn.endswith(".png") and not fn.endswith('list.xml') and not fn.endswith('data.xml')) #print entries entries = ((os.stat(path), path) for path in entries) # leave only regular files, insert creation date entries = ((stat[ST_CTIME], path) for stat, path in entries if S_ISREG(stat[ST_MODE])) """ for entry in entries: cdate, path = entry print path """ #print entries #NOTE: on Windows `ST_CTIME` is a creation date # but on Unix it could be something else #NOTE: use `ST_MTIME` to sort by a modification date list_sorted = sorted(entries) cdate, path = list_sorted[-1] filename = os.path.basename(path) #print filename #print cdate print filename item = QListWidgetItem() if filename.endswith('_RectFinder.xml'): item.setText(filename[:-15] + " [RF]") elif filename.endswith('_ImageFinder.xml'): item.setText(filename[:-16] + " [IF]") elif filename.endswith("_TextFinder.xml"): item.setText(filename[:-15] + " [TF]") elif filename.endswith("_ObjectFinder.xml"): item.setText(filename[:-17] + " [OF]") elif filename.endswith("_CustomCode.xml"): item.setText(filename[:-15] + " [CC]") """ elif filename.endswith('_old_code.txt'): cdate, path = list_sorted[-2] penultimate_name = os.path.basename(path) if penultimate_name.endswith('_ObjectFinder.xml'): item.setText(penultimate_name[:-17] + " [OF]") penultimate_name = penultimate_name.replace("_old_code.txt", "_ObjectFinder.xml") else: item.setText(penultimate_name[:-15] + " [CC]") penultimate_name = penultimate_name.replace("_old_code.txt", "_CustomCode.xml") item.setData(Qt.UserRole, penultimate_name) self.listWidgetAlyObj.addItem(item) return """ item.setData(Qt.UserRole, filename) self.listWidgetAlyObj.addItem(item) #self.update() def open_rectfinder_view(self): self.xml_name = None self.restore_view() screen_manager = ScreenManager() self.hide() self.sleep_before_action() time.sleep(0.600) img_color = screen_manager.grab_desktop(screen_manager.get_color_mat) img_color = cv2.cvtColor(img_color, cv2.COLOR_BGR2RGB) image = QImage(img_color, img_color.shape[1], img_color.shape[0], img_color.strides[0], QImage.Format_RGB888) self.alyvix_rect_finder_controller = AlyvixRectFinderView(self) self.alyvix_rect_finder_controller.set_bg_pixmap(image) self.alyvix_rect_finder_controller.showFullScreen() def open_imagefinder_view(self): self.xml_name = None self.restore_view() screen_manager = ScreenManager() self.hide() self.sleep_before_action() time.sleep(0.600) img_color = screen_manager.grab_desktop(screen_manager.get_color_mat) img_color = cv2.cvtColor(img_color, cv2.COLOR_BGR2RGB) image = QImage(img_color, img_color.shape[1], img_color.shape[0], img_color.strides[0], QImage.Format_RGB888) self.alyvix_image_finder_controller = AlyvixImageFinderView(self) self.alyvix_image_finder_controller.set_bg_pixmap(image) self.alyvix_image_finder_controller.showFullScreen() def open_textfinder_view(self): self.xml_name = None self.restore_view() screen_manager = ScreenManager() self.hide() self.sleep_before_action() time.sleep(0.600) img_color = screen_manager.grab_desktop(screen_manager.get_color_mat) img_color = cv2.cvtColor(img_color, cv2.COLOR_BGR2RGB) image = QImage(img_color, img_color.shape[1], img_color.shape[0], img_color.strides[0], QImage.Format_RGB888) self.alyvix_text_finder_controller = AlyvixTextFinderView(self) self.alyvix_text_finder_controller.set_bg_pixmap(image) self.alyvix_text_finder_controller.showFullScreen() def open_objectfinder_controller(self): self.xml_name = None self.restore_view() #screen_manager = ScreenManager() self.hide() self.sleep_before_action() time.sleep(0.600) #img_color = screen_manager.grab_desktop(screen_manager.get_color_mat) #img_color = cv2.cvtColor(img_color, cv2.COLOR_BGR2RGB) #image = QImage(img_color, img_color.shape[1], img_color.shape[0], img_color.strides[0], QImage.Format_RGB888) self.alyvix_objectfinder_controller = AlyvixObjectFinderView(self) #self.alyvix_objectfinder_controller.set_bg_pixmap(image) self.alyvix_objectfinder_controller.show() def open_customcode_controller(self): self.xml_name = None self.restore_view() #screen_manager = ScreenManager() self.hide() time.sleep(0.600) #img_color = screen_manager.grab_desktop(screen_manager.get_color_mat) #img_color = cv2.cvtColor(img_color, cv2.COLOR_BGR2RGB) #image = QImage(img_color, img_color.shape[1], img_color.shape[0], img_color.strides[0], QImage.Format_RGB888) self.alyvix_custom_code_controller = AlyvixCustomCodeView(self) #self.alyvix_objectfinder_controller.set_bg_pixmap(image) self.alyvix_custom_code_controller.show() def sleep_before_action(self): time.sleep(int(self.spinBoxDelay.value()))
class AlyvixMainMenuController(QDialog, Ui_Form): def __init__(self): QDialog.__init__(self) # Set up the user interface from Designer. self.setupUi(self) self.setFixedSize(self.size()) #self.setWindowTitle('Application Object Properties') self.setWindowFlags(Qt.WindowCloseButtonHint | Qt.WindowStaysOnTopHint) self.connect(self.pushButtonNew, SIGNAL("clicked()"), self.add_item) self.connect(self.pushButtonEdit, SIGNAL("clicked()"), self.edit_item) self.connect(self.pushButtonRemove, SIGNAL("clicked()"), self.remove_item) self.connect(self.pushButtonCancel, SIGNAL("clicked()"), self.cancel_action) self.connect(self.pushButtonRF, SIGNAL("clicked()"), self.open_rectfinder_view) self.connect(self.pushButtonIF, SIGNAL("clicked()"), self.open_imagefinder_view) self.connect(self.pushButtonTF, SIGNAL("clicked()"), self.open_textfinder_view) self.connect(self.pushButtonOF, SIGNAL("clicked()"), self.open_objectfinder_controller) self.connect(self.pushButtonCC, SIGNAL("clicked()"), self.open_customcode_controller) self.window = None self.full_file_name = None self.path = None self.robot_file_name = None self.action = "" self.xml_name = "" if len(sys.argv) > 1: self.full_file_name = sys.argv[1] #print self.full_file_name self.update_path() self.update_list() self.gridLayoutWidget.hide() self.pushButtonCancel.hide() def update_path(self): lines = self.full_file_name.split(os.sep) self.path = "" cnt = 0 for line in lines: if cnt == len(lines) - 1: break self.path = self.path + line + os.sep cnt = cnt + 1 self.robot_file_name = lines[len(lines) - 1] self.robot_file_name = self.robot_file_name.split('.')[0] self.robot_file_name = self.robot_file_name self.path = self.path[:-1] + os.sep + "Alyvix" + lines[ len(lines) - 1].split('.')[0] + "Objects" #print "path", self.path def remove_item(self): self.action = "remove" selected_index = self.listWidgetAlyObj.currentRow() #selected_text = self.listWidgetAlyObj.currentItem().text() selected_item_data = self.listWidgetAlyObj.currentItem().data( Qt.UserRole).toString() self.xml_name = str(selected_item_data) #self.xml_name = selected_text + ".xml" if self.xml_name.endswith("_RectFinder.xml"): self.alyvix_finder_controller = AlyvixRectFinderView(self) elif self.xml_name.endswith("_ImageFinder.xml"): self.alyvix_finder_controller = AlyvixImageFinderView(self) elif self.xml_name.endswith("_TextFinder.xml"): self.alyvix_finder_controller = AlyvixTextFinderView(self) elif self.xml_name.endswith("_ObjectFinder.xml"): self.alyvix_finder_controller = AlyvixObjectFinderView(self) elif self.xml_name.endswith("_CustomCode.xml"): self.alyvix_finder_controller = AlyvixCustomCodeView(self) self.alyvix_finder_controller.remove_code_from_py_file() if self.xml_name.endswith("_ObjectFinder.xml"): self.alyvix_finder_controller.delete_lock_list() os.remove(self.path + os.sep + str(self.xml_name).replace( "_ObjectFinder.xml", "_old_code.txt")) elif self.xml_name.endswith("_CustomCode.xml"): os.remove( self.path + os.sep + str(self.xml_name).replace("_CustomCode.xml", "_old_code.txt")) else: os.remove(self.path + os.sep + str(self.xml_name).replace("xml", "png")) """ if not self.xml_name.endswith("_ObjectFinder.xml"): os.remove(self.path + os.sep + str(self.xml_name).replace("xml","png")) else: self.alyvix_finder_controller.delete_lock_list() os.remove(self.path + os.sep + str(self.xml_name).replace("_ObjectFinder.xml","_old_code.txt")) """ os.remove(self.path + os.sep + str(self.xml_name)) template_path = self.path + os.sep + str(self.xml_name).replace( "_ImageFinder.xml", "") if os.path.exists(template_path): shutil.rmtree(template_path) #self.update_list() item = self.listWidgetAlyObj.takeItem(selected_index) self.listWidgetAlyObj.removeItemWidget(item) self.update_list() def update_list(self): self.listWidgetAlyObj.clear() #dirs = os.listdir(self.full_file_name) #dirs = [d for d in os.listdir(self.path) if os.path.isdir(os.path.join(self.path, d))] # path to the directory (relative or absolute) dirpath = self.path try: # get all entries in the directory w/ stats entries = (os.path.join(dirpath, fn) for fn in os.listdir(dirpath)) entries = ((os.stat(path), path) for path in entries) except: return # leave only regular files, insert creation date entries = ((stat[ST_CTIME], path) for stat, path in entries if S_ISREG(stat[ST_MODE])) #NOTE: on Windows `ST_CTIME` is a creation date # but on Unix it could be something else #NOTE: use `ST_MTIME` to sort by a modification date if os.path.exists(self.path + os.sep + "lock_list.xml"): f = open(self.path + os.sep + "lock_list.xml") string = f.read() for cdate, path in sorted(entries): filename = os.path.basename(path) if os.path.exists(self.path + os.sep + "lock_list.xml"): if "<name>" + filename + "</name>" in string: continue if filename.endswith('.xml') and not filename.endswith( 'list.xml') and not filename.endswith('data.xml'): item = QListWidgetItem() if filename.endswith('_RectFinder.xml'): item.setText(filename[:-15] + " [RF]") elif filename.endswith('_ImageFinder.xml'): item.setText(filename[:-16] + " [IF]") elif filename.endswith("_TextFinder.xml"): item.setText(filename[:-15] + " [TF]") elif filename.endswith('_ObjectFinder.xml'): item.setText(filename[:-17] + " [OF]") elif filename.endswith('_CustomCode.xml'): item.setText(filename[:-15] + " [CC]") item.setData(Qt.UserRole, filename) self.listWidgetAlyObj.addItem(item) #print time.ctime(cdate), os.path.basename(path) """ files = [] files += [each for each in os.listdir(self.path) if each.endswith('.xml')] for file in files: item = QListWidgetItem() #item.setCheckState(Qt.Checked) item.setText(file[:-4]) self.listWidgetAlyObj.addItem(item) print self.listWidgetAlyObj.count() """ def keyPressEvent(self, event): if event.key() == Qt.Key_Escape: #print "dummy" self.close() def closeEvent(self, event): if self.window is not None: self.window.close() def cancel_action(self): self.restore_view() def restore_view(self): self.gridLayoutWidget.hide() self.pushButtonCancel.hide() self.spinBoxDelay.hide() self.label_2.hide() self.listWidgetAlyObj.setGeometry(QRect(8, 28, 218, 181)) self.pushButtonEdit.show() self.pushButtonNew.show() self.pushButtonRemove.show() self.listWidgetAlyObj.show() self.label.show() #self.spinBoxDelay.setGeometry(QRect(62, 500, 111, 23)) self.label_2.setGeometry(QRect(135, 333, 37, 20)) self.spinBoxDelay.setGeometry(QRect(184, 332, 42, 22)) self.gridLayoutWidget.setGeometry(QRect(8, 330, 218, 177)) self.pushButtonCancel.setGeometry(QRect(62, 500, 111, 23)) def add_item(self): self.action = "new" self.pushButtonEdit.hide() self.pushButtonNew.hide() self.pushButtonRemove.hide() self.listWidgetAlyObj.hide() self.label.hide() self.gridLayoutWidget.show() self.pushButtonCancel.show() self.spinBoxDelay.show() self.label_2.show() self.label_2.setGeometry(QRect(135, 12, 37, 20)) self.spinBoxDelay.setGeometry(QRect(182, 10, 42, 22)) self.gridLayoutWidget.setGeometry(QRect(8, 38, 218, 197)) self.pushButtonCancel.setGeometry(QRect(62, 235, 111, 23)) def edit_item(self): self.action = "edit" if self.listWidgetAlyObj.currentRow() < 0: return #print self.listWidgetAlyObj.currentRow() selected_item_data = self.listWidgetAlyObj.currentItem().data( Qt.UserRole).toString() self.xml_name = str(selected_item_data) #print selected_item_data if self.xml_name.endswith("_ObjectFinder.xml"): self.hide() time.sleep(0.600) self.alyvix_finder_controller = AlyvixObjectFinderView(self) self.alyvix_finder_controller.show() return if self.xml_name.endswith("_CustomCode.xml"): self.hide() time.sleep(0.600) self.alyvix_finder_controller = AlyvixCustomCodeView(self) self.alyvix_finder_controller.show() return screen_manager = ScreenManager() self.hide() time.sleep(0.600) img_color = cv2.imread(str(self.xml_name).replace( "xml", "png")) #screen_manager.grab_desktop(screen_manager.get_color_mat) #print "imgggg", self.path + os.sep + self.xml_name image = QImage(self.path + os.sep + self.xml_name.replace("xml", "png")) #print self.path, self.robot_file_name, self.xml_name if self.xml_name.endswith("_RectFinder.xml"): self.alyvix_finder_controller = AlyvixRectFinderView(self) elif self.xml_name.endswith("_ImageFinder.xml"): self.alyvix_finder_controller = AlyvixImageFinderView(self) elif self.xml_name.endswith("_TextFinder.xml"): self.alyvix_finder_controller = AlyvixTextFinderView(self) #self.alyvix_rect_finder_controller.set_path(self.full_file_name) self.alyvix_finder_controller.set_bg_pixmap(image) self.alyvix_finder_controller.showFullScreen() def add_new_item_on_list(self): #self.update_list() dirpath = self.path # get all entries in the directory w/ stats entries = (os.path.join(dirpath, fn) for fn in os.listdir(dirpath) if not fn.endswith(".txt") and not fn.endswith(".png") and not fn.endswith('list.xml') and not fn.endswith('data.xml')) #print entries entries = ((os.stat(path), path) for path in entries) # leave only regular files, insert creation date entries = ((stat[ST_CTIME], path) for stat, path in entries if S_ISREG(stat[ST_MODE])) """ for entry in entries: cdate, path = entry print path """ #print entries #NOTE: on Windows `ST_CTIME` is a creation date # but on Unix it could be something else #NOTE: use `ST_MTIME` to sort by a modification date list_sorted = sorted(entries) cdate, path = list_sorted[-1] filename = os.path.basename(path) #print filename #print cdate print filename item = QListWidgetItem() if filename.endswith('_RectFinder.xml'): item.setText(filename[:-15] + " [RF]") elif filename.endswith('_ImageFinder.xml'): item.setText(filename[:-16] + " [IF]") elif filename.endswith("_TextFinder.xml"): item.setText(filename[:-15] + " [TF]") elif filename.endswith("_ObjectFinder.xml"): item.setText(filename[:-17] + " [OF]") elif filename.endswith("_CustomCode.xml"): item.setText(filename[:-15] + " [CC]") """ elif filename.endswith('_old_code.txt'): cdate, path = list_sorted[-2] penultimate_name = os.path.basename(path) if penultimate_name.endswith('_ObjectFinder.xml'): item.setText(penultimate_name[:-17] + " [OF]") penultimate_name = penultimate_name.replace("_old_code.txt", "_ObjectFinder.xml") else: item.setText(penultimate_name[:-15] + " [CC]") penultimate_name = penultimate_name.replace("_old_code.txt", "_CustomCode.xml") item.setData(Qt.UserRole, penultimate_name) self.listWidgetAlyObj.addItem(item) return """ item.setData(Qt.UserRole, filename) self.listWidgetAlyObj.addItem(item) #self.update() def open_rectfinder_view(self): self.xml_name = None self.restore_view() screen_manager = ScreenManager() self.hide() self.sleep_before_action() time.sleep(0.600) img_color = screen_manager.grab_desktop(screen_manager.get_color_mat) img_color = cv2.cvtColor(img_color, cv2.COLOR_BGR2RGB) image = QImage(img_color, img_color.shape[1], img_color.shape[0], img_color.strides[0], QImage.Format_RGB888) self.alyvix_rect_finder_controller = AlyvixRectFinderView(self) self.alyvix_rect_finder_controller.set_bg_pixmap(image) self.alyvix_rect_finder_controller.showFullScreen() def open_imagefinder_view(self): self.xml_name = None self.restore_view() screen_manager = ScreenManager() self.hide() self.sleep_before_action() time.sleep(0.600) img_color = screen_manager.grab_desktop(screen_manager.get_color_mat) img_color = cv2.cvtColor(img_color, cv2.COLOR_BGR2RGB) image = QImage(img_color, img_color.shape[1], img_color.shape[0], img_color.strides[0], QImage.Format_RGB888) self.alyvix_image_finder_controller = AlyvixImageFinderView(self) self.alyvix_image_finder_controller.set_bg_pixmap(image) self.alyvix_image_finder_controller.showFullScreen() def open_textfinder_view(self): self.xml_name = None self.restore_view() screen_manager = ScreenManager() self.hide() self.sleep_before_action() time.sleep(0.600) img_color = screen_manager.grab_desktop(screen_manager.get_color_mat) img_color = cv2.cvtColor(img_color, cv2.COLOR_BGR2RGB) image = QImage(img_color, img_color.shape[1], img_color.shape[0], img_color.strides[0], QImage.Format_RGB888) self.alyvix_text_finder_controller = AlyvixTextFinderView(self) self.alyvix_text_finder_controller.set_bg_pixmap(image) self.alyvix_text_finder_controller.showFullScreen() def open_objectfinder_controller(self): self.xml_name = None self.restore_view() #screen_manager = ScreenManager() self.hide() self.sleep_before_action() time.sleep(0.600) #img_color = screen_manager.grab_desktop(screen_manager.get_color_mat) #img_color = cv2.cvtColor(img_color, cv2.COLOR_BGR2RGB) #image = QImage(img_color, img_color.shape[1], img_color.shape[0], img_color.strides[0], QImage.Format_RGB888) self.alyvix_objectfinder_controller = AlyvixObjectFinderView(self) #self.alyvix_objectfinder_controller.set_bg_pixmap(image) self.alyvix_objectfinder_controller.show() def open_customcode_controller(self): self.xml_name = None self.restore_view() #screen_manager = ScreenManager() self.hide() time.sleep(0.600) #img_color = screen_manager.grab_desktop(screen_manager.get_color_mat) #img_color = cv2.cvtColor(img_color, cv2.COLOR_BGR2RGB) #image = QImage(img_color, img_color.shape[1], img_color.shape[0], img_color.strides[0], QImage.Format_RGB888) self.alyvix_custom_code_controller = AlyvixCustomCodeView(self) #self.alyvix_objectfinder_controller.set_bg_pixmap(image) self.alyvix_custom_code_controller.show() def sleep_before_action(self): time.sleep(int(self.spinBoxDelay.value()))