Beremiz_service.py
author greg
Tue, 04 Nov 2008 16:00:44 +0100
changeset 269 d29c5f71574f
parent 263 0bc32427a459
child 271 ea7928fd07da
permissions -rw-r--r--
add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
262
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
     1
#!/usr/bin/env python
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
     2
# -*- coding: utf-8 -*-
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
     3
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
     4
#This file is part of Beremiz, a Integrated Development Environment for
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
     5
#programming IEC 61131-3 automates supporting plcopen standard and CanFestival. 
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
     6
#
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
     7
#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
     8
#
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
     9
#See COPYING file for copyrights details.
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    10
#
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    11
#This library is free software; you can redistribute it and/or
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    12
#modify it under the terms of the GNU General Public
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    13
#License as published by the Free Software Foundation; either
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    14
#version 2.1 of the License, or (at your option) any later version.
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    15
#
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    16
#This library is distributed in the hope that it will be useful,
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    17
#but WITHOUT ANY WARRANTY; without even the implied warranty of
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    18
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    19
#General Public License for more details.
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    20
#
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    21
#You should have received a copy of the GNU General Public
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    22
#License along with this library; if not, write to the Free Software
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    23
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    24
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    25
import os, sys, getopt
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    26
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    27
try:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    28
    import wx, re
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    29
    from wx.lib.embeddedimage import PyEmbeddedImage
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    30
    from threading import Thread
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    31
    from types import *
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    32
    havewx = True
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    33
except:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    34
    havewx = False
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
    35
