class HistoryWindow

this file is part of manqod manqod is distributed under the CDDL licence the author of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)

Public Class Methods

new(list_holder) click to toggle source
Calls superclass method
# File lib/ListHolder/HistoryWindow.rb, line 6
def initialize(list_holder)
        @holder=list_holder
        @row_id=nil
        super()
        set_title('history')
        set_modal(true)
        set_transient_for(@holder.get_ancestor(Gtk::Window))
        set_has_frame(false)
        set_window_position(Gtk::Window::POS_CENTER_ON_PARENT)
        set_size_request(600,300)
        @store=Gtk::TreeStore.new(String,String,String,String,String) #time,nick,operation, header, data
        add(Gtk::VBox.new)
        child.pack_start(Gtk::ScrolledWindow.new.set_policy(Gtk::POLICY_AUTOMATIC,Gtk::POLICY_AUTOMATIC).add(hview=Gtk::TreeView.new(@store))).
                        pack_start(Gtk::HBox.new.
                                        pack_start(prevb=Gtk::Button.new(Gtk::Stock::GO_BACK),false,false).
                                        pack_start(nextb=Gtk::Button.new(Gtk::Stock::GO_FORWARD),false,false).
                                        pack_start(Gtk::Alignment.new(0,0,0,0),true,true).
                                        pack_start(closeb=Gtk::Button.new(Gtk::Stock::CLOSE),false,false),
                                false,false)
        closeb.signal_connect('clicked'){|me| self.destroy}
        nextb.signal_connect('clicked'){|me| load_history(@row_id+1)}
        prevb.signal_connect('clicked'){|me| load_history(@row_id-1)}
        
        renderer = Gtk::CellRendererText.new
        hview.append_column(Gtk::TreeViewColumn.new("Time", renderer, :text => 0))
        hview.append_column(Gtk::TreeViewColumn.new("User", renderer, :text => 1))
        hview.append_column(op_col=Gtk::TreeViewColumn.new("Operatioin", renderer, :text => 2))
        hview.append_column(Gtk::TreeViewColumn.new("Field", renderer, :text => 3))
        hview.append_column(Gtk::TreeViewColumn.new("History", renderer, :text => 4))
        hview.set_expander_column(op_col).set_enable_tree_lines(true)
        load_history(@holder.list.get_cursor_id)
end

Public Instance Methods

load_history(new_row_id) click to toggle source
# File lib/ListHolder/HistoryWindow.rb, line 39
def load_history(new_row_id)
        @store.clear
        @row_id=new_row_id
        set_title("history for #{@holder.list.list_model.base} ##{@row_id}")
        last_u=nil
        piter=nil
        @holder.admin.rows("select history.*,gtkheaders.header from history left join gtkheaders on gtkheaders.id = history.header_id where base='#{@holder.list.list_model.base}' and row_id='#{@row_id}' order by ctime desc").each{|row|
                unless last_u == row["ctime"]
                        iter=@store.append(nil)
                        piter=iter
                        last_u=row["ctime"]
                        iter[0]=row["ctime"]
                        iter[1]=row["nick"]
                        iter[2]=row["operation"]
                end
                if row["operation"] == "u"
                        iter=@store.append(piter)
                        iter[3]=row["header"]
                        iter[4]=row["data"]
                end
        }
        show_all
end