class ManabuDesktop::Screens::Roster

Attributes

column_order[R]

Public Class Methods

new(client) click to toggle source
Calls superclass method ManabuDesktop::Screens::Base::new
# File lib/screens/roster.rb, line 12
def initialize(client)
  @client = client
  super('roster')

  setup_columns()

  _setup_toolbar()
  _setup_search_filters()

  @window.show_all
  _show()
end

Public Instance Methods

_create_columns() click to toggle source
# File lib/screens/roster.rb, line 51
def _create_columns()
  treeview = @builder.get_object('roster.TreeView')
  _create_model()
  treeview.set_model(@model)
  renderer = Gtk::CellRendererToggle.new
  renderer.signal_connect("toggled") { |_cell, path| _student_select(path) }
  column = Gtk::TreeViewColumn.new(I18n.t("g.select"), renderer,
                                   "active" => @column_order[:select])
  column.sort_column_id = @column_order[:select]
  treeview.append_column(column)

  renderer = Gtk::CellRendererText.new()
  column = Gtk::TreeViewColumn.new(I18n.t("student.id"), renderer,
                                   "text" => @column_order[:id])
  column.sort_column_id = @column_order[:id]
  treeview.append_column(column)

  renderer = Gtk::CellRendererText.new()
  column = Gtk::TreeViewColumn.new(I18n.t("student.surname"), renderer,
                                   "text" => @column_order[:surname])
  column.sort_column_id = @column_order[:surname]
  treeview.append_column(column)

  renderer = Gtk::CellRendererText.new()
  column = Gtk::TreeViewColumn.new(I18n.t("student.name"), renderer,
                                   "text" => @column_order[:name])
  column.sort_column_id = @column_order[:name]
  treeview.append_column(column)

  renderer = Gtk::CellRendererText.new()
  column = Gtk::TreeViewColumn.new(I18n.t("student.dob"), renderer,
                                   "text" => @column_order[:dob])
  column.sort_column_id = @column_order[:dob]
  treeview.append_column(column)

  renderer = Gtk::CellRendererText.new()
  column = Gtk::TreeViewColumn.new(I18n.t("student.gender"), renderer,
                                   "text" => @column_order[:gender])
  column.sort_column_id = @column_order[:gender]
  treeview.append_column(column)
end
_create_model() click to toggle source
# File lib/screens/roster.rb, line 38
def _create_model()
  # TODO: dynamically generate model based on selected columns/order
  @model = Gtk::ListStore.new(TrueClass, Integer, String, String, String, String)

  students = Manabu::Students.new(@client)
  students.roster.each_with_index do |student|
    iter = @model.append()
    iter.set_values([false, student.id, student.surname, student.name,
    #                     #student.surname_reading, student.name_reading,
                         student.birth_date, student.gender])
  end
end
_setup_search_filters() click to toggle source
# File lib/screens/roster.rb, line 126
def _setup_search_filters()
  clear_filters_button = @builder.get_object('clear_filters.Button')
  clear_filters_button.set_label(I18n.t('g.clear'))

  enrollment_status_filters_toggleButton = \
    @builder.get_object('enrollment_status_filters.ToggleButton')
  enrollment_status_filters_toggleButton.set_label(I18n.t('enrollment.filter'))
  enrollment_status_filters_popover = \
    @builder.get_object('enrollment_status_filters.Popover')

  enrollment_status_filters_popover.signal_connect('closed') {
    enrollment_status_filters_toggleButton.active = false
  }
  enrollment_status_filters_toggleButton.signal_connect('toggled') {
    enrollment_status_filters_popover.visible =
      enrollment_status_filters_toggleButton.active?
  }
end
_setup_toolbar() click to toggle source
# File lib/screens/roster.rb, line 102
def _setup_toolbar()
  toolbar = @builder.get_object('roster.Toolbar')
  # new button
  register_student_button = Gtk::ToolButton.new(:stock_id => Gtk::Stock::NEW)
  register_student_button.label = I18n.t('student.register')
  register_student_button.signal_connect('clicked') do
    ManabuDesktop::Screens::Student::Registration.new(@client, self)
  end

  # separator
  sep = Gtk::SeparatorToolItem.new()

  # search/filtering box
 # search_container = Gtk::Box.new(:horizontal, 10)
 # search_entry = Gtk::SearchEntry.new()
 # search_bar = Gtk::SearchBar.new()
 # search_bar.connect_entry(search_entry)
 # search_bar.add(search_container)

  toolbar.insert(register_student_button, 0)
  toolbar.insert(sep, 1)
  #toolbar.insert(search_container, 2)
end
_student_select(path_str) click to toggle source
# File lib/screens/roster.rb, line 93
def _student_select(path_str)
  path = Gtk::TreePath.new(path_str)
  iter = @model.get_iter(path)
  selected = iter[@column_order[:select]]
  # TODO: get student record and put in or remove from collection
  selected ^= 1
  iter[@column_order[:select]] = fixed
end
setup_columns(order = [:id, :surname, :name, :gender, :dob, :enrollment]) click to toggle source

Set the order of the columns Possible columns:

:id, :surname, :name, :middle_name, :surname_reading, :name_reading,
:middle_name_reading, :gender, :dob, :enrollment
# File lib/screens/roster.rb, line 29
def setup_columns(order = [:id, :surname, :name, :gender, :dob, :enrollment])
  @column_order = {select: 0}
  order.each do |item|
    @column_order[item] = @column_order.count
  end
  # @column_order << :controls # TODO: setup control column
  _create_columns()
end