269
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    36
if havewx:
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    37
    defaulticon = PyEmbeddedImage(
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    38
    "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAABc5J"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    39
    "REFUSIl9lW1MW9cZx3/n2vf6BQO2MZiXGBISILCVUEUlitYpjaKpXZJ1XZZ2kzJVY9r6IeLD"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    40
    "pGTaNG3KtGmNNGlbpW3VFhRp0l6aZCllpVUqtVNJtBFKE5QXLxCjpCYEY7DBr9hcm3vPPgQY"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    41
    "IQmPdKR7/vd5/v/n5dxzhZSSNeYBOoGDQGcoFPINDAyUDQ0NOUdGRmyGYSiBQGCpoaGhuGnT"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    42
    "psShQ4f6WltbewEBVAK3gCBgrjJKKZFSKlLKeillt5Ty40gkMnnw4MFFQG60ysrKZHd3dyoe"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    43
    "j//bNM0Le/fuPd/e3r5lmRMpJWK5ghrgFeBIT09P4/Hjx73pdFo47HaaNlfRutnJru0OKsoE"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    44
    "E3GVqaSNa6EUw1dvIKWkoqKCrVu3FoeHh9WamppfRiKRn6wUYAUcwE7g2e7u7vrTp09XGIZB"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    45
    "W1Mdv3qtmoBPrG0hHVsMhKLj6nqOqOWn/Pjnv2dgYIC5uTl1uSM71/pbgUbg6bNnz/rPnDnj"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    46
    "dzoddO0P8Oo+jY2suDDD1Zv9DA1dfghXVbVBCFEqpcwAKEDTxMSE58SJE8+oqsq3nq/l1X0a"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    47
    "QihYtNLHLqRET03wuYp7fO9r26mpKlsVUBSl0W63V6/shZTyyIEDB344Njb21JYaG7/5bgkA"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    48
    "Dm8zTS/+7bHZLy0mSN+7yNztt8nPjYHFwfvXDf1P70zZ0ok0LS0tZy9fvvxNAGswGFQnJyef"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    49
    "KnM5+NHLzuUDsrFZ7R68zS/hrGon1PcNMPI0BIzs9tcCNvNfDqxW64uqqvqKxWJc6e3trVVV"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    50
    "leaAk6ryJ5N/9tH3GXv7Je7/5xermN3diMPXCkDfgrkg3UU0txWLxeLw+/1fB1BGR0frbTYb"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    51
    "TXWWDbNeysUoZKbIRIZBPviOzKU8ejLMHyPFcMprrweQ7iUAXC7XPiGEak2lUk02m42mWn1D"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    52
    "gfrnTiKNIrbyzSAUjEKWCx+/Mf+HyELBrLBvBhAIKDdgGsrLy+sAv1UIUa1pGv7yxQ0FbGX1"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    53
    "D+0LQmHW7fVavE5Mo/gAFCCcoOs6NpvNA7gVRVGCmqYRz1hXg7NFU39rjshawjcuvs4P+o/y"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    54
    "24uvE1+I4VCdfGfXUb76+VdWfQQCkbJSKBQoFApJTdMsCvApQDSlAjCTN7I/y5CNllpq1wqE"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    55
    "YmPciIzwwdi7BKevreK7Gp5dfbYoFoozJrquo+v6rMViWbQCV4QQzGTsQJY3kzIhvFpgfYte"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    56
    "7jhCMp9kk7uep+ueWcWj6f8Xqioq8ck0xcIS6XT6vpRy3gqMqKpqRBfKLLNF1ZRV6YBiPDrw"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    57
    "vduefwTL6hl6b74FgFVR0T4rJTU3jcvlymcymal8Ph+z9vf3p7u6uv5y/vz5bw994ld2fmUH"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    58
    "7nYFRVG4Gb3Guv8FpmmQzCcIJ+5w8c5HRFL3UYRC+ZKX633j6LpObW3tDcMwrsODq4Jbt27V"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    59
    "HT58+N7o6KgCYHfY2f2lXfi+6CJbnsAwjUeyXzFFKLgdHqb+mmL8xh22bduWmJycfHN2dvbX"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    60
    "uVwuoQC0tbXlKisrYytBi/lFZsKzOErtTyQWCOxWO36ljvl/FLk+dJOSkhJTUZR35+fn+3K5"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    61
    "XAIeXNcASz6fbxzwrxDYVQdqpARvs498IYchDUxpogiBVVFxqE7U/5Zx4c8fEo/FKS0tlR0d"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    62
    "HZ8ODg6+l06nr6zwrAp4PJ6Qpmlf2L9/fywYDFaOXB0RI1dHaGpuoq29Fa1Uxe62YeZMInei"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    63
    "jAY/IRqNAtDZ2blUV1fXPzg4+F5VVdU/H6p0eYjqsWPHvnz37t0XwuHw7d27d4eTyeTvLl26"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    64
    "FJiamnpim6qrq9mzZ094fHz875FI5J3p6ekr631WBARgaWlpCezYsePeuXPnzFAo5Dp58uS+"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    65
    "dDp91GKxNBYKBW82m3Vomqa7XK7pbDYbnJmZuR2LxYL5fP79WCyWeeys1h/D9e97enqsp06d"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    66
    "8mWzWU+xWPTkcjmXaZpxwzDCsVhsbqNggP8BMJOU3UUUf+0AAAAASUVORK5CYII=")
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    67
    
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    68
    #----------------------------------------------------------------------
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    69
    starticon = PyEmbeddedImage(
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    70
    "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAABbpJ"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    71
    "REFUSIl9lltsFNcdxn9nZnbHs15fd23j9TXYC0UCKzEhMQ+oIS2g1kQ1pbFStX0opFWsovSh"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    72
    "rUqp2pS2ioTUolaKFOGHqGkiJcKRuDhOaZRiZCsCXyBgCBBfMfbu+oa9s17wzuzl9MH24mDD"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    73
    "XzoPc/6fft+c72jOGSGlZEVlAU8D9cB20zQ9HR0duRcvXszq7e01EomEUlFREa+srLR8Pl+g"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    74
    "sbHx3zk5ORcAFfACA8Bt4CFUSomUUkgpS6SUB6SUH5umOXLgwIEHqqrKJfGao7S0VB49ejRo"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    75
    "2/YnUsrT+/fvb66pqSldYiKlRCytoBB4Gfjx6dOnq5qamjwTExOKqqqU+QrYUJFN7QY32Qbc"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    76
    "vSeYCGtcux1i5M5dAPx+P1VVVQvnzp0ziouLfx8MBt9cXoAGZABbgZ1HjhwpO378eEEymaSi"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    77
    "tIBjPy9lU5nKoyWExF2yjy+mN3HsH+/Q3d3NwMCAsZTI9pVaDXgK2Hr27Nn85ubmEpdh8IMX"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    78
    "ffxirwshVrGXHBQSC/dIRvoZGuz/WkvTtHIhhCGlXABQgI2Tk5P5hw8f3uZwOGj8VjGHXnoC"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    79
    "HJCpJFbkLtr8FXbX+XC79HRPVVW/qqre9LtIKX/S0NDwy76+vq1lhTr/fM2NAmTk+fHv/dea"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    80
    "BlZkDHP0PHODH2NHg1gykw8/X7Dfb7vjTNgJqqurT3R1db0GoF2/fl0fGhqqdWca/K7RhZLO"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    81
    "WSBU55oGGXlVZORVkeV7nsFPDqKL+9TWJCI3n9rojX2mYhjGj4QQv5FSziunTp0qdjqd4hvl"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    82
    "Lnz5j49lrPMNhv7zM6b63knPuQpryMj3A9A2L++nvDaZXheqqrrXrVu3D0C5detWudPpxO/T"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    83
    "Hk8HYnOD3J+8yr3bH6XnZNImHg3xfsgenfHo5QAyJwFAdnb2HiGEppmmWa3rOhtKrCcalNT9"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    84
    "llTSwvBsXISn4nRdbJ5/czRsWvlGhQAEYtFg0kl2dnYZUKgB5U6nk5L82BMNXIU1X3uOWFH5"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    85
    "eWIuy/YYWcjU4qQAxQ22bWMYhgfIU1RV/UrXdWaiDyOyUiLROktoJfDtC8fZfWQbb//v75ix"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    86
    "MDlGnvjVC3+gflNDWiMQKPMalmVh2/a8w+HQFKAHIBR2ABCOS+uN6cTMoFstXmlwZbSba7tv"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    87
    "8hfzT7z+7k+ZnZ0BoK5yR1qjCBV7MoVt29i2PaWqqq0BvUIIQqYORHlrKj6R9BoVj0b04oY9"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    88
    "nEt+yvz3Y5yR/+Xap3XsDb/EtvV1aY1DdTA7HsW2bCKRyLiUclYBelRVldNWAfPSm4oV5ZQJ"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    89
    "Vn/G9Zv2oWt6Ous7e4K81XiC1wNNBO6OIWKgB7Mwp000TYuFw+GxWCw2qbS2tk7k5uae/eDD"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    90
    "Fn594p6SFyxRCjKLUBWF8fBoegTNMVLLm/kwdMyGGON/nePLklv0dl/Cii3gdrtvAzdg8aig"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    91
    "vb296uDBgwMjIyMCwFvoZXv9NvRnIKqHSckUyQdJrtfexPqm5LGVAuNdVaofcCVywfpexLYD"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    92
    "CsDOnTvnioqKzGXdzNQMV9tvkJEyUITyeOAjpYyAc9gxYc/GWyK2HYDF4xog6fV6h1i8FwCo"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    93
    "LK/EncwhkWGxEH9AXLMXM2H1CpQBifI3yeapZ+70d43+cSo4+95yL23g8XiGFUWp3bVrV/Ty"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    94
    "5ctZnR2ddHZ08uxzz1K9eT1GRhJls1gFlsfieK+WpJ5e/3z7pcuXzmia1rJSs3xlOg8dOvTD"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    95
    "8fHx7wQCgb4tW7bMm6b55/Pnz+eGw+FFGJDT5iT1XRWlfxHMZ06+/Vz9dCAQeG9kZKR1x44d"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    96
    "nSdPnkyuZSAArbq6eqOiKAP9/f3xlpaWgra2tlei0eiryWSyKGKa2TcaL+muwcxU5aDf9Gi+"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    97
    "L0Oh0BehUOiaZVlnAoHAzFr7Ih75bVnVb2pqcvf09Phi0ei6+/rUC6lw1k0p5bSUctThcIwP"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    98
    "Dw/HnwT4P6CDl+TMvD0JAAAAAElFTkSuQmCC")
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
    99
    
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   100
    #----------------------------------------------------------------------
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   101
    stopicon = PyEmbeddedImage(
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   102
    "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAABPRJ"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   103
    "REFUSImdlllsVGUUx3/f/e4sd5iZLjNt6XSFdtgkjWFRePABDaCBGgjamIg81CU0aoxbRHww"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   104
    "+EDkhWjEB5rYGEMUxQTCJg8EoQ2BbgrFCNJWltplgC63naEzd+bO50NLLVAq4STfwz3nfP/f"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   105
    "PSf3O98VSikmmQ94HFgDLDdNM1BfX5955swZX0tLi5FKpbSSkpJkaWlpIhQKdVdVVX2XkZFx"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   106
    "EpBAEGgHLgH/iSqlUEoJpVSBUqpaKXXYNM0r1dXVt6WUajx5ylVYWKi2bdvWY1nWUaXUgQ0b"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   107
    "NtRWVFQUjmuilEKMV5ALvAhsPHDgQFlNTU2gr69Pk1JSFMphTomfRXO8+A243i/oG9I5f6mX"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   108
    "K1evAxAOhykrKxs9duyYkZ+f/0lPT8/2OwXogBtYDKzYunVr0c6dO3Ns26akMIcdbxQyv0hy"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   109
    "rwmh8Bas5/eb89nxRR1NTU20t7cb4x1ZPjlXB2YBiw8ePJhdW1tb4DEMXng6xJtrPQhxn/Y4"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   110
    "QSM12o89fJnOjst3hXRdLxZCGEqpUQANmBuJRLK3bNmy1OFwUPVMPm9VTiMOqLRNYvg6+shv"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   111
    "rFoWwutxTcSklGEpZXDiXZRSr6xbt+6dtra2xUW5Lr7c7EUD3Flhwmu/nRKQGO7CvHaCwY7D"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   112
    "WNEeEmoGe0+PWnuOXHWmrBTl5eW7GxsbNwPoFy5ccHV2di7yzjD4uMqDNtFngZDOKQHurDLc"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   113
    "WWX4Qk/ScfRVXCLGoorU8J+z5gbjxyWGYbwshPhQKTWi7d+/P9/pdIp5xR5C2Q9uS1fDp3T+"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   114
    "8jo32uomfJ7cCtzZYQCOjKhYOmgxI+hBSumdOXPmegDt4sWLxU6nk3BIf7A6EB/sIBY5R/+l"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   115
    "nyd8yrZIRnvZ02tduxVwFQOojBQAfr9/tRBC103TLHe5XMwpSEwLKFj2EWk7gRGYOyaeTtJ4"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   116
    "pnZk+7UhM5FtlAhAIMYAESd+v78IyNWBYqfTSUF2fFqAJ7firufhRFSdTg36rIDhQ6XHnAI0"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   117
    "L1iWhWEYASBLl1L+JaWcfSuqk+u3AUikRer4ADffg/w7gt80fs35r34k3BYh2xNAarooAJ4d"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   118
    "vsHgaP8EWMR17GiaVo8r0+Fw6DrQDDzXO+RgQSjBUFIlPh+wB0vLZD6TrLWrkWRXB29fGAK6"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   119
    "pql1rNXVmrCklJYGtAgh6DXHDsuuG8k+O9M5895tq+atpSwwZ9o2TjZlWTGl1IAGNEsp1c1E"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   120
    "DiMqmI7nZRQJ7j/G6xZWMS/vsYcGkEzG4vF4RDt06FBfZmbmwR/27uOD3f1aVk+BljMjD6lp"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   121
    "/DN07a4VTYw8tL4rrQZgbNixadOm90+dOvX82cZmcbaxmWBukOVrlvJudw1R1xDp8a+kuPM6"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   122
    "Gx8S4LXtCIwNO1asWDGYl5dn3gneunGLc7/+gTttoAntQRrTmgMmpimAHQwGOycnlBaX4rUz"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   123
    "8LszMRweXLr7kWB35oMdCAT+1jRt0cqVK6Otra2+hvoGGuobWPLEEsoXzkbPkLhvR4CBRwJY"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   124
    "Xq/3SGVlZbq7u7utsrJyxDTNz06cOJHZ0tRCS1MLAKuRwNQT9v8AyV27dn1fXl7eqmlae11d"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   125
    "XXLfvn0/+Xy+l6LR6Gu2befFYjFfzrk2FzeHp7mK7jdxz2/LffGamhpvc3NzyLKsbFd3z1PG"
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   126
    "aHyBTKdjum0POGzbFAp7qo0xVOtJZdf/C/wRDnL5FYGSAAAAAElFTkSuQmCC")
