Example #1
0
 def unpackMetaData(self, buf):
     metadata = {}
     try:
         x = Standard("B").unpack(buf)[0]
         while x != 127:
             index = x & 0x1F # Lower 5 bits
             ty    = x >> 5   # Upper 3 bits
             if ty == 0: val = Standard("b").unpack(buf)[0]
             elif ty == 1: val = Standard("h").unpack(buf)[0] 
             elif ty == 2: val = Standard("i").unpack(buf)[0] 
             elif ty == 3: val = Standard("f").unpack(buf)[0] 
             elif ty == 4: val = String("S").unpack(buf)[0]
             elif ty == 5:
                 val = {}
                 val["id"]     = Standard("h").unpack(buf)[0]
                 val["count"]  = Standard("b").unpack(buf)[0]
                 val["damage"] = Standard("h").unpack(buf)[0]
             elif ty == 6:
                 val = []
                 for i in range(3):
                     val.append(Standard("i").unpack(buf))[0]
             else:
                 global debug
                 debug.error("Unknown type ty=%d for x=ox%02X" % (ty, x))
             metadata[index] = (ty, val)
             x = Standard("B").unpack(buf)[0]
     except IOError:
         raise IOError
     return metadata,
def insertmenu(mlist,
               insertmlist,
               sortedmenukey,
               win,
               accel=None,
               imagelist=None):
    #    debug.info('[makemenu] Inserting dynamic menu...')
    #    makemenu.printmenu(insertmlist)

    keys = sortedmenukey[:]
    while len(keys) > 0:
        key = keys[0]
        if key == None:
            for order, idname, caption, kind, func, message in insertmlist[
                    key]:
                id = Id.makeid(win, idname)
                menu = makemenu.makesubmenu(insertmlist, win, idname, accel,
                                            imagelist)
                makemenu.setmenutext(win, accel)
                win.menubar.Insert(findpos(mlist, key, idname), menu, caption)
                win.menuitems[idname] = menu
            removekey(insertmlist, keys, key)
        else:
            menu = win.menuitems[key]
            for order, idname, caption, kind, func, message in insertmlist[
                    key]:
                pos = findpos(mlist, key, idname)
                if insertmlist.has_key(idname):  #submenu
                    id = Id.makeid(win, idname)
                    submenu = makemenu.makesubmenu(mlist, win, idname, accel,
                                                   imagelist)
                    menu.InsertMenu(pos, id, caption, submenu)
                    win.menuitems[idname] = submenu
                else:
                    if kind == wx.ITEM_SEPARATOR:
                        menu.InsertSeparator(pos)
                    else:
                        id = Id.makeid(win, idname)
                        mitem = wx.MenuItem(menu, id, caption, message, kind)
                        if imagelist and makemenu.disableimage == False:
                            imagename = imagelist.get(idname, '')
                            if imagename:
                                image = common.getpngimage(imagename)
                                if kind == wx.ITEM_CHECK:
                                    mitem.SetBitmaps(image)
                                else:
                                    mitem.SetBitmap(image)
                        menu.InsertItem(pos, mitem)
                        win.menuitems[idname] = mitem

                    if kind in (wx.ITEM_NORMAL, wx.ITEM_CHECK, wx.ITEM_RADIO):
                        if func:
                            try:
                                f = getattr(win, func)
                                wx.EVT_MENU(win, id, f)
                            except:
                                debug.error(
                                    "[makemenu] Can't find function [%s] in class %s"
                                    % (func, win.__class__.__name__))
            removekey(insertmlist, keys, key)
Example #3
0
 def unpackMetaData(self, buf):
     metadata = {}
     try:
         x = Standard("B").unpack(buf)[0]
         while x != 127:
             index = x & 0x1F  # Lower 5 bits
             ty = x >> 5  # Upper 3 bits
             if ty == 0: val = Standard("b").unpack(buf)[0]
             elif ty == 1: val = Standard("h").unpack(buf)[0]
             elif ty == 2: val = Standard("i").unpack(buf)[0]
             elif ty == 3: val = Standard("f").unpack(buf)[0]
             elif ty == 4: val = String("S").unpack(buf)[0]
             elif ty == 5:
                 val = {}
                 val["id"] = Standard("h").unpack(buf)[0]
                 val["count"] = Standard("b").unpack(buf)[0]
                 val["damage"] = Standard("h").unpack(buf)[0]
             elif ty == 6:
                 val = []
                 for i in range(3):
                     val.append(Standard("i").unpack(buf))[0]
             else:
                 global debug
                 debug.error("Unknown type ty=%d for x=ox%02X" % (ty, x))
             metadata[index] = (ty, val)
             x = Standard("B").unpack(buf)[0]
     except IOError:
         raise IOError
     return metadata,
