narou 1.7.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of narou might be problematic. Click here for more details.

Files changed (100) hide show
  1. checksums.yaml +5 -13
  2. data/.gitignore +1 -0
  3. data/ChangeLog.md +35 -0
  4. data/Gemfile +3 -0
  5. data/LICENSE.txt +100 -0
  6. data/README.md +28 -39
  7. data/lib/color.rb +0 -2
  8. data/lib/command.rb +1 -0
  9. data/lib/command/convert.rb +33 -4
  10. data/lib/command/diff.rb +5 -4
  11. data/lib/command/download.rb +9 -1
  12. data/lib/command/flag.rb +2 -2
  13. data/lib/command/list.rb +1 -1
  14. data/lib/command/mail.rb +3 -3
  15. data/lib/command/remove.rb +2 -1
  16. data/lib/command/send.rb +7 -6
  17. data/lib/command/setting.rb +39 -95
  18. data/lib/command/tag.rb +25 -13
  19. data/lib/command/update.rb +6 -1
  20. data/lib/command/version.rb +5 -1
  21. data/lib/command/web.rb +111 -0
  22. data/lib/commandbase.rb +5 -2
  23. data/lib/commandline.rb +16 -0
  24. data/lib/converterbase.rb +20 -14
  25. data/lib/device.rb +5 -4
  26. data/lib/downloader.rb +68 -39
  27. data/lib/eventable.rb +72 -0
  28. data/lib/helper.rb +105 -37
  29. data/lib/ini.rb +2 -1
  30. data/lib/input.rb +68 -0
  31. data/lib/inventory.rb +4 -0
  32. data/lib/kindlestrip.rb +2 -2
  33. data/lib/logger.rb +41 -19
  34. data/lib/narou.rb +10 -0
  35. data/lib/narou/api.rb +1 -1
  36. data/lib/novelconverter.rb +8 -21
  37. data/lib/novelsetting.rb +79 -4
  38. data/lib/version.rb +1 -1
  39. data/lib/web/all.rb +12 -0
  40. data/lib/web/appserver.rb +612 -0
  41. data/lib/web/helper4web.rb +15 -0
  42. data/lib/web/progressbar4web.rb +32 -0
  43. data/lib/web/public/favicon.ico +0 -0
  44. data/lib/web/public/resources/bootbox.min.js +6 -0
  45. data/lib/web/public/resources/common.ui.js +143 -0
  46. data/lib/web/public/resources/dataTables.colVis.js +1113 -0
  47. data/lib/web/public/resources/help/rect_select.png +0 -0
  48. data/lib/web/public/resources/help/ssmain.png +0 -0
  49. data/lib/web/public/resources/help/tag.png +0 -0
  50. data/lib/web/public/resources/jquery.moveto.js +44 -0
  51. data/lib/web/public/resources/jquery.outerclick.js +60 -0
  52. data/lib/web/public/resources/jquery.slidenavbar.js +89 -0
  53. data/lib/web/public/resources/narou.library.js +815 -0
  54. data/lib/web/public/resources/narou.ui.js +993 -0
  55. data/lib/web/public/resources/perfect-scrollbar.min.css +5 -0
  56. data/lib/web/public/resources/perfect-scrollbar.min.js +4 -0
  57. data/lib/web/public/resources/shortcut.js +223 -0
  58. data/lib/web/public/resources/sort_asc.png +0 -0
  59. data/lib/web/public/resources/sort_desc.png +0 -0
  60. data/lib/web/public/resources/toggle-switch.css +322 -0
  61. data/lib/web/public/robots.txt +3 -0
  62. data/lib/web/public/test/jquery.outerclick.html +72 -0
  63. data/lib/web/pushserver.rb +110 -0
  64. data/lib/web/settingmessages.rb +14 -0
  65. data/lib/web/streaminginput.rb +103 -0
  66. data/lib/web/streaminglogger.rb +52 -0
  67. data/lib/web/views/about.haml +11 -0
  68. data/lib/web/views/help.haml +105 -0
  69. data/lib/web/views/index.haml +245 -0
  70. data/lib/web/views/js/widget.erb +74 -0
  71. data/lib/web/views/layout.haml +49 -0
  72. data/lib/web/views/novels/setting.haml +177 -0
  73. data/lib/web/views/settings.haml +115 -0
  74. data/lib/web/views/style.scss +737 -0
  75. data/lib/web/views/widget.haml +39 -0
  76. data/lib/web/web-socket-ruby/.gitignore +1 -0
  77. data/lib/web/web-socket-ruby/README.txt +75 -0
  78. data/lib/web/web-socket-ruby/lib/web_socket.rb +601 -0
  79. data/lib/web/web-socket-ruby/samples/chat_server.rb +58 -0
  80. data/lib/web/web-socket-ruby/samples/echo_server.rb +33 -0
  81. data/lib/web/web-socket-ruby/samples/stdio_client.rb +25 -0
  82. data/lib/web/worker.rb +87 -0
  83. data/narou.gemspec +36 -3
  84. data/narou.rb +8 -6
  85. data/preset/ncode.syosetu.com/n8725k/converter.rb +2 -1
  86. data/spec/data/convert_test/replace/correct_test_replace.txt +1 -1
  87. data/spec/data/convert_test/replace/test_replace.txt +1 -1
  88. data/spec/data/convert_test/ruby/correct_test_ruby.txt +18 -1
  89. data/spec/data/convert_test/ruby/test_ruby.txt +18 -0
  90. data/spec/downloader_spec.rb +37 -0
  91. data/spec/eventable_spec.rb +172 -0
  92. data/spec/exit_code_spec.rb +67 -0
  93. data/spec/helper_spec.rb +72 -0
  94. data/spec/input_spec.rb +76 -0
  95. data/spec/logger_spec.rb +53 -0
  96. data/spec/novelsetting_spec.rb +35 -0
  97. data/spec/worker_spec.rb +56 -0
  98. data/template/ibunko_novel.txt.erb +2 -2
  99. data/template/novel.txt.erb +2 -2
  100. metadata +213 -29
