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

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

WIP in new gui

File size: 4.2 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
138                """
139
140                self.style_provider=Gtk.CssProvider()
141                self.style_provider.load_from_data(css)
142                Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),self.style_provider,Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
143                self.view_packages_button_box.set_name("BUTTON_COLOR")
144                self.view_packages_label.set_name("BUTTON_LABEL")
145
146                self.cancel_button_box.set_name("BUTTON_COLOR")
147                self.cancel_label.set_name("BUTTON_LABEL")     
148
149
150        def execute(self, widget, event=None):
151                self.viewport.show()
152                self.terminal_scrolled.show()
153                self.terminal_label.show()
154                self.vterminal.spawn_sync(
155                        Vte.PtyFlags.DEFAULT,
156                        os.environ['HOME'],
157                        ["/usr/sbin/dpkg-reconfigure", "xdm"],
158                        [],
159                        GLib.SpawnFlags.DO_NOT_REAP_CHILD,
160                        None,
161                        None,
162                )
163                #self.command='sudo apt-get update\n'
164                #length=len(self.command)
165                #self.vterminal.feed_child(self.command, length)
166                self.pbar_label.show()
167                self.pbar.show()
168                self.pbar.pulse()
169               
170
171        def quit(self,widget,event=None):
172               
173                Gtk.main_quit() 
174
175#class LliurexMirror
176
177at=LliurexUp()         
Note: See TracBrowser for help on using the repository browser.