source: lliurex-easy-sites/trunk/fuentes/lliurex-easy-sites.install/usr/sbin/lliurex-easy-sites @ 531

Last change on this file since 531 was 531, checked in by jrpelegrina, 5 years ago

First release to xenial

File size: 6.4 KB
Line 
1#!/usr/bin/env python
2
3import sys
4import os
5import os.path
6import signal
7from gi.repository import Gtk, Gdk,GObject,GLib
8from subprocess import call
9import subprocess
10import locale
11import shutil
12import gettext
13
14_=gettext.gettext
15
16
17
18gettext.textdomain('lliurex-easy-sites')
19
20signal.signal(signal.SIGINT, signal.SIG_DFL)
21
22class LliurexEasySites:
23
24        EASY_SITES_GLADE="/usr/share/lliurex-easy-sites/rsrc/lliurex-easy-sites.glade"
25        EASY_SITES_GATHERER_GLADE="/usr/share/lliurex-easy-sites/rsrc/lliurex-easy-sites-gatherer.glade"
26       
27        def __init__(self):
28               
29                self.easy_sites={}
30                self.button_counter=0
31                self.scroll_me=False
32               
33        #def init
34
35       
36        def close_window(self,widget):
37
38                Gtk.main_quit()
39                sys.exit(0)
40
41        #def close_window
42       
43       
44        def gatherer_close_window(self,widget):
45
46                self.windowGatherer.destroy()
47
48        #def close_window
49       
50       
51        def gatherer_add_site(self,widget):
52               
53               
54                print(self.title.text)
55               
56        #def gatherer_add_site(self,widget)     
57       
58       
59        def easy_sites_click(self,widget,id):
60               
61                print self.easy_sites[id]
62                self.delete_button(id)
63               
64        #def easy_sites_click
65       
66       
67        def addButtonSite(self,widget,easy_site=None):
68
69                self.build_gatherer()
70               
71        #def addButtonSite
72       
73       
74        def add_site(self,easy_site):
75               
76                self.button_counter+=1
77                id=self.button_counter
78                # Create gtkBox
79                self.site_hbox=Gtk.HBox(True,1)
80                self.site_hbox.show()
81               
82                self.easy_sites[id]={}
83                self.easy_sites[id]["name"]=easy_site.setdefault("name","ola")
84                self.easy_sites[id]["description"]=easy_site.setdefault("description","ola")
85                #self.easy_sites[id]["button"]=Gtk.Button("Delete "+ self.easy_sites[id]["name"])
86                image = Gtk.Image(stock=Gtk.STOCK_DELETE)
87                self.easy_sites[id]["button"] = Gtk.Button(label="Delete "+ self.easy_sites[id]["name"], image=image)
88                self.easy_sites[id]["button"].show()
89                self.easy_sites[id]["button"].connect("clicked",self.easy_sites_click,id)
90               
91                # A partir de aqui con Miguel
92                self.label_info=Gtk.Label(self.easy_sites[id]["name"])
93                self.label_info.show()
94               
95                # Esto anyade a la caja
96                self.site_hbox.pack_start(self.label_info, True, True,1)
97                self.site_hbox.pack_start(self.easy_sites[id]["button"],False,False,5)
98               
99                self.boxButtons.pack_start(self.site_hbox, False,False,5)
100               
101                self.scroll_me=True
102
103        #def add_site()
104       
105       
106        def delete_button(self,id):
107                """
108                Delete button action
109                """
110                site_to_remove=self.easy_sites[id]["name"]
111                print(site_to_remove)
112               
113                dialog = Gtk.MessageDialog(self.window,Gtk.DialogFlags.MODAL,Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO, "Are you sure that you want remove ")
114                dialog.format_secondary_text(str(site_to_remove))
115                response = dialog.run()
116                if response == Gtk.ResponseType.YES:
117                        try:
118                                subprocess.check_output(["lliurex-easy-sites-cli", "remove",site_to_remove])
119                                try:
120                                        #self.boxButtons.remove(self.easy_sites[id]["button"])
121                                        self.boxButtons.remove(self.easy_sites[id]["button"].get_parent())
122                                except Exception as e:
123                                        print("No tenemos ni cochina idea")
124
125                        except Exception as e:
126                                print(str(e))
127                elif response == Gtk.ResponseType.NO:
128                        print ("QUESTION dialog closed by clicking NO button")
129                dialog.destroy()
130
131        #def delete_button
132       
133       
134        def button_add_site(self,widget):
135                """
136                Method to recollect information from gtk entries
137                and create the site.
138                """
139                description=""
140                title=self.entryTitle.get_text()
141                path=self.filechooserbuttonPath.get_filename()
142                description="easy-site"
143                if title != None and path != None:
144                        print("[ DEBUG ] "+ title +" Path "+ path + " Description "+description )
145                        easy_site={}
146                        easy_site["name"]=title
147                        easy_site["path"]=path
148                        easy_site["description"]=description
149                        try:
150                                # Execute the script
151                                os.system("lliurex-easy-sites-cli create %s %s %s"%(title,easy_site["path"],easy_site["description"]))
152                                #subprocess.check_output(["lliurex-easy-sites-cli", "create",title,easy_site["path"],easy_site["description"]])
153                        except Exception as e:
154                                print (str(e))
155                        lliurexEasySites.add_site(easy_site)
156               
157                self.windowGatherer.destroy()
158                       
159        #def button_add_site
160       
161        def build_gatherer(self):
162                """
163                Build a gatherer window information for a custom site
164                This gui replenish info like:
165                        Title
166                        Path
167                        Description
168                """
169       
170                builderGatherer = Gtk.Builder()
171                builderGatherer.set_translation_domain('lliurex-easy-sites')
172                builderGatherer.add_from_file(self.EASY_SITES_GATHERER_GLADE)
173               
174                self.windowGatherer=builderGatherer.get_object("windowGatherer")
175                self.windowGatherer.connect("destroy",lliurexEasySites.gatherer_close_window)
176
177                # Title
178                self.entryTitle=builderGatherer.get_object("entryTitle")
179                self.filechooserbuttonPath=builderGatherer.get_object("filechooserbuttonPath")
180                # Remove the filechooserbuttonPath previosluy selected
181                self.filechooserbuttonPath.set_filename("")
182               
183                #self.entryDescription=builderGatherer.get_object("entryDescription")
184
185                self.buttonAccept=builderGatherer.get_object("buttonAccept")
186                self.buttonAccept.connect("clicked",lliurexEasySites.button_add_site)
187               
188                self.windowGatherer.show_all()
189               
190        #def build_gatherer(self)
191       
192        def build_gui(self):
193                """
194                Create the gui for the LliureX Easy Sites
195                """
196       
197                builder = Gtk.Builder()
198                builder.set_translation_domain('lliurex-easy-sites')
199                builder.add_from_file(self.EASY_SITES_GLADE)
200               
201                self.window=builder.get_object("MainWindow")
202                self.window.connect("destroy",lliurexEasySites.close_window)
203               
204                # Afig button
205                self.buttonAdd=builder.get_object("buttonAdd")
206                self.buttonAdd.connect("clicked",self.addButtonSite)
207               
208                #boxButtons
209                self.boxButtons=builder.get_object("boxButtons")
210                self.boxButtons.connect("size-allocate",self.boxButtons_changed)
211               
212               
213                self.scroll=builder.get_object("scrolledwindow1")
214               
215                self.window.show_all()
216
217        #def build_gui
218       
219        def boxButtons_changed(self,widget,event):
220
221                if self.scroll_me:
222                        adj = self.scroll.get_vadjustment()
223                        adj.set_value( adj.get_upper() - adj.get_page_size() )
224                        self.scroll_me=False
225       
226        def replenish_sites(self):
227                """
228                Replenish sites from system
229                """
230                lista=subprocess.check_output(["lliurex-easy-sites-cli", "list"]).strip("\n")
231                print(lista)
232                for item in lista.split("\n"):
233                        if item!="":
234                                easy_site={}
235                                easy_site["name"]=str(item)
236                                lliurexEasySites.add_site(easy_site)
237        # def replenish sites
238       
239
240#class LliurexEasySites:       
241
242
243
244if __name__== "__main__":
245
246        lliurexEasySites=LliurexEasySites()
247        lliurexEasySites.build_gui()
248        lliurexEasySites.replenish_sites()
249        """
250        easy_site={}
251        easy_site["name"]="Una web muy chula"
252       
253        lliurexEasySites.add_site(easy_site)
254        easy_site["name"]="Otra web no tan guay"
255       
256        lliurexEasySites.add_site(easy_site)
257        """
258        GObject.threads_init()
259        Gtk.main()
260        GObject.threads_leave()
Note: See TracBrowser for help on using the repository browser.