File: tab.rb

package info (click to toggle)
mikutter 3.0.7%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 9,396 kB
  • ctags: 1,916
  • sloc: ruby: 16,619; sh: 117; makefile: 27
file content (59 lines) | stat: -rw-r--r-- 1,945 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# -*- coding: utf-8 -*-
# タブのインターフェイスを提供するクラス

require File.expand_path File.join(File.dirname(__FILE__), 'pane')
require File.expand_path File.join(File.dirname(__FILE__), 'cuscadable')
require File.expand_path File.join(File.dirname(__FILE__), 'hierarchy_child')
require File.expand_path File.join(File.dirname(__FILE__), 'hierarchy_parent')
require File.expand_path File.join(File.dirname(__FILE__), 'tablike')
require File.expand_path File.join(File.dirname(__FILE__), 'widget')
require File.expand_path File.join(File.dirname(__FILE__), 'tab_toolbar')

class Plugin::GUI::Tab

  include Plugin::GUI::Cuscadable
  include Plugin::GUI::HierarchyChild
  include Plugin::GUI::HierarchyParent
  include Plugin::GUI::Widget
  include Plugin::GUI::TabLike

  role :tab

  set_parent_event :gui_tab_join_pane

  attr_reader :tab_toolbar

  # instanceから呼ばれる。勝手に作成しないこと
  def initialize(*args)
    super
    @temporary_tab = false
    position = Plugin::GUI.get_tab_order(slug)
    if position
      window_slug, pane_slug, order = position
      pane = Plugin::GUI::Pane.instance(pane_slug)
      index = where_should_insert_it(slug, pane.children.map(&:slug), order)
      notice "tab initialize #{slug} #{position.inspect} #{index}"
      pane.add_child(self, index)
    else
      Plugin::GUI::Pane.add_default << self
    end
    @tab_toolbar = Plugin::GUI::TabToolbar.instance
    Plugin.call(:tab_created, self)
    shrink
    add_child(@tab_toolbar)
    expand
  end

  # このタブが一時的なタブであることを宣言する。
  # タブの並び順に記録されないようになり、次回起動時にタブが生成されない。
  # ==== Return
  # self
  def temporary_tab(value=true)
    @temporary_tab = value end

  # このタブが一時的なタブかどうかを返す
  # ==== Return
  # self
  def temporary_tab?
    @temporary_tab end
end