class PDFWalker::XrefsDialog

Constants

NAMECOL
OBJCOL
REFCOL

Public Class Methods

new(parent, target) click to toggle source
Calls superclass method
# File lib/pdfwalker/xrefs.rb, line 34
def initialize(parent, target)
    super("Xrefs to #{target.reference}", parent, Dialog::MODAL, [Stock::CLOSE, Dialog::RESPONSE_NONE])
    @parent = parent

    @list = ListStore.new(Object, String, String)
    @view = TreeView.new(@list)

    column = Gtk::TreeViewColumn.new("Origin", Gtk::CellRendererText.new, text: REFCOL)
    @view.append_column(column)

    column = Gtk::TreeViewColumn.new("Objects", Gtk::CellRendererText.new, text: NAMECOL)
    @view.append_column(column)

    target.xrefs.each { |obj|
        str = obj.type.to_s
        iter = @list.append
        @list.set_value(iter, OBJCOL, obj)

        obj = obj.parent until obj.indirect?
        @list.set_value(iter, REFCOL, obj.reference.to_s)

        @list.set_value(iter, NAMECOL, str)
    }

    @view.signal_connect("row_activated") { |_tree, _path, _column|
        if @view.selection.selected
            from = @list.get_value(@view.selection.selected, OBJCOL)
            @parent.treeview.goto(from)
        end
    }

    scroll = ScrolledWindow.new.set_policy(POLICY_NEVER, POLICY_AUTOMATIC)
    scroll.add(@view)
    vbox.add(scroll)

    set_default_size(200, 200)

    signal_connect('response') { destroy }
    show_all
end