Menu conversion script

Adam Stephens adam.c.stephens at ohiou.edu
Wed Jul 30 02:01:02 EDT 2003


Hi,

I just updated to version 3 today, and already I liked it better than
version 2.

I don't claim to be a master programmer, but I wrote a script to convert
version 2 (blackbox) style menus to the new version 3 xml format. The
script prolly will break in some situations, but it worked just fine for
me. I used python, as I am trying to become more familiar with it, but
feel free to convert it, change it, lick it and make it more friendly.
Hopefully this will benefit others. 

Enjoy,
-atom

------begin convertmenu.py ------

#!/usr/bin/python
#
#  written by/for atom.
#  it may not work for you.
#
#

import os, sys, re, string
from string import find, replace, upper, lower, strip

linenumber = 0
indent = ''
menuheader0 = '<menu id=\"'
menuheader1 = '\" label=\"'
menuheader2 = '\">'
menuend = '</menu>'
execute0 = '<item label=\"'
execute1 = '\">\n'
execute2 = '<action name=\"execute\"><execute>'
execute3 = '</execute></action>\n'
execute4 = '</item>'

try:
    file = open(sys.argv[1], 'r')
except IndexError:
    print 'usage: convertmenu.py <oldmenufile>'
    sys.exit()



for line in file.readlines():

    if find(line, '(') > -1:
        object = strip(re.search('\(.*\)', line).group(), '()')
    if find(line, '{') > -1:
        runthis = strip(re.search('\{.*\}', line).group(), '{}')

    if (find(line, '[begin]') > -1) or (find(line, '[submenu]') > -1) :
        line =
indent+menuheader0+upper(object)+menuheader1+lower(object)\
            +menuheader2
        indent = indent+' '
    elif find(line, '[end]') > -1:
        indent = indent[:-1]
        line = indent+menuend
    elif find(line, '[exec]') > -1:
        line = indent+execute0+lower(object)+execute1+indent+'
'+execute2\
        +runthis+execute3+indent+execute4
    else:
        line = ''
    
    if len(line) == 0:
        continue

    print line
    linenumber += 1
    
file.close()

------end------




More information about the openbox mailing list