import bookmark_list
import bookmark_window
import thread_view
+import thread_popup
GLADE_FILENAME = "thread_window.glade"
def to_thread_view(self):
if self.layout is not None:
- gobject.idle_add(self.threadview.add_layout, self.layout)
+ # gobject.idle_add(self.threadview.add_layout, self.layout)
+ gtk.gdk.threads_enter()
+ self.threadview.add_layout(self.layout)
+ gtk.gdk.threads_leave()
self.initialize()
self.vbox = self.widget_tree.get_widget("vbox")
self.threadview = thread_view.ThreadView()
+ self.threadpopup = thread_popup.ThreadPopup(self.bbs_type)
+ self.threadpopup.push_thread_view(self.threadview)
self.vbox.pack_start(self.threadview)
self.vbox.reorder_child(self.threadview, 2)
+ self.window.set_focus(self.threadview.drawingarea)
- self.threadview.on_uri_clicked = self.on_threadview_uri_clicked
+ self.threadview.connect("uri-clicked-event", self.on_threadview_uri_clicked)
+ self.threadpopup.connect(
+ "uri-clicked-event",
+ lambda widget, threadview, uri: self.on_threadview_uri_clicked(threadview, uri))
+
+ self.statusbar_context_id = self.statusbar.get_context_id(
+ "Thread Window Status")
+ self.statusbar.push(self.statusbar_context_id, "OK.")
self.threadview.popupmenu = self.widget_tree.get_widget(
"popup_threadview_menu")
self.created()
def initialize_buffer(self):
- self.textbuffer = gtk.TextBuffer()
-
- self.enditer = self.textbuffer.get_end_iter()
- self.boldtag = self.textbuffer.create_tag(weight=pango.WEIGHT_BOLD)
- self.leftmargintag = self.textbuffer.create_tag()
- self.leftmargintag.set_property("left-margin", 20)
-
self.threadview.initialize_buffer()
def destroy(self):
except OSError:
traceback.print_exc()
- def on_threadview_uri_clicked(self, uri):
+ def on_threadview_uri_clicked(self, widget, uri):
if not uri.startswith("http://"):
# maybe a relative uri.
clip.set_text(widget.uri, len(widget.uri))
def on_popup_threadview_menu_copyselection_activate(self, widget):
- pass
+ text = self.threadview.get_selected_text()
+ if text and len(text) > 0:
+ clip = gtk.Clipboard()
+ text = text.encode("utf8")
+ clip.set_text(text, len(text))
def on_popup_threadview_menu_openasuri_activate(self, widget):
- pass
+ text = self.threadview.get_selected_text()
+ if not text.startswith("http://"):
+ text = "http://" + text
+ self.on_threadview_uri_clicked(text)
def on_popup_threadview_menu_refresh_activate(self, widget):
self.update(widget)
if etag:
req.add_header("If-None-Match", etag)
+ def push():
+ self.statusbar.pop(self.statusbar_context_id)
+ self.statusbar.push(self.statusbar_context_id, "GET...")
+ gobject.idle_add(push)
+
req = self.bbs_type.set_extra_dat_request(req, self)
opener = urllib2.build_opener(HTTPRedirectHandler302, HTTPDebugHandler)
try:
res = opener.open(req)
except urllib2.HTTPError, e:
- pass
-# gobject.idle_add(
-# lambda x: self.statusbar.push(0, x), "%d %s" % (e.code, e.msg))
+ def push(code, msg):
+ message = "%d %s" % (code, msg)
+ self.statusbar.pop(self.statusbar_context_id)
+ self.statusbar.push(self.statusbar_context_id, message)
+ gobject.idle_add(push, e.code, e.msg)
else:
headers = res.info()
-# gobject.idle_add(
-# lambda x: self.statusbar.push(0, x), "%d %s" % (res.code, res.msg))
+
+ if "Last-Modified" in headers:
+ la = headers["Last-Modified"]
+ def push(code, msg, lastm):
+ message = "%d %s [%s]" % (code, msg, lastm)
+ self.statusbar.pop(self.statusbar_context_id)
+ self.statusbar.push(self.statusbar_context_id, message)
+ gobject.idle_add(push, res.code, res.msg, la)
+ else:
+ def push(code, msg):
+ message = "%d %s" % (code, msg)
+ self.statusbar.pop(self.statusbar_context_id)
+ self.statusbar.push(self.statusbar_context_id, message)
+ gobject.idle_add(push, res.code, res.msg)
maybe_incomplete = False
for line in res:
self.jump_request_num = 0
def load():
- if self.num == 0:
- def create_mark():
- self.textbuffer.create_mark("1", self.enditer, True)
- gobject.idle_add(create_mark)
-
line_count = datfile.get_dat_line_count(self.bbs_type)
if line_count < self.num:
self.num = 0
self.append_rawres_to_buffer(line)
self.http_get_dat(save_line_and_append_to_buffer)
+ gtk.gdk.threads_enter()
+ self.threadview.redraw()
+ gtk.gdk.threads_leave()
dat_file.close()
def do_jump():
pipe.to_thread_view()
- def href_tag(self, href):
- tag = self.textbuffer.create_tag(underline=pango.UNDERLINE_SINGLE)
- tag.set_data("href", href)
- return tag
-
def jump(self, value):
gobject.idle_add(self.threadview.jump, value)