From b7c35214ac7dcee624507ebd1108a3795eeaa838 Mon Sep 17 00:00:00 2001 From: Steve Zabka <79079633+cryinkfly@users.noreply.github.com> Date: Fri, 23 Sep 2022 12:14:07 +0200 Subject: [PATCH] Update install.py --- files/builds/development-branch/install.py | 515 +++++++++++---------- 1 file changed, 263 insertions(+), 252 deletions(-) diff --git a/files/builds/development-branch/install.py b/files/builds/development-branch/install.py index b656c26..fcaa3a5 100644 --- a/files/builds/development-branch/install.py +++ b/files/builds/development-branch/install.py @@ -7,7 +7,7 @@ # Author URI: https://cryinkfly.com # # License: MIT # # Copyright (c) 2020-2022 # -# Time/Date: 17:13/20.09.2022 # +# Time/Date: xx:xx/xx.xx.2022 # # Version: 1.8.1 > 1.8.2 # #################################################################################################### @@ -26,34 +26,60 @@ # But it's important to know, you must to purchase the licenses directly from the manufacturer of Autodesk Fusion 360, when you will work with them on Linux! # ############################################################################################################################################################### +############################################################################################################################################################### +# IMPORT MODULE IN PYTHON FOR THE SETUP WIZARD HERE: # +############################################################################################################################################################### + +# Import in python is similar to #include header_file in C/C++. +# Python modules can get access to code from another module by importing the file/function using import. +# The import statement is the most common way of invoking the import machinery, but it is not the only way. + +# The tkinter package (“Tk interface”) is the standard Python interface to the Tcl/Tk GUI toolkit. import tkinter as tk + +# The basic idea for tkinter.ttk is to separate, to the extent possible, the code implementing a widget’s behavior from the code implementing its appearance. from tkinter import ttk + +# The tkinter.messagebox module provides a template base class as well as a variety of convenience methods for commonly used configurations. from tkinter.messagebox import askokcancel, showinfo, WARNING + +# The ImageTk module contains support to create and modify Tkinter BitmapImage and PhotoImage objects from PIL images. from PIL import Image, ImageTk + +# The OS module in Python gives you access to some functions of the operating system. import os +############################################################################################################################################################### +# SET UP THE COLOR SHEME FOR THE SETUP WIZARD HERE: # +############################################################################################################################################################### + +# Color Palette by SUSE Linux & openSUSE +# Link: https://brand.suse.com/brand-system/color-palette + +color1 = "#FE7C3F" # Persimmon +color2 = "#0C322C" # Pine Green +color3 = "#EFEFEF" # Fog +color4 = "#30BA78" # Jungle Green + +############################################################################################################################################################### +# SET UP HEIGHT AND WIDTH OF THE SETUP WIZARD WINDOW HERE: # +############################################################################################################################################################### + +window_height = 450 +window_width = 750 + ############################################################################################################################################################### # CREATE A WINDOW FOR THE SETUP WIZARD HERE: # ############################################################################################################################################################### -# Set up the color: -color1 = "#ff6b00" -color2 = "#222222" -color3 = "#efefef" -color4 = "#ffffff" - -# ----------------------------------------------------------------------------------------------- # - -# Create this window: window = tk.Tk() window.title('Setup Wizard - Autodesk Fusion 360 for Linux') window.configure(bg=color1) +window.iconphoto(False, tk.PhotoImage(file='./images/fusion360.png')) -# ----------------------------------------------------------------------------------------------- # - -# Set the height and width of this window: -window_height = 450 -window_width = 750 +############################################################################################################################################################### +# CONFIGURE THE WINDOW OF THE SETUP WIZARD HERE: # +############################################################################################################################################################### # Get the screen height and width values: screen_width = window.winfo_screenwidth() @@ -67,278 +93,263 @@ y_cordinate = int((screen_height/2) - (window_height/2)) window.geometry("{}x{}+{}+{}".format(window_width, window_height, x_cordinate, y_cordinate)) ############################################################################################################################################################### -# CREATE A ROOT-CONTAINER FOR THE NOTEBOOK-TABS HERE: # +# CREATE A COLOR SHEME FOR THE ROOT-CONTAINER OF THE NOTEBOOK-TABS HERE: # ############################################################################################################################################################### -img = tk.PhotoImage(file='./images/welcome.png') - -notebook_style1 = ttk.Style() -notebook_style1.theme_create( "theme_notebook_tabs", parent="alt", settings={ +notebook_style_root = ttk.Style() +notebook_style_root.theme_create( "theme_notebook_tabs_root", parent="alt", settings={ "TNotebook": {"configure": {"tabmargins": [2, 5, 2, 0] } }, "TNotebook.Tab": { "configure": {"padding": [5, 1], "background": color3 }, "map": {"background": [("selected", color2)], "foreground": [("selected", color3)], "expand": [("selected", [1, 1, 1, 0])] } } } ) -notebook_style1.theme_use("theme_notebook_tabs") +notebook_style_root.theme_use("theme_notebook_tabs_root") +notebook_style_root = ttk.Style(window) +notebook_style_root.configure('lefttab.TNotebook', background=color1, tabposition='nw') -notebook_style1 = ttk.Style(window) -notebook_style1.configure('lefttab.TNotebook', background=color1, tabposition='nw') -notebook1 = ttk.Notebook(window, style='lefttab.TNotebook') +############################################################################################################################################################### +# CREATE A ROOT-CONTAINER FOR THE NOTEBOOK-TABS HERE: # +############################################################################################################################################################### + +# The purpose of a Notebook widget is to provide an area where the user can select pages of content by clicking on tabs at the top of the area. +notebook_root = ttk.Notebook(window, style='lefttab.TNotebook') # Configure the tabs: -notebook1_tab1 = tk.Frame(notebook1, width=700, height=400, bg=color3) -notebook1_tab2 = tk.Frame(notebook1, width=700, height=400, bg=color3) -notebook1_tab3 = tk.Frame(notebook1, width=700, height=400, bg=color3) -notebook1_tab4 = tk.Frame(notebook1, width=700, height=400, bg=color3) -notebook1_tab5 = tk.Frame(notebook1, width=700, height=400, bg=color3) -notebook1_tab6 = tk.Frame(notebook1, width=700, height=400, bg=color3) +notebook_root_tab1 = tk.Frame(notebook_root, width=700, height=400, bg=color3) +notebook_root_tab2 = tk.Frame(notebook_root, width=700, height=400, bg=color3) +notebook_root_tab3 = tk.Frame(notebook_root, width=700, height=400, bg=color3) +notebook_root_tab4 = tk.Frame(notebook_root, width=700, height=400, bg=color3) +notebook_root_tab5 = tk.Frame(notebook_root, width=700, height=400, bg=color3) +notebook_root_tab6 = tk.Frame(notebook_root, width=700, height=400, bg=color3) # Add the tabs to Notebook widget: -notebook1.add(notebook1_tab1, text='Welcome',) -notebook1.add(notebook1_tab2, text='Installation') -notebook1.add(notebook1_tab3, text='Plugins') -notebook1.add(notebook1_tab4, text='System Info') -notebook1.add(notebook1_tab5, text='About') -notebook1.add(notebook1_tab6, text='Help') - -notebook1.pack(pady=20,padx=20, expand=True) - +notebook_root.add(notebook_root_tab1, text='Welcome') +notebook_root.add(notebook_root_tab2, text='Installation') +notebook_root.add(notebook_root_tab3, text='Plugins') +notebook_root.add(notebook_root_tab4, text='System Info') +notebook_root.add(notebook_root_tab5, text='About') +notebook_root.add(notebook_root_tab6, text='Help') +notebook_root.pack(pady=20,padx=20, expand=True) ############################################################################################################################################################### -# ALL NOTEBOOK_TAB-1-FUNCTIONS ARE ARRANGED HERE: # +# CREATE ELEMENTS INTO NOTEBOOK_ROOT_TAB1 ARE ARRANGED HERE: # ############################################################################################################################################################### # Frame 1 - Left-Side: -notebook1_tab1_frame_photo = tk.PhotoImage(file='./images/welcome.png') -notebook1_tab1_frame_image_label = ttk.Label(notebook1_tab1, image=notebook1_tab1_frame_photo) -notebook1_tab1_frame_image_label.pack(padx=20, pady=20, side='left', fill='both', expand=True) +notebook_root_tab1_frame_photo = tk.PhotoImage(file='./images/welcome.png') +notebook_root_tab1_frame_image_label = ttk.Label(notebook_root_tab1, image=notebook_root_tab1_frame_photo) +notebook_root_tab1_frame_image_label.pack(padx=20, pady=20, side='left', fill='both', expand=True) # ----------------------------------------------------------------------------------------------- # # Frame 2 - Right-Side: -notebook1_tab1_frame_text = tk.Frame(notebook1_tab1, background=color3) -notebook1_tab1_frame_text.pack(padx=40) +notebook_root_tab1_frame_text = tk.Frame(notebook_root_tab1, background=color3) +notebook_root_tab1_frame_text.pack(padx=40) +notebook_root_tab1_frame_title = tk.Label(notebook_root_tab1_frame_text, text="Welcome to the Autodesk Fusion 360 for Linux Setup Wizard", font=(24), background=color3, foreground=color2) +notebook_root_tab1_frame_title.pack(pady=20, anchor="w") +notebook_root_tab1_frame_label1 = tk.Label(notebook_root_tab1_frame_text, text="Many thanks to you for deciding to use my setup wizard to be able to use Autodesk Fusion 360 on your computer.", wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab1_frame_label1.pack(pady=5, anchor="w") +notebook_root_tab1_frame_label2 = tk.Label(notebook_root_tab1_frame_text, text="This quick setup wizard will help you configure the basic settings and install the program. Furthermore, it is possible to install some tested plugins after the installation.", wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab1_frame_label2.pack(pady=5, anchor="w") +notebook_root_tab1_frame_label3 = tk.Label(notebook_root_tab1_frame_text, text="Depending on your current environment, setup may involve:", wraplength=430, background=color3, foreground=color2) +notebook_root_tab1_frame_label3.pack(pady=5, anchor="w") +notebook_root_tab1_frame_label4 = tk.Label(notebook_root_tab1_frame_text, text="- Checking your system for minimum installation requirements.", wraplength=430, background=color3, foreground=color2) +notebook_root_tab1_frame_label4.pack(anchor="w") +notebook_root_tab1_frame_label5 = tk.Label(notebook_root_tab1_frame_text, text="- It is recommended that you close all other applications before continuing.", wraplength=430, background=color3, foreground=color2) +notebook_root_tab1_frame_label5.pack(anchor="w") +notebook_root_tab1_frame_label6 = tk.Label(notebook_root_tab1_frame_text, text="Click Next to continue, or Cancel to exit the Setup Wizard.", wraplength=430, background=color3, foreground=color2) +notebook_root_tab1_frame_label6.pack(pady=10, anchor="w") +notebook_root_tab1_frame_label7 = ttk.Label(notebook_root_tab1_frame_text, text="Select Language:", background=color3, foreground=color2) +notebook_root_tab1_frame_label7.pack(side='left', pady=5, padx=(0, 10)) -notebook1_tab1_frame_title = tk.Label(notebook1_tab1_frame_text, text="Welcome to the Autodesk Fusion 360 for Linux Setup Wizard", font=(24), background=color3) -notebook1_tab1_frame_title.pack(pady=20, anchor="w") +# --------------------------------------------------- # -notebook1_tab1_frame_label1 = tk.Label(notebook1_tab1_frame_text, text="Many thanks to you for deciding to use my setup wizard to be able to use Autodesk Fusion 360 on your computer.", wraplength=430, justify="left", background=color3) -notebook1_tab1_frame_label1.pack(pady=5, anchor="w") -notebook1_tab1_frame_label2 = tk.Label(notebook1_tab1_frame_text, text="This quick setup wizard will help you configure the basic settings and install the program. Furthermore, it is possible to install some tested plugins after the installation.", wraplength=430, justify="left", background=color3) -notebook1_tab1_frame_label2.pack(pady=5, anchor="w") -notebook1_tab1_frame_label3 = tk.Label(notebook1_tab1_frame_text, text="Depending on your current environment, setup may involve:", wraplength=430, background=color3) -notebook1_tab1_frame_label3.pack(pady=5, anchor="w") -notebook1_tab1_frame_label4 = tk.Label(notebook1_tab1_frame_text, text="- Checking your system for minimum installation requirements.", wraplength=430, background=color3) -notebook1_tab1_frame_label4.pack(anchor="w") -notebook1_tab1_frame_label5 = tk.Label(notebook1_tab1_frame_text, text="- It is recommended that you close all other applications before continuing.", wraplength=430, background=color3) -notebook1_tab1_frame_label5.pack(anchor="w") -notebook1_tab1_frame_label6 = tk.Label(notebook1_tab1_frame_text, text="Click Next to continue, or Cancel to exit the Setup Wizard.", wraplength=430, background=color3) -notebook1_tab1_frame_label6.pack(pady=20, anchor="w") +# This function changes the language settings: +def change_language(event): + if selected_language.get() == 'Čeština': + print("Čeština selected!") + elif selected_language.get() == 'English': + print("English selected!") + elif selected_language.get() == 'Deutsch': + print("Deutsch selected!") + elif selected_language.get() == 'Español': + print("Español selected!") + elif selected_language.get() == 'Français': + print("Français selected!") + elif selected_language.get() == 'Italiano': + print("Italiano selected!") + elif selected_language.get() == '日本': + print("日本 selected!") + elif selected_language.get() == '한국인': + print("한국인 selected!") + elif selected_language.get() == '中国人': + print("中国人 selected!") -# ----------------------------------------------------------------------------------------------- # +# --------------------------------------------------- # -# Frame 3 - Right-Side: -notebook1_tab1_frame_button = tk.Frame(notebook1_tab1, background=color3) -notebook1_tab1_frame_button.pack(padx=15, pady=15, side='bottom', anchor="e") +# Show a list of supported languages: +selected_language = tk.StringVar() +languages = ['Čeština', +'English', +'Deutsch', +'Español', +'Français', +'Italiano', +'日本', +'한국인', +'中国人'] -notebook1_tab1_frame_button1 = tk.Button(notebook1_tab1_frame_button,text='< Back',width=6,height=1, underline=2, state=tk.DISABLED, background=color4) -notebook1_tab1_frame_button1.grid(row=0, column=0, padx=5, pady=5) -notebook1_tab1_frame_button1.grid_rowconfigure(0, weight=1) -notebook1_tab1_frame_button2 = tk.Button(notebook1_tab1_frame_button,text='Cancel',width=6,height=1, underline=0, command=lambda:window.quit(), background=color4) -notebook1_tab1_frame_button2.grid(row=0, column=1, padx=5, pady=5) -notebook1_tab1_frame_button3 = tk.Button(notebook1_tab1_frame_button,text='Next >',width=6,height=1, underline=0, command=lambda:notebook.select(notebook_tab2), background=color4) -notebook1_tab1_frame_button3.grid(row=0, column=2, padx=5, pady=5) -notebook1_tab1_frame_button4 = tk.Button(notebook1_tab1_frame_button,text='Help',width=6,height=1, underline=0, command=lambda:notebook.select(notebook_tab7), background=color4) -notebook1_tab1_frame_button4.grid(row=0, column=3, padx=5, pady=5) +# --------------------------------------------------- # -############################################################################################################################################################### -# CREATE A CONTAINER FOR THE NOTEBOOK-TAB2-TABS HERE: # -############################################################################################################################################################### +combobox = ttk.Style() +combobox.configure("custom.TCombobox", fieldbackground=color3, background=color3, foreground=color2, selectforeground=color2, selectbackground=color3) -notebook_style2 = ttk.Style(notebook1_tab2) -notebook_style2.configure('bottomtab.TNotebook', tabposition='se', background=color3) - -notebook2 = ttk.Notebook(notebook1_tab2, style='bottomtab.TNotebook') -notebook2_tab1 = tk.Frame(notebook2, background=color3) -notebook2_tab2 = tk.Frame(notebook2, background=color3) -notebook2_tab3 = tk.Frame(notebook2, background=color3) -notebook2_tab4 = tk.Frame(notebook2, background=color3) -notebook2.add(notebook2_tab1, text='1') -notebook2.add(notebook2_tab2, text='2') -notebook2.add(notebook2_tab3, text='3') -notebook2.add(notebook2_tab4, text='4') -notebook2.pack(expand=True) - -############################################################################################################################################################### -# ALL NOTEBOOK_TAB-2-FUNCTIONS ARE ARRANGED HERE: # -############################################################################################################################################################### - -# Frame 1 - Left-Side: -notebook2_tab2_frame_photo = tk.PhotoImage(file='./images/welcome.png') -notebook2_tab2_frame_image_label = ttk.Label(notebook2_tab1, image=notebook2_tab2_frame_photo) -notebook2_tab2_frame_image_label.pack(padx=20, pady=20, side='left', fill='both', expand=True) - -# ----------------------------------------------------------------------------------------------- # - -# Frame 2 - Right-Side: -notebook2_tab2_frame_text = tk.Frame(notebook2_tab1, background=color3) -notebook2_tab2_frame_text.pack(padx=40, anchor="w") - -notebook2_tab2_frame_title = tk.Label(notebook2_tab2_frame_text, text="Welcome to the Autodesk Fusion 360 for Linux Setup Wizard", font=(24), background=color3) -notebook2_tab2_frame_title = tk.Label(notebook2_tab2_frame_text, text="Configure the Autodesk Fusion 360 for Linux Setup Wizard", font=(24), background=color3) -notebook2_tab2_frame_title.pack(pady=20, anchor="w") - -notebook2_tab2_frame_label1 = tk.Label(notebook2_tab2_frame_text, text="In this step you can change some settings to apply your desired configuration of Autodesk Fusion 360 on your computer.", wraplength=430, justify="left", background=color3) -notebook2_tab2_frame_label1.pack(pady=5, anchor="w") - -# ----------------------------------------------------------------------------------------------- # - -def change_distro_logo(event): - if selected_linux_distro.get() == 'Arch Linux': - notebook2_tab2_frame_photo1 = ImageTk.PhotoImage(Image.open("./images/archlinux.png")) - notebook2_tab2_frame_image_label1.configure(image=notebook2_tab2_frame_photo1) - notebook2_tab2_frame_image_label1.image = notebook2_tab2_frame_photo1 - elif selected_linux_distro.get() == 'Debian': - notebook2_tab2_frame_photo1 = ImageTk.PhotoImage(Image.open("./images/debian.png")) - notebook2_tab2_frame_image_label1.configure(image=notebook2_tab2_frame_photo1) - notebook2_tab2_frame_image_label1.image = notebook2_tab2_frame_photo1 - elif selected_linux_distro.get() == 'Fedora': - notebook2_tab2_frame_photo1 = ImageTk.PhotoImage(Image.open("./images/fedora.png")) - notebook2_tab2_frame_image_label1.configure(image=notebook2_tab2_frame_photo1) - notebook2_tab2_frame_image_label1.image = notebook2_tab2_frame_photo1 - elif selected_linux_distro.get() == 'MX Linux': - notebook2_tab2_frame_photo1 = ImageTk.PhotoImage(Image.open("./images/mxlinux.png")) - notebook2_tab2_frame_image_label1.configure(image=notebook2_tab2_frame_photo1) - notebook2_tab2_frame_image_label1.image = notebook2_tab2_frame_photo1 - elif selected_linux_distro.get() == 'Manjaro': - notebook2_tab2_frame_photo1 = ImageTk.PhotoImage(Image.open("./images/manjaro.png")) - notebook2_tab2_frame_image_label1.configure(image=notebook2_tab2_frame_photo1) - notebook2_tab2_frame_image_label1.image = notebook2_tab2_frame_photo1 - elif selected_linux_distro.get() == 'Linux Mint': - notebook2_tab2_frame_photo1 = ImageTk.PhotoImage(Image.open("./images/linuxmint.png")) - notebook2_tab2_frame_image_label1.configure(image=notebook2_tab2_frame_photo1) - notebook2_tab2_frame_image_label1.image = notebook2_tab2_frame_photo1 - elif selected_linux_distro.get() == 'openSUSE': - notebook2_tab2_frame_photo1 = ImageTk.PhotoImage(Image.open("./images/opensuse.png")) - notebook2_tab2_frame_image_label1.configure(image=notebook2_tab2_frame_photo1) - notebook2_tab2_frame_image_label1.image = notebook2_tab2_frame_photo1 - elif selected_linux_distro.get() == 'Pop!_OS': - notebook2_tab2_frame_photo1 = ImageTk.PhotoImage(Image.open("./images/popos.png")) - notebook2_tab2_frame_image_label1.configure(image=notebook2_tab2_frame_photo1) - notebook2_tab2_frame_image_label1.image = notebook2_tab2_frame_photo1 - elif selected_linux_distro.get() == 'RPi Desktop': - notebook2_tab2_frame_photo1 = ImageTk.PhotoImage(Image.open("./images/rpios.png")) - notebook2_tab2_frame_image_label1.configure(image=notebook2_tab2_frame_photo1) - notebook2_tab2_frame_image_label1.image = notebook2_tab2_frame_photo1 - elif selected_linux_distro.get() == 'Red Hat': - notebook2_tab2_frame_photo1 = ImageTk.PhotoImage(Image.open("./images/redhat.png")) - notebook2_tab2_frame_image_label1.configure(image=notebook2_tab2_frame_photo1) - notebook2_tab2_frame_image_label1.image = notebook2_tab2_frame_photo1 - elif selected_linux_distro.get() == 'Solus': - notebook2_tab2_frame_photo1 = ImageTk.PhotoImage(Image.open("./images/solus.png")) - notebook2_tab2_frame_image_label1.configure(image=notebook2_tab2_frame_photo1) - notebook2_tab2_frame_image_label1.image = notebook2_tab2_frame_photo1 - elif selected_linux_distro.get() == 'Ubuntu': - notebook2_tab2_frame_photo1 = ImageTk.PhotoImage(Image.open("./images/ubuntu.png")) - notebook2_tab2_frame_image_label1.configure(image=notebook2_tab2_frame_photo1) - notebook2_tab2_frame_image_label1.image = notebook2_tab2_frame_photo1 - elif selected_linux_distro.get() == 'Void Linux': - notebook2_tab2_frame_photo1 = ImageTk.PhotoImage(Image.open("./images/void.png")) - notebook2_tab2_frame_image_label1.configure(image=notebook2_tab2_frame_photo1) - notebook2_tab2_frame_image_label1.image = notebook2_tab2_frame_photo1 - elif selected_linux_distro.get() == 'Gentoo': - notebook2_tab2_frame_photo1 = ImageTk.PhotoImage(Image.open("./images/gentoo.png")) - notebook2_tab2_frame_image_label1.configure(image=notebook2_tab2_frame_photo1) - notebook2_tab2_frame_image_label1.image = notebook2_tab2_frame_photo1 - -def change_gpu_logo(event): - if selected_gpu.get() == 'AMD': - notebook2_tab2_frame_photo2 = ImageTk.PhotoImage(Image.open("./images/amd.png")) - notebook2_tab2_frame_image_label2.configure(image=notebook2_tab2_frame_photo2) - notebook2_tab2_frame_image_label2.image = notebook2_tab2_frame_photo2 - elif selected_gpu.get() == 'INTEL': - notebook2_tab2_frame_photo2 = ImageTk.PhotoImage(Image.open("./images/intel.png")) - notebook2_tab2_frame_image_label2.configure(image=notebook2_tab2_frame_photo2) - notebook2_tab2_frame_image_label2.image = notebook2_tab2_frame_photo2 - elif selected_gpu.get() == 'NVIDIA': - notebook2_tab2_frame_photo2 = ImageTk.PhotoImage(Image.open("./images/nvidia.png")) - notebook2_tab2_frame_image_label2.configure(image=notebook2_tab2_frame_photo2) - notebook2_tab2_frame_image_label2.image = notebook2_tab2_frame_photo2 - -# ----------------------------------------------------------------------------------------------- # - -# Show a list of supported Linux Distro's -selected_linux_distro = tk.StringVar() -linux_distros = ['Arch Linux', -'Debian', -'Fedora', -'Linux Mint', -'MX Linux', -'Manjaro', -'openSUSE', -'Pop!_OS', -'RPi Desktop', -'Red Hat', -'Solus', -'Ubuntu', -'Void Linux', -'Gentoo'] - -style_missed_combobox = ttk.Style() -style_missed_combobox.configure("Red.TCombobox", fieldbackground=color4, background=color1, foreground=color2, selectforeground=color2, selectbackground=color4) - -notebook2_tab2_frame_label2 = ttk.Label(notebook2_tab2_frame_text, text="1.) Select your installed Linux distro:", background=color3) -notebook2_tab2_frame_label2.pack(fill='x', padx=5, pady=5) - -notebook2_tab2_frame_photo1 = ImageTk.PhotoImage(Image.open("./images/opensuse.png")) -notebook2_tab2_frame_image_label1 = ttk.Label(notebook2_tab2_frame_text, image=notebook2_tab2_frame_photo1, background=color3) -notebook2_tab2_frame_image_label1.pack(side='left', padx=(20, 10)) -notebook2_tab2_frame_combobox1 = ttk.Combobox(notebook2_tab2_frame_text, values=linux_distros, textvariable=selected_linux_distro, width=15, justify='center', style="Red.TCombobox") -notebook2_tab2_frame_combobox1.pack(side='left', fill='x') -notebook2_tab2_frame_combobox1.set('openSUSE') # default selected option -notebook2_tab2_frame_combobox1['state'] = 'readonly' -notebook2_tab2_frame_combobox1.bind("<>", change_distro_logo) - - -# ----------------------------------------------------------------------------------------------- # - -notebook2_tab2_frame_text2 = tk.Frame(notebook2_tab1, background=color3) -notebook2_tab2_frame_text2.pack(padx=40, pady=10, anchor="w") - - -# Show a list of supported Linux Distro's -selected_gpu = tk.StringVar() -gpu_list = ['AMD','INTEL','NVIDIA'] - -notebook2_tab2_frame_label3 = ttk.Label(notebook2_tab2_frame_text2, text="2.) Select your graphics card model:", background=color3) -notebook2_tab2_frame_label3.pack(fill='x', padx=5, pady=5) - -notebook2_tab2_frame_photo2 = ImageTk.PhotoImage(Image.open("./images/amd.png")) -notebook2_tab2_frame_image_label2 = ttk.Label(notebook2_tab2_frame_text2, image=notebook2_tab2_frame_photo2, background=color3) -notebook2_tab2_frame_image_label2.pack(side='left', padx=(20, 10)) -notebook2_tab2_frame_combobox2 = ttk.Combobox(notebook2_tab2_frame_text2, values=gpu_list, textvariable=selected_gpu, width=10, justify='center', style="Red.TCombobox") -notebook2_tab2_frame_combobox2.pack(side='left', fill='x') -notebook2_tab2_frame_combobox2.set('AMD') # default selected option -notebook2_tab2_frame_combobox2['state'] = 'readonly' -notebook2_tab2_frame_combobox2.bind("<>", change_gpu_logo) +# --------------------------------------------------- # +notebook_root_tab1_frame_combobox1 = ttk.Combobox(notebook_root_tab1_frame_text, values=languages, textvariable=selected_language, width=8, justify='center', style="custom.TCombobox") +notebook_root_tab1_frame_combobox1.pack(side='left', fill='x') +notebook_root_tab1_frame_combobox1.set('English') # default selected option +notebook_root_tab1_frame_combobox1['state'] = 'readonly' +notebook_root_tab1_frame_combobox1.bind("<>", change_language) # ----------------------------------------------------------------------------------------------- # # Frame 3 - Right-Side: -notebook2_tab2_frame_button = tk.Frame(notebook2_tab1, background=color3) -notebook2_tab2_frame_button.pack(padx=15, pady=15, side='bottom', anchor="e") +notebook_root_tab1_frame_button_area = tk.Frame(notebook_root_tab1, background=color3) +notebook_root_tab1_frame_button_area.pack(padx=15, pady=15, side='bottom', anchor="e") +notebook_root_tab1_frame_button_back = tk.Button(notebook_root_tab1_frame_button_area,text='< Back',width=6,height=1, underline=2, state=tk.DISABLED, background=color2, foreground=color3) +notebook_root_tab1_frame_button_back.grid(row=0, column=0, padx=5, pady=5) +notebook_root_tab1_frame_button_back.grid_rowconfigure(0, weight=1) +notebook_root_tab1_frame_button_cancel = tk.Button(notebook_root_tab1_frame_button_area,text='Cancel',width=6,height=1, underline=0, command=lambda:window.quit(), background=color2, foreground=color3) +notebook_root_tab1_frame_button_cancel.grid(row=0, column=1, padx=5, pady=5) +notebook_root_tab1_frame_button_next = tk.Button(notebook_root_tab1_frame_button_area,text='Next >',width=6,height=1, underline=0, command=lambda:notebook_root.select(notebook_root_tab2), background=color2, foreground=color3) +notebook_root_tab1_frame_button_next.grid(row=0, column=2, padx=5, pady=5) +notebook_root_tab1_frame_button_help = tk.Button(notebook_root_tab1_frame_button_area,text='Help',width=6,height=1, underline=0, command=lambda:notebook_root.select(notebook_root_tab6), background=color2, foreground=color3) +notebook_root_tab1_frame_button_help.grid(row=0, column=3, padx=5, pady=5) -notebook2_tab2_frame_button1 = tk.Button(notebook2_tab2_frame_button,text='< Back',width=6,height=1, underline=2, command=lambda:notebook.select(notebook_tab1), background=color4) -notebook2_tab2_frame_button1.grid(row=0, column=0, padx=5, pady=5) -notebook2_tab2_frame_button1.grid_rowconfigure(0, weight=1) -notebook2_tab2_frame_button2 = tk.Button(notebook2_tab2_frame_button,text='Cancel',width=6,height=1, underline=0, command=lambda:window.quit(), background=color4) -notebook2_tab2_frame_button2.grid(row=0, column=1, padx=5, pady=5) -notebook2_tab2_frame_button3 = tk.Button(notebook2_tab2_frame_button,text='Next >',width=6,height=1, underline=0, command=change_distro_logo, background=color4) -notebook2_tab2_frame_button3.grid(row=0, column=2, padx=5, pady=5) -notebook2_tab2_frame_button4 = tk.Button(notebook2_tab2_frame_button,text='Help',width=6,height=1, underline=0, command=lambda:notebook.select(notebook_tab7), background=color4) -notebook2_tab2_frame_button4.grid(row=0, column=3, padx=5, pady=5) +############################################################################################################################################################### +# CREATE ELEMENTS INTO NOTEBOOK_ROOT_TAB2 ARE ARRANGED HERE: # +############################################################################################################################################################### + +# Frame 1 - Left-Side: +notebook_root_tab2_frame_photo = tk.PhotoImage(file='./images/welcome.png') +notebook_root_tab2_frame_image_label = ttk.Label(notebook_root_tab2, image=notebook_root_tab2_frame_photo) +notebook_root_tab2_frame_image_label.pack(padx=20, pady=20, side='left', fill='both', expand=True) + +# ----------------------------------------------------------------------------------------------- # + +# Frame 2 - Right-Side: +notebook_root_tab2_frame_text = tk.Frame(notebook_root_tab2, background=color3) +notebook_root_tab2_frame_text.pack(padx=40, anchor="w") +notebook_root_tab2_frame_title = tk.Label(notebook_root_tab2_frame_text, text="Configure the Autodesk Fusion 360 for Linux Setup Wizard", font=(24), background=color3, foreground=color2) +notebook_root_tab2_frame_title.pack(pady=20, anchor="w") +notebook_root_tab2_frame_label1 = tk.Label(notebook_root_tab2_frame_text, text="In this step you can change some settings to apply your desired configuration of Autodesk Fusion 360 on your computer.", wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab2_frame_label1.pack(pady=5, anchor="w") + +############################################################################################################################################################### +# CREATE ELEMENTS INTO NOTEBOOK_ROOT_TAB3 ARE ARRANGED HERE: # +############################################################################################################################################################### + +# Frame 1 - Left-Side: +notebook_root_tab3_frame_photo = tk.PhotoImage(file='./images/welcome.png') +notebook_root_tab3_frame_image_label = ttk.Label(notebook_root_tab3, image=notebook_root_tab3_frame_photo) +notebook_root_tab3_frame_image_label.pack(padx=20, pady=20, side='left', fill='both', expand=True) + +# ----------------------------------------------------------------------------------------------- # + +# Frame 2 - Right-Side: +notebook_root_tab3_frame_text = tk.Frame(notebook_root_tab3, background=color3) +notebook_root_tab3_frame_text.pack(padx=40, anchor="w") +notebook_root_tab3_frame_title = tk.Label(notebook_root_tab3_frame_text, text="Configure the plugins", font=(24), background=color3, foreground=color2) +notebook_root_tab3_frame_title.pack(pady=20, anchor="w") +notebook_root_tab3_frame_label1 = tk.Label(notebook_root_tab3_frame_text, text="In this step you can see a list of available and tested plugins for Autodesk Fusion 360. It is recommended if you want to add additional functionality to your workflow.", wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab3_frame_label1.pack(pady=5, anchor="w") + +############################################################################################################################################################### +# CREATE ELEMENTS INTO NOTEBOOK_ROOT_TAB4 ARE ARRANGED HERE: # +############################################################################################################################################################### + +# Frame 1 - Left-Side: +notebook_root_tab4_frame_photo = tk.PhotoImage(file='./images/welcome.png') +notebook_root_tab4_frame_image_label = ttk.Label(notebook_root_tab4, image=notebook_root_tab4_frame_photo) +notebook_root_tab4_frame_image_label.pack(padx=20, pady=20, side='left', fill='both', expand=True) + +# ----------------------------------------------------------------------------------------------- # + +# Frame 2 - Right-Side: +notebook_root_tab4_frame_text = tk.Frame(notebook_root_tab4, background=color3) +notebook_root_tab4_frame_text.pack(padx=40, anchor="w") +notebook_root_tab4_frame_title = tk.Label(notebook_root_tab4_frame_text, text="System Information", font=(24), background=color3, foreground=color2) +notebook_root_tab4_frame_title.pack(pady=20, anchor="w") +notebook_root_tab4_frame_label1 = tk.Label(notebook_root_tab4_frame_text, text="In this step you can see a list of available and tested plugins for Autodesk Fusion 360. It is recommended if you want to add additional functionality to your workflow.", wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab4_frame_label1.pack(pady=5, anchor="w") + +# ----------------------------------------------------------------------------------------------- # + +system_hostname = os.uname()[1] + +system_os = os.system("lsb_release -d") + +system_kernel = os.uname()[2] + +system_cpu = "" + +system_gpu = "" + +system_shell = "" + +system_resolution = "" + +system_de = "" + +system_wm = "" + +system_wm_theme = "" + +system_theme = "" + +system_icons = "" + + + +# ----------------------------------------------------------------------------------------------- # + +notebook_root_tab4_frame_label2 = tk.Label(notebook_root_tab4_frame_text, text="Hostname: " + system_hostname, wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab4_frame_label2.pack(anchor="w") +notebook_root_tab4_frame_label3 = tk.Label(notebook_root_tab4_frame_text, text="Distro: " + system_os, wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab4_frame_label3.pack(anchor="w") +notebook_root_tab4_frame_label4 = tk.Label(notebook_root_tab4_frame_text, text="Kernel: " + system_kernel, wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab4_frame_label4.pack(anchor="w") +notebook_root_tab4_frame_label5 = tk.Label(notebook_root_tab4_frame_text, text="OS/Platfrom: " + system_cpu, wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab4_frame_label5.pack(anchor="w") +notebook_root_tab4_frame_label6 = tk.Label(notebook_root_tab4_frame_text, text="OS/Platfrom: " + system_gpu, wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab4_frame_label6.pack(anchor="w") +notebook_root_tab4_frame_label7 = tk.Label(notebook_root_tab4_frame_text, text="OS/Platfrom: " + system_shell, wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab4_frame_label7.pack(anchor="w") +notebook_root_tab4_frame_label8 = tk.Label(notebook_root_tab4_frame_text, text="OS/Platfrom: " + system_resolution, wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab4_frame_label8.pack(anchor="w") +notebook_root_tab4_frame_label9 = tk.Label(notebook_root_tab4_frame_text, text="OS/Platfrom: " + system_de, wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab4_frame_label9.pack(anchor="w") +notebook_root_tab4_frame_label10 = tk.Label(notebook_root_tab4_frame_text, text="OS/Platfrom: " + system_wm, wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab4_frame_label10.pack(anchor="w") +notebook_root_tab4_frame_label11 = tk.Label(notebook_root_tab4_frame_text, text="OS/Platfrom: " + system_wm_theme, wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab4_frame_label11.pack(anchor="w") +notebook_root_tab4_frame_label12 = tk.Label(notebook_root_tab4_frame_text, text="OS/Platfrom: " + system_theme, wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab4_frame_label12.pack(anchor="w") +notebook_root_tab4_frame_label13 = tk.Label(notebook_root_tab4_frame_text, text="OS/Platfrom: " + system_icons, wraplength=430, justify="left", background=color3, foreground=color2) +notebook_root_tab4_frame_label13.pack(anchor="w") + + + + +############################################################################################################################################################### +# CREATE A TKINTER MAINLOOP FOR THE SETUP WIZARD HERE: # +############################################################################################################################################################### + +# The method "mainloop" plays a vital role in Tkinter as it is a core application that waits for events and helps in updating the GUI or in simple terms, we can say it is event-driven programming. +# If no mainloop() is used then nothing will appear on the window Screen. +# This method takes all the objects that were created and have interactions response. window.mainloop()