naksh 0.2.0
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.
- data/AUTHORS +1 -0
- data/COPYING +674 -0
- data/COPYING-DOCS +15 -0
- data/README.md +45 -0
- data/Rakefile +129 -0
- data/TODO +19 -0
- data/bin/naksh +2 -0
- data/data/default.mo +0 -0
- data/data/default.po +16 -0
- data/data/default2.mo +0 -0
- data/data/default2.po +27 -0
- data/data/starter.pot +29 -0
- data/docs/bash_flow.dia +0 -0
- data/docs/gtk_manual.txt +13 -0
- data/docs/master_plan.dia +0 -0
- data/docs/master_plan.png +0 -0
- data/docs/master_plan.svg +74 -0
- data/docs/master_plan.svgz +0 -0
- data/docs/userguide/en/about.xml +42 -0
- data/docs/userguide/en/gnu-fdl-1.2.xml +543 -0
- data/docs/userguide/en/naksh.xml +881 -0
- data/docs/userguide/en/naksh_start_window.png +0 -0
- data/docs/userguide/en/old_naksh.xml +180 -0
- data/docs/userguide/en/userguide-en.omf +37 -0
- data/lib/naksh.rb +165 -0
- data/lib/naksh/buffer.rb +153 -0
- data/lib/naksh/command_handling.rb +117 -0
- data/lib/naksh/commands/bash/README +2 -0
- data/lib/naksh/commands/bash/echo.nkc.rb +50 -0
- data/lib/naksh/commands/bsd.rb +25 -0
- data/lib/naksh/commands/dos.rb +25 -0
- data/lib/naksh/commands/fuse.rb +25 -0
- data/lib/naksh/commands/gnu.rb +30 -0
- data/lib/naksh/commands/gnu/README +2 -0
- data/lib/naksh/commands/gnu/cat.nkc.rb +50 -0
- data/lib/naksh/commands/gnu/cd.nkc.rb +11 -0
- data/lib/naksh/commands/gnu/echo.documentation.json +57 -0
- data/lib/naksh/commands/gnu/echo.documentation.rb +60 -0
- data/lib/naksh/commands/gnu/echo.nkc.rb +52 -0
- data/lib/naksh/commands/gnu/ls.nkc.rb +11 -0
- data/lib/naksh/commands/gnu/mv.nkc.rb +15 -0
- data/lib/naksh/commands/gnu/pwd.nkc.rb +11 -0
- data/lib/naksh/commands/naksh/addpath.nkc.rb +15 -0
- data/lib/naksh/commands/naksh/broken.nkc.rb +10 -0
- data/lib/naksh/commands/naksh/empty.nkc.rb +4 -0
- data/lib/naksh/commands/naksh/exit.nkc.rb +10 -0
- data/lib/naksh/commands/naksh/help.nkc.rb +21 -0
- data/lib/naksh/commands/naksh/man.nkc.rb +8 -0
- data/lib/naksh/commands/ruby.rb +31 -0
- data/lib/naksh/commands/unix.rb +131 -0
- data/lib/naksh/configuration/gconf.rb +51 -0
- data/lib/naksh/configuration/hash.rb +38 -0
- data/lib/naksh/defaults.rb +40 -0
- data/lib/naksh/history.rb +85 -0
- data/lib/naksh/interfaces.rb +59 -0
- data/lib/naksh/interfaces/fox.rb +49 -0
- data/lib/naksh/interfaces/gtk.rb +103 -0
- data/lib/naksh/interfaces/gtk/abtwin.rb +53 -0
- data/lib/naksh/interfaces/gtk/gnomeapp.rb +31 -0
- data/lib/naksh/interfaces/gtk/helpwin.rb +70 -0
- data/lib/naksh/interfaces/gtk/io.rb +94 -0
- data/lib/naksh/interfaces/gtk/mainwin.rb +56 -0
- data/lib/naksh/interfaces/gtk/mainwin/console.rb +121 -0
- data/lib/naksh/interfaces/gtk/mainwin/main_menu.rb +143 -0
- data/lib/naksh/interfaces/gtk/optwin.rb +78 -0
- data/lib/naksh/interfaces/tab.rb +58 -0
- data/lib/naksh/interfaces/wxw.rb +75 -0
- data/lib/naksh/interfaces/wxw/abtwin.rb +38 -0
- data/lib/naksh/interfaces/wxw/helpwin.rb +40 -0
- data/lib/naksh/interfaces/wxw/io.rb +61 -0
- data/lib/naksh/interfaces/wxw/mainwin.rb +42 -0
- data/lib/naksh/interfaces/wxw/mainwin/main_menu.rb +126 -0
- data/lib/naksh/interfaces/wxw/mainwin/sessions.rb +49 -0
- data/lib/naksh/interfaces/wxw/optwin.rb +37 -0
- data/lib/naksh/path_entry.rb +101 -0
- data/lib/naksh/regexp.rb +31 -0
- data/lib/naksh/session.rb +72 -0
- data/lib/naksh/stdlibext.rb +48 -0
- data/lib/naksh/syntax.rb +57 -0
- data/lib/naksh/syntax/bash.rb +219 -0
- data/lib/naksh/syntax/bash/antlr/bottomup.g +24 -0
- data/lib/naksh/syntax/bash/antlr/topdown.g +52 -0
- data/lib/naksh/syntax/bash/dhaka/evaluator.rb +353 -0
- data/lib/naksh/syntax/bash/dhaka/grammar.rb +71 -0
- data/lib/naksh/syntax/bash/dhaka/lexer.rb +52 -0
- data/lib/naksh/syntax/bash/treetop/bash.treetop +17 -0
- data/lib/old/abbr_call.rb +39 -0
- data/lib/old/autocomplete.rb +29 -0
- data/lib/old/command.rb +106 -0
- data/lib/old/command_holder.rb +75 -0
- data/lib/old/commands.rb +24 -0
- data/lib/old/old_executor.rb +95 -0
- data/lib/old/options.rb +31 -0
- data/lib/old/rush.rb +113 -0
- data/lib/old/sortissimo.rb +205 -0
- data/lib/old/systems.rb +25 -0
- data/lib/old/systems/ruby.rb +26 -0
- data/lib/old/un.rb +240 -0
- data/lib/rust/Rakefile +6 -0
- data/lib/rust/commands/builtins.rb +46 -0
- data/lib/rust/commands/builtins/cd.rb +17 -0
- data/lib/rust/commands/builtins/exit.rb +13 -0
- data/lib/rust/commands/builtins/help.rb +14 -0
- data/lib/rust/commands/builtins/parser.rb +13 -0
- data/lib/rust/commands/builtins/pwd.rb +13 -0
- data/lib/rust/commands/builtins/type.rb +13 -0
- data/lib/rust/commands/commands/ls.rb +13 -0
- data/lib/rust/commands/commands/read.rb +13 -0
- data/lib/rust/commands/commands/rm.rb +14 -0
- data/lib/rust/commands/commands/test.rb +20 -0
- data/lib/rust/helpers/array.rb +10 -0
- data/lib/rust/helpers/command_center.rb +78 -0
- data/lib/rust/helpers/constants.rb +58 -0
- data/lib/rust/helpers/io.rb +132 -0
- data/lib/rust/helpers/parser.rb +45 -0
- data/lib/rust/helpers/rush_control.rb +40 -0
- data/lib/rust/helpers/string.rb +50 -0
- data/lib/rust/helpers/trollop.rb +475 -0
- data/lib/rust/parsers/bash.rb +220 -0
- data/lib/rust/parsers/bash/stdlibext.rb +32 -0
- data/lib/rust/parsers/ren.rb +57 -0
- data/lib/rust/rust.rb +75 -0
- data/lib/rust/syntax/command.rb +23 -0
- data/lib/rust/syntax/paths.rb +31 -0
- data/lib/rust/syntax/pipes.rb +148 -0
- data/naksh.gemspec +55 -0
- data/test/naksh/arg_parser.rspec.rb +27 -0
- data/test/naksh/commands/bash/echo.rspec.rb +32 -0
- data/test/naksh/commands/sortlist +127 -0
- data/test/naksh/external_command.rspec.rb +46 -0
- data/test/naksh/send_error.rspec.rb +60 -0
- data/test/naksh/suggest.rspec.rb +38 -0
- data/test/naksh/syntax/bash.rspec.rb +69 -0
- data/test/naksh/syntax/bash/execute.rspec.rb +51 -0
- data/test/naksh/syntax/rspec.rb +63 -0
- data/test/run_rspecs.rb +20 -0
- metadata +217 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#!/usr/local/bin/ruby
|
|
2
|
+
# 2011 Mahmut Bulut
|
|
3
|
+
|
|
4
|
+
# This file is part of Naksh.
|
|
5
|
+
#
|
|
6
|
+
# Naksh is free software: you can redistribute it and/or modify
|
|
7
|
+
# it under the terms of the GNU General Public License as published by
|
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
|
9
|
+
# (at your option) any later version.
|
|
10
|
+
#
|
|
11
|
+
# Naksh is distributed in the hope that it will be useful,
|
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
# GNU General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# You should have received a copy of the GNU General Public License
|
|
17
|
+
# along with Naksh. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
+
|
|
19
|
+
require 'gtk2'
|
|
20
|
+
|
|
21
|
+
module Naksh
|
|
22
|
+
module Interfaces
|
|
23
|
+
module Rbgtk
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# duplicate of the current input, modifications are ignored
|
|
28
|
+
# if the user pressed `return' right now, this is what would be
|
|
29
|
+
# sent to syntax.execute
|
|
30
|
+
def Rbgtk.in
|
|
31
|
+
@console.buffer.get_slice(@console.buffer.get_iter_at_mark(@console.buffer.get_mark('current_input_start')),@console.buffer.end_iter,true)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def Rbgtk.in= str
|
|
36
|
+
@console.buffer.delete @console.buffer.get_iter_at_mark(@console.buffer.get_mark('current_input_start')),@console.buffer.end_iter
|
|
37
|
+
@console.buffer.insert @console.buffer.end_iter,str.to_str
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class GtkRuBuffer
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def initialize gtk_text_buffer
|
|
47
|
+
@buffer=gtk_text_buffer
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
attr_accessor :buffer
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def print *a
|
|
56
|
+
a.each do |str|
|
|
57
|
+
buffer.insert buffer.end_iter,str
|
|
58
|
+
end
|
|
59
|
+
true
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def pp *a
|
|
64
|
+
a.each do |arg|
|
|
65
|
+
if arg.kind_of? Array
|
|
66
|
+
arg.each do |el|
|
|
67
|
+
buffer.insert(buffer.end_iter,(el[-1]=="\n" or el[-1].chr=="\n")? el : el+"\n")
|
|
68
|
+
end
|
|
69
|
+
elsif arg.kind_of? String
|
|
70
|
+
buffer.insert buffer.end_iter,arg
|
|
71
|
+
elsif arg.kind_of? Symbol
|
|
72
|
+
buffer.insert buffer.end_iter,":#{arg.to_s}:"
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
@out=GtkRuBuffer.new @console.buffer
|
|
81
|
+
@err=GtkRuBuffer.new @console.buffer
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def Rbgtk.out
|
|
85
|
+
@out
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def Rbgtk.err
|
|
89
|
+
@err
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/local/bin/ruby
|
|
2
|
+
# 2011 Mahmut Bulut
|
|
3
|
+
|
|
4
|
+
# This file is part of Naksh.
|
|
5
|
+
#
|
|
6
|
+
# Naksh is free software: you can redistribute it and/or modify
|
|
7
|
+
# it under the terms of the GNU General Public License as published by
|
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
|
9
|
+
# (at your option) any later version.
|
|
10
|
+
#
|
|
11
|
+
# Naksh is distributed in the hope that it will be useful,
|
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
# GNU General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# You should have received a copy of the GNU General Public License
|
|
17
|
+
# along with Naksh. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
+
|
|
19
|
+
require 'gtk2'
|
|
20
|
+
|
|
21
|
+
module Naksh
|
|
22
|
+
module Interfaces
|
|
23
|
+
module Rbgtk
|
|
24
|
+
|
|
25
|
+
@mainwin=Gtk::Window.new 'Naksh Terminal Emulator'
|
|
26
|
+
|
|
27
|
+
@vb=Gtk::VBox.new
|
|
28
|
+
require 'naksh/interfaces/gtk/mainwin/main_menu.rb'
|
|
29
|
+
@tabs=Gtk::Notebook.new
|
|
30
|
+
require 'naksh/interfaces/gtk/mainwin/console.rb'
|
|
31
|
+
@vb<<@tabs
|
|
32
|
+
|
|
33
|
+
statusbar=Gtk::Statusbar.new
|
|
34
|
+
@vb.pack_start statusbar,false,true,0
|
|
35
|
+
@mainwin.add @vb
|
|
36
|
+
|
|
37
|
+
@mainwin.signal_connect 'destroy' do
|
|
38
|
+
Rbgtk.quit
|
|
39
|
+
false
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
@mainwin.set_size_request(640,420)
|
|
43
|
+
|
|
44
|
+
@mainwin.show_all
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
#the principal Terminal Emulator window
|
|
49
|
+
def Rbgtk.main
|
|
50
|
+
@mainwin
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
#!/usr/local/bin/ruby
|
|
2
|
+
# 2011 Mahmut Bulut
|
|
3
|
+
|
|
4
|
+
# This file is part of Naksh.
|
|
5
|
+
#
|
|
6
|
+
# Naksh is free software: you can redistribute it and/or modify
|
|
7
|
+
# it under the terms of the GNU General Public License as published by
|
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
|
9
|
+
# (at your option) any later version.
|
|
10
|
+
#
|
|
11
|
+
# Naksh is distributed in the hope that it will be useful,
|
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
# GNU General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# You should have received a copy of the GNU General Public License
|
|
17
|
+
# along with Naksh. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
+
|
|
19
|
+
require 'gtk2'
|
|
20
|
+
|
|
21
|
+
module Naksh
|
|
22
|
+
module Interfaces
|
|
23
|
+
module Rbgtk
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@console=Gtk::TextView.new
|
|
27
|
+
@console.cursor_visible= (Naksh.config['/interface/tty/cursor']!='hidden')
|
|
28
|
+
@console.accepts_tab= (Naksh.config['/interface/tty/keys/tab']=='character')? true : false
|
|
29
|
+
# @console.add_events(Gdk::Event::KEY_PRESS)
|
|
30
|
+
@console.signal_connect("key-press-event") do |w, e|
|
|
31
|
+
result=false
|
|
32
|
+
case e.keyval
|
|
33
|
+
when 65288
|
|
34
|
+
result= Rbgtk.back
|
|
35
|
+
when 65361
|
|
36
|
+
result= Rbgtk.back
|
|
37
|
+
when 65289
|
|
38
|
+
result=Rbgtk.potential_autocomplete_key('/interface/tty/keys/tab')
|
|
39
|
+
when 65056
|
|
40
|
+
result=Rbgtk.potential_autocomplete_key('/interface/tty/keys/alt_tab')
|
|
41
|
+
when 65293
|
|
42
|
+
result=Naksh.attempt_submit('/interface/tty/keys/return')
|
|
43
|
+
when 65362#up
|
|
44
|
+
Naksh.refresh_history
|
|
45
|
+
Rbgtk.in=Naksh.current_session.history.back!
|
|
46
|
+
result=true
|
|
47
|
+
when 65364#down
|
|
48
|
+
Naksh.refresh_history
|
|
49
|
+
Rbgtk.in=Naksh.current_session.history.forward!
|
|
50
|
+
result=true
|
|
51
|
+
when 65365#page_up
|
|
52
|
+
Naksh.refresh_history
|
|
53
|
+
Rbgtk.in=Naksh.current_session.history.first!
|
|
54
|
+
result=true
|
|
55
|
+
when 65366#page_down
|
|
56
|
+
Naksh.refresh_history
|
|
57
|
+
Rbgtk.in=Naksh.current_session.history.last!
|
|
58
|
+
when 65360#home
|
|
59
|
+
@console.buffer.place_cursor(@console.buffer.get_iter_at_mark(@console.buffer.get_mark('current_input_start')))
|
|
60
|
+
result=true
|
|
61
|
+
when 65367#end
|
|
62
|
+
@console.buffer.place_cursor(@console.buffer.end_iter)
|
|
63
|
+
#@console.buffer.move_mark(@console.buffer.get_mark('insert'),@console.buffer.end_iter)
|
|
64
|
+
result=true
|
|
65
|
+
when 65307#esc
|
|
66
|
+
Naksh.interface.in=''
|
|
67
|
+
end
|
|
68
|
+
#$stdout.puts "#{e.keyval}, Gdk::Keyval::GDK_#{Gdk::Keyval.to_name(e.keyval)}, result=#{result.to_s}" if e.keyval>200 and e.keyval
|
|
69
|
+
result
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
case Naksh.config['/interface/tty/wrap']
|
|
75
|
+
when 'none'
|
|
76
|
+
@console.wrap_mode=Gtk::TextTag::WRAP_NONE
|
|
77
|
+
when 'word'
|
|
78
|
+
@console.wrap_mode=Gtk::TextTag::WRAP_WORD
|
|
79
|
+
when 'char'
|
|
80
|
+
@console.wrap_mode=Gtk::TextTag::WRAP_CHAR
|
|
81
|
+
else
|
|
82
|
+
$stderr.puts _("Naksh.config['/interface/tty/wrap'] has unrecognized value: #{Naksh.config['/interface/tty/wrap'].inspect}")
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
context_menu=Gtk::Menu.new
|
|
87
|
+
context_menu.append(Gtk::MenuItem.new("Test1"))
|
|
88
|
+
context_menu.append(Gtk::MenuItem.new("Test2"))
|
|
89
|
+
context_menu.show_all
|
|
90
|
+
@mainwin.add_events(Gdk::Event::BUTTON_PRESS_MASK)
|
|
91
|
+
@console.signal_connect("button_press_event") do |w,event|
|
|
92
|
+
result=false
|
|
93
|
+
case event.button
|
|
94
|
+
when 1
|
|
95
|
+
iter=@console.get_iter_at_location(event.x,event.y)
|
|
96
|
+
if iter.offset>=@console.buffer.get_iter_at_mark(@console.buffer.get_mark('current_input_start')).offset
|
|
97
|
+
result=false
|
|
98
|
+
else
|
|
99
|
+
result=true
|
|
100
|
+
end
|
|
101
|
+
when 2
|
|
102
|
+
$stderr.puts _('I don\'t know what the middle button should do. If anyone has a middle button, and is therefore familiar with its functionality, please help.')
|
|
103
|
+
#yeah, I disable what I don't understand
|
|
104
|
+
result=true
|
|
105
|
+
when 3
|
|
106
|
+
context_menu.popup nil,nil,event.button,event.time
|
|
107
|
+
result=true
|
|
108
|
+
else
|
|
109
|
+
$stderr.puts _('You seem to have clicked a button I\'ve never heard of, for reference, its number is %d')%[event.button]
|
|
110
|
+
end
|
|
111
|
+
result
|
|
112
|
+
end
|
|
113
|
+
main_style=@console.buffer.create_tag 'main terminal style',:family=>'monospace',:background=>'#000000',:foreground=>'#FFFFFF'
|
|
114
|
+
@console.buffer.apply_tag main_style,@console.buffer.start_iter,@console.buffer.end_iter#bounds
|
|
115
|
+
scroller=Gtk::ScrolledWindow.new
|
|
116
|
+
scroller<<@console
|
|
117
|
+
@tabs<<scroller
|
|
118
|
+
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
#!/usr/local/bin/ruby
|
|
2
|
+
# 2011 Mahmut Bulut
|
|
3
|
+
|
|
4
|
+
# This file is part of Naksh.
|
|
5
|
+
#
|
|
6
|
+
# Naksh is free software: you can redistribute it and/or modify
|
|
7
|
+
# it under the terms of the GNU General Public License as published by
|
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
|
9
|
+
# (at your option) any later version.
|
|
10
|
+
#
|
|
11
|
+
# Naksh is distributed in the hope that it will be useful,
|
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
# GNU General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# You should have received a copy of the GNU General Public License
|
|
17
|
+
# along with Naksh. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
+
|
|
19
|
+
require 'gtk2'
|
|
20
|
+
|
|
21
|
+
module Naksh
|
|
22
|
+
module Interfaces
|
|
23
|
+
module Rbgtk
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
menubar=Gtk::MenuBar.new
|
|
27
|
+
file_menu=Gtk::MenuItem.new('_File')
|
|
28
|
+
file_sm=Gtk::Menu.new
|
|
29
|
+
new_session=Gtk::ImageMenuItem.new(_('_New Session'),true)
|
|
30
|
+
new_session.image=Gtk::IconFactory.new.lookup('new')
|
|
31
|
+
new_session.signal_connect 'activate' do
|
|
32
|
+
Rbgtk.new_tab(Naksh::Session.new)
|
|
33
|
+
false
|
|
34
|
+
end
|
|
35
|
+
file_sm<<new_session
|
|
36
|
+
|
|
37
|
+
fork_session=Gtk::ImageMenuItem.new(_('_Fork Session'),true)
|
|
38
|
+
fork_session.signal_connect 'activate' do
|
|
39
|
+
Rbgtk.new_tab Naksh.current_session.fork
|
|
40
|
+
end
|
|
41
|
+
file_sm<<fork_session
|
|
42
|
+
file_sm<<Gtk::ImageMenuItem.new(Gtk::Stock::SAVE_AS)
|
|
43
|
+
quit_option=Gtk::ImageMenuItem.new(_('_Quit'),true)
|
|
44
|
+
quit_option.signal_connect 'activate' do
|
|
45
|
+
Rbgtk.quit
|
|
46
|
+
end
|
|
47
|
+
file_sm<<quit_option
|
|
48
|
+
file_sm.show_all
|
|
49
|
+
file_menu.submenu=file_sm
|
|
50
|
+
menubar<<file_menu
|
|
51
|
+
edit_menu=Gtk::MenuItem.new(_('_Edit'),true)
|
|
52
|
+
edit_sm=Gtk::Menu.new
|
|
53
|
+
cut_option=Gtk::ImageMenuItem.new(_('Cu_t'),true)
|
|
54
|
+
cut_option.signal_connect 'activate' do
|
|
55
|
+
$stderr.puts 'text editing functions are not yet implemented'
|
|
56
|
+
end
|
|
57
|
+
edit_sm<<cut_option
|
|
58
|
+
copy_option=Gtk::ImageMenuItem.new(_('_Copy'),true)
|
|
59
|
+
copy_option.signal_connect 'activate' do
|
|
60
|
+
$stderr.puts 'text editing functions are not yet implemented'
|
|
61
|
+
end
|
|
62
|
+
edit_sm<<copy_option
|
|
63
|
+
paste_option=Gtk::ImageMenuItem.new(_('_Paste'),true)
|
|
64
|
+
paste_option.signal_connect 'activate' do
|
|
65
|
+
$stderr.puts 'text editing functions are not yet implemented'
|
|
66
|
+
end
|
|
67
|
+
edit_sm<<paste_option
|
|
68
|
+
del_option=Gtk::ImageMenuItem.new(_('_Delete'),true)
|
|
69
|
+
del_option.signal_connect 'activate' do
|
|
70
|
+
$stderr.puts 'text editing functions are not yet implemented'
|
|
71
|
+
end
|
|
72
|
+
edit_sm<<del_option
|
|
73
|
+
sel_all_option=Gtk::ImageMenuItem.new(_('Select _All'),true)
|
|
74
|
+
sel_all_option.signal_connect 'activate' do
|
|
75
|
+
$stderr.puts 'text editing functions are not yet implemented'
|
|
76
|
+
end
|
|
77
|
+
edit_sm<<sel_all_option
|
|
78
|
+
edit_sm<<Gtk::SeparatorMenuItem.new
|
|
79
|
+
pref_option=Gtk::ImageMenuItem.new(_('_Preferences'),true)
|
|
80
|
+
pref_option.signal_connect 'activate' do
|
|
81
|
+
Rbgtk.options.show
|
|
82
|
+
false
|
|
83
|
+
end
|
|
84
|
+
edit_sm<<pref_option
|
|
85
|
+
edit_menu.submenu=edit_sm
|
|
86
|
+
menubar<<edit_menu
|
|
87
|
+
view_menu=Gtk::MenuItem.new(_('_View'),true)
|
|
88
|
+
view_sm=Gtk::Menu.new
|
|
89
|
+
stat_bar_opt=Gtk::ImageMenuItem.new(_('Status Bar'),true)
|
|
90
|
+
stat_bar_opt.signal_connect 'activate' do
|
|
91
|
+
Naksh.config['/interface/gui/statusbar']=(not Naksh.config['/interface/gui/statusbar'])
|
|
92
|
+
end
|
|
93
|
+
view_sm<<stat_bar_opt
|
|
94
|
+
view_sm<<Gtk::SeparatorMenuItem.new
|
|
95
|
+
tab_bar_opt_menu=Gtk::MenuItem.new(_('Tab Bar'),true)
|
|
96
|
+
tab_bar_opt_sm=Gtk::Menu.new
|
|
97
|
+
m29544=Gtk::MenuItem.new(_('Always Show'),true)
|
|
98
|
+
m29544.signal_connect 'activate' do
|
|
99
|
+
Naksh.config['/interface/gui/tabbar']='always'
|
|
100
|
+
end
|
|
101
|
+
tab_bar_opt_sm<<m29544
|
|
102
|
+
m26729=Gtk::MenuItem.new(_('Always Hide'),true)
|
|
103
|
+
m26729.signal_connect 'activate' do
|
|
104
|
+
Naksh.config['/interface/gui/tabbar']='never'
|
|
105
|
+
end
|
|
106
|
+
tab_bar_opt_sm<<m26729
|
|
107
|
+
m29549=Gtk::MenuItem.new(_('Sometimes Show'),true)
|
|
108
|
+
m29549.signal_connect 'activate' do
|
|
109
|
+
Naksh.config['/interface/gui/tabbar']='sometimes'
|
|
110
|
+
end
|
|
111
|
+
tab_bar_opt_sm<<m29549
|
|
112
|
+
tab_bar_opt_menu.submenu=tab_bar_opt_sm
|
|
113
|
+
view_sm<<tab_bar_opt_menu
|
|
114
|
+
view_menu.submenu=view_sm
|
|
115
|
+
menubar<<view_menu
|
|
116
|
+
search_menu=Gtk::MenuItem.new(_('_Search'),true)
|
|
117
|
+
search_sm=Gtk::Menu.new
|
|
118
|
+
m26217=Gtk::ImageMenuItem.new(_('_Find'),true)
|
|
119
|
+
search_sm<<m26217
|
|
120
|
+
m27753=Gtk::ImageMenuItem.new(_('Go To _Line'),true)
|
|
121
|
+
search_sm<<m27753
|
|
122
|
+
search_menu.submenu=search_sm
|
|
123
|
+
menubar<<search_menu
|
|
124
|
+
help_menu=Gtk::MenuItem.new(_('_Help'),true)
|
|
125
|
+
help_sm=Gtk::Menu.new
|
|
126
|
+
m26725=Gtk::ImageMenuItem.new(_('_Contents'),true)
|
|
127
|
+
m26725.signal_connect 'activate' do
|
|
128
|
+
Naksh.interface.help.show
|
|
129
|
+
end
|
|
130
|
+
help_sm<<m26725
|
|
131
|
+
m24930=Gtk::ImageMenuItem.new(_('_About'),true)
|
|
132
|
+
m24930.signal_connect 'activate' do
|
|
133
|
+
Naksh.interface.about.show
|
|
134
|
+
end
|
|
135
|
+
help_sm<<m24930
|
|
136
|
+
help_menu.submenu=help_sm
|
|
137
|
+
menubar<<help_menu
|
|
138
|
+
@vb.pack_start menubar,false,true,0
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#!/usr/local/bin/ruby
|
|
2
|
+
# 2011 Mahmut Bulut
|
|
3
|
+
|
|
4
|
+
# This file is part of Naksh.
|
|
5
|
+
#
|
|
6
|
+
# Naksh is free software: you can redistribute it and/or modify
|
|
7
|
+
# it under the terms of the GNU General Public License as published by
|
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
|
9
|
+
# (at your option) any later version.
|
|
10
|
+
#
|
|
11
|
+
# Naksh is distributed in the hope that it will be useful,
|
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
# GNU General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# You should have received a copy of the GNU General Public License
|
|
17
|
+
# along with Naksh. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
+
|
|
19
|
+
require 'gtk2'
|
|
20
|
+
|
|
21
|
+
module Naksh
|
|
22
|
+
module Interfaces
|
|
23
|
+
module Rbgtk
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@optwin=Gtk::Window.new 'Naksh Options'
|
|
27
|
+
vp=Gtk::VBox.new
|
|
28
|
+
options_list=Gtk::VBox.new
|
|
29
|
+
|
|
30
|
+
prompt_section=Gtk::HPaned.new
|
|
31
|
+
prompt=Gtk::Entry.new
|
|
32
|
+
prompt.text=Naksh.config['/interface/tty/prompt']
|
|
33
|
+
prompt_label=Gtk::Label.new('_Prompt')
|
|
34
|
+
prompt_label.mnemonic_widget=prompt
|
|
35
|
+
prompt_section<<prompt_label
|
|
36
|
+
prompt_section<<prompt
|
|
37
|
+
options_list<<prompt_section
|
|
38
|
+
|
|
39
|
+
vp<<(Gtk::HBox.new<<options_list)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
hbuttons=Gtk::HButtonBox.new
|
|
43
|
+
|
|
44
|
+
help_button= Gtk::Button.new(Gtk::Stock::HELP)
|
|
45
|
+
help_button.signal_connect 'clicked' do
|
|
46
|
+
$stderr.puts 'help button on preferences window is not yet implemented'
|
|
47
|
+
end
|
|
48
|
+
hbuttons<<help_button
|
|
49
|
+
apply_button= Gtk::Button.new(Gtk::Stock::APPLY)
|
|
50
|
+
apply_button.signal_connect 'clicked' do
|
|
51
|
+
Naksh.config['/interface/tty/prompt']=prompt.text
|
|
52
|
+
end
|
|
53
|
+
hbuttons<<apply_button
|
|
54
|
+
cancel_button=Gtk::Button.new(Gtk::Stock::CANCEL)
|
|
55
|
+
cancel_button.signal_connect 'clicked' do
|
|
56
|
+
@optwin.hide
|
|
57
|
+
end
|
|
58
|
+
hbuttons<<cancel_button
|
|
59
|
+
ok_button=Gtk::Button.new(Gtk::Stock::OK)
|
|
60
|
+
ok_button.signal_connect 'clicked' do
|
|
61
|
+
apply_button.clicked
|
|
62
|
+
@optwin.hide
|
|
63
|
+
end
|
|
64
|
+
hbuttons<<ok_button
|
|
65
|
+
|
|
66
|
+
vp<<hbuttons
|
|
67
|
+
@optwin<<vp
|
|
68
|
+
@optwin.show_all
|
|
69
|
+
@optwin.hide
|
|
70
|
+
|
|
71
|
+
def Rbgtk.options
|
|
72
|
+
@optwin
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|