def action_add_subfolder(self,item): name = utilities.ask_string(_('name :'),_('Give a sub-folder name'),_('folder')) folderID = self.treeView.GetPyData(item) if database.theBase.folders_add_child_under(name,folderID): self.fillDirectories() self.notify_selection() else: utilities.show_message(_('unable to add the sub-folder {0}').format(name))
def action_del_subfolder(self,item): folderID = self.treeView.GetPyData(item) folderName = self.treeView.GetItemText(item) if utilities.ask(_('Are you sure that you want to delete the folder {0}'.format(folderName))): if database.theBase.folders_remove(folderID): self.fillDirectories() self.notify_selection() else: utilities.show_message(_('unable to remove the sub-folder {0}').format(folderName))
def action_ren_subfolder(self,item): folderID = self.treeView.GetPyData(item) folderName = self.treeView.GetItemText(item) name = utilities.ask_string(_('name :'),_('Give a sub-folder name'),folderName) if name=='' : return if utilities.ask(_('Are you sure that you want to rename folder "{iniName}" to "{newName}"'.format(iniName=folderName,newName=name))): if database.theBase.folders_rename(folderID,name): self.fillDirectories() self.notify_selection() else: utilities.show_message(_('unable to remove the subfolder {0}').format(folderName))
def action_drag_drop_end(self,event): if self.dragedItem == event.GetItem() : return oldItem = self.treeView.GetItemText(self.dragedItem) newItem = self.treeView.GetItemText(event.GetItem()) if not utilities.ask(_('Do you really want to move the folder {src} and all its content under the folder {dst} ?').format(src=oldItem,dst=newItem)) : return iniFolderID = self.treeView.GetPyData(self.dragedItem) dstFolderID = self.treeView.GetPyData(event.GetItem()) if not database.theBase.folders_change_parent(iniFolderID,dstFolderID): utilities.show_message(_('Unable to move the folder {src} under {dst}').format(src=oldItem,dst=newItem)) else: self.fillDirectories() self.notify_selection()
def actionSave(self): self.dbFrame.Validate() database.theBase.create_and_use(self.dbFrame.filename,self.dbFrame.password) if not database.theBase.buildDB() : utilities.show_message(_('Unable to build the database')) return False database.theConfig.set_database_name(self.dbFrame.filename) database.theConfig.set_param('encryption', 'encryptData', str(self.cbEncryptData.Value), True) database.theConfig.set_param('encryption', 'encryptDatabase', str(self.dbFrame.cbEncrypted.Value), True) if self.cbEncryptData.Value: if self.cbSamePasswd.Value : data_psw =self.dbFrame.password else: if self.lbPasswd.Value != self.lbPasswdConfirm.Value: gui.utilities.show_message(_('The two data password confirmation mismatches, please check them.')) return False data_psw =self.lbPasswd database.record_current_password(data_psw) return True
def client_main(): # Prepare log = get_logger("Client", [stdout]) error_count = 0 error_flag = Event() exit_flag = Event() # Main loop while not exit_flag.is_set(): safe_call(client, log, error_flag, exit_flag, True) if error_flag.is_set(): if error_count < ERROR_COUNT_MAX: error_flag.clear() error_count += 1 else: break if error_flag.is_set(): show_message(log, logging.ERROR, "Error occurred %s times in client loop" % error_count) else: log.info("Finished correctly")
def on_finished(self,event): sel = self.page_chooser.rbContent.GetSelection() sel = self.page_chooser.choice_list.keys()[sel] what = self.page_chooser.rbDocToSave.GetSelection() what = self.page_chooser.sel_list.keys()[what] if what==self.page_chooser.ALL_DOCUMENTS: cur = database.theBase.find_sql() if cur is None : rowL=[] else: rowL = [row for row in cur] elif what == self.page_chooser.SELECTED_DOCS: rowL = self.row_list elif what == self.page_chooser.FILTER_RESULT: rowL = self.doc_list elif what == self.page_chooser.BASKET_DOCS: rowL = self.GetParent().basket if sel == self.page_chooser.EXPORT_DATABASE: filename = self.page_database_export.fcFileChooser.GetPath() if os.path.splitext(filename)[1]=='': filename=filename+'.zip' if filename=='' : utilities.show_message(_("The filename can't be empty")) event.Veto() elif os.path.exists(filename): if utilities.ask(_('The filename already exists. Overwrite it ?')): os.remove(filename) database.theBase.export_database(filename, rowL) else: event.Veto() else: database.theBase.export_database(filename, rowL) elif sel==self.page_chooser.EXPORT_ARCHIVE: filename = self.page_archive_export.fcFileChooser.GetPath() if os.path.splitext(filename)[1]=='': filename=filename+'.zip' if filename=='' : utilities.show_message(_("The filename can't be empty")) event.Veto() elif os.path.exists(filename): if utilities.ask(_('The filename already exists. Overwrite it ?')): os.remove(filename) database.theBase.export_archive(filename, rowL) else: event.Veto() else: database.theBase.export_archive(filename, rowL) elif sel==self.page_chooser.IMPORT_ARCHIVE : filename = self.page_archive_import.fcFileChooser.GetPath() dirname = self.page_archive_import.dcDirChooser.GetPath() if filename=='' or dirname=='': utilities.show_message(_("The filename and dirname can't be empty")) event.Veto() else: database.theBase.import_archive(filename, dirname) dbname=os.path.join(dirname,'database.db') database.theConfig.set_database_name(dbname) database.theBase.use_base(dbname) database.theConfig.commit_config()
def server_main(): # Prepare log = get_logger("Main", [stdout]) os_type = running_os() if os_type is None: show_message(log, logging.ERROR, "OS type is unknown") return error_count = 0 error_flag = Event() exit_flag = Event() index = CAM_INDEX[os_type] # Main loop detection = Detection(index, external_function) while not detection.stop_flag: safe_call(detection.process, log, error_flag, exit_flag, True) if exit_flag.is_set(): break if error_flag.is_set(): if error_count < ERROR_COUNT_MAX: error_flag.clear() error_count += 1 else: break safe_call(detection.close, log, error_flag, exit_flag, False) if error_flag.is_set(): show_message(log, logging.ERROR, "Error occurred %s times in loop" % error_count) else: log.info("Finished correctly") if os_type is SYSTEMS.WINDOWS: # This fixes some hang when closing with exit(), instead we call OS to kill ourself, how nice and clean /irony off sys_call("taskkill /F /PID %i" % getpid(), shell=True)
# Main loop while not exit_flag.is_set(): safe_call(client, log, error_flag, exit_flag, True) if error_flag.is_set(): if error_count < ERROR_COUNT_MAX: error_flag.clear() error_count += 1 else: break if error_flag.is_set(): show_message(log, logging.ERROR, "Error occurred %s times in client loop" % error_count) else: log.info("Finished correctly") if __name__ == '__main__': try: open(get_base_dir() + sep + LOG_FILENAME, "w").close() # Clear log error_log = get_logger("Init", [stderr]) init_error_flag = Event() main = client_main if flag_client_mode() else server_main safe_call(main, error_log, init_error_flag, None, False) if init_error_flag.is_set(): show_message(error_log, logging.ERROR, "Error at main") except Exception as e: if not flag_verbose_mode(): show_message(None, logging.ERROR, "Error at main: %s" % e) raise e exit()