source: lliurex-gdrive/trunk/fuentes/lliurex-gdrive-gui.install/usr/share/lliurex-gdrive/ProfileBox.py @ 4030

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

Wip in connect.Delete profile

File size: 20.0 KB
Line 
1#!/usr/bin/env python
2
3
4import gi
5gi.require_version('Gtk', '3.0')
6from gi.repository import Gtk, Pango, GdkPixbuf, Gdk, Gio, GObject,GLib
7
8import copy
9import gettext
10import Core
11
12import Dialog
13import time
14import threading
15import multiprocessing
16import sys
17import os
18import psutil
19
20import gettext
21gettext.textdomain('lliurex-gdrive')
22_ = gettext.gettext
23
24
25
26RSRC="/usr/share/lliurex-gdrive/"
27CSS_FILE="/usr/share/lliurex-gdrive/lliurex-gdrive.css"
28PROFILE_IMAGE=RSRC+"rsrc/profile.svg"
29FOLDER_IMAGE=RSRC+"rsrc/folder.svg"
30MOUNT_ON_IMAGE=RSRC+"rsrc/mount_on.svg"
31MOUNT_OFF_IMAGE=RSRC+"rsrc/mount_off.svg"
32EDIT_IMAGE=RSRC+"rsrc/edit.svg"
33DELETE_IMAGE=RSRC+"rsrc/trash.svg"
34MAX_RETRY_INTENTS=1200
35MSG_CHANGE_SUCCESS=_("Changes applied successfully")
36MSG_CHANGE_ERROR=_("An error ocurred applying changes. See log file for more information")
37
38
39class ProfileBox(Gtk.VBox):
40       
41        def __init__(self):
42               
43                Gtk.VBox.__init__(self)
44               
45                self.core=Core.Core.get_core()
46               
47                builder=Gtk.Builder()
48                builder.set_translation_domain('lliurex-gdrive')
49                ui_path=RSRC + "/rsrc/lliurex-gdrive.ui"
50                builder.add_from_file(ui_path)
51
52                self.main_box=builder.get_object("profile_data_box")
53                self.profiles_list_label=builder.get_object("profiles_list_label")
54                self.profile_list_box=builder.get_object("profile_list_box")
55                self.profile_list_vp=builder.get_object("profile_list_viewport")
56                self.msg_label=builder.get_object("msg_label")
57
58                image = Gtk.Image()
59                image.set_from_stock(Gtk.STOCK_ADD,Gtk.IconSize.MENU)
60               
61                self.add_new_profile_button=builder.get_object("add_new_profile_button")
62                self.add_new_profile_button.set_image(image)
63                self.new_profile_window=builder.get_object("new_profile_window")
64                self.profile_label=builder.get_object("profile_label")
65                self.profile_entry=builder.get_object("profile_entry")
66                self.email_label=builder.get_object("email_label")
67                self.email_entry=builder.get_object("email_entry")
68                self.mountpoint_label=builder.get_object("mountpoint_label")
69                self.mountpoint_entry=builder.get_object("mountpoint_entry")
70                self.automount_label=builder.get_object("automount_label")
71                self.automount_entry=builder.get_object("automount_entry")
72                self.profile_msg=builder.get_object("profile_msg")
73                self.profile_pbar=builder.get_object("profile_pbar")
74                self.accept_add_profile_button=builder.get_object("accept_add_profile_button")
75                self.cancel_add_profile_button=builder.get_object("cancel_add_profile_button")
76               
77               
78               
79                self.pack_start(self.main_box,True,True,0)
80                self.connect_signals()
81                self.set_css_info()
82
83                self.current_status={}
84                self.edition=False
85                self.profile_pbar.hide()
86
87                self.init_threads()
88                self.check_initial_connection()
89
90                               
91        #def __init__
92
93        def init_threads(self):
94
95                self.create_profile_t=multiprocessing.Process(target=self.create_profile)
96                self.create_mountpoint_t=threading.Thread(target=self.create_mountpoint)
97                self.edit_profile_t=threading.Thread(target=self.edit_profile)
98                #self.delete_profile_t=threading.Thread(target=self.delete_profile)
99
100               
101                self.create_profile_t.daemon=True
102                self.create_mountpoint_t.daemon=True
103                self.edit_profile_t.daemon=True
104                #self.delete_profile_t.daemon=True
105
106                self.create_mountpoint_t.done=False
107                self.edit_profile_t.done=False
108                #self.delete_profile_t.done=False
109
110                self.create_profile_t.launched=False
111                self.create_mountpoint_t.launched=False
112                self.edit_profile_t.launched=False
113                #self.delete_profile_t.launched=False
114               
115                GObject.threads_init()
116
117
118        def set_css_info(self):
119               
120                self.style_provider=Gtk.CssProvider()
121
122                f=Gio.File.new_for_path(CSS_FILE)
123                self.style_provider.load_from_file(f)
124
125                Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),self.style_provider,Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
126                self.profiles_list_label.set_name("OPTION_LABEL")
127                self.profile_label.set_name("OPTION_LABEL")
128                self.email_label.set_name("OPTION_LABEL")
129                self.mountpoint_label.set_name("OPTION_LABEL")
130                self.automount_label.set_name("OPTION_LABEL")
131                self.msg_label.set_name("MSG_LABEL")
132                self.profile_msg.set_name("MSG_LABEL")
133               
134                       
135        #def set-css_info
136       
137               
138        def connect_signals(self):
139
140                self.add_new_profile_button.connect("clicked",self.add_new_profile_button_clicked)
141                self.accept_add_profile_button.connect("clicked",self.accept_add_profile_clicked)
142                self.cancel_add_profile_button.connect("clicked",self.cancel_add_profile_clicked)
143                self.new_profile_window.connect("delete_event",self.hide_window)
144
145
146        #def connect_signals
147
148
149        def check_initial_connection(self):
150               
151                self.initial_connection=self.LliurexGoogleDriveManager.check_google_connection()
152                return
153       
154        def load_info(self,info):
155               
156                self.profiles_info=info
157
158                for item in self.profiles_info:
159                        profile=item
160                        email=self.profiles_info[item]["email"]
161                        mountpoint=self.profiles_info[item]["mountpoint"]
162                        self.new_profile_button(profile,email,mountpoint)
163                       
164       
165        #def load_info()               
166
167        def hide_window(self,widget,event):
168               
169                widget.hide()
170                return True
171
172        #def hide_window       
173
174        def init_profile_dialog_button(self):
175
176                self.accept_add_profile_button.show()
177                image = Gtk.Image()
178                image.set_from_stock(Gtk.STOCK_CANCEL,Gtk.IconSize.MENU)
179                self.cancel_add_profile_button.set_image(image)
180                self.cancel_add_profile_button.set_label(_("Cancel"))
181                self.cancel_add_profile_button.show()
182
183        #def init_profile_dialog_button
184
185        def disable_entry_profile_dialog(self):
186
187                self.profile_entry.set_sensitive(False)
188                self.email_entry.set_sensitive(False)
189                self.mountpoint_entry.set_sensitive(False)
190                self.automount_entry.set_sensitive(False)
191
192        #def disable_entry_profile_dialog
193       
194        def enable_entry_profile_dialog(self):
195
196                if not self.edition:
197                       
198                        self.new_profile_window.set_title(_("Create new profile"))
199                        self.profile_entry.set_sensitive(True)
200                        self.profile_entry.grab_focus()
201                        self.email_entry.set_sensitive(True)
202
203                else:
204                        self.new_profile_window.set_title(_("Edit profile"))
205                        self.profile_entry.set_sensitive(False)
206                        self.email_entry.set_sensitive(False)
207
208                self.mountpoint_entry.set_sensitive(True)
209                self.automount_entry.set_sensitive(True)       
210
211        #def enable_entry_profile_dialog       
212
213        def change_cancel_button(self):
214               
215                image = Gtk.Image()
216                image.set_from_stock(Gtk.STOCK_CLOSE,Gtk.IconSize.MENU)
217                self.cancel_add_profile_button.set_image(image)
218                self.cancel_add_profile_button.set_label(_("Close"))   
219                self.cancel_add_profile_button.show()   
220
221        #def change_cancel_button       
222
223        def add_new_profile_button_clicked(self,widget):
224
225                self.edition=False
226
227                self.enable_entry_profile_dialog()
228                self.profile_entry.set_text("")
229                self.email_entry.set_text("")
230                self.mountpoint_entry.set_filename(os.environ["HOME"])
231                self.automount_entry.set_active(False)
232                self.profile_msg.set_text("")
233               
234
235                self.init_threads()
236               
237                self.msg_label.set_text("")
238                self.profile_msg.hide()
239                self.profile_pbar.hide()
240                self.init_profile_dialog_button()
241                self.new_profile_window.show()
242               
243
244        #def add_new_profile_button_clicked     
245
246        def delete_profile_clicked(self,button,hbox):
247
248                dialog = Gtk.MessageDialog(None,0,Gtk.MessageType.WARNING, Gtk.ButtonsType.YES_NO, "Lliurex GDrive")
249                dialog.format_secondary_text(_("Do you want delete the profile?"))
250                response=dialog.run()
251                dialog.destroy()
252                #self.delete_profile_t=threading.Thread(target=self.delete_profile))
253                #self.init_threads()
254
255                if response==Gtk.ResponseType.YES:
256                        profile=hbox.get_children()[1].get_text().split("\n")[0]
257                        #ENCODING TO UNICODE                   
258                        profile=profile.decode("utf-8")
259                        self.delete_profile_t=threading.Thread(target=self.delete_profile,args=(profile,))
260                        self.delete_profile_t.daemon=True
261                        self.delete_profile_t.done=False
262                        self.delete_profile_t.launched=False
263                        self.msg_label.set_text("")
264                       
265                        self.profiles_info.pop(profile)
266                        self.delete_profile_t.start()
267                        self.delete_profile_t.launched=True
268                        GLib.timeout_add(100,self.pulsate_delete_profile,profile,hbox)
269
270
271                        # delete=self.core.LliurexGoogleDriveManager.delete_profile(self.profiles_info,profile)
272                        # self.msg_label.show()
273
274                        # if delete["result"]:
275                        #       self.profile_msg.set_name("MSG_LABEL")
276                        #       self.msg_label.set_text(MSG_CHANGE_SUCCESS)
277                        #       self.profile_list_box.remove(hbox)
278                        # else:
279                        #       msg_error=self.get_msg_error(delete["code"])
280                        #       self.msg_label.set_name("MSG_ERROR_LABEL")
281                        #       self.msg_label.set_text(msg_error)
282
283                        # self.profiles_info=self.core.LliurexGoogleDriveManager.profiles_config.copy()
284
285
286        # def delete_profile_clicked
287               
288        def pulsate_delete_profile(self,profile,hbox)
289
290                        if self.delete_profile_t.is_alive():
291                                return True
292
293                        else:
294                                #delete=self.core.LliurexGoogleDriveManager.delete_profile(self.profiles_info,profile)
295                                self.msg_label.show()
296
297                                if self.delete["result"]:
298                                        print "a boorar"
299                                        self.profile_msg.set_name("MSG_LABEL")
300                                        self.msg_label.set_text(MSG_CHANGE_SUCCESS)
301                                        self.profile_list_box.remove(hbox)
302                                else:
303                                        msg_error=self.get_msg_error(self.delete["code"])
304                                        self.msg_label.set_name("MSG_ERROR_LABEL")
305                                        self.msg_label.set_text(msg_error)
306                                self.profiles_info=self.core.LliurexGoogleDriveManager.profiles_config.copy()
307       
308                        return False   
309
310       
311        def delete_profile(self,profile):
312
313                self.delete=self.core.LliurexGoogleDriveManager.delete_profile(self.profiles_info,profile)
314                #self.delete_profile_t.done=True                                       
315
316        def sync_profile_clicked(self,button,hbox):
317
318                self.msg_label.set_text("")
319                profile=hbox.get_children()[1].get_text().split("\n")[0]
320                mountpoint=hbox.get_children()[3].get_text()
321                # ENCODING TO UNICODE           
322                profile=profile.decode("utf-8")
323                mountpoint=mountpoint.decode("utf-8")
324                status_info=self.core.LliurexGoogleDriveManager.check_mountpoint_status(mountpoint)
325                self.msg_label.show()
326                self.msg_label.set_name("MSG_LABEL")
327                if self.current_status[profile]==status_info["status"]:
328
329                        status_mod=self.core.LliurexGoogleDriveManager.sync_profile(profile,mountpoint)
330                        if status_mod["result"]:
331                                status_info=self.core.LliurexGoogleDriveManager.check_mountpoint_status(mountpoint)
332                                self.msg_label.set_text(MSG_CHANGE_SUCCESS)
333                               
334                        else:
335                                msg_error=self.get_msg_error(status_mod["code"])
336                                self.msg_label.set_name("MSG_ERROR_LABEL")
337                                self.msg_label.set_text(msg_error)     
338                               
339                       
340
341                info=self.item_status_info(status_info)
342                self.current_status[profile]=status_info["status"]
343                button.set_tooltip_text(info["tooltip"])
344                button.set_name(info["css"])           
345                hbox.get_children()[4].set_image(info["img"])
346
347       
348        #def mount_profile_clicked
349
350        def edit_profile_clicked(self,button,hbox):
351
352                self.edition=True
353                self.enable_entry_profile_dialog()
354                #ENCODING TO UNICODE
355                self.profile_to_edit=hbox               
356                profile=self.profile_to_edit.get_children()[1].get_text().split("\n")[0]
357                self.profile_entry.set_text(profile)
358                email=self.profile_to_edit.get_children()[1].get_text().split("\n")[1]
359                self.email_entry.set_text(email)
360                mountpoint=self.profile_to_edit.get_children()[3].get_text()
361                self.mountpoint_entry.set_filename(mountpoint)
362                automount=self.profiles_info[profile.decode("utf-8")]["automount"]
363                self.automount_entry.set_active(automount)
364               
365
366                self.init_threads()
367
368                self.profile_msg.hide()
369                self.profile_pbar.hide()
370                self.msg_label.set_text("")
371                self.init_profile_dialog_button()
372                self.new_profile_window.show() 
373
374        #def edit_profile_clicked
375
376
377        def new_profile_button(self,profile_name,email,mountpoint):
378               
379                hbox=Gtk.HBox()
380                profile_image=Gtk.Image.new_from_file(PROFILE_IMAGE)
381                profile_image.set_margin_left(10)
382                profile_image.set_halign(Gtk.Align.CENTER)
383                profile_image.set_valign(Gtk.Align.CENTER)
384                profile_info="<span font='Roboto'><b>"+profile_name+"</b></span>\n"+"<span font='Roboto'>"+email+"</span>"
385                profile=Gtk.Label()
386                profile.set_markup(profile_info)
387                profile.set_margin_left(10)
388                profile.set_margin_right(15)
389                profile.set_margin_top(21)
390                profile.set_margin_bottom(21)
391                profile.set_width_chars(25)
392                profile.set_max_width_chars(25)
393                profile.set_xalign(-1)
394                profile.set_ellipsize(Pango.EllipsizeMode.END)
395                folder_image=Gtk.Image.new_from_file(FOLDER_IMAGE)
396                folder_image.set_margin_left(20)
397                folder_image.set_halign(Gtk.Align.CENTER)
398                folder_image.set_valign(Gtk.Align.CENTER)
399                folder=Gtk.Label()
400                folder.set_text(mountpoint)
401                folder.set_margin_left(10)
402                delete=Gtk.Button()
403                delete_image=Gtk.Image.new_from_file(DELETE_IMAGE)
404                delete.add(delete_image)
405                delete.set_halign(Gtk.Align.CENTER)
406                delete.set_valign(Gtk.Align.CENTER)
407                delete.set_name("DELETE_ITEM_BUTTON")
408                delete.connect("clicked",self.delete_profile_clicked,hbox)
409                delete.set_tooltip_text(_("Delete profile"))
410                edit=Gtk.Button()
411                edit_image=Gtk.Image.new_from_file(EDIT_IMAGE)
412                edit.add(edit_image)
413                edit.set_halign(Gtk.Align.CENTER)
414                edit.set_valign(Gtk.Align.CENTER)
415                edit.set_name("EDIT_ITEM_BUTTON")
416                edit.connect("clicked",self.edit_profile_clicked,hbox)
417                edit.set_tooltip_text(_("Edit profile"))
418                mount=Gtk.Button()
419               
420                if self.initial_connection:
421                        status_info=self.core.LliurexGoogleDriveManager.check_mountpoint_status(mountpoint)
422                        self.current_status[profile_name]=status_info["status"]
423                        info=self.item_status_info(status_info)
424                else:
425                        info={}
426                        img=Gtk.Image.new_from_file(MOUNT_ON_IMAGE)
427                        info["img"]=img
428                        info["css"]="WARNING_ITEM_BUTTON"
429                        info["tooltip"]=_("With out connect")   
430               
431                mount_image=info["img"]
432                mount.set_tooltip_text(info["tooltip"])
433                mount.set_name(info["css"])
434                mount.add(mount_image)
435                mount.set_halign(Gtk.Align.CENTER)
436                mount.set_valign(Gtk.Align.CENTER)
437                mount.connect("clicked",self.sync_profile_clicked,hbox)
438               
439                hbox.pack_start(profile_image,False,False,0)
440                hbox.pack_start(profile,False,False,0)
441                hbox.pack_start(folder_image,False,False,0)
442                hbox.pack_start(folder,False,False,0)
443                hbox.pack_end(delete,False,False,10)
444                hbox.pack_end(edit,False,False,10)
445                hbox.pack_end(mount,False,False,10)
446                hbox.show_all()
447                hbox.set_name("PROFILE_BOX")
448                self.profile_list_box.pack_start(hbox,False,False,5)
449                self.profile_list_box.queue_draw()
450                hbox.queue_draw()
451               
452        #def new_profile_button
453
454        def item_status_info(self,status_info):
455       
456                size=status_info["size"]
457                used=status_info["used%"]
458
459                if status_info["status"]:
460                        img=Gtk.Image.new_from_file(MOUNT_ON_IMAGE)
461                        tooltip=_("Dismount now")
462                        css="MOUNT_ITEM_BUTTON"
463               
464                else:
465                        img=Gtk.Image.new_from_file(MOUNT_ON_IMAGE)
466                        tooltip=_("Mount now")
467                        css="DELETE_ITEM_BUTTON"       
468
469                return {"img":img ,"tooltip":tooltip, "css":css}       
470
471        #def item_status_info                   
472
473        def accept_add_profile_clicked(self,widget):
474
475                self.disable_entry_profile_dialog()
476                #ENCODING TO UNICODE
477                profile=self.profile_entry.get_text()
478
479                self.new_profile=profile.strip().decode("utf-8")
480                email=self.email_entry.get_text()
481                self.new_email=email.strip()
482                self.new_mountpoint=self.mountpoint_entry.get_filename().decode("utf-8")
483                self.new_automount=self.automount_entry.get_state()
484
485                check_form=self.check_profile_info()
486                self.profile_msg.show()
487
488                if check_form["result"]:
489                        self.profiles_info[self.new_profile]={}
490                        self.profiles_info[self.new_profile]["email"]=self.new_email
491                        self.profiles_info[self.new_profile]["mountpoint"]=self.new_mountpoint
492                        self.profiles_info[self.new_profile]["automount"]=self.new_automount
493                        self.profile_msg.set_name("MSG_LABEL")
494                        if not self.edition:
495                                if not self.create_profile_t.launched:
496                                        self.profile_msg.set_text(_("Connecting with google to get account access..."))
497                                        self.profile_pbar.show()
498                                        self.retry=0
499                                        GLib.timeout_add(100,self.pulsate_add_profile)
500                               
501               
502                        else:
503                                if not self.edit_profile_t.launched:
504                                        self.profile_msg.set_text(_("Apply changes"))
505                                        self.profile_pbar.show()
506                                        GLib.timeout_add(100,self.pulsate_edit_profile) 
507                else:
508                        self.profile_msg.set_name("MSG_ERROR_LABEL")
509                        self.profile_msg.set_text(check_form["msg"])
510                        self.enable_entry_profile_dialog()
511                               
512                               
513               
514       
515        #def accept_add_profile_clicked
516
517        def check_profile_info(self):
518
519                msg_check=""
520
521                check_form=self.core.LliurexGoogleDriveManager.check_profile_info(self.new_profile,self.new_mountpoint,self.edition)
522
523                if not check_form["result"]:
524                        if check_form["code"]==1:
525                                msg_check=_("You must indicate a profile")
526
527                        elif check_form["code"]==2:
528                                msg_check=_("Profile can not contain blanks")
529
530                        elif check_form["code"]==3 :
531                                msg_check=_("Profile already exists")
532                       
533                        else:
534                                msg_check=_("Mounting point already used by another profile")   
535
536
537                return {"result":check_form["result"],"msg":msg_check}
538
539        #def check_profile_info
540
541        def pulsate_add_profile(self):
542
543                self.retry=self.retry+1
544                self.profile_pbar.pulse()
545               
546                if not self.create_profile_t.launched:
547                        self.accept_add_profile_button.hide()
548                        self.cancel_add_profile_button.hide()
549               
550                        self.create_profile_t.start()
551                        self.create_profile_t.launched=True
552
553                if not self.create_profile_t.is_alive():
554                        if not self.create_mountpoint_t.launched:
555                                self.profile_msg.set_name("MSG_LABEL")
556                                self.profile_msg.set_text(_("Creating profile... "))
557                                self.create_mountpoint_t.start()
558                                self.create_mountpoint_t.launched=True
559
560                        if self.create_mountpoint_t.done:
561                                self.profile_pbar.hide()
562                                if self.create_result["result"]:
563                                                self.initial_connection=True
564                                                self.new_profile_button(self.new_profile,self.new_email,self.new_mountpoint)
565                                                self.profile_msg.set_text(_("Profile created successfully"))
566                                                self.change_cancel_button()
567                                               
568                                else:
569                                        msg_error=self.get_msg_error(self.create_result["code"])
570                                        self.profile_msg.set_name("MSG_ERROR_LABEL")
571                                        self.profile_msg.set_text(msg_error)
572                                        self.cancel_add_profile_button.show()
573                                       
574                                self.profiles_info=self.core.LliurexGoogleDriveManager.profiles_config.copy()   
575                                return False   
576                                               
577                if self.create_profile_t.launched:
578                        if self.create_profile_t.is_alive():
579                                self.kill_create_profile()
580                                return True     
581                               
582
583                if self.create_mountpoint_t.launched:
584                        if not self.create_mountpoint_t.done:
585                                return True             
586
587        #def_pulsate_add_profile       
588
589
590        def get_msg_error(self,code):
591
592                if code==1:
593                        msg_error=_("Error: Unable to create mount point")
594
595                elif code==2:
596                        msg_error=_("Error: unable to mount mount point")
597
598                elif code==3:
599                        msg_error=_("Error: Mount point is not owned by user") 
600
601                elif code==4:
602                        msg_error=_("Error: No mount point indicated")
603
604                elif code==5:
605                        msg_error=_("Error: Profile is not authorized to Google Drive")
606
607                elif code==6:
608                        msg_error=_("Error: Unknow profile")
609
610                elif code==7:
611                        msg_error=_("Error: Unable to dismount mount point")
612
613                elif code==8:
614                        msg_error=_("Error: Unable to connect with google")                     
615
616                return msg_error       
617
618        #def get_msg_error                                                     
619
620        def kill_create_profile(self):
621       
622                if self.retry>MAX_RETRY_INTENTS:
623                        parent=psutil.Process(self.create_profile_t.pid)
624                        for child in parent.children(recursive=True):
625                                child.kill()
626                                self.create_profile_t.terminate()
627                                self.profile_msg.set_name("MSG_ERROR_LABEL")
628                                self.profile_msg.set_text(_("Error getting authorization"))
629
630                return True     
631
632        #def kill_create_profile       
633
634        def create_profile(self):
635
636                result=self.core.LliurexGoogleDriveManager.create_profile(self.new_profile)
637
638        #def create_profile     
639
640        def create_mountpoint(self):
641
642                self.create_result=self.core.LliurexGoogleDriveManager.create_mountpoint(self.profiles_info,self.new_profile)
643                self.create_mountpoint_t.done=True
644               
645        #def create_mountpoint 
646
647        def pulsate_edit_profile(self):
648
649                self.profile_pbar.pulse()
650                if not self.edit_profile_t.launched:
651                        self.edit_profile_t.start()
652                        self.edit_profile_t.launched=True
653                        self.accept_add_profile_button.hide()
654                        self.cancel_add_profile_button.hide()
655
656                if self.edit_profile_t.done:
657                        self.profile_pbar.hide()
658                        if self.edit_result["result"]:
659                                self.profile_msg.set_name("MSG_LABEL")
660                                self.profile_to_edit.get_children()[3].set_text(self.new_mountpoint)
661                                self.profiles_info=self.core.LliurexGoogleDriveManager.profiles_config.copy()   
662                                self.profile_msg.set_text(MSG_CHANGE_SUCCESS)
663                                self.change_cancel_button()
664                       
665                        else:
666                                msg_error=self.get_msg_error(self.edit_result["code"])
667                                self.profile_msg.set_name("MSG_ERROR_LABEL")
668                                self.profile_msg.set_text(msg_error)
669                                self.cancel_add_profile_button.show()
670                        return False
671                       
672
673                if self.edit_profile_t.launched:
674                        if not self.edit_profile_t.done:
675                                return True
676
677        #def pulsate_edit_profile                       
678
679        def edit_profile(self):
680
681                self.edit_result=self.core.LliurexGoogleDriveManager.edit_profile(self.profiles_info,self.new_profile)
682                self.edit_profile_t.done=True
683
684        #def edit_profile       
685
686        def cancel_add_profile_clicked(self,widget):
687               
688                self.new_profile_window.hide()
689
690       
691        #def cancel_add_profile_clicked
692               
693#class profilebox
Note: See TracBrowser for help on using the repository browser.