import cStringIO
import wx
import os

# from wxDemo
def opj(path):
    """Convert paths to the platform-specific separator"""
    st = apply(os.path.join, tuple(path.split('/')))
    # HACK: on Linux, a leading / gets lost...
    if path.startswith('/'):
        st = '/' + st
    return st


def makebitmapfromfile(path):
    data = open(opj(path), "rb").read()
    stream = cStringIO.StringIO(data)
    return wx.BitmapFromImage(wx.ImageFromStream(stream))

class RawArmstrongArtProvider(wx.ArtProvider):
    def __init__(self):
        wx.ArtProvider.__init__(self)

        self.items = os.listdir('armstrong_bw/')


    def CreateBitmap(self, ArtId, ArtClient, ArtSize):
        bmp = wx.NullBitmap
        if ArtId+'.gif' in self.items:
            data = open(opj('armstrong_bw/%s.gif' % ArtId), "rb").read()
            stream = cStringIO.StringIO(data)
            bmp = wx.BitmapFromImage(wx.ImageFromStream(stream))


        return bmp


if __name__== '__main__':
    class TestPanel(wx.Panel):
        def __init__(self, parent):
            wx.Panel.__init__(self, parent)
            bmp = wx.StaticBitmap(self)
            bmp.SetBitmap(wx.ArtProvider_GetBitmap('cog', wx.ART_FRAME_ICON, (18,18)))



    class TestFrame(wx.Frame):
        def __init__(self, parent):
            wx.Frame.__init__(self, parent)
            sizer = wx.BoxSizer(wx.VERTICAL)
            self.NB = TestPanel(self)
            sizer.Add(self.NB, 1, wx.EXPAND | wx.GROW)
            self.SetSizerAndFit(sizer)
            self.Layout()

    from wx.lib.mixins.inspection import InspectionMixin
    class App(wx.App, InspectionMixin):
        def OnInit(self):
            self.Init()
            wx.ArtProvider.Push(RawArmstrongArtProvider())

            frame = TestFrame(None)
            self.SetTopWindow(frame)
            frame.Show(True)
            return True


    app = App(0)
    app.MainLoop()
    app.Destroy()


