Report abuse

#Copyright (C) 2007 by Han Dao

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
#You can contract the author at wikipediankiba@gmail.com

#PROJECT: Rbgooey
#DESCRIPTION:  A GUI library for the rubygame library.
#FUNCTION OF THIS PART: This class is responsible for parsing global setting.

class ConfigParser
  attr_accessor :data , :name , :gui
  def initialize gui
    @gui = gui
    @main = gui.main
    @data = data
    @name = name
  end
  #Set up global setting for Dynpet
  def read data
    @data = data
    @data['conf'].each do |data|
      font(data['font'])
      screen(data['screen'])
    end
  end
  def font data
    data.each do |font|
      @main.font_set(font['content'],font['size'].to_i)
    end
  end
  def screen data
    data.each do |screen|
      bg = screen['bgcolor'].split(' ')
      @main.bgcolor = [bg[0].to_i,bg[1].to_i,bg[2].to_i]
    end
  end
end
#parent class of ConfigParser
#Copyright (C) 2007 by Han Dao

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
#You can contract the author at wikipediankiba@gmail.com

#PROJECT: Rbgooey
#DESCRIPTION: A GUI library for the rubygame library.
#FUNCTION OF THIS PART: metaclass for file interface driven system.


class Gui
  attr_accessor :text , :input , :main , :list , :target , :rect , :option , :widget , :data
  def initialize main
    @main = main
    @config = ConfigParser.new(self)
    @aim = Target.new()
    @text = text
    @text = TextMode.new(@main,@aim)
    @widget = widget
    @widget = Widget.new()
    @widget.setup(@main,@aim)
    @input = input
    @input = nil
    @option = option
    @textparser = TextParser.new(self)
    @inputparser = InputParser.new(self)
    @widgetparser = WidgetParser.new(self)
    @list = list
    @target = target
    @data = data
    @rect = rect
    puts @main.fgcolor
    puts @main.bgcolor
  end
  #load metadata
  def load name
    @data = XmlSimple.xml_in(name, {'KeyAttr' => 'name'})
    @config.read(@data)
  end
  #read a file from the metadata
  def execute name , target
    @target = target
    @inputparser.data = @widgetparser.data = @textparser.data = XmlSimple.xml_in(@data['file'][name]['source'][0],{ 'KeyAttr' => 'name' })
  end
  def mouse
    @rect = @widget.rect + @text.rect
    @option = @aim.option
    mqueue = MQueue.new
    mqueue.mouse.name("data/mouse/mouse.png")
    mqueue.queue(self,@target,@list)
  end
  def read name , list = nil
    @text.clear()
    @widget.clean()
    @list = list
    @textparser.read(name)
    @widgetparser.read(name)
    @text.render_text()
    @inputparser.read(name)
    return @input
  end
end

#data.xml

        
                data/dyngui/menu.xml
         
         
                data/sharegui/optionmenu.xml
        
         
                data/dyngui/filemenu.xml
        
         
                data/dyngui/creation.xml
        
        
                data/fonts/freesansbold.ttf
                800 600
        


#class where error occurs
#Copyright (C) 2006-2007 by Han Dao

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
#You can contract the author at wikipediankiba@gmail.com

#PROJECT: Rbgooey
#DESCRIPTION: A GUI library for the rubygame library.
#FUNCTION OF THIS PART: Class TextRender handle the textrendering task. It is the result of TextMode's various arrays.
class TextRender
  def initialize main , textmode
    @main = main
    @text = textmode
  end
  #This method render the text array element one by one.
  def render_text option = false
    y_value = 0
    default = nil
    skip = @main.font.line_skip()
    @text.text.zip(@text.size,@text.x,@text.y,@text.report).each do |string , size , x , y , report|
      font = TTF.new("#{@main.fname}",size)
      if @text.omit == false
        render = font.render("#{[string]}",true,@text.fgcolor,@text.bgcolor)
      elsif @text.omit == true
        render = font.render("#{[string]}",true,@text.fgcolor)
      end
      render.blit(@main.screen,[x,y+=y_value])
      if report == 1
        @text.rect << Rect.new(x,y,*render.size)
      end
      y_value+= skip
    end
  end
end

#error message
#/usr/lib/ruby/gems/1.8/gems/rbGooey-0.0.1/rbgooey/lib/textrender.rb:35: [BUG] #Segmentation fault
#ruby 1.8.6 (2007-03-13) [i486-linux]