Skip to content
Snippets Groups Projects
stress1.rb 1.92 KiB
Newer Older
  • Learn to ignore specific revisions
  • #
    # An FXRuby stress test developed by Gilles Filippini
    #
    
    require "fox16"
    
    include Fox
    
    # Test case tuning
    NUMBER_OF_ITEMS = 1000
    RESTART_FREQUENCY = 20
    
    # =======================================================================
    # Tree
    # =======================================================================
    class DirTree < FXTreeList
    
      def initialize(p)
        super(p, :opts => TREELIST_SHOWS_LINES|TREELIST_SHOWS_BOXES|TREELIST_ROOT_BOXES|LAYOUT_FILL_X|LAYOUT_FILL_Y)
    
      end
    
      def create
        super
    
        item = appendItem(nil, "root")
    
        @currentItem = item
        expand
      end
    
      def expand
        expandTree(@currentItem, true)
        listSubDir(@currentItem)
      end
    
      # Updating entries of dir
      def listSubDir(parentItem)
        entries = (1..NUMBER_OF_ITEMS).collect { |i| i.to_s }
        entries.each do |entry|
    
          item = appendItem(parentItem, entry)
    
          @currentItem = item if entry == "1"
        end
      end
    end
    
    # =======================================================================
    # Application
    # =======================================================================
    class Application < FXApp
      include Responder
    
      ID_TIMER, ID_LAST = enum(FXApp::ID_LAST, 2)
    
      def initialize
        super("FXTreeList Bug (the come back)", "Pini")
    
        FXMAPFUNC(SEL_TIMEOUT, ID_TIMER, "onCount")
    
        self.threadsEnabled = false
        init(ARGV)
    
        @mainWindow = FXMainWindow.new(self, appName, nil, nil, DECOR_ALL, 0, 0, 400, 600)
    
        @dirTree = DirTree.new(@mainWindow)
    
    
      def create
        super
        @mainWindow.show(PLACEMENT_SCREEN)
        addTimeout(100, self, ID_TIMER)
      end
    
      def onCount(sender, sel, ptr)
        @count += 1
        puts "count = #{@count}"
        if @count % RESTART_FREQUENCY == 0
          @dirTree.clearItems
          @dirTree.create
        end
        @dirTree.expand
        addTimeout(100, self, ID_TIMER)
      end
    end
    
    if __FILE__ == $0
    # Make application
      application = Application.new
    
    
      # Create app
    
      application.create()
    
      # Run
      application.run()
    end