util/TranslationCatalogs.py
author Andrey Skvortsov <andrej.skvortzov@gmail.com>
Wed, 07 Dec 2016 19:24:16 +0300
changeset 1596 f5868f866d2b
parent 1511 91538d0c242c
child 1730 64d8f52bc8c8
permissions -rw-r--r--
stop PLC before unloading


This fixes segmentation fault if service was quit without stopping it.
It has happened if Beremiz service was quit using taskbar icon or by
closing Beremiz IDE (in case of autostarted local service).

In second case to trigger the bug following step has to be done:
1. Open Beremiz IDE
2. Open project, compile and connect to LOCAL:// runtime
3. Transfer and start the PLC program
4. Open other project without disconneting the PLC runtime
5. Close Beremiz IDE
815
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
     1
#!/usr/bin/env python
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
     2
# -*- coding: utf-8 -*-
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
     3
1511
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
     4
# This file is part of Beremiz, a Integrated Development Environment for
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
     5
# programming IEC 61131-3 automates supporting plcopen standard and CanFestival.
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
     6
#
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
     7
# Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
     8
#
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
     9
# See COPYING file for copyrights details.
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
    10
#
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
    11
# This program is free software; you can redistribute it and/or
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
    12
# modify it under the terms of the GNU General Public License
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
    13
# as published by the Free Software Foundation; either version 2
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
    14
# of the License, or (at your option) any later version.
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
    15
#
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
    16
# This program is distributed in the hope that it will be useful,
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
    17
# but WITHOUT ANY WARRANTY; without even the implied warranty of
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
    18
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
    19
# GNU General Public License for more details.
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
    20
#
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
    21
# You should have received a copy of the GNU General Public License
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
    22
# along with this program; if not, write to the Free Software
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
    23
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
91538d0c242c add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents: 817
diff changeset
    24
815
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    25
import os 
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    26
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    27
import wx
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    28
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    29
# Get the default language
817
1a3cc2065216 Update chinese and german translation catalogs
laurent
parents: 815
diff changeset
    30
langid = wx.LANGUAGE_DEFAULT
815
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    31
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    32
# Define locale for wx
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    33
locale = wx.Locale(langid)
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    34
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    35
def GetDomain(path):
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    36
    for name in os.listdir(path):
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    37
        filepath = os.path.join(path, name)
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    38
        basename, fileext = os.path.splitext(name)
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    39
        if os.path.isdir(filepath):
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    40
            result = GetDomain(filepath)
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    41
            if result is not None:
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    42
                return result
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    43
        elif fileext == ".mo":
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    44
            return basename
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    45
    return None
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    46
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    47
def AddCatalog(locale_dir):
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    48
    if os.path.exists(locale_dir) and os.path.isdir(locale_dir):
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    49
        domain = GetDomain(locale_dir)
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    50
        if domain is not None:
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    51
            locale.AddCatalogLookupPathPrefix(locale_dir)
e4f24593a758 Adding support for extending internationalization to extensions
laurent
parents:
diff changeset
    52
            locale.AddCatalog(domain)