Sha256: c1204288f8e56948559250cbef9ebb53a2f88527c6068f8e67487fd42c2603aa

Contents?: true

Size: 1.35 KB

Versions: 2

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

# Volay module
module Volay
  # App class
  class App < Gtk::Builder
    attr_accessor :signals_list
    attr_reader :mixer, :utils

    ##
    # Initialize application
    #
    # @param [String] path Path to glade file
    #
    def initialize(path)
      super()

      Gtk::Settings.default.gtk_button_images = true

      initialize_ui(path)
      initialize_mixer
      initialize_events
    end

    private

    ##
    # Initialize events
    #
    def initialize_events
      @signals_list = {}
      @utils = Volay::Utils.new(self)
      @utils.update_status_icon
      Volay::Widget::SystemTray.new(self)
      Volay::Widget::VolumeControl.new(self)

      connect_signals do |handler|
        @signals_list[handler] if @signals_list.key?(handler)
      end
    end

    ##
    # Initialize mixer for controlling volume
    #
    def initialize_mixer
      @mixer ||= Volay::Config.mixer
    end

    ##
    # Intiailize ui by overriding icons path
    #
    # @param [String] path Path to glade file
    #
    def initialize_ui(path)
      # Override Icon path to prevent
      # Gtk-CRITICAL **:gtk_icon_source_set_filename:
      ui = File.read(path)
      ui.gsub!(
        %r{/glade/icons},
        File.expand_path(
          '../glade/icons',
          File.dirname(__dir__)
        )
      )
      add_from_string(ui)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
volay-2.2.0 lib/volay/app.rb
volay-2.1.0 lib/volay/app.rb