c_ext/CFileEditor.py
changeset 738 413946c04c87
parent 734 5c42cafaee15
child 742 41a4a560406c
child 743 4645a3a398ad
equal deleted inserted replaced
737:7b421e080636 738:413946c04c87
     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 from util import opjimg
     8 
     8 
     9 from controls import CustomGrid, CustomTable, EditorPanel
     9 from controls import CustomGrid, CustomTable
       
    10 from ConfTreeNodeEditor import ConfTreeNodeEditor
    10 
    11 
    11 if wx.Platform == '__WXMSW__':
    12 if wx.Platform == '__WXMSW__':
    12     faces = { 'times': 'Times New Roman',
    13     faces = { 'times': 'Times New Roman',
    13               'mono' : 'Courier New',
    14               'mono' : 'Courier New',
    14               'helv' : 'Arial',
    15               'helv' : 'Arial',
   774 
   775 
   775 [ID_CFILEEDITOR, ID_CFILEEDITORMAINSPLITTER, 
   776 [ID_CFILEEDITOR, ID_CFILEEDITORMAINSPLITTER, 
   776  ID_CFILEEDITORCFILETREE, ID_CFILEEDITORPARTSOPENED, 
   777  ID_CFILEEDITORCFILETREE, ID_CFILEEDITORPARTSOPENED, 
   777 ] = [wx.NewId() for _init_ctrls in range(4)]
   778 ] = [wx.NewId() for _init_ctrls in range(4)]
   778 
   779 
   779 class CFileEditor(EditorPanel):
   780 class CFileEditor(ConfTreeNodeEditor):
   780     
   781     
   781     def _init_Editor(self, prnt):
   782     def _init_ConfNodeEditor(self, prnt):
   782         self.Editor = wx.Panel(id=ID_CFILEEDITOR, parent=prnt, pos=wx.Point(0, 0), 
   783         self.ConfNodeEditor = wx.Panel(id=ID_CFILEEDITOR, parent=prnt, pos=wx.Point(0, 0), 
   783                 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
   784                 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL)
   784         
   785         
   785         self.Panels = {}
   786         self.Panels = {}
   786         self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2 * len(CFILE_PARTS) + 1, vgap=0)
   787         self.MainSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2 * len(CFILE_PARTS) + 1, vgap=0)
   787         self.MainSizer.AddGrowableCol(0)
   788         self.MainSizer.AddGrowableCol(0)
   788         
   789         
   789         for idx, (name, panel_class) in enumerate(CFILE_PARTS):
   790         for idx, (name, panel_class) in enumerate(CFILE_PARTS):
   790             button_id = wx.NewId()
   791             button_id = wx.NewId()
   791             button = FoldPanelCaption(id=button_id, name='FoldPanelCaption_%s' % name, 
   792             button = FoldPanelCaption(id=button_id, name='FoldPanelCaption_%s' % name, 
   792                   label=name, bitmap=wx.Bitmap(opjimg("CollapsedIconData")), 
   793                   label=name, bitmap=wx.Bitmap(opjimg("CollapsedIconData")), 
   793                   parent=self.Editor, pos=wx.Point(0, 0),
   794                   parent=self.ConfNodeEditor, pos=wx.Point(0, 0),
   794                   size=wx.Size(0, 20), style=wx.NO_BORDER|wx.ALIGN_LEFT)
   795                   size=wx.Size(0, 20), style=wx.NO_BORDER|wx.ALIGN_LEFT)
   795             button.SetBitmapSelected(wx.Bitmap(opjimg("ExpandedIconData")))
   796             button.SetBitmapSelected(wx.Bitmap(opjimg("ExpandedIconData")))
   796             button.Bind(wx.EVT_BUTTON, self.GenPanelButtonCallback(name), id=button_id)
   797             button.Bind(wx.EVT_BUTTON, self.GenPanelButtonCallback(name), id=button_id)
   797             self.MainSizer.AddWindow(button, 0, border=0, flag=wx.TOP|wx.GROW)
   798             self.MainSizer.AddWindow(button, 0, border=0, flag=wx.TOP|wx.GROW)
   798             
   799             
   799             if panel_class == VariablesEditor:
   800             if panel_class == VariablesEditor:
   800                 panel = VariablesEditor(self.Editor, self.ParentWindow, self.Controler)
   801                 panel = VariablesEditor(self.ConfNodeEditor, self.ParentWindow, self.Controler)
   801             else:
   802             else:
   802                 panel = panel_class(self.Editor, name, self.ParentWindow, self.Controler)
   803                 panel = panel_class(self.ConfNodeEditor, name, self.ParentWindow, self.Controler)
   803             self.MainSizer.AddWindow(panel, 0, border=0, flag=wx.BOTTOM|wx.GROW)
   804             self.MainSizer.AddWindow(panel, 0, border=0, flag=wx.BOTTOM|wx.GROW)
   804             panel.Hide()
   805             panel.Hide()
   805             
   806             
   806             self.Panels[name] = {"button": button, "panel": panel, "expanded": False, "row": 2 * idx + 1}
   807             self.Panels[name] = {"button": button, "panel": panel, "expanded": False, "row": 2 * idx + 1}
   807         
   808         
   808         self.Spacer = wx.Panel(self.Editor, -1)
   809         self.Spacer = wx.Panel(self.ConfNodeEditor, -1)
   809         self.SpacerExpanded = True
   810         self.SpacerExpanded = True
   810         self.MainSizer.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
   811         self.MainSizer.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW)
   811         
   812         
   812         self.MainSizer.AddGrowableRow(2 * len(CFILE_PARTS))
   813         self.MainSizer.AddGrowableRow(2 * len(CFILE_PARTS))
   813         
   814         
   814         self.Editor.SetSizer(self.MainSizer)
   815         self.ConfNodeEditor.SetSizer(self.MainSizer)
   815         
   816     
   816     def __init__(self, parent, controler, window):
   817     def __init__(self, parent, controler, window):
   817         EditorPanel.__init__(self, parent, "", window, controler)
   818         ConfTreeNodeEditor.__init__(self, parent, "", controler, window)
   818         self.SetIcon(wx.Bitmap(opjimg("Cfile")))
       
   819         
       
   820     def __del__(self):
       
   821         self.Controler.OnCloseEditor(self)
       
   822     
       
   823     def GetTitle(self):
       
   824         fullname = self.Controler.CTNFullName()
       
   825         if not self.Controler.CFileIsSaved():
       
   826             return "~%s~" % fullname
       
   827         return fullname
       
   828     
   819     
   829     def GetBufferState(self):
   820     def GetBufferState(self):
   830         return self.Controler.GetBufferState()
   821         return self.Controler.GetBufferState()
   831         
   822         
   832     def Undo(self):
   823     def Undo(self):
   835             
   826             
   836     def Redo(self):
   827     def Redo(self):
   837         self.Controler.LoadNext()
   828         self.Controler.LoadNext()
   838         self.RefreshView()
   829         self.RefreshView()
   839     
   830     
   840     def HasNoModel(self):
       
   841         return False
       
   842 
       
   843     def RefreshView(self):
   831     def RefreshView(self):
   844         for infos in self.Panels.itervalues():
   832         for infos in self.Panels.itervalues():
   845             infos["panel"].RefreshView()
   833             infos["panel"].RefreshView()
   846 
   834 
   847     def GenPanelButtonCallback(self, name):
   835     def GenPanelButtonCallback(self, name):