lib/fidgit/states/message_dialog.rb in fidgit-0.2.4 vs lib/fidgit/states/message_dialog.rb in fidgit-0.2.5

- old
+ new

@@ -1,61 +1,61 @@ - -module Fidgit - # A simple dialog that manages a message with a set of buttons beneath it. - class MessageDialog < DialogState - VALID_TYPES = [:ok, :ok_cancel, :yes_no, :yes_no_cancel, :quit_cancel, :quit_save_cancel] - - attr_reader :type - - # @param [String] message - # - # @option options [Symbol] :type (:ok) One from :ok, :ok_cancel, :yes_no, :yes_no_cancel, :quit_cancel or :quit_save_cancel - # @option options [String] :ok_text ("OK") - # @option options [String] :yes_text ("Yes") - # @option options [String] :no_text ("No") - # @option options [String] :cancel_text ("Cancel") - # @option options [String] :save_text ("Save") - # @option options [String] :quit_text ("Quit") - # @option options [Boolean] :show (true) Whether to show the message immediately (otherwise need to use #show later). - # - # @yield when the dialog is closed. - # @yieldparam [Symbol] result :ok, :yes, :no, :quit, :save or :cancel, depending on the button pressed. - def initialize(message, options = {}, &block) - options = { - type: :ok, - ok_text: "OK", - yes_text: "Yes", - no_text: "No", - quit_text: "Quit", - save_text: "Save", - cancel_text: "Cancel", - show: true, - background_color: DEFAULT_BACKGROUND_COLOR, - border_color: DEFAULT_BORDER_COLOR, - width: $window.width / 2 - }.merge! options - - @type = options[:type] - raise ArgumentError, ":type must be one of #{VALID_TYPES}, not #{@type}" unless VALID_TYPES.include? @type - - super(options) - - # Dialog is forced to the centre. - options[:align_h] = options[:align_v] = :center - - vertical options do - text_area(text: message, enabled: false, width: options[:width] - padding_left - padding_right) - - horizontal align_h: :center do - @type.to_s.split('_').each do |type| - button(options[:"#{type}_text"]) do - hide - block.call type.to_sym if block - end - end - end - end - - show if options[:show] - end - end + +module Fidgit + # A simple dialog that manages a message with a set of buttons beneath it. + class MessageDialog < DialogState + VALID_TYPES = [:ok, :ok_cancel, :yes_no, :yes_no_cancel, :quit_cancel, :quit_save_cancel] + + attr_reader :type + + # @param [String] message + # + # @option options [Symbol] :type (:ok) One from :ok, :ok_cancel, :yes_no, :yes_no_cancel, :quit_cancel or :quit_save_cancel + # @option options [String] :ok_text ("OK") + # @option options [String] :yes_text ("Yes") + # @option options [String] :no_text ("No") + # @option options [String] :cancel_text ("Cancel") + # @option options [String] :save_text ("Save") + # @option options [String] :quit_text ("Quit") + # @option options [Boolean] :show (true) Whether to show the message immediately (otherwise need to use #show later). + # + # @yield when the dialog is closed. + # @yieldparam [Symbol] result :ok, :yes, :no, :quit, :save or :cancel, depending on the button pressed. + def initialize(message, options = {}, &block) + options = { + type: :ok, + ok_text: "OK", + yes_text: "Yes", + no_text: "No", + quit_text: "Quit", + save_text: "Save", + cancel_text: "Cancel", + show: true, + background_color: DEFAULT_BACKGROUND_COLOR, + border_color: DEFAULT_BORDER_COLOR, + width: $window.width / 2 + }.merge! options + + @type = options[:type] + raise ArgumentError, ":type must be one of #{VALID_TYPES}, not #{@type}" unless VALID_TYPES.include? @type + + super(options) + + # Dialog is forced to the centre. + options[:align_h] = options[:align_v] = :center + + vertical options do + text_area(text: message, enabled: false, width: options[:width] - padding_left - padding_right) + + horizontal align_h: :center do + @type.to_s.split('_').each do |type| + button(options[:"#{type}_text"]) do + hide + block.call type.to_sym if block + end + end + end + end + + show if options[:show] + end + end end \ No newline at end of file