262
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   127
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   128
def usage():
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   129
    print """
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   130
Usage of Beremiz PLC execution service :\n
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   131
%s {[-n name] [-i ip] [-p port]|-h|--help} working_dir
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   132
           -n        - zeroconf service name
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   133
           -i        - ip of interface to bind to (x.x.x.x)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   134
           -p        - port number
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   135
           -h        - print this help text and quit
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   136
           
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   137
           working_dir - directory where are stored PLC files
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   138
"""%sys.argv[0]
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   139
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   140
try:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   141
    opts, args = getopt.getopt(sys.argv[1:], "i:p:n:h")
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   142
except getopt.GetoptError, err:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   143
    # print help information and exit:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   144
    print str(err) # will print something like "option -a not recognized"
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   145
    usage()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   146
    sys.exit(2)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   147
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   148
# default values
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   149
ip = ""
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   150
port = 3000
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   151
name = os.environ[{
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   152
     "linux2":"USER",
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   153
     "win32":"USERNAME",
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   154
     }.get(sys.platform, "USER")]
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   155
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   156
for o, a in opts:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   157
    if o == "-h":
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   158
        usage()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   159
        sys.exit()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   160
    elif o == "-i":
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   161
        if len(a.split(".")) == 4 or a == "localhost":
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   162
            ip = a
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   163
    elif o == "-p":
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   164
        # port: port that the service runs on
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   165
        port = int(a)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   166
    elif o == "-n":
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   167
        name = a
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   168
    else:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   169
        usage()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   170
        sys.exit()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   171
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   172
if len(args) > 1:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   173
    usage()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   174
    sys.exit()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   175
