def update(self, db): """ Update the settings interactively """ default = self.book_name prompt = 'book name [%s]: ' % default book_name = interact.readstr(prompt, default) default = self.book_path book_file = self.getBookFileName(default=default) default = self.end_page prompt = 'last page number [%s]: ' % default end_page = interact.readint(prompt, default) default = os.path.basename(self.log_path) prompt = 'basename of log file [%s]: ' % default log_file = interact.readstr(prompt, default) default = os.path.basename(self.note_path) prompt = 'basename of note file [%s]: ' % default note_file = interact.readstr(prompt, default) default = os.path.basename(self.errata_path) prompt = 'basename of errata file [%s]: ' % default errata_file = interact.readstr(prompt, default) # path of the book viewer log file for determine the exit page # number user must change the Viewer class to change this value viewer_log = Viewer.viewer_log prompt = 'viewer log: %s\n' % viewer_log prompt += ' to change this value, you need to edit\n' prompt += ' the Viewer class, press Enter to continue ' interact.readstr(prompt, '') # defference between the actual page number and the page label default = self.page_num_diff + 1 prompt = 'page number of the first page label [%s]: ' % default page_num_diff = interact.readint(prompt, default) page_num_diff -= 1 # page per day default = self.page_per_day prompt = 'how many pages for one day? [%s]: ' % default page_per_day = interact.readint(prompt, default) db['book_name'] = book_name db['book_file'] = book_file db['end_page'] = end_page db['log_file'] = log_file db['note_file'] = note_file db['errata_file'] = errata_file db['page_num_diff'] = page_num_diff db['page_per_day'] = page_per_day db['init_done'] = True print('done.')
def ask_page(self, prompt='', default=None): """ interactively ask the user for page number """ if default: extra_text = '[%s]' % default prompt = '%s %s: ' % (prompt, extra_text) page = interact.readint(prompt, default=default) else: prompt = '%s: ' % prompt page = interact.readint(prompt) if page: return page else: print('bad value, exit') exit(1)
def init(self, db): """ Initialize the settings interactively """ print('Initial setting, please answer some questions') book_name = interact.readstr('book name: ') book_file = self.getBookFileName() end_page = interact.readint('last page number: ') default = self.defaultLogPath log_file = interact.readstr('basename of log file [%s]: ' % default, default) default = self.defaultNotePath note_file = interact.readstr('basename of note file [%s]: ' % default, default) default = self.defaultErrataPath errata_file = interact.readstr( 'basename of errata file [%s]: ' % default, default) # path of the book viewer log file for determine the exit page # number user must change the Viewer class to change this value viewer_log = Viewer.viewer_log prompt = 'viewer log: %s\n' % viewer_log prompt += ' to change this value, you need to edit\n' prompt += ' the Viewer class, press Enter to continue ' interact.readstr(prompt, '') # defference between the actual page number and the page label page_num_diff = interact.readint( 'page number of the first page label: ') page_num_diff -= 1 # page per day default = self.defaultPagePerDay prompt = 'how many pages for one day? [%s]: ' % default page_per_day = interact.readint(prompt, default) db['book_name'] = book_name db['book_file'] = book_file db['end_page'] = end_page db['log_file'] = log_file db['note_file'] = note_file db['errata_file'] = errata_file db['viewer_log'] = viewer_log db['page_num_diff'] = page_num_diff db['page_per_day'] = page_per_day db['init_done'] = True
def edit(self): """ change an existing note """ cont = self.opendb() notes = sorted(cont.items(), key=lambda x: int(x[0])) text_list = [] for time, note in notes: text = isotime(int(time)) + '\n' + note.content[:80] text_list.append(text) idx, junk = interact.printAndPick(text_list) key = notes[idx][0] note = notes[idx][1] prompt = 'Chapter [%s]: ' % note.chapter note.chapter = interact.readint(prompt, default=note.chapter) prompt = 'Subject [%s]: ' % note.subject note.subject = interact.readstr(prompt, default='') or note.subject note.content = self.edit_content(data=note.content) self.save(key, note)