manabu-desktop 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 769d096edcef6a59bda505a842e183402b9c2c293048da8eda04c5732b112670
4
- data.tar.gz: e8740cf1064645f0001de4df34dd84865ccf16a3afa2ca145687213ae3c9a459
3
+ metadata.gz: d91d62eee4add455b651a4caa9a294a7855d33d0537aa001b41bad1d12496280
4
+ data.tar.gz: 929b93531147e3d3e2fe5b4697ce133462089483f5a58d0a081c574c515ed02a
5
5
  SHA512:
6
- metadata.gz: 416c3a129944f64e858315be673cff9cc884dea292ec28e20dc14add5b179ad68a696c9a11274aa40bc3c22d4f9cacb00276841cdc7554b949e63748951967b0
7
- data.tar.gz: 6f85f71b36fb7effee7b1a6015c9a0beeae8a2b149dcf9fecbdc52be8df03f574d7a9f8dbf35399ffbcfb10e5ea9f3e774952cd874382266c42b053788c06fd8
6
+ metadata.gz: 3e4c7cd9a9c13f46e52c535f920edad1cb46c9468e5a8f291d2e722cbfb31b9b592e5b6a71651dc8919eb0e39bc7b253b38c657e703909bada9168e5838eefbc
7
+ data.tar.gz: 4124a70195874a8c629d58e642639d86900fc847df7d093c68fc4466377de480e41767eaf70822dd5da848e0377f833d80e0b00fa8555bab5eefcb4c62566876
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <!-- Generated with glade 3.20.0 -->
2
+ <!-- Generated with glade 3.22.1 -->
3
3
  <interface>
4
4
  <requires lib="gtk+" version="3.20"/>
5
5
  <object class="GtkImage" id="engage.Image">
@@ -9,6 +9,9 @@
9
9
  </object>
10
10
  <object class="GtkWindow" id="login.Window">
11
11
  <property name="can_focus">False</property>
12
+ <child>
13
+ <placeholder/>
14
+ </child>
12
15
  <child>
13
16
  <object class="GtkBox" id="login.Box">
14
17
  <property name="visible">True</property>
@@ -197,6 +200,42 @@
197
200
  <property name="position">5</property>
198
201
  </packing>
199
202
  </child>
203
+ <child>
204
+ <object class="GtkBox" id="toolbox.Box">
205
+ <property name="visible">True</property>
206
+ <property name="can_focus">False</property>
207
+ <property name="homogeneous">True</property>
208
+ <child>
209
+ <object class="GtkLabel" id="toolbox.Label">
210
+ <property name="visible">True</property>
211
+ <property name="can_focus">False</property>
212
+ <property name="label" translatable="yes">toolbox</property>
213
+ </object>
214
+ <packing>
215
+ <property name="expand">False</property>
216
+ <property name="fill">True</property>
217
+ <property name="position">0</property>
218
+ </packing>
219
+ </child>
220
+ <child>
221
+ <object class="GtkSwitch" id="toolbox.Switch">
222
+ <property name="visible">True</property>
223
+ <property name="can_focus">True</property>
224
+ <property name="active">True</property>
225
+ </object>
226
+ <packing>
227
+ <property name="expand">False</property>
228
+ <property name="fill">True</property>
229
+ <property name="position">1</property>
230
+ </packing>
231
+ </child>
232
+ </object>
233
+ <packing>
234
+ <property name="expand">False</property>
235
+ <property name="fill">True</property>
236
+ <property name="position">6</property>
237
+ </packing>
238
+ </child>
200
239
  </object>
201
240
  </child>
202
241
  </object>
@@ -2,6 +2,11 @@
2
2
  <!-- Generated with glade 3.22.1 -->
3
3
  <interface>
4
4
  <requires lib="gtk+" version="3.20"/>
5
+ <object class="GtkImage" id="server_menu.Image">
6
+ <property name="visible">True</property>
7
+ <property name="can_focus">False</property>
8
+ <property name="pixbuf">img/gaku-logo-32.png</property>
9
+ </object>
5
10
  <object class="GtkListBoxRow" id="server_instance.ListBoxRow">
6
11
  <property name="visible">True</property>
7
12
  <property name="can_focus">True</property>
@@ -10,13 +15,11 @@
10
15
  <property name="visible">True</property>
11
16
  <property name="can_focus">False</property>
12
17
  <child>
13
- <object class="GtkMenuButton" id="server_menu.MenuButton">
18
+ <object class="GtkButton" id="server_menu.Button">
14
19
  <property name="visible">True</property>