elif len(args) == 1:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   176
    WorkingDir = args[0]
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   177
elif len(args) == 0:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   178
    WorkingDir = os.getcwd()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   179
    args=[WorkingDir]
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   180
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   181
from runtime import PLCObject, ServicePublisher
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   182
import Pyro.core as pyro
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   183
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   184
if not os.path.isdir(WorkingDir):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   185
    os.mkdir(WorkingDir)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   186
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   187
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   188
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   189
class Server():
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   190
    def __init__(self, name, ip, port, workdir, args):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   191
        self.continueloop = True
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   192
        self.daemon = None
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   193
        self.name = name
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   194
        self.ip = ip
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   195
        self.port = port
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   196
        self.workdir = workdir
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   197
        self.args = args
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   198
        self.plcobj = None
263
0bc32427a459 fix bug in beremiz_service with the MainLoop
greg
parents: 262
diff changeset
   199
        self.servicepublisher = None
269
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   200
        self.statuschange = None
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   201
    
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   202
    def Loop(self, statuschange=None):
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   203
        self.statuschange = statuschange
262
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   204
        while self.continueloop:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   205
            self.Start()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   206
        
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   207
    def Restart(self):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   208
        self.Stop()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   209
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   210
    def Quit(self):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   211
        self.continueloop = False
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   212
        self.Stop()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   213
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   214
    def Start(self):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   215
        pyro.initServer()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   216
        self.daemon=pyro.Daemon(host=self.ip, port=self.port)
