source: lliurex-up/trunk/fuentes/lliurex-up-gui/lliurex-up @ 2642

Last change on this file since 2642 was 2642, checked in by jrpelegrina, 3 years ago

WIP in gui

File size: 4.3 KB
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3
4import gi
5gi.require_version('Gtk', '3.0')
6gi.require_version('PangoCairo', '1.0')
7gi.require_version('Vte', '2.91')
8
9import cairo
10import os
11import threading
12import ConfigParser
13import platform
14import subprocess
15import sys
16
17from gi.repository import Gtk, Gdk, GObject, GLib, PangoCairo, Pango, Vte
18
19import signal
20signal.signal(signal.SIGINT, signal.SIG_DFL)
21
22
23
24RSRC_DIR="rsrc/"
25
26
27class LliurexUp:
28
29        def __init__(self):
30
31                self.start_gui()
32
33        def start_gui(self):
34               
35                builder=Gtk.Builder()
36               
37                glade_path=RSRC_DIR+"lliurex-up.ui"
38                builder.add_from_file(glade_path)
39
40
41
42
43                self.window=builder.get_object("main_window")
44                self.update_box=builder.get_object("update_box")
45               
46                self.version_label=builder.get_object("version_label")
47                self.number_packages_label=builder.get_object("number_packages_label")
48                self.size_update_label=builder.get_object("size_update_label")
49                self.view_packages_button_box=builder.get_object("view_packages_button_box")
50                self.view_packages_eb=builder.get_object("view_packages_eventbox")
51                self.view_packages_label=builder.get_object("view_packages_label")
52
53                self.update_button=builder.get_object("update_button")
54                self.update_button.connect("button-press-event",self.execute)
55
56
57                self.update_label=builder.get_object("update_label")
58
59               
60                self.terminal_label=builder.get_object("terminal_label")
61                self.viewport=builder.get_object("viewport")
62                self.terminal_scrolled=builder.get_object("terminalScrolledWindow")
63                self.vterminal=Vte.Terminal()
64                #self.vterminal.connect ("child-exited",self.update_done)
65                font = Pango.FontDescription("monospace normal 10")
66                self.vterminal.set_font(font)
67        #self.vterminal.set_font(font)
68                self.terminal_scrolled.add(self.vterminal)
69
70                self.pbar_label=builder.get_object("pbar_label")
71                self.pbar=builder.get_object("progressbar")
72
73                self.cancel_button_box=builder.get_object("cancel_button_box")
74                self.cancel_eb=builder.get_object("cancel_button_eventbox")
75                self.cancel_label=builder.get_object("cancel_button_label")
76
77
78
79                #self.window.add(self.updatebox)
80                self.window.add(self.update_box)
81
82                self.window.show_all()
83                self.terminal_scrolled.hide()
84                self.viewport.hide()
85                self.terminal_label.hide()
86                self.pbar_label.hide()
87                self.pbar.hide()
88                self.window.connect("destroy",self.quit)
89
90                self.set_css_info()
91
92                Gtk.main()
93
94
95        def set_css_info(self):
96       
97                css = """
98
99
100                #WHITE_BACKGROUND {
101                        background-image:-gtk-gradient (linear, left top, left bottom, from (#ffffff),  to (#ffffff));;
102               
103                }
104
105                #BUTTON_LABEL{
106                        color:white;
107                        font: Roboto 10;
108                }
109
110                #DISABLED_BUTTON_OVER{
111                        background-image:-gtk-gradient (linear, left top, left bottom, from (#888888),  to (#888888));;
112                }
113               
114                #DISABLED_BUTTON{
115                        background-image:-gtk-gradient (linear, left top, left bottom, from (#666666),  to (#666666));;
116                }
117               
118                #CANCEL_BUTTON{
119                        background-image:-gtk-gradient (linear, left top, left bottom, from (#D32F2F),  to (#D32F2F));;
120                }
121               
122                #CANCEL_BUTTON_OVER{
123                        background-image:-gtk-gradient (linear, left top, left bottom, from (#F44336),  to (#F44336));;
124                }
125
126                #BUTTON_COLOR {
127                        background-image:-gtk-gradient (linear, left top, left bottom, from (#448AFF),  to (#448AFF));;
128               
129                }       
130                #BLUE_FONT {
131                        color: #3366cc;
132                        font: Roboto 10;
133                       
134                }       
135               
136
137                #LABEL_OPTION{
138               
139                        color: #808080;
140                        font: Roboto 11;
141                }
142               
143                """
144
145                self.style_provider=Gtk.CssProvider()
146                self.style_provider.load_from_data(css)
147                Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),self.style_provider,Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
148                self.view_packages_button_box.set_name("BUTTON_COLOR")
149                self.view_packages_label.set_name("BUTTON_LABEL")
150
151                self.cancel_button_box.set_name("BUTTON_COLOR")
152                self.cancel_label.set_name("BUTTON_LABEL")     
153
154                self.version_label.set_name("LABEL_OPTION")     
155
156        def execute(self, widget, event=None):
157                self.viewport.show()
158                self.terminal_scrolled.show()
159                self.terminal_label.show()
160                self.vterminal.spawn_sync(
161                        Vte.PtyFlags.DEFAULT,
162                        os.environ['HOME'],
163                        ["/usr/sbin/dpkg-reconfigure", "xdm"],
164                        [],
165                        GLib.SpawnFlags.DO_NOT_REAP_CHILD,
166                        None,
167                        None,
168                )
169                #self.command='sudo apt-get update\n'
170                #length=len(self.command)
171                #self.vterminal.feed_child(self.command, length)
172                self.pbar_label.show()
173                self.pbar.show()
174                self.pbar.pulse()
175               
176
177        def quit(self,widget,event=None):
178               
179                Gtk.main_quit() 
180
181#class LliurexMirror
182
183at=LliurexUp()         
Note: See TracBrowser for help on using the repository browser.