15
20
  <property name="can_focus">True</property>
16
21
  <property name="receives_default">True</property>
17
- <child>
18
- <placeholder/>
19
- </child>
22
+ <property name="image">server_menu.Image</property>
20
23
  </object>
21
24
  <packing>
22
25
  <property name="expand">False</property>
@@ -52,4 +55,16 @@
52
55
  </object>
53
56
  </child>
54
57
  </object>
58
+ <object class="GtkPopover" id="server_menu.Popover">
59
+ <property name="can_focus">False</property>
60
+ <property name="relative_to">server_menu.Button</property>
61
+ <property name="position">left</property>
62
+ <property name="constrain_to">none</property>
63
+ <child>
64
+ <object class="GtkListBox" id="server_menu.ListBox">
65
+ <property name="visible">True</property>
66
+ <property name="can_focus">False</property>
67
+ </object>
68
+ </child>
69
+ </object>
55
70
  </interface>
@@ -0,0 +1,51 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Generated with glade 3.22.1 -->
3
+ <interface>
4
+ <requires lib="gtk+" version="3.20"/>
5
+ <object class="GtkListBoxRow" id="server_menu_item.ListBoxRow">
6
+ <property name="visible">True</property>
7
+ <property name="can_focus">True</property>
8
+ <child>
9
+ <object class="GtkBox">
10
+ <property name="visible">True</property>
11
+ <property name="can_focus">False</property>
12
+ <child>
13
+ <object class="GtkImage" id="server_menu_item.Image">
14
+ <property name="visible">True</property>
15
+ <property name="can_focus">False</property>
16
+ <property name="stock">gtk-missing-image</property>
17
+ </object>
18
+ <packing>
19
+ <property name="expand">False</property>
20
+ <property name="fill">True</property>
21
+ <property name="position">0</property>
22
+ </packing>
23
+ </child>
24
+ <child>
25
+ <object class="GtkSeparator">
26
+ <property name="visible">True</property>
27
+ <property name="can_focus">False</property>
28
+ <property name="margin_right">2</property>
29
+ </object>
30
+ <packing>
31
+ <property name="expand">False</property>
32
+ <property name="fill">True</property>
33
+ <property name="position">1</property>
34
+ </packing>
35
+ </child>
36
+ <child>
37
+ <object class="GtkLabel" id="server_menu_item.Label">
38
+ <property name="visible">True</property>
39
+ <property name="can_focus">False</property>
40
+ <property name="label" translatable="yes">label</property>
41
+ </object>
42
+ <packing>
43
+ <property name="expand">False</property>
44
+ <property name="fill">True</property>
45
+ <property name="position">2</property>
46
+ </packing>
47
+ </child>
48
+ </object>
49
+ </child>
50
+ </object>
51
+ </interface>
@@ -4,9 +4,10 @@ module ManabuDesktop
4
4
  module Screens
5
5
  module Components
6
6
  class ServerListItem
7
- attr_reader :user, :server, :port, :list_box_row, :label
7
+ attr_reader :client, :user, :server, :port, :list_box_row, :label
8
8
 
9
- def initialize(user, server, port = 80)
9
+ def initialize(client, user, server, port = 80)
10
+ @client = client
10
11
  @user = user
11
12
  @server = server
12
13
  @port = port
@@ -20,8 +21,66 @@ module ManabuDesktop
20
21
  @list_box_row = sib_builder.get_object('server_instance.ListBoxRow')
21
22
  @label = sib_builder.get_object('server_id.Label')
22
23
  @label.set_label("#{@user}@#{@server}:#{@port}")
24
+ @menu_button = sib_builder.get_object('server_menu.Button')
25
+ @menu_popover = sib_builder.get_object('server_menu.Popover')
26
+ _populate_menu(sib_builder)
23
27
  @list_box_row.show_all()
24
28
  end
