c_ext/CFileEditor.py
changeset 734 5c42cafaee15
parent 721 ecf4d203c4d4
child 738 413946c04c87
equal deleted inserted replaced
733:915be999f3f0 734:5c42cafaee15
     2 
     2 
     3 import wx
     3 import wx
     4 import wx.grid
     4 import wx.grid
     5 import wx.stc as stc
     5 import wx.stc as stc
     6 import wx.lib.buttons
     6 import wx.lib.buttons
       
     7 from util import opjimg
     7 
     8 
     8 from controls import CustomGrid, CustomTable, EditorPanel
     9 from controls import CustomGrid, CustomTable, EditorPanel
     9 
    10 
    10 if wx.Platform == '__WXMSW__':
    11 if wx.Platform == '__WXMSW__':
    11     faces = { 'times': 'Times New Roman',
    12     faces = { 'times': 'Times New Roman',
   716     ("CleanUp", CppEditor), 
   717     ("CleanUp", CppEditor), 
   717     ("Retrieve", CppEditor), 
   718     ("Retrieve", CppEditor), 
   718     ("Publish", CppEditor),
   719     ("Publish", CppEditor),
   719 ]
   720 ]
   720 
   721 
   721 #----------------------------------------------------------------------
       
   722 # different icons for the collapsed/expanded states.
       
   723 # Taken from standard Windows XP collapsed/expanded states.
       
   724 #----------------------------------------------------------------------
       
   725 
       
   726 def GetCollapsedIconData():
       
   727     return \
       
   728 '\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\
       
   729 \x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\
       
   730 \x00\x01\x8eIDAT8\x8d\xa5\x93-n\xe4@\x10\x85?g\x03\n6lh)\xc4\xd2\x12\xc3\x81\
       
   731 \xd6\xa2I\x90\x154\xb9\x81\x8f1G\xc8\x11\x16\x86\xcd\xa0\x99F\xb3A\x91\xa1\
       
   732 \xc9J&\x96L"5lX\xcc\x0bl\xf7v\xb2\x7fZ\xa5\x98\xebU\xbdz\xf5\\\x9deW\x9f\xf8\
       
   733 H\\\xbfO|{y\x9dT\x15P\x04\x01\x01UPUD\x84\xdb/7YZ\x9f\xa5\n\xce\x97aRU\x8a\
       
   734 \xdc`\xacA\x00\x04P\xf0!0\xf6\x81\xa0\xf0p\xff9\xfb\x85\xe0|\x19&T)K\x8b\x18\
       
   735 \xf9\xa3\xe4\xbe\xf3\x8c^#\xc9\xd5\n\xa8*\xc5?\x9a\x01\x8a\xd2b\r\x1cN\xc3\
       
   736 \x14\t\xce\x97a\xb2F0Ks\xd58\xaa\xc6\xc5\xa6\xf7\xdfya\xe7\xbdR\x13M2\xf9\
       
   737 \xf9qKQ\x1fi\xf6-\x00~T\xfac\x1dq#\x82,\xe5q\x05\x91D\xba@\xefj\xba1\xf0\xdc\
       
   738 zzW\xcff&\xb8,\x89\xa8@Q\xd6\xaaf\xdfRm,\xee\xb1BDxr#\xae\xf5|\xddo\xd6\xe2H\
       
   739 \x18\x15\x84\xa0q@]\xe54\x8d\xa3\xedf\x05M\xe3\xd8Uy\xc4\x15\x8d\xf5\xd7\x8b\
       
   740 ~\x82\x0fh\x0e"\xb0\xad,\xee\xb8c\xbb\x18\xe7\x8e;6\xa5\x89\x04\xde\xff\x1c\
       
   741 \x16\xef\xe0p\xfa>\x19\x11\xca\x8d\x8d\xe0\x93\x1b\x01\xd8m\xf3(;x\xa5\xef=\
       
   742 \xb7w\xf3\x1d$\x7f\xc1\xe0\xbd\xa7\xeb\xa0(,"Kc\x12\xc1+\xfd\xe8\tI\xee\xed)\
       
   743 \xbf\xbcN\xc1{D\x04k\x05#\x12\xfd\xf2a\xde[\x81\x87\xbb\xdf\x9cr\x1a\x87\xd3\
       
   744 0)\xba>\x83\xd5\xb97o\xe0\xaf\x04\xff\x13?\x00\xd2\xfb\xa9`z\xac\x80w\x00\
       
   745 \x00\x00\x00IEND\xaeB`\x82' 
       
   746 
       
   747 def GetCollapsedIconBitmap():
       
   748     return wx.BitmapFromImage(GetCollapsedIconImage())
       
   749 
       
   750 def GetCollapsedIconImage():
       
   751     import cStringIO
       
   752     stream = cStringIO.StringIO(GetCollapsedIconData())
       
   753     return wx.ImageFromStream(stream)
       
   754 
       
   755 #----------------------------------------------------------------------
       
   756 def GetExpandedIconData():
       
   757     return \
       
   758 '\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\
       
   759 \x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\
       
   760 \x00\x01\x9fIDAT8\x8d\x95\x93\xa1\x8e\xdc0\x14EO\xb2\xc4\xd0\xd2\x12\xb7(mI\
       
   761 \xa4%V\xd1lQT4[4-\x9a\xfe\xc1\xc2|\xc6\xc2~BY\x83:A3E\xd3\xa0*\xa4\xd2\x90H!\
       
   762 \x95\x0c\r\r\x1fK\x81g\xb2\x99\x84\xb4\x0fY\xd6\xbb\xc7\xf7>=\'Iz\xc3\xbcv\
       
   763 \xfbn\xb8\x9c\x15 \xe7\xf3\xc7\x0fw\xc9\xbc7\x99\x03\x0e\xfbn0\x99F+\x85R\
       
   764 \x80RH\x10\x82\x08\xde\x05\x1ef\x90+\xc0\xe1\xd8\ryn\xd0Z-\\A\xb4\xd2\xf7\
       
   765 \x9e\xfbwoF\xc8\x088\x1c\xbbae\xb3\xe8y&\x9a\xdf\xf5\xbd\xe7\xfem\x84\xa4\
       
   766 \x97\xccYf\x16\x8d\xdb\xb2a]\xfeX\x18\xc9s\xc3\xe1\x18\xe7\x94\x12cb\xcc\xb5\
       
   767 \xfa\xb1l8\xf5\x01\xe7\x84\xc7\xb2Y@\xb2\xcc0\x02\xb4\x9a\x88%\xbe\xdc\xb4\
       
   768 \x9e\xb6Zs\xaa74\xadg[6\x88<\xb7]\xc6\x14\x1dL\x86\xe6\x83\xa0\x81\xba\xda\
       
   769 \x10\x02x/\xd4\xd5\x06\r\x840!\x9c\x1fM\x92\xf4\x86\x9f\xbf\xfe\x0c\xd6\x9ae\
       
   770 \xd6u\x8d \xf4\xf5\x165\x9b\x8f\x04\xe1\xc5\xcb\xdb$\x05\x90\xa97@\x04lQas\
       
   771 \xcd*7\x14\xdb\x9aY\xcb\xb8\\\xe9E\x10|\xbc\xf2^\xb0E\x85\xc95_\x9f\n\xaa/\
       
   772 \x05\x10\x81\xce\xc9\xa8\xf6><G\xd8\xed\xbbA)X\xd9\x0c\x01\x9a\xc6Q\x14\xd9h\
       
   773 [\x04\xda\xd6c\xadFkE\xf0\xc2\xab\xd7\xb7\xc9\x08\x00\xf8\xf6\xbd\x1b\x8cQ\
       
   774 \xd8|\xb9\x0f\xd3\x9a\x8a\xc7\x08\x00\x9f?\xdd%\xde\x07\xda\x93\xc3{\x19C\
       
   775 \x8a\x9c\x03\x0b8\x17\xe8\x9d\xbf\x02.>\x13\xc0n\xff{PJ\xc5\xfdP\x11""<\xbc\
       
   776 \xff\x87\xdf\xf8\xbf\xf5\x17FF\xaf\x8f\x8b\xd3\xe6K\x00\x00\x00\x00IEND\xaeB\
       
   777 `\x82' 
       
   778 
       
   779 def GetExpandedIconBitmap():
       
   780     return wx.BitmapFromImage(GetExpandedIconImage())
       
   781 
       
   782 def GetExpandedIconImage():
       
   783     import cStringIO
       
   784     stream = cStringIO.StringIO(GetExpandedIconData())
       
   785     return wx.ImageFromStream(stream)
       
   786 
       
   787 class FoldPanelCaption(wx.lib.buttons.GenBitmapTextToggleButton):
   722 class FoldPanelCaption(wx.lib.buttons.GenBitmapTextToggleButton):
   788     
   723     
   789     def GetBackgroundBrush(self, dc):
   724     def GetBackgroundBrush(self, dc):
   790         colBg = self.GetBackgroundColour()
   725         colBg = self.GetBackgroundColour()
   791         brush = wx.Brush(colBg, wx.SOLID)
   726         brush = wx.Brush(colBg, wx.SOLID)
   852         self.MainSizer.AddGrowableCol(0)
   787         self.MainSizer.AddGrowableCol(0)
   853         
   788         
   854         for idx, (name, panel_class) in enumerate(CFILE_PARTS):
   789         for idx, (name, panel_class) in enumerate(CFILE_PARTS):
   855             button_id = wx.NewId()
   790             button_id = wx.NewId()
   856             button = FoldPanelCaption(id=button_id, name='FoldPanelCaption_%s' % name, 
   791             button = FoldPanelCaption(id=button_id, name='FoldPanelCaption_%s' % name, 
   857                   label=name, bitmap=GetCollapsedIconBitmap(), parent=self.Editor, pos=wx.Point(0, 0),
   792                   label=name, bitmap=wx.Bitmap(opjimg("CollapsedIconData")), 
       
   793                   parent=self.Editor, pos=wx.Point(0, 0),
   858                   size=wx.Size(0, 20), style=wx.NO_BORDER|wx.ALIGN_LEFT)
   794                   size=wx.Size(0, 20), style=wx.NO_BORDER|wx.ALIGN_LEFT)
   859             button.SetBitmapSelected(GetExpandedIconBitmap())
   795             button.SetBitmapSelected(wx.Bitmap(opjimg("ExpandedIconData")))
   860             button.Bind(wx.EVT_BUTTON, self.GenPanelButtonCallback(name), id=button_id)
   796             button.Bind(wx.EVT_BUTTON, self.GenPanelButtonCallback(name), id=button_id)
   861             self.MainSizer.AddWindow(button, 0, border=0, flag=wx.TOP|wx.GROW)
   797             self.MainSizer.AddWindow(button, 0, border=0, flag=wx.TOP|wx.GROW)
   862             
   798             
   863             if panel_class == VariablesEditor:
   799             if panel_class == VariablesEditor:
   864                 panel = VariablesEditor(self.Editor, self.ParentWindow, self.Controler)
   800                 panel = VariablesEditor(self.Editor, self.ParentWindow, self.Controler)
   877         
   813         
   878         self.Editor.SetSizer(self.MainSizer)
   814         self.Editor.SetSizer(self.MainSizer)
   879         
   815         
   880     def __init__(self, parent, controler, window):
   816     def __init__(self, parent, controler, window):
   881         EditorPanel.__init__(self, parent, "", window, controler)
   817         EditorPanel.__init__(self, parent, "", window, controler)
   882         
   818         self.SetIcon(wx.Bitmap(opjimg("Cfile")))
   883         img = wx.Bitmap(self.Controler.GetIconPath("Cfile.png"), wx.BITMAP_TYPE_PNG).ConvertToImage()
       
   884         self.SetIcon(wx.BitmapFromImage(img.Rescale(16, 16)))
       
   885         
   819         
   886     def __del__(self):
   820     def __del__(self):
   887         self.Controler.OnCloseEditor(self)
   821         self.Controler.OnCloseEditor(self)
   888     
   822     
   889     def GetTitle(self):
   823     def GetTitle(self):