269
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   217
        self.plcobj = PLCObject(self.workdir, self.daemon, self.args, self.statuschange)
262
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   218
        uri = self.daemon.connect(self.plcobj,"PLCObject")
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   219
    
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   220
        print "The daemon runs on port :",self.port
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   221
        print "The object's uri is :",uri
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   222
        print "The working directory :",self.workdir
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   223
        
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   224
        # Configure and publish service
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   225
        # Not publish service if localhost in address params
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   226
        if self.ip != "localhost" and self.ip != "127.0.0.1":    
263
0bc32427a459 fix bug in beremiz_service with the MainLoop
greg
parents: 262
diff changeset
   227
            print "Publish service on local network"
0bc32427a459 fix bug in beremiz_service with the MainLoop
greg
parents: 262
diff changeset
   228
            self.servicepublisher = ServicePublisher.ServicePublisher()            
262
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   229
            self.servicepublisher.RegisterService(self.name, self.ip, self.port)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   230
        
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   231
        sys.stdout.flush()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   232
        
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   233
        self.daemon.requestLoop()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   234
    
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   235
    def Stop(self):
263
0bc32427a459 fix bug in beremiz_service with the MainLoop
greg
parents: 262
diff changeset
   236
        if self.servicepublisher is not None:
0bc32427a459 fix bug in beremiz_service with the MainLoop
greg
parents: 262
diff changeset
   237
            self.servicepublisher.UnRegisterService()
