def row_1(self, action=None): """ Name : USERS cols : 1 """ if action == "construct": # -- CREATE ROW -- # self.grid.row(width=self.width, height=150, padx=0, pady=0, bg="#ffffff") # -- CREATE COLS -- # self.grid.column(span=2, row=1, width=None, height=None, padx=None, pady=None, bg=None) self.grid.column(span=2, row=1, width=None, height=None, padx=None, pady=None, bg=None) self.grid.column(span=2, row=1, width=None, height=None, padx=None, pady=None, bg=None) self.grid.column(span=2, row=1, width=None, height=None, padx=None, pady=None, bg=None) self.grid.column(span=2, row=1, width=None, height=None, padx=None, pady=None, bg=None) self.grid.column(span=2, row=1, width=None, height=None, padx=None, pady=None, bg=None) elif action == "fill": if self.w_avatars_fill is not True: # Get texts for this row txt = self.json_script.get("row_1") user_counter = 0 free_space = 0 while user_counter != len(self.users): user = self.users[user_counter] # -- COLUMN 1 : USER AVATAR IMAGE -- # img = Image.open("frontend/images/avatars/{}.png".format( user.get("user_avatar_name"))) img_resize = img.resize((75, 75), Image.ANTIALIAS) img_tkinter = ImageTk.PhotoImage(img_resize) w_avatar_icon = Label( self.grid.col_frames[1][user_counter], image=img_tkinter, borderwidth=0, bg="#ffffff") w_avatar_icon.image = img_tkinter w_avatar_icon.pack(fill='both', expand=True) # -- COLUMN 1 : USER AVATAR NAME -- # w_avatar_name = Label( self.grid.col_frames[1][user_counter], text="{}".format(user.get("user_name")), anchor="n", bg="#ffffff", pady=10, ) w_avatar_name.pack(fill='both', expand=True) # -- COLUMN 1 : USER AVATAR RADIO -- # w_user_radio = Radiobutton( self.grid.col_frames[1][user_counter], variable=self.var_user_id, value=user.get("user_id"), bg="#ffffff") w_user_radio.pack(fill='both', expand=True) if user_counter == 0: w_user_radio.select() self.w_avatar_icons.append(w_avatar_icon) self.w_avatar_names.append(w_avatar_name) self.w_user_radios.append(w_user_radio) user_counter += 1 free_space = 6 - user_counter free_counter = 0 while free_counter != free_space: # -- COLUMN 1 : USER AVATAR IMAGE -- # img = Image.open( "frontend/images/avatars/empty.png").convert("RGBA") img_resize = img.resize((75, 75), Image.ANTIALIAS) img_tkinter = ImageTk.PhotoImage(img_resize) w_avatar_icon = Label( self.grid.col_frames[1][user_counter], image=img_tkinter, bg="#ffffff") w_avatar_icon.image = img_tkinter w_avatar_icon.pack(fill="both", expand=True) # -- COLUMN 1 : USER AVATAR NAME -- # w_avatar_name = Label( self.grid.col_frames[1][user_counter], text=txt.get("user_empty"), anchor="n", bg="#ffffff", pady=10, ) w_avatar_name.pack(fill='both', expand=True) # -- COLUMN 1 : FREE USER SUBSCRIBE BUTTON -- # w_subscribe_button = Button( self.grid.col_frames[1][user_counter], text=txt.get("user_empty_button"), borderwidth=0, font="Helvetica 8 bold", bg="#7dd2f0", fg="#ffffff", activebackground="#71bdd8", activeforeground="#ffffff", command=self.display_create_user) w_subscribe_button.pack(fill='both', expand=True) self.w_avatar_icons.append(w_avatar_icon) self.w_avatar_names.append(w_avatar_name) self.w_subscribe_buttons.append(w_subscribe_button) user_counter += 1 free_counter += 1 self.w_avatars_fill = True elif action == "refresh": """ Refresh this row. """ for w_avatar_icon in self.w_avatar_icons: w_avatar_icon.pack_forget() for w_avatar_name in self.w_avatar_names: w_avatar_name.pack_forget() for w_user_radio in self.w_user_radios: w_user_radio.pack_forget() for w_subscribe_button in self.w_subscribe_buttons: w_subscribe_button.pack_forget() self.w_subscribe_buttons = [] self.w_avatar_icons = [] self.w_avatar_names = [] self.w_user_radios = [] self.w_avatars_fill = False
class UpdateLanguages(): def __init__(self, container=None, displayer=None, session=None): """ 'container' (Obj ): instance of Container. 'displayer' (obj ): instance of Displayer. 'session,' (obj ): instance of Session. 'grid' (Obj ): instance of Grid. 'f_container' (Frame): container frame. 'm_frame' (Frame): master frame of view. 'name' (str ): name of view. 'json_script' (dict ): json dict of script. 'width' (int ): view width. 'height' (int ): view height. 'padx' (int ): view 'pady' (int ): view 'bg' (str ): view bg. """ # Instances self.container = container self.displayer = displayer self.session = session self.grid = None # Frames self.f_container = self.container.f_container self.m_frame = None # Informations self.name = None # Script self.json_script = None # Style Sheet self.width = self.container.width self.height = self.container.height self.padx = 0 self.pady = 0 self.bg = "#ffffff" # Tk control variables self.var_notification = StringVar() self.var_language = StringVar() # Widgets row 0 self.w_title = None # Widgets row 1 self.w_en_flag = None self.w_en_name = None self.w_en_check = None self.w_fr_flag = None self.w_fr_name = None self.w_fr_check = None self.w_de_flag = None self.w_de_name = None self.w_de_check = None # Widgets row 2 self.w_it_flag = None self.w_it_name = None self.w_it_check = None self.w_es_flag = None self.w_es_name = None self.w_es_check = None self.w_nl_flag = None self.w_nl_name = None self.w_nl_check = None # Widgets row 3 self.w_previous_button = None self.w_submit_button = None # Fill status self.fill_status = False # -- Displayer initialisation -- # self.construct() def construct(self, **kwargs): """ Construt view. 'displayer' (Bool): to not create the view \ during initialization. """ # 2. Create new grid in page container. self.grid = Grid(frame=self.f_container, width=self.width, height=self.height, padx=self.padx, pady=self.pady, bg=self.bg) # 3. Get view frame for displayer function self.m_frame = self.grid.master_frame self.row_0(action="construct") self.row_1(action="construct") self.row_2(action="construct") self.row_3(action="construct") def fill(self, **kwargs): # 1. Get the script. self.json_script = self.session.get_script(package_name="update", file_name="languages") self.name = self.json_script.get("view_name") self.var_notification.set(" ") # 3. Refresh rows. if self.fill_status is True: self.row_0(action="refresh") self.row_1(action="refresh") self.row_2(action="refresh") self.row_3(action="refresh") self.row_0(action="fill") self.row_1(action="fill") self.row_2(action="fill") self.row_3(action="fill") self.fill_status = True def display_previous(self): """ Display view 'update_server_conn'. """ self.displayer.display(c_view="update_languages", f_view="update_server_conn") def display_step_3(self): """ Display view 'update_categories'. """ self.displayer.display(c_view="update_languages", f_view="update_categories", language=str(self.var_language.get())) def row_0(self, action=None): """ Name : VIEW TITLE cols : 1 """ if action == "construct": # -- CREATE ROW -- # self.grid.row(width=self.width, height=250, padx=self.padx, pady=self.pady, bg="#ffffff") # -- CREATE COLS -- # self.grid.column(span=12, row=0, width=None, height=None, padx=None, pady=None, bg=None) elif action == "fill": # Get script txt = self.json_script.get("row_0") # -- COLUMN 1/1 : VIEW TITLE -- # if self.w_title is None: self.w_title = Label(self.grid.col_frames[0][0], pady=50, anchor="s", text=txt.get("view_title"), bg="#ffffff", fg="#000000", font="Helvetica 12 bold") self.w_title.pack(fill='both', expand=True) elif action == "refresh": self.w_title.pack_forget() self.w_title = None def row_1(self, action=None): """ Name : LANGAGE 1-3 cols : 3 """ if action == "construct": # -- CREATE ROW -- # self.grid.row(width=self.width, height=150, padx=self.padx, pady=self.pady, bg="#ffffff") # -- CREATE COLS -- # self.grid.column(span=4, row=1, width=None, height=None, padx=None, pady=20, bg=None) self.grid.column(span=4, row=1, width=None, height=None, padx=None, pady=20, bg=None) self.grid.column(span=4, row=1, width=None, height=None, padx=None, pady=20, bg=None) elif action == "fill": # Get script txt = self.json_script.get("row_1") # -- COLUMN 1/3 : ENGLISH LANGUAGE -- # img = Image.open("frontend/images/flags/en.png") imgResize = img.resize((30, 30), Image.ANTIALIAS) imgTkinter = ImageTk.PhotoImage(imgResize) if self.w_en_flag is None: self.w_en_flag = Label(self.grid.col_frames[1][0], image=imgTkinter, borderwidth=0, bg="#ffffff") self.w_en_flag.image = imgTkinter self.w_en_flag.pack(fill='both', expand=True) if self.w_en_name is None: self.w_en_name = Label(self.grid.col_frames[1][0], pady=0, text=txt.get("english_label"), bg="#ffffff", fg="#000000", font="Helvetica 12 bold") self.w_en_name.pack(fill='both', expand=True) if self.w_en_check is None: self.w_en_check = Radiobutton(self.grid.col_frames[1][0], variable=self.var_language, value="en", bg="#ffffff") self.w_en_check.pack(fill='both', expand=True) if self.session.gui_language == "en": self.w_en_check.select() # -- COLUMN 2/3 : FRENCH LANGUAGE -- # img = Image.open("frontend/images/flags/fr.png") imgResize = img.resize((30, 30), Image.ANTIALIAS) imgTkinter = ImageTk.PhotoImage(imgResize) if self.w_fr_flag is None: self.w_fr_flag = Label(self.grid.col_frames[1][1], image=imgTkinter, borderwidth=0, bg="#ffffff") self.w_fr_flag.image = imgTkinter self.w_fr_flag.pack(fill='both', expand=True) if self.w_fr_name is None: self.w_fr_name = Label(self.grid.col_frames[1][1], pady=0, text=txt.get("french_label"), bg="#ffffff", fg="#000000", font="Helvetica 12 bold") self.w_fr_name.pack(fill='both', expand=True) if self.w_fr_check is None: self.w_fr_check = Radiobutton(self.grid.col_frames[1][1], variable=self.var_language, value="fr", bg="#ffffff") self.w_fr_check.pack(fill='both', expand=True) if self.session.gui_language == "fr": self.w_fr_check.select() # -- COLUMN 3/3 : GERMAN LANGUAGE -- # img = Image.open("frontend/images/flags/de.png") imgResize = img.resize((30, 30), Image.ANTIALIAS) imgTkinter = ImageTk.PhotoImage(imgResize) if self.w_de_flag is None: self.w_de_flag = Label(self.grid.col_frames[1][2], image=imgTkinter, borderwidth=0, bg="#ffffff") self.w_de_flag.image = imgTkinter self.w_de_flag.pack(fill='both', expand=True) if self.w_de_name is None: self.w_de_name = Label(self.grid.col_frames[1][2], pady=0, text=txt.get("german_label"), bg="#ffffff", fg="#000000", font="Helvetica 12 bold") self.w_de_name.pack(fill='both', expand=True) if self.w_de_check is None: self.w_de_check = Radiobutton(self.grid.col_frames[1][2], variable=self.var_language, value="de", bg="#ffffff") self.w_de_check.pack(fill='both', expand=True) elif action == "refresh": self.w_en_flag.pack_forget() self.w_en_name.pack_forget() self.w_en_check.pack_forget() self.w_fr_flag.pack_forget() self.w_fr_name.pack_forget() self.w_fr_check.pack_forget() self.w_de_flag.pack_forget() self.w_de_name.pack_forget() self.w_de_check.pack_forget() self.w_en_flag = None self.w_en_name = None self.w_en_check = None self.w_fr_flag = None self.w_fr_name = None self.w_fr_check = None self.w_de_flag = None self.w_de_name = None self.w_de_check = None def row_2(self, action=None): """ Name : LANGAGE 3-6 cols : 3 """ if action == "construct": # -- CREATE ROW -- # self.grid.row(width=self.width, height=140, padx=self.padx, pady=self.pady, bg="#ffffff") # -- CREATE COLS -- # self.grid.column(span=4, row=2, width=None, height=None, padx=None, pady=20, bg=None) self.grid.column(span=4, row=2, width=None, height=None, padx=None, pady=20, bg=None) self.grid.column(span=4, row=2, width=None, height=None, padx=None, pady=20, bg=None) elif action == "fill": # Get script txt = self.json_script.get("row_2") # -- COLUMN 1/3 : ITALIAN LANGUAGE -- # img = Image.open("frontend/images/flags/it.png") imgResize = img.resize((30, 30), Image.ANTIALIAS) imgTkinter = ImageTk.PhotoImage(imgResize) if self.w_it_flag is None: self.w_it_flag = Label(self.grid.col_frames[2][0], image=imgTkinter, borderwidth=0, bg="#ffffff") self.w_it_flag.image = imgTkinter self.w_it_flag.pack(fill='both', expand=True) if self.w_it_name is None: self.w_it_name = Label(self.grid.col_frames[2][0], pady=0, text=txt.get("italian_label"), bg="#ffffff", fg="#000000", font="Helvetica 12 bold") self.w_it_name.pack(fill='both', expand=True) if self.w_it_check is None: self.w_it_check = Radiobutton(self.grid.col_frames[2][0], variable=self.var_language, value="it", bg="#ffffff") self.w_it_check.pack(fill='both', expand=True) # -- COLUMN 2/3 : SPANISH LANGUAGE -- # img = Image.open("frontend/images/flags/es.png") imgResize = img.resize((30, 30), Image.ANTIALIAS) imgTkinter = ImageTk.PhotoImage(imgResize) if self.w_es_flag is None: self.w_es_flag = Label(self.grid.col_frames[2][1], image=imgTkinter, borderwidth=0, bg="#ffffff") self.w_es_flag.image = imgTkinter self.w_es_flag.pack(fill='both', expand=True) if self.w_es_name is None: self.w_es_name = Label(self.grid.col_frames[2][1], pady=0, text=txt.get("spanish_label"), bg="#ffffff", fg="#000000", font="Helvetica 12 bold") self.w_es_name.pack(fill='both', expand=True) if self.w_es_check is None: self.w_es_check = Radiobutton(self.grid.col_frames[2][1], variable=self.var_language, value="es", bg="#ffffff") self.w_es_check.pack(fill='both', expand=True) # -- COLUMN 3/3 : DUTCH LANGUAGE -- # img = Image.open("frontend/images/flags/nl.png") imgResize = img.resize((30, 30), Image.ANTIALIAS) imgTkinter = ImageTk.PhotoImage(imgResize) if self.w_nl_flag is None: self.w_nl_flag = Label(self.grid.col_frames[2][2], image=imgTkinter, borderwidth=0, bg="#ffffff") self.w_nl_flag.image = imgTkinter self.w_nl_flag.pack(fill='both', expand=True) if self.w_nl_name is None: self.w_nl_name = Label(self.grid.col_frames[2][2], pady=0, text=txt.get("dutch_label"), bg="#ffffff", fg="#000000", font="Helvetica 12 bold") self.w_nl_name.pack(fill='both', expand=True) if self.w_nl_check is None: self.w_nl_check = Radiobutton(self.grid.col_frames[2][2], variable=self.var_language, value="nl", bg="#ffffff") self.w_nl_check.pack(fill='both', expand=True) elif action == "refresh": self.w_it_flag.pack_forget() self.w_it_name.pack_forget() self.w_it_check.pack_forget() self.w_es_flag.pack_forget() self.w_es_name.pack_forget() self.w_es_check.pack_forget() self.w_nl_flag.pack_forget() self.w_nl_name.pack_forget() self.w_nl_check.pack_forget() self.w_it_flag = None self.w_it_name = None self.w_it_check = None self.w_es_flag = None self.w_es_name = None self.w_es_check = None self.w_nl_flag = None self.w_nl_name = None self.w_nl_check = None def row_3(self, action=None): """ Name : SUBMIT BUTTON cols : 4 """ if action == "construct": # -- CREATE ROW -- # self.grid.row(width=self.width, height=60, padx=self.padx, pady=self.pady, bg="#ffffff") # -- CREATE COLS -- # self.grid.column(span=2, row=3, width=None, height=None, padx=None, pady=None, bg=None) self.grid.column(span=4, row=3, width=None, height=None, padx=None, pady=None, bg=None) self.grid.column(span=4, row=3, width=None, height=None, padx=None, pady=None, bg=None) self.grid.column(span=2, row=3, width=None, height=None, padx=None, pady=None, bg=None) elif action == "fill": txt = self.json_script.get("row_3") # -- COLUMN 1/4 : EMPTY -- # # -- COLUMN 2/4 : SUBMIT BUTTON -- # if self.w_previous_button is None: self.w_previous_button = Button( self.grid.col_frames[3][1], text=txt.get("previous_button"), fg="#ffffff", bg="#7A57EC", activeforeground="#ffffff", activebackground="#845EFF", command=self.display_previous) self.w_previous_button.pack(side=BOTTOM, fill=X) # -- COLUMN 3/4 : SUBMIT BUTTON -- # if self.w_submit_button is None: self.w_submit_button = Button(self.grid.col_frames[3][2], text=txt.get("submit_button"), fg="#ffffff", bg="#7A57EC", activeforeground="#ffffff", activebackground="#845EFF", command=self.display_step_3) self.w_submit_button.pack(side=BOTTOM, fill=X) # -- COLUMN 3/3 : EMPTY -- # elif action == "refresh": self.w_previous_button.pack_forget() self.w_submit_button.pack_forget() self.w_previous_button = None self.w_submit_button = None