diff options
author | Pavel Labath <pavelo@centrum.sk> | 2011-08-16 18:09:06 (GMT) |
---|---|---|
committer | Pavel Labath <pavelo@centrum.sk> | 2011-11-01 10:04:03 (GMT) |
commit | 45451301f8b33626f6799061d2815c1d5080d3aa (patch) | |
tree | e4def724dc3594fd5515f0a258e5da0a4bdacaec | |
parent | 4d1d4466ca8803a233a19afb8e88e7d279f19512 (diff) | |
download | fluxbox_paul-45451301f8b33626f6799061d2815c1d5080d3aa.zip fluxbox_paul-45451301f8b33626f6799061d2815c1d5080d3aa.tar.bz2 |
fluxbox-update_configs: automatically update keys file
-rw-r--r-- | util/Makefile.am | 13 | ||||
-rw-r--r-- | util/fluxbox-update_configs.cc | 19 | ||||
-rw-r--r-- | util/update_keys.lua | 48 |
3 files changed, 74 insertions, 6 deletions
diff --git a/util/Makefile.am b/util/Makefile.am index f5495e9..c2bbe74 100644 --- a/util/Makefile.am +++ b/util/Makefile.am | |||
@@ -6,7 +6,7 @@ bin_PROGRAMS= fbsetroot fluxbox-update_configs fluxbox-remote | |||
6 | fbsetroot_SOURCES= fbsetroot.cc fbsetroot.hh | 6 | fbsetroot_SOURCES= fbsetroot.cc fbsetroot.hh |
7 | fbsetroot_LDADD=../src/FbRootWindow.o ../src/FbAtoms.o \ | 7 | fbsetroot_LDADD=../src/FbRootWindow.o ../src/FbAtoms.o \ |
8 | ../src/FbTk/libFbTk.a | 8 | ../src/FbTk/libFbTk.a |
9 | fluxbox_update_configs_SOURCES= fluxbox-update_configs.cc | 9 | fluxbox_update_configs_SOURCES= fluxbox-update_configs.cc update_keys-lua.cc |
10 | fluxbox_update_configs_LDADD= ../src/defaults.o ../src/Resources.o \ | 10 | fluxbox_update_configs_LDADD= ../src/defaults.o ../src/Resources.o \ |
11 | ../src/FbTk/libFbTk.a ../libs/lua/src/liblua.a | 11 | ../src/FbTk/libFbTk.a ../libs/lua/src/liblua.a |
12 | fluxbox_remote_SOURCES= fluxbox-remote.cc | 12 | fluxbox_remote_SOURCES= fluxbox-remote.cc |
@@ -49,11 +49,14 @@ fluxbox-generate_menu: fluxbox-generate_menu.in | |||
49 | > fluxbox-generate_menu | 49 | > fluxbox-generate_menu |
50 | -chmod 755 fluxbox-generate_menu | 50 | -chmod 755 fluxbox-generate_menu |
51 | 51 | ||
52 | ../src/FbRootWindow.o: | ||
53 | cd ../src && ${MAKE} FbRootWindow.o | ||
54 | ../src/FbAtoms.o: | ||
55 | cd ../src && ${MAKE} FbAtoms.o | ||
56 | ../src/defaults.o: | 52 | ../src/defaults.o: |
57 | cd ../src && ${MAKE} defaults.o | 53 | cd ../src && ${MAKE} defaults.o |
58 | ../src/Resources.o: | 54 | ../src/Resources.o: |
59 | cd ../src && ${MAKE} Resources.o | 55 | cd ../src && ${MAKE} Resources.o |
56 | |||
57 | %.luac: %.lua Makefile | ||
58 | $(top_builddir)/libs/lua/src/luac -o $@ $< | ||
59 | |||
60 | |||
61 | %-lua.cc: %.luac $(top_srcdir)/luatoc.sh Makefile | ||
62 | $(top_srcdir)/luatoc.sh $< $@ $(<:.luac=) | ||
diff --git a/util/fluxbox-update_configs.cc b/util/fluxbox-update_configs.cc index 233bdbb..883d864 100644 --- a/util/fluxbox-update_configs.cc +++ b/util/fluxbox-update_configs.cc | |||
@@ -724,6 +724,22 @@ update_move_slitlist_to_init_file(std::auto_ptr<FbTk::ResourceManager_base>& rm, | |||
724 | rc_slitlist->push_back(line); | 724 | rc_slitlist->push_back(line); |
725 | } | 725 | } |
726 | 726 | ||
727 | void update_keys_for_lua(std::auto_ptr<FbTk::ResourceManager_base>& rm, FbTk::Lua &l) { | ||
728 | extern const char update_keys[]; | ||
729 | extern const unsigned int update_keys_size; | ||
730 | |||
731 | l.checkstack(2); | ||
732 | lua::stack_sentry s(l); | ||
733 | |||
734 | FbTk::StringResource &rc_keyfile = rm->getResource<string, FbTk::StringTraits>("keyFile"); | ||
735 | |||
736 | l.loadstring(update_keys, update_keys_size); | ||
737 | l.pushstring(read_file(FbTk::StringUtil::expandFilename(*rc_keyfile))); | ||
738 | l.call(1, 1); | ||
739 | *rc_keyfile = string(*rc_keyfile) + ".lua"; | ||
740 | write_file(FbTk::StringUtil::expandFilename(*rc_keyfile), l.tostring(-1)); | ||
741 | } | ||
742 | |||
727 | /*------------------------------------------------------------------*\ | 743 | /*------------------------------------------------------------------*\ |
728 | \*------------------------------------------------------------------*/ | 744 | \*------------------------------------------------------------------*/ |
729 | 745 | ||
@@ -747,7 +763,8 @@ const Update UPDATES[] = { | |||
747 | { 12, update_keys_for_activetab }, | 763 | { 12, update_keys_for_activetab }, |
748 | { 13, update_limit_nextwindow_to_current_workspace }, | 764 | { 13, update_limit_nextwindow_to_current_workspace }, |
749 | { 14, update_lua_resource_manager }, | 765 | { 14, update_lua_resource_manager }, |
750 | { 15, update_move_slitlist_to_init_file } | 766 | { 15, update_move_slitlist_to_init_file }, |
767 | { 16, update_keys_for_lua } | ||
751 | }; | 768 | }; |
752 | 769 | ||
753 | /*------------------------------------------------------------------*\ | 770 | /*------------------------------------------------------------------*\ |
diff --git a/util/update_keys.lua b/util/update_keys.lua new file mode 100644 index 0000000..5edab2c --- /dev/null +++ b/util/update_keys.lua | |||
@@ -0,0 +1,48 @@ | |||
1 | local file = ...; | ||
2 | local keymodes = {}; | ||
3 | local failed = false; | ||
4 | |||
5 | local function process_line(line) | ||
6 | if string.match(line, '^%s*$') ~= nil then | ||
7 | return line; | ||
8 | end; | ||
9 | local comment = string.match(line, '^%s*[#!](.*)$'); | ||
10 | if comment ~= nil then | ||
11 | return '--' .. comment; | ||
12 | end; | ||
13 | |||
14 | local mode, key, cmd = string.match(line, '^%s*(%a%w*):%s*([^:]-)%s*:(.*)$'); | ||
15 | if key == nil then | ||
16 | key, cmd = string.match(line, '^%s*([^:]*):(.*)$'); | ||
17 | end; | ||
18 | |||
19 | if mode == nil or mode == 'default' then | ||
20 | mode = 'default_keymode'; | ||
21 | else | ||
22 | keymodes[mode] = true; | ||
23 | end; | ||
24 | |||
25 | if key ~= nil then | ||
26 | return string.format('%s[%q] = %q', mode, key, cmd); | ||
27 | else | ||
28 | failed = true; | ||
29 | return '-- FBCV16 ' .. line; | ||
30 | end; | ||
31 | end; | ||
32 | |||
33 | file = string.gsub(file, '[^\n]*', process_line); | ||
34 | |||
35 | local decls = ''; | ||
36 | for k, v in pairs(keymodes) do | ||
37 | decls = decls .. k .. ' = newKeyMode();\n'; | ||
38 | end; | ||
39 | |||
40 | if failed == true then | ||
41 | decls = [[ | ||
42 | --fluxbox-update_configs could not convert some of the lines into the new format. | ||
43 | --These lines are marked with FBCV16 and you will have to convert them yourself. | ||
44 | |||
45 | ]] .. decls; | ||
46 | end; | ||
47 | |||
48 | return decls .. '\n' .. file; | ||