Example #4
0
def makesubmenu(mlist, win, pid, accel=None, imagelist=None):
    menu = wx.Menu()
    if not mlist.has_key(pid):
        return menu
    for m in mlist[pid]:
        order, idname, caption, kind, func, message = m
        if mlist.has_key(idname):
            id = Id.makeid(win, idname)
            submenu = makesubmenu(mlist, win, idname, accel, imagelist)
            menu.AppendMenu(id, caption, submenu)
            win.menuitems[idname] = submenu
        else:
            if kind == wx.ITEM_SEPARATOR:
                menu.AppendSeparator()
            else:
                id = Id.makeid(win, idname)
                if accel and accel.has_key(idname):
                    caption = caption.split('\t')[0]
                    mitem = wx.MenuItem(menu, id, caption, message, kind)
                    #mitem.SetText(caption + '\t' + accel[idname][0])
                else:
                    pos = caption.find('\t')
                    if pos > -1:
                        a, b = caption.split('\t')
                        #caption = a + '\t' + b.replace('+', ',')
                    mitem = wx.MenuItem(menu, id, caption, message, kind)
                if imagelist and disableimage == False:
                    imagename = imagelist.get(idname, '')
                    if imagename:
                        image = common.getpngimage(imagename)
                        if kind == wx.ITEM_CHECK:
                            mitem.SetBitmaps(image)
                        else:
                            mitem.SetBitmap(image)
#                else:
#                    print 'nobitmap'
#                    if wx.Platform == '__WXMSW__':
#                        mitem.SetBitmap(common.getpngimage('images/empty.gif'))
                menu.AppendItem(mitem)
                win.menuitems[idname] = mitem

            if kind in (wx.ITEM_NORMAL, wx.ITEM_CHECK, wx.ITEM_RADIO):
                if func:
                    try:
                        f = getattr(win, func)
                        wx.EVT_MENU(win, id, f)
                    except:
                        debug.error("[makemenu] Can't find function [%s] in class %s" % (func, win.__class__.__name__))
    return menu
Example #5
0
def insertmenu(mlist, insertmlist, sortedmenukey, win, accel=None, imagelist=None):
#    debug.info('[makemenu] Inserting dynamic menu...')
#    makemenu.printmenu(insertmlist)
    
    keys = sortedmenukey[:]
    while len(keys) > 0:
        key = keys[0]
        if key == None:
            for     order, idname, caption, kind, func, message in insertmlist[key]:
                id = Id.makeid(win, idname)
                menu = makemenu.makesubmenu(insertmlist, win, idname, accel, imagelist)
                makemenu.setmenutext(win, accel)
                win.menubar.Insert(findpos(mlist, key, idname), menu, caption)
                win.menuitems[idname] = menu
            removekey(insertmlist, keys, key)
        else:
            menu = win.menuitems[key]
            for     order, idname, caption, kind, func, message in insertmlist[key]:
                pos = findpos(mlist, key, idname)
                if insertmlist.has_key(idname): #submenu
                    id = Id.makeid(win, idname)
                    submenu = makemenu.makesubmenu(mlist, win, idname, accel, imagelist)
                    menu.InsertMenu(pos, id, caption, submenu)
                    win.menuitems[idname] = submenu
                else:
                    if kind == wx.ITEM_SEPARATOR:
                        menu.InsertSeparator(pos)
                    else:
                        id = Id.makeid(win, idname)
                        mitem = wx.MenuItem(menu, id, caption, message, kind)
                        if imagelist and makemenu.disableimage == False:
                            imagename = imagelist.get(idname, '')
                            if imagename:
                                image = common.getpngimage(imagename)
                                if kind == wx.ITEM_CHECK:
                                    mitem.SetBitmaps(image)
                                else:
                                    mitem.SetBitmap(image)
                        menu.InsertItem(pos, mitem)
                        win.menuitems[idname] = mitem

                    if kind in (wx.ITEM_NORMAL, wx.ITEM_CHECK, wx.ITEM_RADIO):
                        if func:
                            try:
                                f = getattr(win, func)
                                wx.EVT_MENU(win, id, f)
                            except:
                                debug.error("[makemenu] Can't find function [%s] in class %s" % (func, win.__class__.__name__))
            removekey(insertmlist, keys, key)