@@ -0,0 +1,115 @@
1
+ -# このページ内専用のjavascriptでjQueryオブジェクトを参照したい場合この関数に記述
2
+ :javascript
3
+ var local_initialize_function = function($) {
4
+ $("[data-toggle=tooltip]").tooltip({
5
+ animation: false,
6
+ container: "body",
7
+ });
8
+ };
9
+
10
+ %form(action="/settings" method="POST")
11
+ %input(type="hidden" name="view_invisible" value="#{@view_invisible ? 1 : 0}")
12
+ .navbar.navbar-default.navbar-fixed-top(role="navigation")
13
+ .container
14
+ .navbar-header
15
+ %button.navbar-toggle(type="button")
16
+ %span.sr-only Toggle navigation
17
+ %span.icon-bar
18
+ %span.icon-bar
19
+ %span.icon-bar
20
+ %a.navbar-brand(href="#" data-move-to="top") Narou.rb WEB UI
21
+ .collapse.navbar-collapse
22
+ %ul.nav.navbar-nav
23
+ %li.active
24
+ %a(href="/settings") 環境設定
25
+ %li
26
+ %a(href="/help") ヘルプ
27
+ %li
28
+ %a(href="/") 戻る
29
+ .navbar-form.navbar-left
30
+ %input.btn.btn-info(type="submit" value="設定を保存" style="margin-left: 50px")
31
+ %p#queue-text.navbar-text.navbar-right(data-toggle="tooltip" title="キューに積まれた処理の数" data-placement="bottom")
32
+ %span.glyphicon.glyphicon-inbox
33
+ %span#queue 0
34
+
35
+ .container.container-main.theme-showcase(role="main")
36
+ - @setting_variables.each do |scope, variables|
37
+ - inventory = Inventory.load("#{scope}_setting", scope)
38
+
39
+ %p.panel-settings-link
40
+ - if scope == :local
41
+ goto <a href="#global" data-move-to="#global">Global Variables</a>
42
+ - else
43
+ goto <a href="#local" data-move-to="#local">Local Variables</a>
44
+
45
+ .panel.panel-primary.panel-settings
46
+ .panel-heading{id: scope} #{scope.capitalize} Variables
47
+ .panel-body.list-group-item-info
48
+ ・各コマンドの設定の変更が出来ます<br>
49
+ - if scope == :local
50
+ - if @view_invisible
51
+ ・force.* 系の設定は setting.ini の設定を無視して反映されるようになります<br>
52
+ ・default_args.* 系の設定は、各種コマンドのオプションを省略した場合に使用されるオプションを指定出来ます<br>
53
+ - else
54
+ ・Global な設定はユーザープロファイルに保存され、すべての narou コマンドで使われます<br>
55
+ - if @view_invisible
56
+ ・隠しオプションを非表示にするには<a href="?"><u>ここをクリック</u></a><br>
57
+ - else
58
+ ・隠しオプションを表示するには<a href="?view_invisible=1"><u>ここをクリック</u></a><br>
59
+ .list-group
60
+ - variables.each do |name, value|
61
+ - item = inventory[name]
62
+ - unless @view_invisible
63
+ - if value[2]
64
+ - if value[0] == :boolean
65
+ - hidden_value = convert_boolean_to_on_off(item)
66
+ - else
67
+ - hidden_value = item
68
+ %input{type:"hidden", name:name, value:hidden_value}
69
+ - next
70
+ - message = Narou::SETTING_VARIABLES_WEBUI_MESSAGES[name] || value[1]
71
+ - message = message.strip.gsub("\n", "<br>")
72
+ - error_style = {class: "has-error", style: "background-color:#f2dede"}
73
+ .list-group-item.form-group{@error_list[name] ? error_style : {}}
74
+ %h4.list-group-item-heading #{name}
75
+ .list-group-item-text
76
+ - case value[0]
77
+ - when :boolean
78
+ - if name.start_with?("force.")
79
+ .switch-toggle.well.switch-3
80
+ <input id="#{name}-nil" type="radio" name="#{name}" value="nil" #{item.nil? ? "checked" : ""}>
81
+ %label(for="#{name}-nil")
82
+ 未設定
83
+ <input id="#{name}-false" type="radio" name="#{name}" value="off" #{item == false ? "checked" : ""}>
84
+ %label(for="#{name}-false")
85
+ しない
86
+ <input id="#{name}-true" type="radio" name="#{name}" value="on" #{item ? "checked" : ""}>
87
+ %label(for="#{name}-true")
88
+ する
89
+ %a.btn.btn-primary
90
+ - else
91
+ %label.switch-light.well
92
+ <input type="checkbox" name="#{name}" #{item ? "checked" : ""}>
93
+ - if name == "over18"
94
+ %span
95
+ %span いいえ
96
+ %span はい
97
+ - else
98
+ %span
99
+ %span しない
100
+ %span する
101
+ %a.btn.btn-primary
102
+ - else
103
+ %input{type:"text", name:name, value:item, class:"form-control",
104
+ placeholder:Helper.variable_type_to_description(value[0]).strip }
105
+ %p
106
+ = message != "" ? message : "&nbsp;"
107
+ - if @error_list[name]
108
+ %p.alert-danger
109
+ = @error_list[name]
110
+ .clear
111
+ .panel-footer
112
+ %input.btn.btn-info(type="submit" value="設定を保存" style="float:none")
113
+ %span(style="color:gray")
114
+ (Local、Globalどちらも保存されます)
115
+
@@ -0,0 +1,737 @@
1
+ /*! -*- coding: utf-8 -*-
2
+ *
3
+ * Copyright 2013 whiteleaf. All rights reserved.
4
+ */
5
+
6
+ @mixin opacity($opacity) {
7
+ opacity: $opacity;
8
+ $opacityIE: $opacity * 100;
9
+ filter: alpha(opacity=$opacityIE);
10
+ }
11
+
12
+ @mixin css3($property, $value) {
13
+ @each $prefix in -webkit-, -moz-, -ms-, -o-, '' {
14
+ #{$prefix}#{$property}: $value;
15
+ }
16
+ }
17
+
18
+ @mixin clearfix {
19
+ zoom: 1;
20
+ &:before,
21
+ &:after {
22
+ display: block;
23
+ height: 0;
24
+ visibility: hidden;
25
+ content: "\0020";
26
+ }
27
+ &:after {
28
+ clear: both;
29
+ }
30
+ }
31
+
32
+ $default-color: #333;
33
+
34
+ /*
35
+ * 全体
36
+ */
37
+ body {
38
+ padding-top: 70px;
39
+ padding-bottom: 300px;
40
+ }
41
+
42
+ @media (max-width:767px) {
43
+ .container-main {
44
+ padding-left: 0 !important;
45
+ padding-right: 0 !important;
46
+ }
47
+ }
48
+
49
+ .centering {
50
+ left: 0;
51
+ right: 0;
52
+ margin-left: auto;
53
+ margin-right: auto;
54
+ }
55
+
56
+ .clear {
57
+ clear: both;
58
+ display: none;
59
+ }
60
+
61
+ #fadeout-alert {
62
+ position: fixed;
63
+ z-index: 1000;
64
+ width: 350px;
65
+ text-align: center;
66
+ @extend .centering;
67
+ top: 100px;
68
+ }
69
+
70
+ /*
71
+ * テーブル関連
72
+ */
73
+ table#novel-list {
74
+ $thead-background-color: #605555;
75
+ $odd-color: #f8f3e5;
76
+ $even-color: #fffcef;
77
+ $novel-list-border-color: mix($odd-color, $thead-background-color, 80%);
78
+
79
+ font-size: 0.8em;
80
+ color: $default-color;
81
+ //border-color: darken($odd-color, 20%);
82
+ border-color: $novel-list-border-color;
83
+
84
+ @mixin dataTableSortingHeader($arrow_img_url) {
85
+ background: url($arrow_img_url) no-repeat center right !important;
86
+ background-color: #403535 !important;
87
+ }
88
+
89
+ thead {
90
+ background-color: $thead-background-color;
91
+ color: #ddd0cc;
92
+ }
93
+ td {
94
+ padding: 4px !important;
95
+ vertical-align: middle;
96
+ //border-color: darken($odd-color, 20%);
97
+ border-color: $novel-list-border-color;
98
+ }
99
+ tr {
100
+ td.text-center {
101
+ text-align: center;
102
+ }
103
+ }
104
+ tr.odd {
105
+ background-color: $odd-color;
106
+ td.sorting_1 {
107
+ background-color: #f0ecde;
108
+ }
109
+ }
110
+ tr.even {
111
+ background-color: $even-color;
112
+ td.sorting_1 {
113
+ background-color: #f8f3e5;
114
+ }
115
+ }
116
+ $selected-color: mix($odd-color, rgba(255,212,0,0.5));
117
+ //$selected-color: #90cebc;
118
+ $selected-hover-color: #ded;
119
+ tr.selected {
120
+ td {
121
+ background-color: $selected-color !important;
122
+ font-weight: bold;
123
+ color: $default-color !important;
124
+ overflow: hidden;
125
+ &.sorting_1 {
126
+ background-color: mix($selected-color, black, 96%) !important;
127
+ }
128
+ }
129
+ td > div {
130
+ position: relative;
131
+ }
132
+
133
+ td:first-child > div:after {
134
+ position: absolute;
135
+ top: -5px;
136
+ left: 1px;
137
+ color: white !important;
138
+ font-family: 'Glyphicons Halflings';
139
+ font-style: normal;
140
+ font-weight: bold;
141
+ font-size: 2em;
142
+ -webkit-font-smoothing: antialiased;
143
+ -moz-osx-font-smoothing: grayscale;
144
+ content: "\e013";
145
+ @include opacity(0.7);
146
+ }
147
+ }
148
+ @media (min-width:768px) {
149
+ tr:hover td {
150
+ background-color: $selected-hover-color !important;
151
+ &.sorting_1 {
152
+ background-color: mix($selected-hover-color, black, 97%) !important;
153
+ }
154
+ }
155
+ tr:hover.selected td {
156
+ background-color: $selected-color !important;
157
+ &.sorting_1 {
158
+ background-color: mix($selected-color, black, 96%) !important;
159
+ }
160
+ }
161
+ }
162
+ $frozen-color: #6caddd;
163
+ tr.frozen td {
164
+ $frozen-background-color: mix($even-color, $frozen-color, 88%);
165
+ color: lighten($default-color, 25%);
166
+ background-color: $frozen-background-color;
167
+ &.sorting_1 {
168
+ //background-color: darken($frozen-background-color, 3%);
169
+ background-color: mix($frozen-background-color, black, 97%);
170
+ }
171
+ &.column-id > div:before {
172
+ content: "*";
173
+ color: $frozen-color;
174
+ font-weight: bold;
175
+ }
176
+ }
177
+ tr.frozen.selected td {
178
+ color: lighten($default-color, 30%) !important;
179
+ }
180
+ tr.frozen.selected td.column-id > div:before {
181
+ color: darken($frozen-color, 20%);
182
+ }
183
+ thead {
184
+ .sorting_asc {
185
+ @include dataTableSortingHeader("/resources/sort_asc.png");
186
+ }
187
+ .sorting_desc {
188
+ @include dataTableSortingHeader("/resources/sort_desc.png");
189
+ }
190
+ }
191
+ a {
192
+ display: block;
193
+ }
194
+
195
+ span.new-arrivals:after {
196
+ color: magenta;
197
+ content: " 新着";
198
+ }
199
+
200
+ span.today-update:after {
201
+ color: green;
202
+ content: " 更新";
203
+ }
204
+ }
205
+
206
+ .context-menu-target-cover {
207
+ position: absolute;
208
+ @include css3(box-shadow, 0 0 6px red);
209
+ &:after {
210
+ display: block;
211
+ width: 100%;
212
+ height: 100%;
213
+ background-color: red;
214
+ @include opacity(0.08);
215
+ content: "\0020";
216
+ }
217
+ }
218
+
219
+ // DataTables 共通設定
220
+ table.dataTable {
221
+ th {
222
+ text-align: center;
223
+ }
224
+ thead {
225
+ /* ソート中の列以外は矢印アイコンは表示しない */
226
+ .sorting,
227
+ .sorting_asc_disabled,
228
+ .sorting_desc_disabled {
229
+ background: inherit;
230
+ }
231
+ }
232
+ }
233
+
234
+ /*
235
+ * ナビバー
236
+ */
237
+ .navbar {
238
+ $navbar-background-color: rgba(248,248,248,0.93);
239
+ background-color: $navbar-background-color;
240
+
241
+ @media (max-width:767px) {
242
+ .navbar-collapse {
243
+ position: absolute;
244
+ right: -270px;
245
+ background-color: $navbar-background-color;
246
+ width: 270px;
247
+ border-left: 1px solid #aaa !important;
248
+ border-bottom: 1px solid #aaa !important;
249
+ border-width: 1px 0 2px 2px;
250
+ border-bottom-left-radius: 10px;
251
+ /* max-heightが有効なときにメニューがはみ出した場合スクロールバーを表示する */
252
+ /* margin-right: 0 !important; */
253
+ }
254
+ }
255
+ .active-ok {
256
+ display: none;
257
+ }
258
+ li.dropdown.open > .dropdown-toggle {
259
+ background-color: darken($navbar-background-color, 15%) !important;
260
+ }
261
+ ul.dropdown-menu {
262
+ li.with-icon a {
263
+ padding-left: 8px !important;
264
+ }
265
+ li.active {
266
+ a {
267
+ padding-left: 4px !important;
268
+ background-color: inherit !important;
269
+ color: inherit !important;
270
+ }
271
+ a:hover {
272
+ background-color: #f5f5f5 !important;
273
+ color: inherit !important;
274
+ }
275
+ @media (max-width:767px) {
276
+ a:hover {
277
+ background-color: inherit !important;
278
+ }
279
+ }
280
+ span.active-ok {
281
+ display: inline;
282
+ }
283
+ }
284
+ }
285
+ }
286
+
287
+ /*
288
+ * フォーム関係
289
+ */
290
+ #myFilter {
291
+ width: 200px;
292
+ border-radius: 18px;
293
+ padding-left: 29px;
294
+ padding-right: 23px;
295
+ margin-left: 10px;
296
+ @media (max-width:767px) {
297
+ width: 200px;
298
+ }
299
+ @media (min-width:768px) {
300
+ width: 150px;
301
+ }
302
+ @media (min-width:992px){
303
+ width: 250px;
304
+ }
305
+ }
306
+ @mixin placeholder { color: #bbb !important }
307
+ ::-moz-placeholder { @include placeholder }
308
+ ::-webkit-input-placeholder { @include placeholder }
309
+ :-moz-placeholder { @include placeholder }
310
+ :-ms-input-placeholder { @include placeholder }
311
+ input::-ms-clear {
312
+ visibility: hidden;
313
+ }
314
+ #myFilter-clear, #myFilter-search-icon {
315
+ position: absolute;
316
+ top: 0;
317
+ bottom: 0;
318
+ height: 14px;
319
+ margin: auto;
320
+ font-size: 14px;
321
+ color: #ccc;
322
+ z-index: 100;
323
+ }
324
+ #myFilter-clear {
325
+ right: 7px;
326
+ cursor: pointer;
327
+ display: none;
328
+ }
329
+ #myFilter-search-icon {
330
+ left: 19px;
331
+ }
332
+
333
+ /*
334
+ * タグ
335
+ */
336
+ .label {
337
+ cursor: pointer;
338
+ }
339
+ .label-green {
340
+ background-color: #5cb85c;
341
+ }
342
+ .label-yellow {
343
+ background-color: #f7d71e;
344
+ color: #666;
345
+ }
346
+ .label-blue {
347
+ background-color: #428bca;
348
+ }
349
+ .label-magenta {
350
+ background-color: #d37bca;
351
+ }
352
+ .label-cyan {
353
+ background-color: #5bc0de;
354
+ }
355
+ .label-red {
356
+ background-color: #d9534f;
357
+ }
358
+ .label-white {
359
+ background-color: #e3e3e3;
360
+ color: #666;
361
+ }
362
+
363
+ .dataTable {
364
+ .label {
365
+ font-size: 0.8em;
366
+ line-height: 2em;
367
+ }
368
+ }
369
+
370
+ #tag-list-canvas {
371
+ padding: 3px 20px;
372
+ overflow: auto;
373
+
374
+ @media (min-width:768px) {
375
+ max-height: 300px;
376
+ }
377
+ @media (max-width:767px) {
378
+ max-height: 160px;
379
+ width: 94%; /* 埋まってるスクロールバーを見えるように */
380
+ }
381
+
382
+ .label {
383
+ font-size: 0.9em;
384
+ padding: 2px 8px;
385
+ line-height: 1.9em;
386
+ }
387
+ }
388
+
389
+ #tag-editor-field {
390
+ .label {
391
+ font-size: 0.9em;
392
+ padding: 2px 8px;
393
+ line-height: 1.9em;
394
+ }
395
+
396
+ #new-tag {
397
+ @media (min-width:768px) {
398
+ width: 300px;
399
+ }
400
+ }
401
+ }
402
+
403
+ /*
404
+ * ダイアログ
405
+ */
406
+ @media (min-width:768px) {
407
+ .modal-content {
408
+ margin-top: 160px;
409
+ }
410
+ }
411
+ @media (max-width:767px) {
412
+ .modal-content {
413
+ margin-top: 80px;
414
+ }
415
+ }
416
+
417
+ /*
418
+ * 選択メニュー
419
+ */
420
+ #rect-select-menu {
421
+ position: absolute;
422
+ display: none;
423
+ z-index: 101;
424
+ }
425
+
426
+ /*
427
+ * 範囲選択時の半透明範囲
428
+ */
429
+ #rect-select-area {
430
+ $rect_select_area_color: rgb(80, 200, 255);
431
+
432
+ border: 1px solid $rect_select_area_color;
433
+ position: absolute;
434
+ display: block;
435
+ background-color: rgba($rect_select_area_color, 0.2);
436
+ z-index: 100;
437
+ }
438
+
439
+ /*
440
+ * コントロールパネル
441
+ */
442
+ #control-panel {
443
+ @media (min-width:768px) {
444
+ width: 100%;
445
+ }
446
+ @media (max-width:767px) {
447
+ width: 97%;
448
+ margin: 0 auto;
449
+ }
450
+ margin-bottom: 15px !important;
451
+
452
+ button {
453
+ margin-bottom: 5px;
454
+ }
455
+ }
456
+
457
+ /*
458
+ * コンソール
459
+ */
460
+ $console-color: white;
461
+
462
+ #console-container {
463
+ position: relative;
464
+ @media (min-width:768px) {
465
+ width: 100%;
466
+ }
467
+ @media (max-width:767px) {
468
+ width: 97%;
469
+ margin: 0 auto;
470
+ }
471
+ margin-bottom: 20px !important;
472
+ }
473
+ .console {
474
+ position: relative;
475
+ overflow: hidden;
476
+ padding: 5px 15px 5px 15px;
477
+ border-width: 0;
478
+ border-radius: 4px;
479
+ background-color: #333;
480
+ color: $console-color;
481
+ width: 100%;
482
+ max-width: 100%;
483
+ min-width: 100%;
484
+ word-wrap:break-word;
485
+
486
+ @media (min-width:768px) {
487
+ font-size: 13px;
488
+ line-height: 120%;
489
+ height: 150px;
490
+ .console-line {
491
+ min-height: 15px;
492
+ }
493
+ }
494
+
495
+ @media (max-width:767px) {
496
+ height: 100px;
497
+ font-size: 11px;
498
+ line-height: 110%;
499
+ .console-line {
500
+ min-height: 12px;
501
+ }
502
+ }
503
+
504
+ .progress {
505
+ margin-top: 2px;
506
+ margin-bottom: 2px;
507
+ height: 8px;
508
+ @media (min-width:768px) {
509
+ width: 80%;
510
+ }
511
+ @media (max-width:767px) {
512
+ width: 100%;
513
+ }
514
+ }
515
+
516
+ hr {
517
+ margin-top: 7px;
518
+ margin-bottom: 7px;
519
+ }
520
+ }
521
+ .console-buttons {
522
+ position: absolute;
523
+ top: 3px;
524
+ right: 15px;
525
+ color: $console-color;
526
+ cursor: pointer;
527
+
528
+ span:hover {
529
+ color: mix($console-color, red, 80%);
530
+ }
531
+ }
532
+
533
+ /*
534
+ * ツールチップ
535
+ */
536
+ .tooltip-inner {
537
+ max-width: 300px;
538
+ }
539
+
540
+ /*
541
+ * ショートカットキー
542
+ */
543
+ @media (min-width:768px) {
544
+ #dropdown-menu-select {
545
+ width: 300px;
546
+ }
547
+ .shortcut {
548
+ float: right !important;
549
+ right: 0;
550
+ left: auto;
551
+ }
552
+ /* Freifox で表示が崩れる対策 */
553
+ ul.dropdown-menu {
554
+ & > li {
555
+ a > span:first-child {
556
+ float: left;
557
+ }
558
+ a:after {
559
+ content: " ";
560
+ }
561
+ }
562
+ }
563
+ }
564
+ @media (max-width:767px) {
565
+ .shortcut {
566
+ display: none !important;
567
+ }
568
+ }
569
+
570
+ /*
571
+ * 設定画面
572
+ */
573
+ .panel-settings-link {
574
+ @media (min-width: 768px) {
575
+ width: 750px;
576
+ }
577
+ }
578
+
579
+ .panel-settings {
580
+ h4 {
581
+ word-break: break-all;
582
+ }
583
+
584
+ @media (min-width: 768px) {
585
+ width: 750px;
586
+ }
587
+
588
+ input {
589
+ @media (min-width: 501px) {
590
+ float: right;
591
+ width: 150px;
592
+ }
593
+ @media (max-width: 500px) {
594
+ float: left;
595
+ }
596
+ }
597
+
598
+ .help-extra-messages {
599
+ color: gray;
600
+ border-left: 2px solid lightgray;
601
+ padding-left: 10px;
602
+ word-break: break-all;
603
+
604
+ p {
605
+ margin-bottom: 0;
606
+ }
607
+ }
608
+ }
609
+
610
+ /* switch-toggle.css のカスタマイズ */
611
+ .switch-light, .switch-toggle {
612
+ width: 150px;
613
+ margin-left: 0;
614
+
615
+ @media (min-width: 501px) {
616
+ float: right;
617
+ cursor: pointer;
618
+ margin-top: 0;
619
+ }
620
+ @media (max-width: 500px) {
621
+ margin-top: 10px;
622
+ }
623
+ }
624
+
625
+ .switch-toggle * {
626
+ cursor: pointer;
627
+ font-size: 80%;
628
+ }
629
+
630
+ #replace-txt-table {
631
+ margin: 0;
632
+
633
+ thead {
634
+ td {
635
+ text-align: center;
636
+ }
637
+ }
638
+ tbody {
639
+ td {
640
+ padding: 7px;
641
+ }
642
+ input {
643
+ width: 250px;
644
+ }
645
+ }
646
+ }
647
+
648
+ /*
649
+ * 個別メニュー
650
+ */
651
+ #context-menu {
652
+ position: absolute;
653
+ display: none;
654
+ z-index: 102;
655
+ }
656
+
657
+ /*
658
+ * キュー
659
+ */
660
+ #queue-text {
661
+ position: relative;
662
+ margin-right: 0;
663
+ cursor: default;
664
+
665
+ &.active {
666
+ color: #4bb0ce !important;
667
+ #queue {
668
+ background-color: #4bb0ce !important;
669
+ }
670
+ }
671
+ }
672
+ #queue {
673
+ position: relative;
674
+ font-size: 0.8em;
675
+ vertical-align: top;
676
+ display: inline-block;
677
+ padding: 3px 4px;
678
+ font-weight: bold;
679
+ line-height: 0.8em;
680
+ color: #fff;
681
+ text-align: center;
682
+ white-space: nowrap;
683
+ background-color: #777;
684
+ border-radius: 14px;
685
+ left: -3px;
686
+ top: -3px;
687
+ }
688
+
689
+ /*
690
+ * ヘルプ画面
691
+ */
692
+ #help-container {
693
+ #ss-main {
694
+ @media (min-width: 768px) {
695
+ width: 70%;
696
+ float: left;
697
+ margin-right: 10px;
698
+ }
699
+ @media (max-width: 767px) {
700
+ width: 100%;
701
+ }
702
+ margin-bottom: 10px;
703
+ }
704
+ #ss-tag {
705
+ float: right;
706
+ width: 200px;
707
+ }
708
+ #ss-rect-select {
709
+ @media (min-width: 601px) {
710
+ float: right;
711
+ width: 350px;
712
+ }
713
+ @media (max-width: 600px) {
714
+ width: 100%;
715
+ }
716
+ }
717
+
718
+ h4 {
719
+ margin-top: 25px;
720
+ font-weight: bold;
721
+
722
+ .number {
723
+ background-color: lighten(purple, 10%);
724
+ vertical-align: top;
725
+ }
726
+ }
727
+ img + h4 {
728
+ margin-top: 10px;
729
+ }
730
+ div > p{
731
+ text-indent: 1em;
732
+ }
733
+ p {
734
+ margin-bottom: 4px;
735
+ }
736
+ }
737
+