module PDFWalker::PopupMenu
Public Instance Methods
popup_menu(obj, event, path)
click to toggle source
# File lib/pdfwalker/menu.rb, line 176 def popup_menu(obj, event, path) menu = Menu.new type = popup_menu_key(obj) # Create menu title. title = obj.is_a?(Origami::Object) ? "Object : " : "" title << type.to_s menu.append(MenuItem.new(title).set_sensitive(false).modify_text(Gtk::STATE_INSENSITIVE, Gdk::Color.new(255,0,255))) # Object information. create_object_menu(menu, obj) if obj.is_a?(Origami::Object) # Type-specific menu. create_type_menu(menu, type, path) menu.show_all menu.popup(nil, nil, event.button, event.time) end
Private Instance Methods
create_object_menu(menu, object)
click to toggle source
# File lib/pdfwalker/menu.rb, line 198 def create_object_menu(menu, object) if object.indirect? menu.append(MenuItem.new("Number : #{object.no}; Generation : #{object.generation}").set_sensitive(false)) menu.append(MenuItem.new("File offset : #{object.file_offset}").set_sensitive(false)) getxrefs = MenuItem.new("Search references to this object").set_sensitive(true) getxrefs.signal_connect("activate") do self.parent.show_xrefs(object) end menu.append(getxrefs) elsif not object.parent.nil? gotoparent = MenuItem.new("Goto Parent Object").set_sensitive(true) gotoparent.signal_connect("activate") do self.goto(object.parent) end menu.append(gotoparent) end end
create_type_menu(menu, type, path)
click to toggle source
# File lib/pdfwalker/menu.rb, line 218 def create_type_menu(menu, type, path) items = @@menus[type] menu.append(SeparatorMenuItem.new) if not items.empty? items.each do |item| if item[:Name] == :"---" entry = SeparatorMenuItem.new else if item[:Name].is_a?(String) entry = MenuItem.new(item[:Name]) else entry = ImageMenuItem.new(item[:Name]) end entry.set_sensitive(item[:Sensitive]) entry.signal_connect("activate", self, path, &item[:Callback]) end menu.append(entry) end end
popup_menu_key(object)
click to toggle source
# File lib/pdfwalker/menu.rb, line 240 def popup_menu_key(object) if object.is_a?(Origami::Object) popup_menu_object_key(object) else popup_menu_struct_key(object) end end
popup_menu_object_key(object)
click to toggle source
# File lib/pdfwalker/menu.rb, line 248 def popup_menu_object_key(object) if object.is_a?(Origami::Graphics::ImageXObject) 'Image' else object.native_type.to_s.split("::").last end end
popup_menu_struct_key(struct)
click to toggle source
# File lib/pdfwalker/menu.rb, line 256 def popup_menu_struct_key(struct) case struct when ::Array 'Body' when Origami::XRef, Origami::XRefToCompressedObject 'XRef' else struct.class.name.split('::').last end end