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

Last change on this file since 5451 was 5451, checked in by hectorgh, 3 years ago

wip

  • Property svn:executable set to *
File size: 2.5 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               
24                self.countdown=wait_time*60
25                self.current_counter=0
26               
27                self.start_gui()
28               
29               
30        #def init
31       
32        def start_gui(self):
33
34                builder=Gtk.Builder()
35                builder.set_translation_domain('lliurex-shutdowner-common')
36                builder.add_from_file("/usr/share/lliurex-shutdowner/rsrcs/shutdowner-lliurex-dialog.ui")
37                self.main_window=builder.get_object("shutdown_window")
38               
39                self.msg_label=builder.get_object("msg_label")
40                self.pbar=builder.get_object("progressbar")
41                self.buttons_box=builder.get_object("buttons_box")
42                self.cancel_button=builder.get_object("cancel_button")
43                self.shutdown_button=builder.get_object("shutdown_button")
44               
45                self.init_values()
46                self.connect_signals()
47               
48                GObject.threads_init()
49                Gtk.main()
50               
51        #def start_gui
52       
53        def init_values(self):
54               
55                ret=os.system("lliurex-version -t server 2>/dev/null")
56               
57                if ret!=0:
58                        self.buttons_box.hide()
59                       
60                self.msg_label.set_text(self.msg%self.countdown)
61               
62                # The way this is beeing executed, shutdown -h now is missing authentication to work
63                self.shutdown_button.hide()
64               
65                self.main_window.show()
66               
67        #def set_values
68       
69        def connect_signals(self):
70               
71                self.cancel_button.connect("clicked",self.cancel_clicked)
72                self.shutdown_button.connect("clicked",self.shutdown_clicked)
73                self.main_window.connect("destroy",Gtk.main_quit)
74                GLib.timeout_add(1000,self.update_pbar)
75               
76        #def connect_signals
77       
78        def cancel_clicked(self,button):
79               
80                command="shutdown -c"
81                os.system(command)
82                Gtk.main_quit()
83               
84        #def cancel_clicked
85       
86        def shutdown_clicked(self,button):
87               
88                command="shutdown -c; shutdown -h now"
89                os.system(command)
90                Gtk.main_quit()
91               
92        #def shutdown_clicked
93       
94        def update_pbar(self):
95               
96                if self.countdown-self.current_counter > 0 :
97               
98                        self.current_counter+=1
99                        p=self.current_counter*1.0/self.countdown
100                        self.pbar.set_fraction(p)
101                        self.msg_label.set_text(self.msg%(self.countdown-self.current_counter))
102                        return True
103                       
104                return False
105               
106        #def update_pbar
107       
108       
109       
110#class ShutdownDialog
111
112if __name__=="__main__":
113       
114        try:
115                sd=ShutdownDialog(int(sys.argv[1]))
116        except Exception as e:
117                print(e)
Note: See TracBrowser for help on using the repository browser.