class CssAccordionDemo

# Copyright © 2015-2016 Ruby-GNOME2 Project Team # This program is licenced under the same licence as Ruby-GNOME2. #

Theming/CSS Accordion

A simple accordion demo written using CSS transitions and multiple backgrounds

Public Class Methods

new(main_window) click to toggle source
# File gtk3/sample/gtk-demo/css_accordion.rb, line 10
def initialize(main_window)
  @window = Gtk::Window.new(:toplevel)
  @window.screen = main_window.screen
  @window.title = "CSS Accordion"
  @window.set_default_size(600, 300)

  container = Gtk::Box.new(:horizontal, 0)
  container.halign = :center
  container.valign = :center

  @window.add(container)

  %w(This Is A CSS Accordion :-).each do |label|
    child = Gtk::Button.new(:label => label)
    container.add(child)
  end

  provider = Gtk::CssProvider.new
  provider.load_from_resource("/css_accordion/css_accordion.css")

  style_context = @window.style_context
  style_context.add_provider(provider, Gtk::StyleProvider::PRIORITY_USER)

  apply_style(@window, provider)
end

Public Instance Methods

apply_style(widget, provider) click to toggle source
# File gtk3/sample/gtk-demo/css_accordion.rb, line 46
def apply_style(widget, provider)
  style_context = widget.style_context
  style_context.add_provider(provider, Gtk::StyleProvider::PRIORITY_USER)
  return unless widget.respond_to?(:children)
  widget.children.each do |child|
    apply_style(child, provider)
  end
end
run() click to toggle source
# File gtk3/sample/gtk-demo/css_accordion.rb, line 36
def run
  if !@window.visible?
    @window.show_all
  else
    @window.destroy
  end

  @window
end