29
+
30
+ def _populate_menu(builder)
31
+ list_box = builder.get_object('server_menu.ListBox')
32
+ list_box.add(_build_ability_menu_lbr(:Toolbox))
33
+ list_box.add(_build_ability_menu_lbr(:Roster))
34
+ list_box.add(_build_ability_menu_lbr(:Courses))
35
+ list_box.add(_build_ability_menu_lbr(:Exams))
36
+ list_box.add(_build_ability_menu_lbr(:Administration))
37
+ list_box.show_all()
38
+
39
+ @menu_button.signal_connect 'clicked' do |button|
40
+ ManabuDesktop::Screens.Toolbox.new(@client)
41
+ @menu_popover.visible = true
42
+ end
43
+ end
44
+
45
+ def _build_ability_menu_lbr(ability)
46
+ builder = Gtk::Builder.new()
47
+ builder.add_from_file("#{__dir__}/../../../layouts/server_menu_item.glade")
48
+ menu_item = builder.get_object('server_menu_item.ListBoxRow')
49
+ # TODO find the *actual* way to git children by ID
50
+ box = menu_item.children[0]
51
+ box.children[0].set_pixbuf(_get_ability_icon(ability))
52
+ box.children[2].label = I18n.t("g.#{ability.to_s}")
53
+ #menu_item.ability = ability
54
+ #menu_item.signal_connect 'set-focus-child' do |item|
55
+ # ManabuDesktop::Screens.const_get(ability).new(@client)
56
+ #end
57
+ menu_item
58
+ end
59
+
60
+ def _get_ability_icon(ability)
61
+ case ability
62
+ when :Toolbox
63
+ pixbuf = GdkPixbuf::Pixbuf.new(
64
+ file: ManabuDesktop::Tools.emojidex.emoji[:hammer_wrench].paths[:png][:px16])
65
+ when :Roster
66
+ pixbuf = GdkPixbuf::Pixbuf.new(
67
+ file: ManabuDesktop::Tools.emojidex.emoji[:student].paths[:png][:px16])
68
+ when :Courses
69
+ pixbuf = GdkPixbuf::Pixbuf.new(
70
+ file: ManabuDesktop::Tools.emojidex.emoji[:notebook].paths[:png][:px16])
71
+ when :Exams
72
+ pixbuf = GdkPixbuf::Pixbuf.new(
73
+ file: ManabuDesktop::Tools.emojidex.emoji[:white_check_mark].paths[:png][:px16])
74
+ when :Administration
75
+ pixbuf = GdkPixbuf::Pixbuf.new(
76
+ file: ManabuDesktop::Tools.emojidex.emoji[:wrench].paths[:png][:px16])
77
+ else
78
+ pixbuf = GdkPixbuf::Pixbuf.new(
79
+ file: ManabuDesktop::Tools.emojidex.emoji[:question].paths[:png][:px16])
80
+ end
81
+
82
+ pixbuf
83
+ end
25
84
  end
26
85
  end
27
86
  end
@@ -19,9 +19,11 @@ module ManabuDesktop
19
19
  @window.resizable = false
20
20
 
21
21
  @builder.get_object('server.Label').set_label(I18n.t('login.server'))
22
- @builder.get_object('secure.Label').set_label(I18n.t('login.secure'))
23
22
  @server_comboBoxText = @builder.get_object('server.ComboBoxText')
23
+
24
+ @builder.get_object('secure.Label').set_label(I18n.t('login.secure'))
24
25
  @server_secure_switch = @builder.get_object('secure.Switch')
26
+
25
27
  @cache_info[:servers].each{ |server| @server_comboBoxText.append_text(server[:addr])}
26
28
  if (@cache_info[:servers].length > 0)
27
29
  @server_comboBoxText.set_active(0)
@@ -36,6 +38,9 @@ module ManabuDesktop
36
38
  @builder.get_object('password.Label').set_label(I18n.t('login.password'))
37
39
  @password_entry = @builder.get_object('password.Entry')
38
40
 
41
+ @builder.get_object('toolbox.Label').set_label(I18n.t('login.toolbox'))
42
+ @open_toolbox_switch = @builder.get_object('toolbox.Switch')
43
+
39
44
  engage_button = @builder.get_object('engage.Button')
40
45
  engage_button.set_label(I18n.t('login.engage'))
41
46
  engage_button.signal_connect('clicked') {
@@ -60,6 +65,7 @@ module ManabuDesktop
60
65
 
61
66
  end
62
67
 
68
+ # Attempt to engage a connection with the given prarameters
63
69
  def _engage(server, secure, user, password)
64
70
  addr = /^[^:|^\/]*[^:|^\/]/.match(server) # server part
65
71
  port = /[^:]\d[^\D]*/.match(server).to_s.to_i # port part
@@ -71,7 +77,11 @@ module ManabuDesktop
71
77
  force_secure_connection: secure)
72
78
  if @client.status == :connected
73
79
  ManabuDesktop::Sessions.add_session(@client)
74
- _open_toolbox(@client)
80
+ if @open_toolbox_switch.active?
81
+ _open_toolbox(@client)
82
+ else
83
+ @window.destroy
84
+ end
75
85
  end
