diff options
Diffstat (limited to 'epubview/jobs.py')
-rw-r--r-- | epubview/jobs.py | 92 |
1 files changed, 46 insertions, 46 deletions
diff --git a/epubview/jobs.py b/epubview/jobs.py index 19c8434..6fe5b25 100644 --- a/epubview/jobs.py +++ b/epubview/jobs.py @@ -57,28 +57,28 @@ class SearchThread(threading.Thread): if self._searchfile(f): self.obj._matchfilelist.append(entry) f.close() - + gtk.gdk.threads_enter() - self.obj._finished = True + self.obj._finished = True self.obj.emit('updated') gtk.gdk.threads_leave() - + return False - + def _searchfile(self, fileobj): soup = BeautifulSoup.BeautifulSoup(fileobj) body = soup.find('body') tags = body.findChildren(True) for tag in tags: - if not tag.string is None: + if not tag.string is None: if tag.string.find(self.obj._text) > -1: return True - + return False def run (self): self._start_search() - + def stop(self): self.stopthread.set() @@ -89,18 +89,18 @@ class _JobPaginator(gobject.GObject): 'paginated': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])) - } + } def __init__(self, filelist): gobject.GObject.__init__(self) - + self._filelist = filelist self._filedict = {} self._pagemap = {} - + self._bookheight = 0 self._count = 0 self._pagecount = 0 - + self._screen = gtk.gdk.screen_get_default() self._old_fontoptions = self._screen.get_font_options() options = cairo.FontOptions() @@ -109,7 +109,7 @@ class _JobPaginator(gobject.GObject): options.set_subpixel_order(cairo.SUBPIXEL_ORDER_DEFAULT) options.set_hint_metrics(cairo.HINT_METRICS_DEFAULT) self._screen.set_font_options(options) - + self._temp_win = gtk.Window() self._temp_view = widgets._WebView() @@ -124,7 +124,7 @@ class _JobPaginator(gobject.GObject): settings.props.default_font_size = 12 settings.props.default_monospace_font_size = 10 settings.props.default_encoding = 'utf-8' - + sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_NEVER) self._dpi = 96 @@ -132,16 +132,16 @@ class _JobPaginator(gobject.GObject): sw.add(self._temp_view) self._temp_win.add(sw) self._temp_view.connect('load-finished', self._page_load_finished_cb) - + self._temp_win.show_all() self._temp_win.unmap() - + self._temp_view.open(self._filelist[self._count]) - + def _page_load_finished_cb(self, v, frame): f = v.get_main_frame() pageheight = v.get_page_height() - + if pageheight <= _mm_to_pixel(PAGE_HEIGHT, self._dpi): pages = 1 else: @@ -152,11 +152,11 @@ class _JobPaginator(gobject.GObject): else: pagelen = 1/pages self._pagemap[float(self._pagecount + i)] = (f.props.uri, (i-1)/math.ceil(pages), pagelen) - + self._pagecount += math.ceil(pages) self._filedict[f.props.uri.replace('file://', '')] = (math.ceil(pages), math.ceil(pages) - pages) self._bookheight += pageheight - + if self._count+1 >= len(self._filelist): self._temp_win.destroy() self._screen.set_font_options(self._old_fontoptions) @@ -164,48 +164,48 @@ class _JobPaginator(gobject.GObject): else: self._count += 1 self._temp_view.open(self._filelist[self._count]) - - + + def get_file_for_pageno(self, pageno): ''' Returns the file in which pageno occurs - ''' + ''' return self._pagemap[pageno][0] - + def get_scrollfactor_pos_for_pageno(self, pageno): ''' Returns the position scrollfactor (fraction) for pageno - ''' + ''' return self._pagemap[pageno][1] def get_scrollfactor_len_for_pageno(self, pageno): ''' Returns the length scrollfactor (fraction) for pageno - ''' + ''' return self._pagemap[pageno][2] - + def get_pagecount_for_file(self, filename): ''' Returns the number of pages in file - ''' + ''' return self._filedict[filename][0] def get_base_pageno_for_file(self, filename): ''' Returns the pageno which begins in filename - ''' + ''' for key in self._pagemap.keys(): if self._pagemap[key][0].replace('file://', '') == filename: return key - + return None def get_remfactor_for_file(self, filename): ''' Returns the remainder factor (1 - fraction length of last page in file) - ''' + ''' return self._filedict[filename][1] - + def get_total_pagecount(self): ''' Returns the total pagecount for the Epub file @@ -215,7 +215,7 @@ class _JobPaginator(gobject.GObject): def get_total_height(self): ''' Returns the total height of the Epub in pixels - ''' + ''' return self._bookheight @@ -228,7 +228,7 @@ class _JobFind(gobject.GObject): def __init__(self, document, start_page, n_pages, text, case_sensitive=False): gobject.GObject.__init__(self) gtk.gdk.threads_init() - + self._finished = False self._document = document self._start_page = start_page @@ -239,58 +239,58 @@ class _JobFind(gobject.GObject): self._matchfilelist = [] self._current_file_index = 0 self.threads = [] - + s_thread = SearchThread(self) self.threads.append(s_thread) s_thread.start() - + def cancel(self): ''' Cancels the search job - ''' + ''' for s_thread in self.threads: s_thread.stop() - + def is_finished(self): ''' Returns True if the entire search job has been finished - ''' + ''' return self._finished - + def get_next_file(self): ''' Returns the next file which has the search pattern - ''' + ''' self._current_file_index += 1 try: path = self._matchfilelist[self._current_file_index] except IndexError: self._current_file_index = 0 path = self._matchfilelist[self._current_file_index] - + return path def get_prev_file(self): ''' Returns the previous file which has the search pattern - ''' + ''' self._current_file_index -= 1 try: path = self._matchfilelist[self._current_file_index] except IndexError: self._current_file_index = -1 path = self._matchfilelist[self._current_file_index] - + return path def get_search_text(self): ''' Returns the search text - ''' + ''' return self._text - + def get_case_sensitive(self): ''' Returns True if the search is case-sensitive - ''' + ''' return self._case_sensitive |