def save_unsaved_changes(self): """ desc: Checks whether there are unsaved changes. If so, the user can choose to discard or save these changes, or to cancel. returns: desc: False if the user has cancelled, True otherwise. type: bool """ from libqtopensesame._input.confirmation import confirmation if not self.unsaved_changes: return True resp = confirmation( self, msg= _(u'Your experiment contains unsaved changes. Do you want to save your experiment?' ), title=_(u'Save changes?'), allow_cancel=True, default=u'cancel').show() if resp is None: return False if resp: self.save_file() return True
def add(self, files, rename=False): """ desc: Adds a list of files to the pool. arguments: files: desc: A list of paths. type: list """ if not files: return for path in files: basename = os.path.basename(path) if self.pool.in_folder(basename): if rename: while self.pool.in_folder(basename): basename = u'_' + basename else: c = confirmation(self.main_window, _(u"A file named '%s' already exists in the pool. Do you want to overwrite this file?") \ % basename) if not c.show(): continue try: self.pool.add(path, new_name=basename) except IOError as e: self.notify(_(u'Failed to copy %s to file pool') % path) self.console.write(safe_decode(e, errors=u'ignore')) self.refresh() self.select(basename)
def delete_selected_files(self): """ desc: Deletes all selected files from the pool. Asks for confimation\ first. """ # Prepare the confirmation dialog, which contains a limited nr of # filenames l = [] suffix = u'' for item in self.ui.list_pool.selectedItems()[:self.max_len]: l.append(self.pool[item.text()]) if len(self.ui.list_pool.selectedItems()) > self.max_len: suffix = _('And %d more file(s)') % \ (len(self.ui.list_pool.selectedItems())-self.max_len) msg = _(u"<p>Are you sure you want to remove the following files?</p>" u"<p>- %s</p> <p>%s</p>") % (u"<br /> - ".join(l), suffix) c = confirmation(self.main_window, msg) if not c.show(): return # Create a list of files to be removed dL = [] for item in self.ui.list_pool.selectedItems(): dL.append(item.path) # Remove the files try: for f in dL: del self.pool[f] debug.msg(u"removed '%s'" % f) except: debug.msg(u"failed to remove '%s'" % f) self.refresh() self.main_window.set_unsaved()
def add(self, files, rename=False): """ desc: Adds a list of files to the pool. arguments: files: desc: A list of paths. type: list """ for path in files: basename = os.path.basename(path) if self.pool.in_folder(basename): if rename: while self.pool.in_folder(basename): basename = u'_' + basename else: c = confirmation(self.main_window, _(u"A file named '%s' already exists in the pool. Do you want to overwrite this file?") \ % basename) if not c.show(): continue self.pool.add(path, new_name=basename) self.refresh() self.select(basename)
def save_unsaved_changes(self): """ desc: Checks whether there are unsaved changes. If so, the user can choose to discard or save these changes, or to cancel. returns: desc: False if the user has cancelled, True otherwise. type: bool """ from libqtopensesame._input.confirmation import confirmation if not self.unsaved_changes: return True resp = confirmation(self, msg=_(u'Your experiment contains unsaved changes. Do you want to save your experiment?'), title=_(u'Save changes?'), allow_cancel=True, default=u'cancel').show() if resp is None: return False if resp: self.save_file() return True