76
86
  end
77
87
 
@@ -9,15 +9,27 @@ STATUS_ICON_SIZE = 16
9
9
  module ManabuDesktop
10
10
  module Screens
11
11
  class MainMenu < ManabuDesktop::Screens::Base
12
+ attr_accessor :connection_entries
13
+
14
+ def add_connection_entry(session_handle)
15
+ sli = _generate_server_list_item(session_handle,
16
+ session_handle.auth.username,
17
+ session_handle.auth.host,
18
+ session_handle.auth.port)
19
+ @connections_list.add(sli)
20
+ @connections_list.show_all()
21
+ end
12
22
 
13
- def _generate_server_list_item(user, server, port = 80)
14
- sib_builder = Gtk::Builder.new()
15
- sib_builder.add_from_file("#{__dir__}/../../layouts/server_listbox.glade")
16
- lbr = sib_builder.get_object('server_instance.ListBoxRow')
17
- label = sib_builder.get_object('server_id.Label')
18
- label.set_label("#{user}@#{server}:#{port}")
19
- lbr.show_all()
20
- lbr
23
+ def _generate_server_list_item(client, user, server, port = 80)
24
+ sli = ManabuDesktop::Screens::Components::ServerListItem.new(client, user, server, port)
25
+ @connections_list.add(sli.list_box_row)
26
+ #sib_builder = Gtk::Builder.new()
27
+ #sib_builder.add_from_file("#{__dir__}/../../layouts/server_listbox.glade")
28
+ #lbr = sib_builder.get_object('server_instance.ListBoxRow')
29
+ #label = sib_builder.get_object('server_id.Label')
30
+ #label.set_label("#{user}@#{server}:#{port}")
31
+ #lbr.show_all()
32
+ #lbr
21
33
  end
22
34
 
23
35
  def initialize()
@@ -52,8 +64,6 @@ module ManabuDesktop
52
64
  # Connection list
53
65
  @connections_list = @builder.get_object('connections.ListBox')
54
66
  # TODO: delete lines here after implementation [reference]
55
- #sli = ManabuDesktop::Screens::Components::ServerListItem.new("a", "b")
56
- #@connections_list.add(sli.list_box_row)
57
67
  #sli = ManabuDesktop::Screens::Components::ServerListItem.new("c", "d")
58
68
  #@connections_list.add(sli.list_box_row)
59
69
  #@connections_list.add(ServerInstanceBox.new("c", "d"))
@@ -16,6 +16,7 @@ module ManabuDesktop
16
16
  @@active_sessions << session_handle
17
17
  main_menu = ManabuDesktop::Windows.get_main_menu()
18
18
  main_menu.set_connections_status(session_count) unless main_menu == nil
19
+ main_menu.add_connection_entry(session_handle)
19
20
  end
20
21
 
21
22
  def self.remove_session(session_identifier)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'manabu-desktop'
3
- s.version = '0.0.4'
3
+ s.version = '0.0.5'
4
4
  s.licenses = ['GPL-3.0']
5
5
  s.summary = 'GTK based GUI client for Manabu/GAKU Engine'
6
6
  s.description = 'Manabu Desktop is a GTK front end for the Manabu client.'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: manabu-desktop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rei Kagetsuki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-18 00:00:00.000000000 Z
11
+ date: 2018-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: manabu
@@ -92,6 +92,7 @@ files:
92
92
  - layouts/img/black_heart.png
93
93
  - layouts/img/blue_circle.png
94
94
  - layouts/img/gaku-logo-128.png
95
+ - layouts/img/gaku-logo-32.png
95
96
  - layouts/img/gaku-logo.png
96
97
  - layouts/img/heart.png
97
98
  - layouts/img/manabu-kun-128.png
@@ -108,6 +109,7 @@ files:
108
109
  - layouts/main_menu.glade
109
110
  - layouts/roster.glade
110
111
  - layouts/server_listbox.glade
112
+ - layouts/server_menu_item.glade
111
113
  - layouts/student_registration.glade
112
114
  - layouts/toolbox.glade
113
115
  - lib/screens/base.rb
@@ -144,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
146
  version: '0'
145
147
  requirements: []
146
148
  rubyforge_project:
147
- rubygems_version: 2.7.6
149
+ rubygems_version: 2.7.7
148
150
  signing_key:
149
151
  specification_version: 4
150
152
  summary: GTK based GUI client for Manabu/GAKU Engine