self.button1_pressed = False
self.current_pressed_uri = None
+ self.popupmenu = None
+ self.menu_openuri = None
+ self.menu_copylinkaddress = None
+ self.menu_separator_link = None
+ self.menu_copyselection = None
+ self.menu_openasuri = None
+ self.menu_separator_selection = None
+
+ self.menud_uri = None
+
def _on_uri_clicked(self, uri):
print uri, "clicked!!!!"
uri, layout, index = self.ptrpos_to_uri(event.x, event.y)
if uri is not None and layout is not None and index is not None:
self.current_pressed_uri = (uri, layout, index)
+ elif event.button == 3:
+ time = event.time
+ uri, layout, index = self.ptrpos_to_uri(event.x, event.y)
+ if uri is not None and layout is not None and index is not None:
+ self.menu_openuri.show()
+ self.menu_copylinkaddress.show()
+ self.menu_separator_link.show()
+ self.menu_openuri.uri = uri
+ self.menu_copylinkaddress.uri = uri
+ else:
+ self.menu_openuri.hide()
+ self.menu_copylinkaddress.hide()
+ self.menu_separator_link.hide()
+ self.menu_openuri.uri = None
+ self.menu_copylinkaddress.uri = None
+
+ self.menu_copyselection.hide()
+ self.menu_openasuri.hide()
+ self.menu_separator_selection.hide()
+
+ self.popupmenu.popup(None, None, None, event.button, time)
+ return True
+
def on_drawingrarea_button_release_event(self, widget, event, data=None):
if event.button == 1:
self.threadview.on_uri_clicked = self.on_threadview_uri_clicked
+ self.threadview.popupmenu = self.widget_tree.get_widget(
+ "popup_threadview_menu")
+ self.threadview.menu_openuri = self.widget_tree.get_widget(
+ "popup_threadview_menu_openuri")
+ self.threadview.menu_copylinkaddress = self.widget_tree.get_widget(
+ "popup_threadview_menu_copylinkaddress")
+ self.threadview.menu_separator_link = self.widget_tree.get_widget(
+ "popup_threadview_menu_separator_link")
+ self.threadview.menu_copyselection = self.widget_tree.get_widget(
+ "popup_threadview_menu_copyselection")
+ self.threadview.menu_openasuri = self.widget_tree.get_widget(
+ "popup_threadview_menu_openasuri")
+ self.threadview.menu_separator_selection = self.widget_tree.get_widget(
+ "popup_threadview_menu_separator_selection")
+
self.initialize_buffer()
sigdic = {"on_refresh_activate": self.update,
"on_add_bookmark_activate": self.on_add_bookmark_activate,
"on_manage_bookmarks_activate": \
self.on_manage_bookmarks_activate,
+ "on_popup_threadview_menu_openuri_activate":
+ self.on_popup_threadview_menu_openuri_activate,
+ "on_popup_threadview_menu_copylinkaddress_activate":
+ self.on_popup_threadview_menu_copylinkaddress_activate,
+ "on_popup_threadview_menu_copyselection_activate":
+ self.on_popup_threadview_menu_copyselection_activate,
+ "on_popup_threadview_menu_openasuri_activate":
+ self.on_popup_threadview_menu_openasuri_activate,
+ "on_popup_threadview_menu_refresh_activate":
+ self.on_popup_threadview_menu_refresh_activate,
"on_thread_window_destroy": self.on_thread_window_destroy}
self.widget_tree.signal_autoconnect(sigdic)
# not supported, show with the web browser.
gnome.url_show(uri)
+ def on_popup_threadview_menu_openuri_activate(self, widget):
+ self.on_threadview_uri_clicked(widget.uri)
+
+ def on_popup_threadview_menu_copylinkaddress_activate(self, widget):
+ clip = gtk.Clipboard()
+ clip.set_text(widget.uri, len(widget.uri))
+
+ def on_popup_threadview_menu_copyselection_activate(self, widget):
+ pass
+
+ def on_popup_threadview_menu_openasuri_activate(self, widget):
+ pass
+
+ def on_popup_threadview_menu_refresh_activate(self, widget):
+ self.update(widget)
+
def http_get_dat(self, on_get_res):
datfile_url = self.bbs_type.get_dat_uri()
</widget>
</child>
</widget>
+ <widget class="GtkMenu" id="popup_threadview_menu">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <widget class="GtkImageMenuItem" id="popup_threadview_menu_openuri">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">_Open Link</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_popup_threadview_menu_openuri_activate"/>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="popup_threadview_menu_copylinkaddress">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">_Copy Link Address</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_popup_threadview_menu_copylinkaddress_activate"/>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="popup_threadview_menu_separator_link">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImageMenuItem" id="popup_threadview_menu_copyselection">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">gtk-copy</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <signal name="activate" handler="on_popup_threadview_menu_copyselection_activate"/>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkMenuItem" id="popup_threadview_menu_openasuri">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">Open Selection as URL</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_popup_threadview_menu_openasuri_activate"/>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="popup_threadview_menu_separator_selection">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkImageMenuItem" id="popup_threadview_menu_refresh">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">gtk-refresh</property>
+ <property name="use_underline">True</property>
+ <property name="use_stock">True</property>
+ <signal name="activate" handler="on_popup_threadview_menu_refresh_activate"/>
+ </widget>
+ </child>
+ </widget>
</glade-interface>