OK so here is some more eye candy. it's getting better. I now have the ability to change out icon packs on the fly. update the Icon sizes and zoom in and out on the fly. it's got some bugs i am working through them as we speak. Oh and the icons are not limited to 16x16 and they also properly resize them and crop out any excess alpha background. and it does overlays onto a "blank" icon for icons included in plugins. so with these screen shots it will take the plugin icon and format it properly and overlay it onto a blank orb. during this process i also added the ability to pass a PIL Image, a wx.Bitmap, a wx.Image, the already done base 64 encoded string and also added putting in a png filename, or a .ico filename, and also just a directory name into the eg.register plugin. and the whole system auto scenes what type it is. if a directory is put in it will default to looking for a filename of plugin.png or plugin.ico in that folder. this is because i have added the ability to have separate action icons that can be loaded from this directory they have to have the same name as the actionclass. and with the action icons it will put the icon overlayed onto a "blank" and then add the plugin icon that has also been overlayed onto the blank and it will resize the plugin icon smaller and plop it in the lower left. and the lower right is reserved for the disabled X to be overlayed.
i also added open and closed icons for the folders and macros in the tree. this IconHandler i made is portable in such a way that it can be used for config dialogs for plugins. you just have to specify to it what you want to name it, the size for the icons and away you go. and it stores that info so that the next time EG loads it will automatically make the IconHandler at startup and set the icon size to whatever was the last size stord. this is nice for saving the sizing if your plugin has a dialog that allows for increasing or decreasing the sizes. and it automatically creates a notification handler with the provided name and a '.SetSize' so if someone clicked a zoom button in a dialog all that would have to be done is eg.Notify((NAMEPROVIDED.SetSize, NEWSIZETUPLE) and it will work the magic on the icons and the cache so on the dialog end a refresh does the trick.
i also have it make a wx.ImageIndex so all that has to be done is eg.IconHandler.ProvidedName.IconName.index and pow the image is added to the index and the index number is returned.
this is all attribute based that way the handler caches the image so it doesn't have to reload it so if someone is in and out of a dialog that has lots of "bling" it may take a sec the first time loading. but after that the images are cached so repeated in and out doesn't cause the reloading and re sizing of the icons.
and the overlaying works as follows.
eg.IconHandler.ProvidedName.SomeIcon.SomeIconOverlay
that creates the icon. and adding a .bitmap returns a wx.Bitmap or adding a .pil returns a PIL.Image .image is a wx.Image through the eg.IconHandler you can access the stored core icons easily as well. .Tree returns the core icons set for the tree size .EventLog, .EditToolBar, so on and so forth. as of this moment the icons for plugins are stored by using the data that was passed as the key. this i am going to change that way they have friendly names
but here are the photos