File: applet-coherence

package info (click to toggle)
coherence 0.6.6.2-8
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 2,436 kB
  • ctags: 4,206
  • sloc: python: 27,187; xml: 5,207; sh: 59; makefile: 26
file content (102 lines) | stat: -rw-r--r-- 3,206 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#! /usr/bin/python
# -*- coding: utf-8 -*-
# Applet for Coherence
# Copyright (C) 2008 Nicolas Lécureuil <neoclust@mandriva.org>
# Copyright (C) 2008 Helio Chissini de Castro <helio@mandriva.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# TODO : Add a configuration windows to allow to change name or plugins before launching
#        the server and save a configuration file in ~/.coherence
#        Use the name and the plugin   given as commandline arguments
#

import time
import os
import subprocess
import signal
import sys
import socket

from pkg_resources import resource_filename
icon = resource_filename(__name__, '../../misc/Desktop Applet/tango-system-file-manager.png')
# this ../.. is evil, I know :-(
# there must be a better way
if not os.path.exists(icon):
    icon = "/usr/share/pyshared/misc/Desktop-Applet/tango-system-file-manager.png"

from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4 import QtCore


proc = None
host = None
user = None
confFile = None
bool = False

def startCoherence():
    global proc
    global host
    global user
    global confFile
    global bool
    host = socket.gethostname()
    user = os.environ["USER"]
    if ( confFile ):
        if os.path.isfile( confFile ):
            proc = subprocess.Popen(["/usr/bin/coherence"])
    else:
        proc = subprocess.Popen(["/usr/bin/coherence","--plugin=backend:FSStore,name:%s@%s" % ( user, host )])
    startAction.setDisabled(1)
    stopAction.setDisabled(0)
    bool = True

def stopCoherence():
    global bool
    os.kill( proc.pid, signal.SIGTERM )
    stopAction.setDisabled(1)
    startAction.setDisabled(0)
    bool = False

def quitApplet():
    if bool == True:
        stopCoherence()

if __name__ == "__main__":
    app = QApplication(sys.argv)


    menu = QMenu()
    startAction = menu.addAction('Start Coherence Server')
    stopAction = menu.addAction('Stop Coherence Server')
    quitAction = menu.addAction('Quit')

    systrayIcon = QString(icon)
    icon = QIcon(systrayIcon)
    quitAction.connect( quitAction, SIGNAL("triggered()"), quitApplet)
    quitAction.connect( quitAction, SIGNAL("triggered()"), app, QtCore.SLOT("quit()"))
    startAction.connect( startAction, SIGNAL("triggered()"), startCoherence)
    stopAction.connect( stopAction, SIGNAL("triggered()"), stopCoherence)
    stopAction.setDisabled(1)

    tray = QSystemTrayIcon(icon)
    if (tray.isSystemTrayAvailable()):
        tray.setContextMenu(menu)
        tray.show()
        tray.setToolTip("Coherence control Applet")

    sys.exit(app.exec_())