Title / Description
Code module Helper ICONE = Icon.new('images/sig.ico').freeze def classe self.class.name end def view "views/#{classe.gsub('SiG', 'Sig').underscore}.xrc" end def finder lambda do |x| int_id = Wx::xrcid(x) begin Wx::Window.find_window_by_id(int_id, self) || int_id rescue RuntimeError int_id end end end def rescue_me(&block) begin yield rescue Exception => e p e puts e.backtrace.join("\n") nil end end def cria_aba(opcoes = {}) rescue_me do page = nil # se não receber a aba como opção, tenta obtê-la pelo método "aba" opcoes[:aba] = aba unless opcoes[:aba] if method?(:aba) tab = opcoes[:aba] opcoes[:acao] = opcoes[:acao].to_s # ações passadas sem o nome do controlador if opcoes[:acao] and ! opcoes[:acao].match(/\./) # o controlador é a classe opcoes[:acao] = "#{self.class == Class ? self.name : self.class.name}.#{opcoes[:acao]}" # se a classe não for um controlador, "tenta" fazer com que seja opcoes[:acao] = opcoes[:acao].gsub(/[A-Z]{1}[a-z]+\./, 'Controller.') unless opcoes[:acao].match(/Controller/) end # se não receber o título como opção, tenta obtê-lo através de uma constante opcoes[:titulo] = "#{opcoes[:acao].split('.').first.gsub('Controller', 'Helper')}::#{opcoes[:acao].split('.').last.upcase}".constantize rescue nil unless opcoes[:titulo] titulo = opcoes[:titulo] if $usuario.pode_acessar?(opcoes[:acao]) # pega a classe e o método c, m = opcoes[:acao].split('#').first.split('.') # instancia o método m = c.constantize.method(m.to_sym) # executa o método if opcoes[:objeto] page = m.call tab, opcoes[:objeto] else page = m.call tab end # adiciona a aba se houver "aba" a ser adicionada if page tab.add_page(page, titulo, true) page.pagina = tab.get_page_index(page) page.aba = tab end # processa o evento associado à ação process_event(opcoes[:evento]) if opcoes[:evento] and method?(:process_event) else mostra_erro 'Você não tem permissão para acessar este módulo!' end nil end end def handle_tab_enter(evt, options = {}) rescue_me do # Enter 13 / Tab 9 if evt.get_key_code == 13 or evt.get_key_code == 9 # se for um botão e receber um "enter", pressiona o botão if options[:id].class == Button and evt.get_key_code == 13 # cria um evento de botão clicado para o botão e manda o frame processá-lo process_event(CommandEvent.new(EVT_COMMAND_BUTTON_CLICKED, options[:id].id)) # se for um campo de texto multi linha não pula com um "enter" elsif options[:id].class == TextCtrl and evt.get_key_code == 13 and options[:id].is_multi_line evt.skip else # pula campos if evt.shift_down options[:prev].select if options[:prev] else options[:next].select if options[:next] end end else # ignora o evento evt.skip end end end def evt_char_tab_enter(id, options = {}) options[:id] = id id.evt_char { |evt| handle_tab_enter(evt, options) } end def evt_scrollwin_handle # calcula a quantidade de páginas de altura e largura de acordo com a razão entre o tamanho ideal e o disponível paginas_de_largura = (get_best_size.get_width.to_f / get_size.get_width).ceil paginas_de_altura = (get_best_size.get_height.to_f / get_size.get_height).ceil
Author
Highlight as C C++ CSS Clojure Delphi ERb Groovy (beta) HAML HTML JSON Java JavaScript PHP Plain text Python Ruby SQL XML YAML diff code