0bc32427a459 fix bug in beremiz_service with the MainLoop
greg
parents: 262
diff changeset
   238
            del self.servicepublisher
262
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   239
        self.daemon.shutdown(True)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   240
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   241
class ParamsEntryDialog(wx.TextEntryDialog):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   242
    if wx.VERSION < (2, 6, 0):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   243
        def Bind(self, event, function, id = None):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   244
            if id is not None:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   245
                event(self, id, function)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   246
            else:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   247
                event(self, function)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   248
    
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   249
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   250
    def __init__(self, parent, message, caption = "Please enter text", defaultValue = "", 
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   251
                       style = wx.OK|wx.CANCEL|wx.CENTRE, pos = wx.DefaultPosition):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   252
        wx.TextEntryDialog.__init__(self, parent, message, caption, defaultValue, style, pos)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   253
        
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   254
        self.Tests = []
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   255
        if wx.VERSION >= (2, 8, 0):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   256
            self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetAffirmativeId())
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   257
        elif wx.VERSION >= (2, 6, 0):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   258
            self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetSizer().GetItem(3).GetSizer().GetAffirmativeButton().GetId())
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   259
        else:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   260
            self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetSizer().GetItem(3).GetSizer().GetChildren()[0].GetSizer().GetChildren()[0].GetWindow().GetId())
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   261
    
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   262
    def OnOK(self, event):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   263
        value = self.GetValue()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   264
        texts = {"value" : value}
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   265
        for function, message in self.Tests:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   266
            if not function(value):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   267
                message = wx.MessageDialog(self, message%texts, "Error", wx.OK|wx.ICON_ERROR)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   268
                message.ShowModal()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   269
                message.Destroy()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   270
                return
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   271
        self.EndModal(wx.ID_OK)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   272
    
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   273
    def GetValue(self):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   274
        return self.GetSizer().GetItem(1).GetWindow().GetValue()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   275
    
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   276
    def SetTests(self, tests):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   277
        self.Tests = tests
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   278
        
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   279
class DemoTaskBarIcon(wx.TaskBarIcon):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   280
    TBMENU_CHANGE_NAME = wx.NewId()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   281
    TBMENU_CHANGE_PORT = wx.NewId()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   282
    TBMENU_CHANGE_INTERFACE = wx.NewId()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   283
    TBMENU_CHANGE_WD = wx.NewId()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   284
    TBMENU_QUIT = wx.NewId()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   285
    
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   286
    def __init__(self, pyroserver):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   287
        wx.TaskBarIcon.__init__(self)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   288
        # Set the image
