source: lliurex-shutdowner/trunk/fuentes/lliurex-shutdowner-common.install/usr/sbin/shutdown-lliurex-dialog @ 5448

Last change on this file since 5448 was 5448, checked in by hectorgh, 19 months ago

wip

  • Property svn:executable set to *
File size: 2.3 KB
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*
3
4import gi
5gi.require_version('Gtk', '3.0')
6from gi.repository import Gtk,GObject, GLib
7
8import signal
9import gettext
10import os
11import time
12import sys
13
14signal.signal(signal.SIGINT, signal.SIG_DFL)
15gettext.textdomain('lliurex-shutdowner-common')
16_ = gettext.gettext
17
18class ShutdownDialog:
19       
20        def __init__(self,wait_time):
21               
22                self.msg=_("System will shutdown in %s seconds. Please, save your files.")
23                self.countdown=wait_time*60
24                self.current_counter=0
25                self.start_gui()
26               
27        #def init
28       
29        def start_gui(self):
30
31                builder=Gtk.Builder()
32                builder.set_translation_domain('lliurex-shutdowner-common')
33                builder.add_from_file("/usr/share/lliurex-shutdowner/rsrc/shutdowner-lliurex-dialog.ui")
34                self.main_window=builder.get_object("shutdown_window")
35               
36                self.msg_label=builder.get_object("msg_label")
37                self.pbar=builder.get_object("progressbar")
38                self.buttons_box=builder.get_object("buttons_box")
39                self.cancel_button=builder.get_object("cancel_button")
40                self.shutdown_button=builder.get_object("shutdown_button")
41               
42                self.init_values()
43                self.connect_signals()
44               
45                GObject.threads_init()
46                Gtk.main()
47               
48        #def start_gui
49       
50        def init_values(self):
51               
52                ret=os.system("lliurex-version -t server 2>/dev/null")
53               
54                if ret!=0:
55                        self.buttons_box.hide()
56                       
57                self.msg_label.set_text(self.msg%self.countdown)
58               
59                self.main_window.show()
60               
61        #def set_values
62       
63        def connect_signals(self):
64               
65                self.cancel_button.connect("clicked",self.cancel_clicked)
66                self.shutdown_button.connect("clicked",self.shutdown_clicked)
67                self.main_window.connect("destroy",Gtk.main_quit)
68                GLib.timeout_add(1000,self.update_pbar)
69               
70        #def connect_signals
71       
72        def cancel_clicked(self,button):
73               
74                command="shutdown -c"
75                os.system(command)
76                Gtk.main_quit()
77               
78        #def cancel_clicked
79       
80        def shutdown_clicked(self,button):
81               
82                command="shutdown -h now"
83                os.system(command)
84                Gtk.main_quit()
85               
86        #def shutdown_clicked
87       
88        def update_pbar(self):
89               
90                if self.countdown-self.current_counter > 0 :
91               
92                        self.current_counter+=1
93                        p=self.current_counter*1.0/self.countdown
94                        self.pbar.set_fraction(p)
95                        self.msg_label.set_text(self.msg%(self.countdown-self.current_counter))
96                        return True
97                       
98                return False
99               
100        #def update_pbar
101       
102       
103       
104#class ShutdownDialog
105
106if __name__=="__main__":
107       
108        try:
109                sd=ShutdownDialog(int(sys.argv[1]))
110        except Exception as e:
111                print(e)
Note: See TracBrowser for help on using the repository browser.