winwrap.load(update)
# jump to the res if necessary.
- winwrap.jump_to_res(bbs_type.uri)
-
+ strict_uri = winwrap.bbs_type.get_thread_uri()
+ if (winwrap.bbs_type.uri != strict_uri and
+ winwrap.bbs_type.uri.startswith(strict_uri)):
+ resnum = winwrap.bbs_type.uri[len(strict_uri):]
+ match = re.match("\d+", resnum)
+ if match:
+ resnum = int(match.group())
+ winwrap.jump_to_res(resnum)
class WinWrap(winwrapbase.WinWrapBase):
hovering_over_link = False
self.statusbar = self.widget_tree.get_widget("statusbar")
self.drawingarea = self.widget_tree.get_widget("drawingarea")
self.viewport = self.drawingarea.parent
+ self.adjustment = self.viewport.get_vadjustment()
self.drawingarea.prev_width = 0
datfile.load_dat_partly(
self.bbs_type, self.append_rawres_to_buffer, self.num+1)
- def do_jump(num):
+ def do_jump():
if self.jump_request_num:
if self.jump_request_num <= num:
- # jump if enable, otherwize jump later.
num = self.jump_request_num
self.jump_request_num = 0
- mark = self.textbuffer.get_mark(str(num))
-# if mark:
-# self.textview.scroll_to_mark(
-# mark, 0, True, 0, 0)
+ self.jump_to_res(num)
else:
- self.jump_to_the_end(num)
+ self.jump_to_the_end()
- gobject.idle_add(do_jump, self.num)
+ gobject.idle_add(do_jump)
def get():
dat_path = misc.get_thread_dat_path(self.bbs_type)
if self.jump_request_num:
num = self.jump_request_num
self.jump_request_num = 0
- mark = self.textbuffer.get_mark(str(num))
-# if mark:
-# self.textview.scroll_to_mark(mark, 0, True, 0, 0)
+ self.jump_to_res(num)
gobject.idle_add(do_jump)
self.jump_request_num = 0
def load():
-
- def create_mark():
- self.textbuffer.create_mark("1", self.enditer, True)
- gobject.idle_add(create_mark)
-
datfile.load_dat(self.bbs_type, self.append_rawres_to_buffer)
+
def jump():
- def do_jump(num):
+ def do_jump():
if self.jump_request_num:
num = self.jump_request_num
self.jump_request_num = 0
- mark = self.textbuffer.get_mark(str(num))
-# if mark:
-# self.textview.scroll_to_mark(mark, 0, True, 0, 0)
+ self.jump_to_res(num)
else:
- self.jump_to_the_end(num)
+ self.jump_to_the_end()
- gobject.idle_add(do_jump, self.num)
+ gobject.idle_add(do_jump)
if self.lock():
print "maybe syntax error.", self.num, line
def process_res_queue(res_queue, num):
- self.process_queue(res_queue)
+ self.process_queue(res_queue, num)
# for next res
#self.textbuffer.create_mark(str(num+1), self.enditer, True)
tag.set_data("href", href)
return tag
- def process_queue(self, queue):
+ def process_queue(self, queue, num):
text = ""
for data, bold, href, margin in queue:
text += data
layout = self.drawingarea.create_pango_layout(text)
layout.set_wrap(pango.WRAP_CHAR)
layout.posY = 0
+ layout.resnum = num
self.pangolayout.append(layout)
self.relayout()
# taglist = []
# else:
# self.textbuffer.insert(self.enditer, data)
- def jump_to_the_end(self, num):
- mark = self.textbuffer.get_mark(str(num+1))
+ def jump(self, value):
+ def j():
+ if value > self.adjustment.upper - self.viewport.allocation.height:
+ self.jump_to_the_end()
+ else:
+ self.adjustment.set_value(value)
+ gobject.idle_add(j)
+
+ def jump_to_layout(self, layout):
+ gobject.idle_add(lambda : self.jump(layout.posY))
+
+ def jump_to_the_end(self):
+ def j():
+ self.adjustment.set_value(
+ self.adjustment.upper - self.viewport.allocation.height)
+ gobject.idle_add(j)
+# mark = self.textbuffer.get_mark(str(num+1))
# if mark:
# self.textview.scroll_to_mark(mark, 0)
self.lock_obj = False
print "unlock"
- def jump_to_res(self, uri):
- strict_uri = self.bbs_type.get_thread_uri()
- if uri != strict_uri and uri.startswith(strict_uri):
- resnum = uri[len(strict_uri):]
- match = re.match("\d+", resnum)
- if match:
- resnum = match.group()
- mark = self.textbuffer.get_mark(resnum)
-# if mark:
-# self.textview.scroll_to_mark(mark, 0, True, 0, 0)
-# elif self.progress:
-# # try later.
-# self.jump_request_num = int(resnum)
+ def jump_to_res(self, resnum):
+ for layout in self.pangolayout:
+ if layout.resnum == resnum:
+ self.jump_to_layout(layout)
+ return
+ self.jump_request_num = resnum
def load(self, update=False):
dat_path = misc.get_thread_dat_path(self.bbs_type)