269
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   289
        self.UpdateIcon(None)
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   290
262
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   291
        # bind some events
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   292
        self.Bind(wx.EVT_MENU, self.OnTaskBarChangeName, id=self.TBMENU_CHANGE_NAME)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   293
        self.Bind(wx.EVT_MENU, self.OnTaskBarChangeInterface, id=self.TBMENU_CHANGE_INTERFACE)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   294
        self.Bind(wx.EVT_MENU, self.OnTaskBarChangePort, id=self.TBMENU_CHANGE_PORT)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   295
        self.Bind(wx.EVT_MENU, self.OnTaskBarChangeWorkingDir, id=self.TBMENU_CHANGE_WD)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   296
        self.Bind(wx.EVT_MENU, self.OnTaskBarQuit, id=self.TBMENU_QUIT)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   297
    
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   298
    def CreatePopupMenu(self):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   299
        """
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   300
        This method is called by the base class when it needs to popup
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   301
        the menu for the default EVT_RIGHT_DOWN event.  Just create
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   302
        the menu how you want it and return it from this function,
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   303
        the base class takes care of the rest.
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   304
        """
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   305
        menu = wx.Menu()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   306
        menu.Append(self.TBMENU_CHANGE_NAME, "Change Name")
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   307
        menu.Append(self.TBMENU_CHANGE_INTERFACE, "Change IP of interface to bind")
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   308
        menu.Append(self.TBMENU_CHANGE_PORT, "Change Port Number")
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   309
        menu.AppendSeparator()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   310
        menu.Append(self.TBMENU_CHANGE_WD, "Change working directory")
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   311
        menu.Append(self.TBMENU_QUIT, "Quit")
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   312
        return menu
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   313
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   314
    def MakeIcon(self, img):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   315
        """
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   316
        The various platforms have different requirements for the
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   317
        icon size...
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   318
        """
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   319
        if "wxMSW" in wx.PlatformInfo:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   320
            img = img.Scale(16, 16)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   321
        elif "wxGTK" in wx.PlatformInfo:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   322
            img = img.Scale(22, 22)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   323
        # wxMac can be any size upto 128x128, so leave the source img alone....
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   324
        icon = wx.IconFromBitmap(img.ConvertToBitmap() )
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   325
        return icon
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   326
    
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   327
    def OnTaskBarChangeInterface(self,evt):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   328
        dlg = ParamsEntryDialog(None, "Enter the ip of the interface to bind", defaultValue=pyroserver.ip)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   329
        dlg.SetTests([(re.compile('\d{1,3}(?:\.\d{1,3}){3}$').match, "Ip is not valid!"),
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   330
                       ( lambda ip :len([x for x in ip.split(".") if 0 <= int(x) <= 255]) == 4, "Ip is not valid!")
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   331
                       ])
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   332
        if dlg.ShowModal() == wx.ID_OK:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   333
            pyroserver.ip = dlg.GetValue()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   334
            pyroserver.Stop()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   335
            
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   336
    def OnTaskBarChangePort(self,evt):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   337
        dlg = ParamsEntryDialog(None, "Enter a port number ", defaultValue=str(pyroserver.port))
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   338
        dlg.SetTests([(UnicodeType.isdigit, "Port number must be an integer!"), (lambda port : 0 <= int(port) <= 65535 , "Port number must be 0 <= port <= 65535!")])
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   339
        if dlg.ShowModal() == wx.ID_OK:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   340
            pyroserver.port = int(dlg.GetValue())
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   341
            pyroserver.Stop()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   342
            
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   343
    
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   344
    def OnTaskBarChangeWorkingDir(self,evt):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   345
        dlg = wx.DirDialog(None, "Choose a working directory ", pyroserver.workdir, wx.DD_NEW_DIR_BUTTON)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   346
        if dlg.ShowModal() == wx.ID_OK:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   347
            pyroserver.workdir = dlg.GetPath()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   348
            pyroserver.Stop()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   349
            
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   350
    def OnTaskBarChangeName(self,evt):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   351
        dlg = ParamsEntryDialog(None, "Enter a name ", defaultValue=pyroserver.name)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   352
        dlg.SetTests([(lambda name : len(name) is not 0 , "Name must not be null!")])
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   353
        if dlg.ShowModal() == wx.ID_OK:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   354
            pyroserver.name = dlg.GetValue()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   355
            pyroserver.Restart()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   356
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   357
    def OnTaskBarQuit(self,evt):
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   358
        pyroserver.Quit()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   359
        self.RemoveIcon()
263
0bc32427a459 fix bug in beremiz_service with the MainLoop
greg
parents: 262
diff changeset
   360
        wx.GetApp().ExitMainLoop()
262
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   361
        
269
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   362
    def UpdateIcon(self, plcstatus):
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   363
        if plcstatus is "Started" :
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   364
            currenticon = self.MakeIcon(starticon.GetImage())
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   365
        elif plcstatus is "Stopped":
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   366
            currenticon = self.MakeIcon(stopicon.GetImage())
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   367
        else:
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   368
            currenticon = self.MakeIcon(defaulticon.GetImage())
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   369
        self.SetIcon(currenticon, "Beremiz Service")
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   370
        
262
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   371
pyroserver = Server(name, ip, port, WorkingDir, args)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   372
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   373
if havewx:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   374
    app=wx.App(redirect=False)
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   375
    taskbar_instance = DemoTaskBarIcon(pyroserver)
269
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   376
    def statuschange(status):
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   377
        wx.CallAfter(taskbar_instance.UpdateIcon,status)
d29c5f71574f add a TaskBarIcon to configure beremiz_service and display plc states (started, stopped)
greg
parents: 263
diff changeset
   378
    pyro_thread=Thread(target=pyroserver.Loop, args=[statuschange])
262
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   379
    pyro_thread.start()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   380
    app.MainLoop()
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   381
else:
141a7145c099 add taskbaricon to beremiz_service.
greg
parents: 217
diff changeset
   382
    pyroserver.Loop()