andrej@1511: #!/usr/bin/env python
andrej@1511: # -*- coding: utf-8 -*-
andrej@1511: 
andrej@1511: # This file is part of Beremiz, a Integrated Development Environment for
andrej@1511: # programming IEC 61131-3 automates supporting plcopen standard and CanFestival.
andrej@1511: #
andrej@1511: # Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD
andrej@1511: #
andrej@1511: # See COPYING file for copyrights details.
andrej@1511: #
andrej@1511: # This program is free software; you can redistribute it and/or
andrej@1511: # modify it under the terms of the GNU General Public License
andrej@1511: # as published by the Free Software Foundation; either version 2
andrej@1511: # of the License, or (at your option) any later version.
andrej@1511: #
andrej@1511: # This program is distributed in the hope that it will be useful,
andrej@1511: # but WITHOUT ANY WARRANTY; without even the implied warranty of
andrej@1511: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
andrej@1511: # GNU General Public License for more details.
andrej@1511: #
andrej@1511: # You should have received a copy of the GNU General Public License
andrej@1511: # along with this program; if not, write to the Free Software
andrej@1511: # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
lbessard@145: 
andrej@1881: 
andrej@1881: from __future__ import absolute_import
laurent@630: import wx.stc as stc
laurent@630: 
Laurent@1096: from controls.CustomStyledTextCtrl import faces
Laurent@1096: from editors.CodeFileEditor import CodeFileEditor, CodeEditor
lbessard@145: 
andrej@1736: 
Laurent@1096: class CppEditor(CodeEditor):
lbessard@145: 
andrej@1730:     KEYWORDS = ["asm", "auto", "bool", "break", "case", "catch", "char", "class",
andrej@1768:                 "const", "const_cast", "continue", "default", "delete", "do", "double",
andrej@1768:                 "dynamic_cast", "else", "enum", "explicit", "export", "extern", "false",
andrej@1768:                 "float", "for", "friend", "goto", "if", "inline", "int", "long", "mutable",
andrej@1768:                 "namespace", "new", "operator", "private", "protected", "public", "register",
andrej@1768:                 "reinterpret_cast", "return", "short", "signed", "sizeof", "static",
andrej@1768:                 "static_cast", "struct", "switch", "template", "this", "throw", "true", "try",
andrej@1768:                 "typedef", "typeid", "typename", "union", "unsigned", "using", "virtual",
andrej@1768:                 "void", "volatile", "wchar_t", "while"]
Laurent@1110:     COMMENT_HEADER = "/"
andrej@1730: 
Laurent@1096:     def SetCodeLexer(self):
lbessard@145:         self.SetLexer(stc.STC_LEX_CPP)
andrej@1730: 
Laurent@1060:         self.StyleSetSpec(stc.STC_C_COMMENT, 'fore:#408060,size:%(size)d' % faces)
Laurent@1060:         self.StyleSetSpec(stc.STC_C_COMMENTLINE, 'fore:#408060,size:%(size)d' % faces)
Laurent@1060:         self.StyleSetSpec(stc.STC_C_COMMENTDOC, 'fore:#408060,size:%(size)d' % faces)
Laurent@1060:         self.StyleSetSpec(stc.STC_C_NUMBER, 'fore:#0076AE,size:%(size)d' % faces)
Laurent@1060:         self.StyleSetSpec(stc.STC_C_WORD, 'bold,fore:#800056,size:%(size)d' % faces)
Laurent@1060:         self.StyleSetSpec(stc.STC_C_STRING, 'fore:#2a00ff,size:%(size)d' % faces)
Laurent@1060:         self.StyleSetSpec(stc.STC_C_PREPROCESSOR, 'bold,fore:#800056,size:%(size)d' % faces)
Laurent@1060:         self.StyleSetSpec(stc.STC_C_OPERATOR, 'bold,size:%(size)d' % faces)
Laurent@1060:         self.StyleSetSpec(stc.STC_C_STRINGEOL, 'back:#FFD5FF,size:%(size)d' % faces)
lbessard@145: 
andrej@1736: 
Laurent@1096: class CFileEditor(CodeFileEditor):
andrej@1782:     """
andrej@1782:     CFileEditor Main Frame Class
andrej@1782:     """
andrej@1730: 
Laurent@1138:     CONFNODEEDITOR_TABS = [
Laurent@1138:         (_("C code"), "_create_CodePanel")]
Laurent@1138:     CODE_EDITOR = CppEditor