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

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

trying to support thin clients as well

  • Property svn:executable set to *
File size: 2.6 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/rsrc/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                is_thin=os.system("lliurex-version -x thin")
58               
59                if ret!=0 or is_thin==0:
60                        self.buttons_box.hide()
61                       
62                self.msg_label.set_text(self.msg%self.countdown)
63               
64                # The way this is beeing executed, shutdown -h now is missing authentication to work
65                self.shutdown_button.hide()
66               
67                self.main_window.show()
68               
69        #def set_values
70       
71        def connect_signals(self):
72               
73                self.cancel_button.connect("clicked",self.cancel_clicked)
74                self.shutdown_button.connect("clicked",self.shutdown_clicked)
75                self.main_window.connect("delete-event",self.close_window_clicked)
76                GLib.timeout_add(1000,self.update_pbar)
77               
78        #def connect_signals
79       
80        def close_window_clicked(self,widget,event):
81               
82                return True
83               
84        #def close_window_clicked
85       
86        def cancel_clicked(self,button):
87               
88                command="shutdown -c"
89                os.system(command)
90                Gtk.main_quit()
91               
92        #def cancel_clicked
93       
94        def shutdown_clicked(self,button):
95               
96                command="shutdown -c; shutdown -h now"
97                os.system(command)
98                Gtk.main_quit()
99               
100        #def shutdown_clicked
101       
102        def update_pbar(self):
103               
104                if self.countdown-self.current_counter > 0 :
105               
106                        self.current_counter+=1
107                        p=self.current_counter*1.0/self.countdown
108                        self.pbar.set_fraction(p)
109                        self.msg_label.set_text(self.msg%(self.countdown-self.current_counter))
110                        return True
111                       
112                return False
113               
114        #def update_pbar
115       
116       
117       
118#class ShutdownDialog
119
120if __name__=="__main__":
121       
122        try:
123                sd=ShutdownDialog(int(sys.argv[1]))
124        except Exception as e:
125                print(e)
Note: See TracBrowser for help on using the repository browser.