Exemplo n.º 1
0
 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))
Exemplo n.º 2
0
 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))
Exemplo n.º 3
0
 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))
Exemplo n.º 4
0
 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()
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
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")
Exemplo n.º 7
0
 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()
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
    # 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()