46d7e391298726456b2d899194fc98f7286b2c14
[dragonfly.git] / contrib / bsdinstaller-1.1.6 / src / backend / lua / configure / menu / 400_change_console_settings.lua
1 -- $Id: 400_change_console_settings.lua,v 1.2 2005/02/24 23:08:03 cpressey Exp $
2
3 require "gettext"
4
5 local set_keyboard_map = function()
6         local cmds, files, dir, filename, full_filename
7
8         --
9         -- Select a file.
10         --
11         dir = App.expand("${root}${base}usr/share/syscons/keymaps",
12             {
13                 base = App.state.target:get_base()
14             }
15         )
16
17         filename = App.ui:select_file{
18             title = _("Select Keyboard Map"),
19             short_desc = _(
20                 "Select a keyboard map appropriate to your keyboard layout."
21             ),
22             cancel_desc = _("Return to Utilities Menu"),
23             dir = dir,
24             extension = "kbd"
25         }
26         if filename == "cancel" then
27                 return false
28         end
29         filename = dir .. "/" .. filename
30
31         cmds = CmdChain.new()
32         cmds:add{
33             cmdline = "${root}${KBDCONTROL} -l ${filename} < /dev/ttyv0",
34             replacements = { filename = filename }
35         }
36         if cmds:execute() then
37                 --[[
38                         snprintf(filename, 256, "/usr/share/syscons/keymaps/%s", s);
39                         snprintf(keymapname, 256, filename_noext(basename(filename)));
40                         config_var_set(rc_conf, "keymap", keymapname);
41                 ]]--
42
43                 return true
44         else
45                 App.ui:inform(_(
46                     "Errors occurred; keyboard map was not successfully set."
47                 ))
48         end
49 end
50
51 local set_video_font = function()
52         local cmds, files, dir, filename, full_filename
53
54         --
55         -- Select a file.
56         --
57         dir = App.expand("${root}${base}usr/share/syscons/fonts",
58             {
59                 base = App.state.target:get_base()
60             }
61         )
62
63         filename = App.ui:select_file{
64             title = _("Select Console Font"),
65             short_desc = _("Select a font appropriate to your video monitor and language."),
66             cancel_desc = _("Return to Utilities Menu"),
67             dir = dir,
68             extension = "fnt"
69         }
70         if filename == "cancel" then
71                 return false
72         end
73         filename = dir .. "/" .. filename
74
75         cmds = CmdChain.new()
76         cmds:add{
77             cmdline = "${root}${VIDCONTROL} -f ${filename} < /dev/ttyv0",
78             replacements = { filename = filename }
79         }
80         if cmds:execute() then
81                 local found, len, w, h = string.find(filename, "(%d+)x(%d+)")
82                 if found then
83                         w = tonumber(w)
84                         h = tonumber(h)
85                         --[[
86                         snprintf(variable, 256, "font8x%d", by);
87                         snprintf(filename, 256, "/usr/share/syscons/fonts/%s", s);
88                         snprintf(fontname, 256, filename_noext(basename(filename)));
89                         config_var_set(rc_conf, variable, fontname);
90                         ]]--
91                 end
92
93                 return true
94         else
95                 App.ui:inform(_(
96                     "Errors occurred; video font was not successfully set."
97                 ))
98         end
99 end
100
101
102 local set_screen_map = function()
103         local cmds, files, dir, filename, full_filename
104
105         --
106         -- Select a file.
107         --
108         dir = App.expand("${root}${base}usr/share/syscons/scrnmaps",
109             {
110                 base = App.state.target:get_base()
111             }
112         )
113
114         filename = App.ui:select_file{
115             title = _("Select Screen Map"),
116             short_desc = _(
117                 "Select a mapping for translating characters as they " ..
118                 "appear on your video console screen."
119             ),
120             cancel_desc = _("Return to Utilities Menu"),
121             dir = dir,
122             extension = "scm"
123         }
124         if filename == "cancel" then
125                 return false
126         end
127         filename = dir .. "/" .. filename
128
129         cmds = CmdChain.new()
130         cmds:add{
131             cmdline = "${root}${VIDCONTROL} -l ${filename} < /dev/ttyv0",
132             replacements = { filename = filename }
133         }
134         if cmds:execute() then
135                 --[[
136                 snprintf(filename, 256, "/usr/share/syscons/scrnmaps/%s", s);
137                 snprintf(scrnmapname, 256, filename_noext(basename(filename)));
138                 config_var_set(rc_conf, "scrnmap", scrnmapname);
139                 ]]--
140
141                 return true
142         else
143                 App.ui:inform(_(
144                     "Errors occurred; screen map was not successfully set."
145                 ))
146         end
147 end
148
149 return {
150     name = _("Change Console Settings"),
151     effect = function()
152         if set_video_font() and set_screen_map() and set_keyboard_map() then
153                 -- everything was set.
154                 -- XXX write to rc.conf ?
155         end
156         return Menu.CONTINUE
157     end
158 }