manabu-desktop 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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