class WysiwygPrintEditor
this file is part of manqod manqod is distributed under the CDDL licence the author of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)
Attributes
caller[RW]
focused_item[RW]
info[RW]
moditemid[RW]
mydata[RW]
page_setup[RW]
tabs[RW]
tips[RW]
zoom[RW]
Public Class Methods
new(caller,moditemid)
click to toggle source
Calls superclass method
# File lib/PrintEditor.rb, line 10 def initialize(caller,moditemid) @zoom=1 @caller=caller @focused_item=nil @moditemid=moditemid @moditem=qrow("select moditems.*,gtkprintpages.*,queries.sql from moditems left join queries on moditems.query_sql_id = queries.id left join gtkprintpages on moditems.id = gtkprintpages.moditem_id where moditems.id='#{@moditemid}'") @sql=@moditem["sql"] @sql=@moditem["querysql"] if @moditem["querysql"].length>5 # lastwhere=@sql.rindex("where")-1 or @sql.length # @sql=@sql[0 .. lastwhere]+" order by id desc limit 1" @sql="#{@sql} limit 1" myres=client.query(@sql) @mydata=if myres then myres.fetch_hash(true) else Hash.new end @mydata=Hash.new if @mydata.nil? @page_setup=Gtk::PageSetup.new page_setup.paper_size=Gtk::PaperSize.new(@moditem["paper_size_name"]) page_setup.orientation=case @moditem["orientation"] when "portrait" then Gtk::PrintSettings::PageOrientation::PORTRAIT when "reverse_portrait" then Gtk::PrintSettings::PageOrientation::REVERSE_PORTRAIT when "landscape" then Gtk::PrintSettings::PageOrientation::LANDSCAPE when "reverse_landscape" then Gtk::PrintSettings::PageOrientation::REVERSE_LANDSCAPE else Gtk::PrintSettings::PageOrientation::PORTRAIT end page_setup.set_left_margin(@moditem["left_margin"].to_f,Gtk::PaperSize::UNIT_MM) if !@moditem["left_margin"].nil? page_setup.set_right_margin(@moditem["right_margin"].to_f,Gtk::PaperSize::UNIT_MM) if !@moditem["right_margin"].nil? page_setup.set_top_margin(@moditem["top_margin"].to_f,Gtk::PaperSize::UNIT_MM) if !@moditem["top_margin"].nil? page_setup.set_bottom_margin(@moditem["bottom_margin"].to_f,Gtk::PaperSize::UNIT_MM) if !@moditem["bottom_margin"].nil? super() realize @tips=Gtk::Tooltips.new.enable set_title("WYSIWYG Print Editor - "+@moditem["display"]) maximize @tabs=Gtk::Notebook.new is=Gtk::IconSize.from_name(get_conf(0,0,"button-size")) #item buttons buttons=Gtk::Toolbar.new buttons.append(Gtk::VSeparator.new) buttons.append("text",nil,nil,Gtk::Image.new(Gtk::Stock::ADD,is)){set_focused_item(nth_page(tabs.page).put(@tabs.page,'text')) if tabs.page>-1} buttons.append("line",nil,nil,Gtk::Image.new(Gtk::Stock::ADD,is)){set_focused_item(nth_page(tabs.page).put(@tabs.page,'line')) if tabs.page>-1} buttons.append("rectangle",nil,nil,Gtk::Image.new(Gtk::Stock::ADD,is)){set_focused_item(nth_page(tabs.page).put(@tabs.page,'rectangle')) if tabs.page>-1} buttons.append("list",nil,nil,Gtk::Image.new(Gtk::Stock::ADD,is)){set_focused_item(nth_page(tabs.page).put(@tabs.page,'list')) if tabs.page>-1} buttons.append("image",nil,nil,Gtk::Image.new(Gtk::Stock::ADD,is)){set_focused_item(nth_page(tabs.page).put(@tabs.page,'image')) if tabs.page>-1} buttons.append(Gtk::VSeparator.new) buttons.append("clone",nil,nil,Gtk::Image.new(Gtk::Stock::COPY,is)){ set_focused_item(nth_page(tabs.page). put(@tabs.page,@focused_item.gtk_type,nil,@focused_item.x+@info.clone_x.value,@focused_item.y+@info.clone_y.value,@focused_item.width,@focused_item.height,@focused_item.text,@focused_item.font,@focused_item.text_alignment)) if tabs.page>-1 && @focused_item } buttons.append("move",nil,nil,Gtk::Image.new(Gtk::Stock::MEDIA_FORWARD,is)){ @focused_item.move_me(@focused_item.x+@info.clone_x.value,@focused_item.y+@info.clone_y.value) if tabs.page>-1 && @focused_item } buttons.append(Gtk::VSeparator.new) buttons.append("remove",nil,nil,Gtk::Image.new(Gtk::Stock::DELETE,is)){ unless focused_item.nil? edebug("removing #{focused_item}","printing","info") focused_item.remove_from_mysql focused_item.page_layout.remove(focused_item) set_focused_item(nil) end } buttons.append(Gtk::VSeparator.new) #page buttons buttons.append("page",nil,nil,Gtk::Image.new(Gtk::Stock::ADD,is)){ tabs.append_page(lay=PageLayout.new(self),Gtk::Label.new("page "+(tabs.n_pages+1).to_s)) tabs.show_all } buttons.append("page",nil,nil,Gtk::Image.new(Gtk::Stock::REMOVE,is)){ tabs.remove_page(tabs.page) } buttons.append('setup',nil,nil,Gtk::Image.new(Gtk::Stock::PRINT,Gtk::IconSize.from_name(get_conf(0,0,"button-size")))){ @page_setup=Gtk::PrintOperation.run_page_setup_dialog(self.get_ancestor(Gtk::Window), page_setup) nth_page(tabs.page).clear } buttons.append(Gtk::VSeparator.new) #common buttons buttons.append("20%",nil,nil,Gtk::Image.new(Gtk::Stock::ZOOM_IN,is)){ @zoom+=0.2 unless @zoom>5 @tabs.each{|page| page.clear} } buttons.append("100%",nil,nil,Gtk::Image.new(Gtk::Stock::ZOOM_100,is)){ @zoom=1 @tabs.each{|page| page.clear} } buttons.append("20%",nil,nil,Gtk::Image.new(Gtk::Stock::ZOOM_OUT,is)){ @zoom-=0.2 unless @zoom<0.5 @tabs.each{|page| page.clear} } buttons.append('preview',nil,nil,Gtk::Image.new(Gtk::Stock::PRINT,Gtk::IconSize.from_name(get_conf(0,0,"button-size")))){ to_mysql if testp=MyPrintOperation.new(self,moditemid) testp.run(Gtk::PrintOperation::ACTION_PREVIEW) end } buttons.append('close',nil,nil,Gtk::Image.new(Gtk::Stock::CLOSE,Gtk::IconSize.from_name(get_conf(0,0,"button-size")))){ self.destroy } buttons.append(Gtk::VSeparator.new) signal_connect("destroy"){|me,ev| to_mysql} @info=LayItemInfo.new.set_width_request(220) tab_holder=Gtk::HPaned.new#(false,0) tab_holder.pack1(tabs,true,true) tab_holder.pack2(info,false,false) holder=Gtk::VBox.new(false,1) holder.pack_start(tab_holder,true,true,0) holder.pack_end(buttons,false,false,0) add(holder) self end
Public Instance Methods
inspect()
click to toggle source
# File lib/PrintEditor.rb, line 196 def inspect to_s end
nth_page(page_no)
click to toggle source
# File lib/PrintEditor.rb, line 166 def nth_page(page_no) ret=tabs.get_nth_page(page_no.to_i) end
run()
click to toggle source
# File lib/PrintEditor.rb, line 152 def run item_res=query("select * from gtkprintitems where printid='#{@moditemid}' order by page_number,gtktype") page_num=0 while itemdata=item_res.fetch_hash() while nth_page(itemdata["page_number"].to_i).nil? page_num+=1 page=tabs.append_page(lay=PageLayout.new(self),Gtk::Label.new("page #{page_num}")) end nth_page(itemdata["page_number"].to_i).put(itemdata["page_number"],itemdata["gtktype"],itemdata["id"],itemdata["x"].to_i,itemdata["y"].to_i,itemdata["width"].to_i,itemdata["height"].to_i,itemdata["txt"],itemdata["font"],itemdata["text_alignment"]) end show_all info.update(focused_item) end
set_focused_item(item)
click to toggle source
# File lib/PrintEditor.rb, line 135 def set_focused_item(item) return if focused_item == item focused_item.unfocus unless focused_item.nil? @focused_item=item if focused_item.nil? set_focus_child(nil) else focused_item.set_state(Gtk::STATE_PRELIGHT) focused_item.set_editable(true) focused_item.set_has_focus(true) set_focus_child(focused_item) edebug(focused_item.text+" selected","printing","info") end info.update(focused_item) focused_item end
to_mysql()
click to toggle source
# File lib/PrintEditor.rb, line 170 def to_mysql #=Gtk::PaperSize.new(@moditem["paper_size_name"]) $sql="replace into gtkprintpages set moditem_id='#{moditemid}', paper_size_name='#{page_setup.paper_size.name}', orientation='#{ case page_setup.orientation when Gtk::PrintSettings::PageOrientation::PORTRAIT then "portrait" when Gtk::PrintSettings::PageOrientation::REVERSE_PORTRAIT then "reverse_portrait" when Gtk::PrintSettings::PageOrientation::LANDSCAPE then "landscape" when Gtk::PrintSettings::PageOrientation::REVERSE_LANDSCAPE then "reverse_landscape" else "portrait" end}', left_margin='#{page_setup.get_left_margin(Gtk::PaperSize::UNIT_MM)}',"+ "right_margin='#{page_setup.get_right_margin(Gtk::PaperSize::UNIT_MM)}',"+ "top_margin='#{page_setup.get_top_margin(Gtk::PaperSize::UNIT_MM)}',"+ "bottom_margin='#{page_setup.get_bottom_margin(Gtk::PaperSize::UNIT_MM)}'" query($sql) edebug("saved","printing","info") page_num=0 tabs.each{|tab| nth_page(page_num).to_mysql unless nth_page(page_num).nil? page_num+=1 } end
to_s()
click to toggle source
# File lib/PrintEditor.rb, line 193 def to_s "WysiwygPrintEditor" end