Example #1
0
    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']}")
Example #2
0
 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))
Example #4
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))
Example #5
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)