def register_new_user(self): entry_values = self.get_register_entry_values() error_title, error_msg = self.check_errors(entry_values) if error_title or error_msg: show_errorbox(error_title, error_msg) else: entry_values['weight'] = round(float(entry_values['weight']), 1) entry_values['height'] = round(float(entry_values['height']), 1) entry_values['age'] = int(entry_values['age']) entry_values['activity'] = int(entry_values['activity']) entry_values['goal'] = int(entry_values['goal']) avatar = convert_to_binary_data(IMG_PATH_NO_PHOTO) self.database_model.insert_user(entry_values['login'], entry_values['password'], entry_values['email'], entry_values['gender'], entry_values['height'], entry_values['age'], entry_values['activity'], entry_values['goal'], avatar) user_id = self.database_model.select_user_by_login(entry_values['login'])['id_user'] current_date = get_current_date() self.database_model.insert_weight(user_id, entry_values['weight'], current_date) gda_value = evaluate_gda(entry_values['gender'], entry_values['weight'], entry_values['height'], entry_values['age'], entry_values['activity'], entry_values['goal']) self.database_model.insert_gda(user_id, gda_value, current_date) self.close_register_window() show_infobox("Rejestracja udana", f"Utworzono nowego użytkownika o loginie: {entry_values['login']}")
def change_user_avatar(self): new_avatar_filename = filedialog.askopenfilename(initialdir=os.getcwd(), title="Wybierz obrazek", filetypes=(("Pliki jpg", "*.jpg"), ("Pliki png", "*.png"))) if new_avatar_filename: new_avatar = convert_to_binary_data(new_avatar_filename) self.user_model.set_user_avatar(new_avatar) self.logged_user_view.update_user_avatar()
def _create_entries(self): # Name label_frame = LabelFrame(self.frame_main, text="Nazwa nowego produktu:", font=self.shared_view.font_style_10_bold) label_frame.pack(fill=tk.BOTH, expand=1) frame_name = ttk.Frame(label_frame) frame_name.pack(fill=tk.BOTH, padx=self.shared_view.SMALL_PAD, pady=self.shared_view.SMALL_PAD) self.entry_name = tk.Entry(frame_name, font=self.shared_view.font_style_12) self.entry_name.pack(fill=tk.BOTH, padx=self.shared_view.SMALL_PAD, pady=self.shared_view.SMALL_PAD) self.entry_name.insert(0, f'{self.default_name}') # GI rating label_frame = LabelFrame(self.frame_main, text="Stopień indeksu glikemicznego:", font=self.shared_view.font_style_10_bold) label_frame.pack(fill=tk.BOTH, expand=1, pady=(self.shared_view.NORMAL_PAD, 0)) frame_gi_rating = ttk.Frame(label_frame) frame_gi_rating.pack(fill=tk.BOTH, padx=self.shared_view.SMALL_PAD, pady=self.shared_view.SMALL_PAD) gi_rating_options_list = GI_RATING_OPTIONS_LIST self.gi_rating_value = tk.StringVar( value=gi_rating_options_list[self.default_ig_rating]) gi_option_menu = tk.OptionMenu(frame_gi_rating, self.gi_rating_value, *gi_rating_options_list) gi_option_menu.config(font=self.shared_view.font_style_12) gi_option_menu.pack(fill=tk.BOTH, padx=self.shared_view.SMALL_PAD, pady=(self.shared_view.SMALL_PAD, self.shared_view.SMALL_PAD)) # Calories label_frame = LabelFrame(self.frame_main, text="Liczba kalorii na 100 gram:", font=self.shared_view.font_style_10_bold) label_frame.pack(fill=tk.BOTH, expand=1, pady=(self.shared_view.SMALL_PAD, 0)) frame_calories = ttk.Frame(label_frame) frame_calories.pack(fill=tk.BOTH, padx=self.shared_view.SMALL_PAD, pady=self.shared_view.SMALL_PAD) self.entry_calories = tk.Entry(frame_calories, font=self.shared_view.font_style_12) self.entry_calories.pack(fill=tk.BOTH, padx=self.shared_view.SMALL_PAD, pady=self.shared_view.SMALL_PAD) self.entry_calories.insert(0, f'{self.default_calories}') # Image label_frame = LabelFrame(self.frame_main, text="Zdjęcie produktu:", font=self.shared_view.font_style_10_bold) label_frame.pack(fill=tk.BOTH, pady=(self.shared_view.SMALL_PAD, 0)) frame_image = ttk.Frame(label_frame) frame_image.pack(fill=tk.BOTH, padx=self.shared_view.SMALL_PAD, pady=self.shared_view.SMALL_PAD) if self.default_image is None: self.default_image = convert_to_binary_data(IMG_PATH_NO_IMAGE) self.prod_image = get_image_from_bytes(self.default_image) else: self.prod_image = self.default_image img_width, img_height = scale_image(self.prod_image, self.shared_view.ADD_ITEM_IMG_SIZE) self.prod_image = self.prod_image.resize((img_width, img_height)) self.canvas_avatar = tk.Canvas( frame_image, width=self.shared_view.ADD_ITEM_IMG_SIZE, height=self.shared_view.ADD_ITEM_IMG_SIZE) self.avatar_render = ImageTk.PhotoImage(self.prod_image) self.canvas_image_avatar = self.canvas_avatar.create_image( (self.shared_view.ADD_ITEM_IMG_SIZE / 2) + 1, (self.shared_view.ADD_ITEM_IMG_SIZE / 2) + 1, image=self.avatar_render) self.canvas_avatar.pack() self.btn_add_img = tk.Button(frame_image, text="Ustaw zdjęcie", width=self.shared_view.btn_size, font=self.shared_view.font_style_12) self.btn_add_img.pack(pady=(self.shared_view.NORMAL_PAD, 0))
def _create_entries(self): # Name label_frame = LabelFrame(self.frame_main, text="Nazwa nowego dania:", font=self.shared_view.font_style_10_bold) label_frame.pack(fill=tk.BOTH, expand=1, pady=0) frame_name = ttk.Frame(label_frame) frame_name.pack(fill=tk.BOTH, padx=self.shared_view.SMALL_PAD, pady=self.shared_view.SMALL_PAD) self.entry_name = tk.Entry(frame_name, font=self.shared_view.font_style_12) self.entry_name.pack(fill=tk.BOTH, padx=self.shared_view.SMALL_PAD, pady=self.shared_view.SMALL_PAD) self.entry_name.insert(0, f'{self.default_name}') # GI rating label_frame = LabelFrame(self.frame_main, text="Stopień indeksu glikemicznego:", font=self.shared_view.font_style_10_bold) label_frame.pack(fill=tk.BOTH, expand=1, pady=(self.shared_view.SMALL_PAD, 0)) frame_gi_rating = ttk.Frame(label_frame) frame_gi_rating.pack(fill=tk.BOTH, padx=self.shared_view.SMALL_PAD, pady=self.shared_view.SMALL_PAD) gi_rating_options_list = GI_RATING_OPTIONS_LIST self.gi_rating_value = tk.StringVar( value=gi_rating_options_list[self.default_ig_rating]) gi_option_menu = tk.OptionMenu(frame_gi_rating, self.gi_rating_value, *gi_rating_options_list) gi_option_menu.config(font=self.shared_view.font_style_12) gi_option_menu.pack(fill=tk.BOTH, padx=self.shared_view.SMALL_PAD, pady=(self.shared_view.SMALL_PAD, self.shared_view.SMALL_PAD)) # Products self.frame_container_products = LabelFrame( self.frame_main, text="Produkty:", font=self.shared_view.font_style_10_bold) self.frame_container_products.pack(fill="both", pady=(self.shared_view.SMALL_PAD, 0)) self.canvas_products = Canvas(self.frame_container_products, bd=0, highlightthickness=0, height=200) self.scrollbar_products = Scrollbar(self.frame_container_products, orient=VERTICAL, command=self.canvas_products.yview) self.frame_scrollable = Frame(self.canvas_products) self.frame_scrollable.bind( "<Configure>", lambda e: self.canvas_products.configure( scrollregion=self.canvas_products.bbox("all"))) self.canvas_products.create_window((0, 0), window=self.frame_scrollable, anchor="nw") self.canvas_products.configure( yscrollcommand=self.scrollbar_products.set) self.canvas_products.pack(side="left", fill="both", expand=1) self.scrollbar_products.pack(side="right", fill="y") # Products buttons self.frame_buttons = ttk.Frame(self.frame_main) self.frame_buttons.pack() self.btn_delete_prod = tk.Button(self.frame_buttons, text="Usuń produkt", width=self.shared_view.btn_size, font=self.shared_view.font_style_12) self.btn_delete_prod.pack(side='left', padx=(0, self.shared_view.NORMAL_PAD), pady=self.shared_view.SMALL_PAD) self.btn_edit_prod = tk.Button(self.frame_buttons, text="Edytuj produkt", width=self.shared_view.btn_size, font=self.shared_view.font_style_12) self.btn_edit_prod.pack(side='left', padx=(0, self.shared_view.NORMAL_PAD), pady=self.shared_view.SMALL_PAD) self.btn_add_prod = tk.Button(self.frame_buttons, text="Dodaj produkt", width=self.shared_view.btn_size, font=self.shared_view.font_style_12) self.btn_add_prod.pack(side='left', pady=self.shared_view.SMALL_PAD) # Image label_frame = LabelFrame(self.frame_main, text="Zdjęcie dania:", font=self.shared_view.font_style_10_bold) label_frame.pack(fill=tk.BOTH, pady=(self.shared_view.SMALL_PAD, 0)) frame_image = ttk.Frame(label_frame) frame_image.pack(fill=tk.BOTH, padx=self.shared_view.SMALL_PAD, pady=self.shared_view.SMALL_PAD) if self.default_image is None: self.default_image = convert_to_binary_data(IMG_PATH_NO_IMAGE) self.dish_image = get_image_from_bytes(self.default_image) else: self.dish_image = self.default_image img_width, img_height = scale_image(self.dish_image, self.shared_view.ADD_ITEM_IMG_SIZE) self.dish_image = self.dish_image.resize((img_width, img_height)) self.canvas_avatar = tk.Canvas( frame_image, width=self.shared_view.ADD_ITEM_IMG_SIZE, height=self.shared_view.ADD_ITEM_IMG_SIZE) self.avatar_render = ImageTk.PhotoImage(self.dish_image) self.canvas_image_avatar = self.canvas_avatar.create_image( (self.shared_view.ADD_ITEM_IMG_SIZE / 2) + 1, (self.shared_view.ADD_ITEM_IMG_SIZE / 2) + 1, image=self.avatar_render) self.canvas_avatar.pack() self.btn_add_img = tk.Button(frame_image, text="Ustaw zdjęcie", width=self.shared_view.btn_size, font=self.shared_view.font_style_12) self.btn_add_img.pack(pady=(self.shared_view.SMALL_PAD, 0))
def change_dish_image(self): new_image_filename = filedialog.askopenfilename(initialdir=os.getcwd(), title="Wybierz obrazek", filetypes=(("Pliki jpg", "*.jpg"), ("Pliki png", "*.png"))) if new_image_filename: new_image = convert_to_binary_data(new_image_filename) self.popup_window.set_dish_image(new_image)