- Add Autoconnect settings to settings.conf
- Add run_as Bash script and open_gitea.py python script - Add Tooltip disable/enable - Rename settings to settings.conf for theme, updates and tooltip enable in one file
This commit is contained in:
		
							
								
								
									
										76
									
								
								.idea/workspace.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										76
									
								
								.idea/workspace.xml
									
									
									
										generated
									
									
									
								
							| @@ -4,10 +4,14 @@ | |||||||
|     <option name="autoReloadType" value="SELECTIVE" /> |     <option name="autoReloadType" value="SELECTIVE" /> | ||||||
|   </component> |   </component> | ||||||
|   <component name="ChangeListManager"> |   <component name="ChangeListManager"> | ||||||
|     <list default="true" id="940e1630-c825-4d4c-be80-bc11f543c122" name="Changes" comment="- Optimize Class. Move to wg_main Import Start/StopBTN and Tooltip"> |     <list default="true" id="940e1630-c825-4d4c-be80-bc11f543c122" name="Changes" comment="- Optimize Class and Tooltip"> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/run_as" afterDir="false" /> | ||||||
|       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> |       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> | ||||||
|       <change beforePath="$PROJECT_DIR$/Changelog" beforeDir="false" afterPath="$PROJECT_DIR$/Changelog" afterDir="false" /> |       <change beforePath="$PROJECT_DIR$/Changelog" beforeDir="false" afterPath="$PROJECT_DIR$/Changelog" afterDir="false" /> | ||||||
|       <change beforePath="$PROJECT_DIR$/testtheme.py" beforeDir="false" /> |       <change beforePath="$PROJECT_DIR$/install" beforeDir="false" afterPath="$PROJECT_DIR$/install" afterDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/settings" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/start_wg.py" beforeDir="false" afterPath="$PROJECT_DIR$/start_wg.py" afterDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/theme" beforeDir="false" /> | ||||||
|       <change beforePath="$PROJECT_DIR$/wg_func.py" beforeDir="false" afterPath="$PROJECT_DIR$/wg_func.py" afterDir="false" /> |       <change beforePath="$PROJECT_DIR$/wg_func.py" beforeDir="false" afterPath="$PROJECT_DIR$/wg_func.py" afterDir="false" /> | ||||||
|       <change beforePath="$PROJECT_DIR$/wg_main.py" beforeDir="false" afterPath="$PROJECT_DIR$/wg_main.py" afterDir="false" /> |       <change beforePath="$PROJECT_DIR$/wg_main.py" beforeDir="false" afterPath="$PROJECT_DIR$/wg_main.py" afterDir="false" /> | ||||||
|     </list> |     </list> | ||||||
| @@ -47,24 +51,25 @@ | |||||||
|     <option name="hideEmptyMiddlePackages" value="true" /> |     <option name="hideEmptyMiddlePackages" value="true" /> | ||||||
|     <option name="showLibraryContents" value="true" /> |     <option name="showLibraryContents" value="true" /> | ||||||
|   </component> |   </component> | ||||||
|   <component name="PropertiesComponent"><![CDATA[{ |   <component name="PropertiesComponent">{ | ||||||
|   "keyToString": { |   "keyToString": { | ||||||
|     "ASKED_ADD_EXTERNAL_FILES": "true", |     "ASKED_ADD_EXTERNAL_FILES": "true", | ||||||
|     "Python.INSTALL.executor": "Run", |     "Python.INSTALL.executor": "Run", | ||||||
|     "Python.install.executor": "Run", |     "Python.install.executor": "Run", | ||||||
|     "Python.main.executor": "Run", |     "Python.main.executor": "Run", | ||||||
|     "Python.messagebox.executor": "Run", |     "Python.messagebox.executor": "Run", | ||||||
|     "Python.start_wg.executor": "Run", |     "Python.start_wg.executor": "Run", | ||||||
|     "Python.testtheme.executor": "Run", |     "Python.testtheme.executor": "Run", | ||||||
|     "Python.wg_func.executor": "Run", |     "Python.wg_func.executor": "Run", | ||||||
|     "Python.wg_main.executor": "Run", |     "Python.wg_main.executor": "Run", | ||||||
|     "RunOnceActivity.ShowReadmeOnStart": "true", |     "RunOnceActivity.ShowReadmeOnStart": "true", | ||||||
|     "Shell Script.install.executor": "Run", |     "Shell Script.install.executor": "Run", | ||||||
|     "git-widget-placeholder": "main", |     "Shell Script.run_as.executor": "Run", | ||||||
|     "last_opened_file_path": "/home/punix/Pyapps/wire-py", |     "git-widget-placeholder": "main", | ||||||
|     "settings.editor.selected.configurable": "reference.settingsdialog.IDE.editor.colors" |     "last_opened_file_path": "/home/punix/Pyapps/wire-py", | ||||||
|  |     "settings.editor.selected.configurable": "reference.settingsdialog.IDE.editor.colors" | ||||||
|   } |   } | ||||||
| }]]></component> | }</component> | ||||||
|   <component name="RecentsManager"> |   <component name="RecentsManager"> | ||||||
|     <key name="CopyFile.RECENT_KEYS"> |     <key name="CopyFile.RECENT_KEYS"> | ||||||
|       <recent name="$PROJECT_DIR$" /> |       <recent name="$PROJECT_DIR$" /> | ||||||
| @@ -143,14 +148,6 @@ | |||||||
|       <option name="presentableId" value="Default" /> |       <option name="presentableId" value="Default" /> | ||||||
|       <updated>1723279982210</updated> |       <updated>1723279982210</updated> | ||||||
|     </task> |     </task> | ||||||
|     <task id="LOCAL-00016" summary="fix label when laat Tunnel delete and fix Tuple error in delete and Start/Stop when listbox empty"> |  | ||||||
|       <option name="closed" value="true" /> |  | ||||||
|       <created>1724495688099</created> |  | ||||||
|       <option name="number" value="00016" /> |  | ||||||
|       <option name="presentableId" value="LOCAL-00016" /> |  | ||||||
|       <option name="project" value="LOCAL" /> |  | ||||||
|       <updated>1724495688099</updated> |  | ||||||
|     </task> |  | ||||||
|     <task id="LOCAL-00017" summary="remove a ',' in DNS Name"> |     <task id="LOCAL-00017" summary="remove a ',' in DNS Name"> | ||||||
|       <option name="closed" value="true" /> |       <option name="closed" value="true" /> | ||||||
|       <created>1724576599289</created> |       <created>1724576599289</created> | ||||||
| @@ -535,7 +532,15 @@ | |||||||
|       <option name="project" value="LOCAL" /> |       <option name="project" value="LOCAL" /> | ||||||
|       <updated>1729593628908</updated> |       <updated>1729593628908</updated> | ||||||
|     </task> |     </task> | ||||||
|     <option name="localTasksCounter" value="65" /> |     <task id="LOCAL-00065" summary="- Optimize Class and Tooltip"> | ||||||
|  |       <option name="closed" value="true" /> | ||||||
|  |       <created>1729938941026</created> | ||||||
|  |       <option name="number" value="00065" /> | ||||||
|  |       <option name="presentableId" value="LOCAL-00065" /> | ||||||
|  |       <option name="project" value="LOCAL" /> | ||||||
|  |       <updated>1729938941027</updated> | ||||||
|  |     </task> | ||||||
|  |     <option name="localTasksCounter" value="66" /> | ||||||
|     <servers /> |     <servers /> | ||||||
|   </component> |   </component> | ||||||
|   <component name="UnknownFeatures"> |   <component name="UnknownFeatures"> | ||||||
| @@ -576,7 +581,6 @@ | |||||||
|   </component> |   </component> | ||||||
|   <component name="VcsManagerConfiguration"> |   <component name="VcsManagerConfiguration"> | ||||||
|     <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" /> |     <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" /> | ||||||
|     <MESSAGE value="fix set rights in install and a .conf a import Tunnel Filedialog Part 1 /home when open" /> |  | ||||||
|     <MESSAGE value="fix a filedialog for hidden Files work
install rollback to bash for start wirepy and wirepy rollback to bash" /> |     <MESSAGE value="fix a filedialog for hidden Files work
install rollback to bash for start wirepy and wirepy rollback to bash" /> | ||||||
|     <MESSAGE value="install rollback bash to py wirepy and wirepy rollback to py" /> |     <MESSAGE value="install rollback bash to py wirepy and wirepy rollback to py" /> | ||||||
|     <MESSAGE value="fix install and .desktop File Tar works now for user home and filebrowser.askfilebrowser start now in user home" /> |     <MESSAGE value="fix install and .desktop File Tar works now for user home and filebrowser.askfilebrowser start now in user home" /> | ||||||
| @@ -601,6 +605,18 @@ | |||||||
|     <MESSAGE value=" - Theme modify to water-theme
 - add ttk.Menubutton vor modern Menu and automatic theme and textvariable for color on font in menu" /> |     <MESSAGE value=" - Theme modify to water-theme
 - add ttk.Menubutton vor modern Menu and automatic theme and textvariable for color on font in menu" /> | ||||||
|     <MESSAGE value=" - Add Options, Help, Update Label and Update Menubutton 
 - Theme now separate Light and Dark" /> |     <MESSAGE value=" - Add Options, Help, Update Label and Update Menubutton 
 - Theme now separate Light and Dark" /> | ||||||
|     <MESSAGE value="- Optimize Class. Move to wg_main Import Start/StopBTN and Tooltip" /> |     <MESSAGE value="- Optimize Class. Move to wg_main Import Start/StopBTN and Tooltip" /> | ||||||
|     <option name="LAST_COMMIT_MESSAGE" value="- Optimize Class. Move to wg_main Import Start/StopBTN and Tooltip" /> |     <MESSAGE value="- Optimize Class and Tooltip" /> | ||||||
|  |     <option name="LAST_COMMIT_MESSAGE" value="- Optimize Class and Tooltip" /> | ||||||
|  |   </component> | ||||||
|  |   <component name="XDebuggerManager"> | ||||||
|  |     <breakpoint-manager> | ||||||
|  |       <breakpoints> | ||||||
|  |         <line-breakpoint enabled="true" suspend="THREAD" type="python-line"> | ||||||
|  |           <url>file://$PROJECT_DIR$/start_wg.py</url> | ||||||
|  |           <line>1</line> | ||||||
|  |           <option name="timeStamp" value="2" /> | ||||||
|  |         </line-breakpoint> | ||||||
|  |       </breakpoints> | ||||||
|  |     </breakpoint-manager> | ||||||
|   </component> |   </component> | ||||||
| </project> | </project> | ||||||
							
								
								
									
										19
									
								
								Changelog
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								Changelog
									
									
									
									
									
								
							| @@ -4,12 +4,23 @@ My standard System: Linux Mint 22 Cinnamon | |||||||
| ## [Unreleased] | ## [Unreleased] | ||||||
|  |  | ||||||
|  - os import in wg_func replaced by other methods |  - os import in wg_func replaced by other methods | ||||||
|  - Guide to menu '?' with pictures |  | ||||||
|  - In Gitea Readme enter text, images |  | ||||||
|  - Own filedialog for import |  | ||||||
|  - If Wire-Py already runs, prevent further start |  - If Wire-Py already runs, prevent further start | ||||||
|  - for loops with lists replaced by List Comprehensions |  - for loops with lists replaced by List Comprehensions | ||||||
|  - Keeping Classes Together |  - Update search after start of Wire-Py | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   ### Added | ||||||
|  | 27-10-2024 | ||||||
|  |  | ||||||
|  | - Add Autoconnect settings to settings.conf | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   ### Added | ||||||
|  | 26-10-2024 | ||||||
|  |  | ||||||
|  | - Add run_as Bash script and open_gitea.py python script | ||||||
|  | - Add Tooltip disable/enable | ||||||
|  | - Rename settings to settings.conf for theme, updates and tooltip enable in one file | ||||||
|  |  | ||||||
|  |  | ||||||
|   ### Added |   ### Added | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								install
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								install
									
									
									
									
									
								
							| @@ -7,8 +7,8 @@ BLUE='\033[30;1;34m' | |||||||
| install_file_with(){ | install_file_with(){ | ||||||
|   clear |   clear | ||||||
|   sudo apt install python3-tk && \ |   sudo apt install python3-tk && \ | ||||||
|   sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py /usr/bin/ && \ |   sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py run_as open_gitea.py /usr/bin/ && \ | ||||||
|   sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && sudo cp -u settings theme /etc/wire_py/ && \ |   sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && sudo cp -u settings.conf /etc/wire_py/ && \ | ||||||
|   sudo cp -uR wp-icons /usr/share/icons/ &&  sudo cp -uR TK-Themes /usr/share/ && \ |   sudo cp -uR wp-icons /usr/share/icons/ &&  sudo cp -uR TK-Themes /usr/share/ && \ | ||||||
|   sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \ |   sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \ | ||||||
|   sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \ |   sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \ | ||||||
| @@ -21,8 +21,8 @@ install_file_with(){ | |||||||
| install_arch_d(){ | install_arch_d(){ | ||||||
|   clear |   clear | ||||||
|   sudo pacman -S --noconfirm tk python3 python-requests && \ |   sudo pacman -S --noconfirm tk python3 python-requests && \ | ||||||
|   sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py /usr/bin/ && \ |   sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py run_as open_gitea.py /usr/bin/ && \ | ||||||
|   sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && sudo cp -u settings theme /etc/wire_py/ && \ |   sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && sudo cp -u settings.conf  /etc/wire_py/ && \ | ||||||
|   sudo cp -uR wp-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \ |   sudo cp -uR wp-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \ | ||||||
|   sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \ |   sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \ | ||||||
|   sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \ |   sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \ | ||||||
| @@ -89,9 +89,9 @@ elif grep -i 'fedora' /etc/os-release > /dev/null 2>&1 | |||||||
|         if ! which python3-tkinter &> /dev/null |         if ! which python3-tkinter &> /dev/null | ||||||
|             then sudo dnf install python3-tkinter -y |             then sudo dnf install python3-tkinter -y | ||||||
|  |  | ||||||
|                 sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py /usr/bin/ && \ |                 sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py run_as open_gitea.py /usr/bin/ && \ | ||||||
|                 sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && \ |                 sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && \ | ||||||
|                 sudo cp -u settings theme /etc/wire_py/ && \ |                 sudo cp -u settings.conf /etc/wire_py/ && \ | ||||||
|                 sudo cp -uR wp-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \ |                 sudo cp -uR wp-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \ | ||||||
|                 sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \ |                 sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \ | ||||||
|                 sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \ |                 sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \ | ||||||
| @@ -105,9 +105,9 @@ elif grep -i 'suse' /etc/os-release > /dev/null 2>&1 | |||||||
|     then |     then | ||||||
|         if ! which python311-tk &> /dev/null |         if ! which python311-tk &> /dev/null | ||||||
|             then sudo zypper install python311-tk |             then sudo zypper install python311-tk | ||||||
|                  sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py /usr/bin/ && \ |                  sudo cp -u wg_main.py start_wg.py wg_func.py wirepy.py run_as open_gitea.py /usr/bin/ && \ | ||||||
|                  sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && \ |                  sudo mkdir -p /etc/wire_py && sudo touch /etc/wire_py/.keys && \ | ||||||
|                  sudo cp -u settings theme /etc/wire_py/ && \ |                  sudo cp -u settings.conf /etc/wire_py/ && \ | ||||||
|                  sudo cp -uR wp-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \ |                  sudo cp -uR wp-icons /usr/share/icons/ && sudo cp -uR TK-Themes /usr/share/ && \ | ||||||
|                  sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \ |                  sudo chown -R root:root /etc/wire_py && sudo chmod 755 /etc/wire_py && \ | ||||||
|                  sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \ |                  sudo ln -sf /usr/bin/wirepy.py /usr/local/bin/wirepy && \ | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								start_wg.py
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								start_wg.py
									
									
									
									
									
								
							| @@ -2,11 +2,13 @@ | |||||||
| from subprocess import check_call | from subprocess import check_call | ||||||
| from pathlib import Path | from pathlib import Path | ||||||
|  |  | ||||||
| path_to_file = Path('/etc/wire_py/wg_py') | path_to_file = Path('/etc/wire_py/settings.conf') | ||||||
|  |  | ||||||
| if Path.exists(path_to_file): | with open(path_to_file, 'r') as a_con: | ||||||
|     a_con = Path.read_text(path_to_file) |     lines = a_con.readlines() | ||||||
|     check_call(['nmcli', 'connection', 'up', a_con]) |     a_con = lines[7].strip() | ||||||
| else: |     if a_con != 'off': | ||||||
|     pass |         check_call(['nmcli', 'connection', 'up', a_con]) | ||||||
|  |     else: | ||||||
|  |         pass | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										71
									
								
								wg_func.py
									
									
									
									
									
								
							
							
						
						
									
										71
									
								
								wg_func.py
									
									
									
									
									
								
							| @@ -16,14 +16,11 @@ import requests | |||||||
| ''' 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year ''' | ''' 1 = 1. Year, 09 = Month of the Year, 2924 = Day and Year of the Year ''' | ||||||
| version = 'v. 1.10.2124' | version = 'v. 1.10.2124' | ||||||
|  |  | ||||||
| path_to_file = Path('/etc/wire_py/wg_py') | path_to_file2 = Path('/etc/wire_py/settings.conf') | ||||||
| path_to_file2 = Path('/etc/wire_py/settings') |  | ||||||
| path_to_file3 = Path('/etc/wire_py/theme') |  | ||||||
| _u = Path.read_text(Path('/tmp/_u')) | _u = Path.read_text(Path('/tmp/_u')) | ||||||
|  |  | ||||||
| UPDATE_API_URL = 'https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases' | UPDATE_API_URL = 'https://git.ilunix.de/api/v1/repos/punix/Wire-Py/releases' | ||||||
|  |  | ||||||
| tips = True |  | ||||||
|  |  | ||||||
| class WirePyUpdate: | class WirePyUpdate: | ||||||
|     @staticmethod |     @staticmethod | ||||||
| @@ -34,7 +31,7 @@ class WirePyUpdate: | |||||||
|             response_dict = response_dict[0] |             response_dict = response_dict[0] | ||||||
|             with open(path_to_file2, 'r') as set_file: |             with open(path_to_file2, 'r') as set_file: | ||||||
|                 set_file = set_file.read() |                 set_file = set_file.read() | ||||||
|                 if 'Update on' in set_file: |                 if 'on\n' in set_file: | ||||||
|                     if version[3:] != response_dict['tag_name']: |                     if version[3:] != response_dict['tag_name']: | ||||||
|                         return response_dict['tag_name'] |                         return response_dict['tag_name'] | ||||||
|                     else: |                     else: | ||||||
| @@ -78,7 +75,8 @@ class WirePyUpdate: | |||||||
| res = WirePyUpdate.api_down() | res = WirePyUpdate.api_down() | ||||||
|  |  | ||||||
|  |  | ||||||
| def msg_window(img_w, img_i, w_title, w_txt): |  | ||||||
|  | def msg_window(img_w, img_i, w_title, w_txt, txt2=None, com=None): | ||||||
|     """ |     """ | ||||||
|     Function for different message windows for the user. with 4 arguments to be passed. |     Function for different message windows for the user. with 4 arguments to be passed. | ||||||
|     To create messages with your own images, icons, and titles. As an alternative to Python Messagebox. |     To create messages with your own images, icons, and titles. As an alternative to Python Messagebox. | ||||||
| @@ -95,13 +93,25 @@ def msg_window(img_w, img_i, w_title, w_txt): | |||||||
|     msg.configure(pady=15, padx=15) |     msg.configure(pady=15, padx=15) | ||||||
|     msg.img = tk.PhotoImage(file=img_w) |     msg.img = tk.PhotoImage(file=img_w) | ||||||
|     msg.i_window = tk.Label(msg, image=msg.img) |     msg.i_window = tk.Label(msg, image=msg.img) | ||||||
|     msg.i_window.grid(column=0, row=0) |  | ||||||
|     label = tk.Label(msg, text=w_txt) |     label = tk.Label(msg, text=w_txt) | ||||||
|     label.config(font=('Ubuntu', 11), padx=15) |  | ||||||
|     label.grid(column=1, row=0) |     label.grid(column=1, row=0) | ||||||
|     button = ttk.Button(msg, text='OK', command=msg.destroy, padding=4) |  | ||||||
|     button.config() |     if txt2 != None and com != None: | ||||||
|     button.grid(column=0, columnspan=2, row=1) |         label.config(font=('Ubuntu', 11), padx=15, justify='left') | ||||||
|  |         msg.i_window.grid(column=0, row=0, sticky='nw') | ||||||
|  |         button2 = ttk.Button(msg, text=f'{txt2}', command=com, padding=4) | ||||||
|  |         button2.grid(column=0, row=1, sticky='e', columnspan=2) | ||||||
|  |         button = ttk.Button(msg, text='OK', command=msg.destroy, padding=4) | ||||||
|  |         button.grid(column=0, row=1, sticky='w', columnspan=2) | ||||||
|  |  | ||||||
|  |     else: | ||||||
|  |         label.config(font=('Ubuntu', 11), padx=15) | ||||||
|  |         msg.i_window.grid(column=0, row=0) | ||||||
|  |         button = ttk.Button(msg, text='OK', command=msg.destroy, padding=4) | ||||||
|  |         button.grid(column=0, columnspan=2, row=1) | ||||||
|  |  | ||||||
|     img_i = tk.PhotoImage(file=img_i) |     img_i = tk.PhotoImage(file=img_i) | ||||||
|     msg.iconphoto(True, img_i) |     msg.iconphoto(True, img_i) | ||||||
|     msg.columnconfigure(0, weight=1) |     msg.columnconfigure(0, weight=1) | ||||||
| @@ -128,8 +138,9 @@ class Tunnel: | |||||||
|         self.add = None |         self.add = None | ||||||
|  |  | ||||||
|     def color(self): |     def color(self): | ||||||
|         with open(path_to_file3, 'r') as read_file: |         with open(path_to_file2, 'r') as read_file: | ||||||
|             if 'light' in read_file: |             lines = read_file.readlines() | ||||||
|  |             if 'light\n' in lines: | ||||||
|                 self.lb_tunnel = ttk.Label(self, textvariable=self.StrVar, foreground='green') |                 self.lb_tunnel = ttk.Label(self, textvariable=self.StrVar, foreground='green') | ||||||
|  |  | ||||||
|             else: |             else: | ||||||
| @@ -280,8 +291,7 @@ class Tunnel: | |||||||
|                 source = Path('/tmp/wire_py') |                 source = Path('/tmp/wire_py') | ||||||
|                 Path.unlink(Path(source) / 'wg_py', missing_ok=True) |                 Path.unlink(Path(source) / 'wg_py', missing_ok=True) | ||||||
|                 Path.unlink(Path(source) / '.keys', missing_ok=True) |                 Path.unlink(Path(source) / '.keys', missing_ok=True) | ||||||
|                 Path.unlink(Path(source) / 'settings', missing_ok=True) |                 Path.unlink(Path(source) / 'settings.conf', missing_ok=True) | ||||||
|                 Path.unlink(Path(source) / 'theme', missing_ok=True) |  | ||||||
|                 shutil.make_archive(wg_tar, 'zip', source) |                 shutil.make_archive(wg_tar, 'zip', source) | ||||||
|                 shutil.chown(wg_tar + '.zip', 1000, 1000) |                 shutil.chown(wg_tar + '.zip', 1000, 1000) | ||||||
|                 shutil.rmtree(source) |                 shutil.rmtree(source) | ||||||
| @@ -316,6 +326,16 @@ class Tunnel: | |||||||
|         except TypeError: |         except TypeError: | ||||||
|             pass |             pass | ||||||
|  |  | ||||||
|  |     @staticmethod | ||||||
|  |     def if_tip(): | ||||||
|  |         with open(path_to_file2, 'r') as set_file2: | ||||||
|  |                 lines2 = set_file2.readlines() | ||||||
|  |                 if 'False\n' in lines2: | ||||||
|  |                     return False | ||||||
|  |                 else: | ||||||
|  |                     return True | ||||||
|  |  | ||||||
|  | tips = Tunnel.if_tip() | ||||||
|  |  | ||||||
| class FileHandle: | class FileHandle: | ||||||
|     """ |     """ | ||||||
| @@ -341,14 +361,23 @@ class FileHandle: | |||||||
|             select_tl = self.l_box.get(select_tunnel[0]) |             select_tl = self.l_box.get(select_tunnel[0]) | ||||||
|  |  | ||||||
|             if self.selected_option.get() == 0: |             if self.selected_option.get() == 0: | ||||||
|                 Path.unlink(path_to_file) |                 with open(path_to_file2, 'r') as set_file3: | ||||||
|  |                     lines3 = set_file3.readlines() | ||||||
|  |                     lines3[7] = 'off' | ||||||
|  |                 with open(path_to_file2, 'w') as set_file3: | ||||||
|  |                     set_file3.writelines(lines3) | ||||||
|  |  | ||||||
|                 tl = Tunnel.list() |                 tl = Tunnel.list() | ||||||
|  |  | ||||||
|                 if len(tl) == 0: |                 if len(tl) == 0: | ||||||
|                     self.wg_autostart.configure(state='disabled') |                     self.wg_autostart.configure(state='disabled') | ||||||
|  |  | ||||||
|             if self.selected_option.get() >= 1: |             if self.selected_option.get() >= 1: | ||||||
|                 Path.write_text(path_to_file, select_tl) |                 with open(path_to_file2, 'r') as set_file3: | ||||||
|  |                     lines3 = set_file3.readlines() | ||||||
|  |                     lines3[7] = select_tl | ||||||
|  |                 with open(path_to_file2, 'w') as set_file3: | ||||||
|  |                     set_file3.writelines(lines3) | ||||||
|  |  | ||||||
|         except IndexError: |         except IndexError: | ||||||
|             self.selected_option.set(1) |             self.selected_option.set(1) | ||||||
| @@ -373,13 +402,13 @@ class OnOff: | |||||||
|         self.lb_frame_buttons = None |         self.lb_frame_buttons = None | ||||||
|  |  | ||||||
|     def on_off(self): |     def on_off(self): | ||||||
|  |         with open(path_to_file2, 'r') as set_file4: | ||||||
|  |             lines4 = set_file4.readlines() | ||||||
|  |  | ||||||
|         if Path.exists(path_to_file): |         if lines4[7] != 'off': | ||||||
|             self.selected_option.set(1) |             self.selected_option.set(1) | ||||||
|             self.autoconnect_var.set('') |             self.autoconnect_var.set('') | ||||||
|             if not Path.is_dir(Path('/etc/wire_py')): |             self.auto_con = lines4[7] | ||||||
|                 Path.mkdir(Path('/etc/wire_py')) |  | ||||||
|             self.auto_con = Path.read_text(path_to_file) |  | ||||||
|  |  | ||||||
|         else: |         else: | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										133
									
								
								wg_main.py
									
									
									
									
									
								
							
							
						
						
									
										133
									
								
								wg_main.py
									
									
									
									
									
								
							| @@ -8,8 +8,7 @@ from subprocess import check_call | |||||||
| from tkinter import * | from tkinter import * | ||||||
| from tkinter import filedialog, ttk | from tkinter import filedialog, ttk | ||||||
|  |  | ||||||
| from wg_func import (Tunnel, FileHandle, OnOff, msg_window, WirePyUpdate, res, _u, version, path_to_file2, | from wg_func import (Tunnel, FileHandle, OnOff, msg_window, WirePyUpdate, res, _u, version, path_to_file2, tips) | ||||||
|                      path_to_file3, tips) |  | ||||||
|  |  | ||||||
| tcl_path = Path('/usr/share/TK-Themes') | tcl_path = Path('/usr/share/TK-Themes') | ||||||
|  |  | ||||||
| @@ -31,8 +30,9 @@ class MainWindow(tk.Tk): | |||||||
|         self.style = ttk.Style(self) |         self.style = ttk.Style(self) | ||||||
|         self.tk.call('source', str(tcl_path) + '/water.tcl') |         self.tk.call('source', str(tcl_path) + '/water.tcl') | ||||||
|         #self.tk.call('source', 'TK-Themes/water.tcl') |         #self.tk.call('source', 'TK-Themes/water.tcl') | ||||||
|         with open(path_to_file3, 'r') as read_file: |         with open(path_to_file2, 'r') as read_file: | ||||||
|             if 'light' in read_file: |             lines = read_file.readlines() | ||||||
|  |             if 'light\n' in lines: | ||||||
|                 self.tk.call('set_theme', 'light') |                 self.tk.call('set_theme', 'light') | ||||||
|             else: |             else: | ||||||
|                 self.tk.call('set_theme', 'dark') |                 self.tk.call('set_theme', 'dark') | ||||||
| @@ -44,42 +44,77 @@ class MainWindow(tk.Tk): | |||||||
|         self.iconphoto(True, self.wg_icon) |         self.iconphoto(True, self.wg_icon) | ||||||
|  |  | ||||||
|         #Set on or off in file |         #Set on or off in file | ||||||
|         def on_off(): |         def update(): | ||||||
|             if set_option.get() == 1: |             if set_update.get() == 1: | ||||||
|  |                 with open(path_to_file2, 'r') as set_file2: | ||||||
|  |                     lines2  = set_file2.readlines() | ||||||
|  |                     lines2[1] = 'off\n' | ||||||
|                 with open(path_to_file2, 'w') as set_file2: |                 with open(path_to_file2, 'w') as set_file2: | ||||||
|                     set_file2.write('Update off') |                     set_file2.writelines(lines2) | ||||||
|  |  | ||||||
|             if set_option.get() == 0: |             if set_update.get() == 0: | ||||||
|  |                 with open(path_to_file2, 'r') as set_file2: | ||||||
|  |                     lines2  = set_file2.readlines() | ||||||
|  |                     lines2[1] = 'on\n' | ||||||
|                 with open(path_to_file2, 'w') as set_file2: |                 with open(path_to_file2, 'w') as set_file2: | ||||||
|                     set_file2.write('Update on') |                     set_file2.writelines(lines2) | ||||||
|  |  | ||||||
|  |         #Set on or off in file | ||||||
|  |         def tooltip(): | ||||||
|  |             if set_tip.get(): | ||||||
|  |                 print(set_tip.get()) | ||||||
|  |                 with open(path_to_file2, 'r') as set_file2: | ||||||
|  |                     lines2  = set_file2.readlines() | ||||||
|  |                     lines2[5] = 'False\n' | ||||||
|  |                 with open(path_to_file2, 'w') as set_file2: | ||||||
|  |                     set_file2.writelines(lines2) | ||||||
|  |  | ||||||
|  |             else: | ||||||
|  |                 with open(path_to_file2, 'r') as set_file2: | ||||||
|  |                     lines2  = set_file2.readlines() | ||||||
|  |                     lines2[5] = 'True\n' | ||||||
|  |                 with open(path_to_file2, 'w') as set_file2: | ||||||
|  |                     set_file2.writelines(lines2) | ||||||
|  |  | ||||||
|         # Set dark or light |         # Set dark or light | ||||||
|         def theme_change_light(): |         def theme_change_light(): | ||||||
|             if self.tk.call("ttk::style", "theme", "use") == "water-dark": |             if self.tk.call("ttk::style", "theme", "use") == "water-dark": | ||||||
|                 # Set light theme |                 # Set light theme | ||||||
|                 self.tk.call('set_theme', 'light') |                 self.tk.call('set_theme', 'light') | ||||||
|                 with open(path_to_file3, 'w') as theme_set2: |                 with open(path_to_file2, 'r') as theme_set2: | ||||||
|                     theme_set2.write('light') |                     lines3  = theme_set2.readlines() | ||||||
|  |                     lines3[3] = 'light\n' | ||||||
|  |                 with open(path_to_file2, 'w') as theme_set2: | ||||||
|  |                     theme_set2.writelines(lines3) | ||||||
|  |  | ||||||
|         def theme_change_dark(): |         def theme_change_dark(): | ||||||
|             if not self.tk.call("ttk::style", "theme", "use") == "water-dark": |             if not self.tk.call("ttk::style", "theme", "use") == "water-dark": | ||||||
|                 # Set dark theme |                 # Set dark theme | ||||||
|                 self.tk.call('set_theme', 'dark') |                 self.tk.call('set_theme', 'dark') | ||||||
|                 with open(path_to_file3, 'w') as theme_set2: |                 with open(path_to_file2, 'r') as theme_set2: | ||||||
|                     theme_set2.write('dark') |                     lines4  = theme_set2.readlines() | ||||||
|  |                     lines4[3] = 'dark\n' | ||||||
|  |                 with open(path_to_file2, 'w') as theme_set2: | ||||||
|  |                     theme_set2.writelines(lines4) | ||||||
|  |  | ||||||
|         def info(): |         def info(): | ||||||
|             """img_w, img_i, w_title, w_txt hand over""" |             def link_btn(): | ||||||
|  |                 _u1 = str(_u[6:]) | ||||||
|  |                 path_to_file = Path('/usr/bin/./run_as') | ||||||
|  |                 check_call(['su', _u1, path_to_file]) | ||||||
|  |  | ||||||
|  |             """img_w, img_i, w_title, w_txt , txt2, com hand over""" | ||||||
|             iw = r'/usr/share/icons/wp-icons/48/wg_vpn.png' |             iw = r'/usr/share/icons/wp-icons/48/wg_vpn.png' | ||||||
|             ii = r'/usr/share/icons/wp-icons/48/wg_msg.png' |             ii = r'/usr/share/icons/wp-icons/48/wg_msg.png' | ||||||
|             wt = 'Instruction' |             wt = 'Info' | ||||||
|             msg_t = ('Wire-Py: Wireguard Gui for Linux systems.\n\n' |             msg_t = ('Wire-Py a simple Wireguard Gui for Linux systems.\n\n' | ||||||
|                      'Wire-Py is open source software written in Python.\n\n' |                      'Wire-Py is open source software written in Python.\n\n' | ||||||
|                      'Email: polunga40@unity-mail.de also likes for donation.\n\n' |                      'Email: polunga40@unity-mail.de also likes for donation.\n\n' | ||||||
|                      'https://git.ilunix.de/punix/Wire-P\n\n' |  | ||||||
|                      'Use without warranty!\n') |                      'Use without warranty!\n') | ||||||
|  |             txt2 = 'Go to Wire-Py git' | ||||||
|  |             com = link_btn | ||||||
|  |  | ||||||
|             msg_window(iw, ii, wt, msg_t) |             msg_window(iw, ii, wt, msg_t, txt2, com) | ||||||
|  |  | ||||||
|         ''' Frame for Menu ''' |         ''' Frame for Menu ''' | ||||||
|         self.menu_frame = ttk.Frame(self) |         self.menu_frame = ttk.Frame(self) | ||||||
| @@ -119,39 +154,34 @@ class MainWindow(tk.Tk): | |||||||
|         self.options_btn.bind('<Enter>', sets_enter) |         self.options_btn.bind('<Enter>', sets_enter) | ||||||
|         self.options_btn.bind('<Leave>', sets_leave) |         self.options_btn.bind('<Leave>', sets_leave) | ||||||
|  |  | ||||||
|         set_option = tk.IntVar() |         set_update = tk.IntVar() | ||||||
|  |         set_tip = tk.BooleanVar() | ||||||
|         self.settings = tk.Menu(self) |         self.settings = tk.Menu(self, relief='flat') | ||||||
|         self.options_btn.configure(menu=self.settings, style='Toolbutton') |         self.options_btn.configure(menu=self.settings, style='Toolbutton') | ||||||
|         self.settings.add_checkbutton(label='Disable updates', command=on_off, variable=set_option) |         self.settings.add_checkbutton(label='Disable Updates', command=update, variable=set_update) | ||||||
|  |         self.settings.add_checkbutton(label='Disable Tooltips', command=tooltip, variable=set_tip) | ||||||
|         self.settings.add_command(label='Light', command=theme_change_light) |         self.settings.add_command(label='Light', command=theme_change_light) | ||||||
|         self.settings.add_command(label='Dark', command=theme_change_dark) |         self.settings.add_command(label='Dark', command=theme_change_dark) | ||||||
|  |  | ||||||
|         ''' About BTN Menu / Label ''' |         ''' About BTN Menu / Label ''' | ||||||
|         self.about_btn = ttk.Menubutton(self.menu_frame, text='About') |         self.about_btn = ttk.Button(self.menu_frame, text='About', style='Toolbutton', command=info) | ||||||
|         self.about_btn.grid(column=2, row=0) |         self.about_btn.grid(column=2, row=0) | ||||||
|  |  | ||||||
|         def about_enter(event): |  | ||||||
|             """ The mouse moves into the entry widget """ |  | ||||||
|             window.my_tool_tip = MyToolTip(event.x_root, event.y_root, 'Click for Info') |  | ||||||
|  |  | ||||||
|         def about_leave(_): |  | ||||||
|             """ The mouse moves from the entry widget """ |  | ||||||
|             ''' Remove Tool-Tip ''' |  | ||||||
|             window.my_tool_tip.destroy() |  | ||||||
|  |  | ||||||
|         self.about_btn.bind('<Enter>', about_enter) |  | ||||||
|         self.about_btn.bind('<Leave>', about_leave) |  | ||||||
|         self.readme = tk.Menu(self) |         self.readme = tk.Menu(self) | ||||||
|         self.about_btn.configure(menu=self.readme, style='Toolbutton') |  | ||||||
|         self.readme.add_command(label='Info', command=info) |  | ||||||
|  |  | ||||||
|         ''' Update Label ''' |         ''' Update and Tooltip Label ''' | ||||||
|         self.updates_lb = ttk.Label(self.menu_frame) |         self.updates_lb = ttk.Label(self.menu_frame) | ||||||
|         self.updates_lb.grid(column=3, row=0, padx=10) |         self.updates_lb.grid(column=3, row=0, padx=10) | ||||||
|  |  | ||||||
|  |         '''View Checkbox for enable or disable Tooltip ''' | ||||||
|  |         if tips: | ||||||
|  |             set_tip.set(value=False) | ||||||
|  |         else: | ||||||
|  |             set_tip.set(value=True) | ||||||
|  |  | ||||||
|  |         '''View Checkbox for enable or disable Updates ''' | ||||||
|         if res == 'False': |         if res == 'False': | ||||||
|             set_option.set(value=1) |             set_update.set(value=1) | ||||||
|             self.updates_lb.configure(text='Update search off') |             self.updates_lb.configure(text='Update search off') | ||||||
|  |  | ||||||
|             def disable_enter(event): |             def disable_enter(event): | ||||||
| @@ -183,11 +213,10 @@ class MainWindow(tk.Tk): | |||||||
|             self.updates_lb.bind('<Enter>', congratulations_enter) |             self.updates_lb.bind('<Enter>', congratulations_enter) | ||||||
|             self.updates_lb.bind('<Leave>', congratulations_leave) |             self.updates_lb.bind('<Leave>', congratulations_leave) | ||||||
|         else: |         else: | ||||||
|             set_option.set(value=0) |             set_update.set(value=0) | ||||||
|             text = f'Update {res} available!' |             text = f'Update {res} available!' | ||||||
|  |  | ||||||
|             ''' Update BTN Menu''' |             ''' Update BTN Menu''' | ||||||
|  |  | ||||||
|             self.update_btn = ttk.Menubutton(self.menu_frame, text=text) |             self.update_btn = ttk.Menubutton(self.menu_frame, text=text) | ||||||
|             self.update_btn.grid(column=4, row=0, padx=0) |             self.update_btn.grid(column=4, row=0, padx=0) | ||||||
|  |  | ||||||
| @@ -204,7 +233,7 @@ class MainWindow(tk.Tk): | |||||||
|             self.update_btn.bind('<Enter>', download_enter) |             self.update_btn.bind('<Enter>', download_enter) | ||||||
|             self.update_btn.bind('<Leave>', download_leave) |             self.update_btn.bind('<Leave>', download_leave) | ||||||
|  |  | ||||||
|             self.download = tk.Menu(self) |             self.download = tk.Menu(self, relief='flat') | ||||||
|  |  | ||||||
|             self.update_btn.configure(menu=self.download, style='Toolbutton') |             self.update_btn.configure(menu=self.download, style='Toolbutton') | ||||||
|             self.download.add_command(label='Download', command=WirePyUpdate.download) |             self.download.add_command(label='Download', command=WirePyUpdate.download) | ||||||
| @@ -631,14 +660,15 @@ class FrameWidgets(ttk.Frame): | |||||||
|                     pre_key = key[3] |                     pre_key = key[3] | ||||||
|                 check_call(['nmcli', 'connection', 'delete', select_tl]) |                 check_call(['nmcli', 'connection', 'delete', select_tl]) | ||||||
|                 self.l_box.delete(self.select_tunnel[0]) |                 self.l_box.delete(self.select_tunnel[0]) | ||||||
|                 if Path.is_file(Path('/etc/wire_py/wg_py')): |                 with open(path_to_file2, 'r') as set_file6: | ||||||
|                     path_to_file = Path('/etc/wire_py') / 'wg_py' |                     lines6 = set_file6.readlines() | ||||||
|                     a_con = Path.read_text(path_to_file) |                     if select_tl == lines6[7].strip() and not 'off' in lines6[7].strip(): | ||||||
|                     if select_tl == a_con: |                         lines6[7] = 'off' | ||||||
|  |                         with open(path_to_file2, 'w') as set_file7: | ||||||
|  |                             set_file7.writelines(lines6) | ||||||
|                         self.selected_option.set(0) |                         self.selected_option.set(0) | ||||||
|                         self.autoconnect_var.set('no Autoconnect') |                         self.autoconnect_var.set('no Autoconnect') | ||||||
|  |  | ||||||
|                         Path.unlink(path_to_file) |  | ||||||
|                 Path.unlink(Path('/etc/wire_py') / str(select_tl + '.conf')) |                 Path.unlink(Path('/etc/wire_py') / str(select_tl + '.conf')) | ||||||
|                 with open('/etc/wire_py/.keys', 'r') as readfile: |                 with open('/etc/wire_py/.keys', 'r') as readfile: | ||||||
|                     with open('/etc/wire_py/.keys2', 'w') as writefile: |                     with open('/etc/wire_py/.keys2', 'w') as writefile: | ||||||
| @@ -853,12 +883,13 @@ class FrameWidgets(ttk.Frame): | |||||||
|                     if self.a != '' and self.a == select_tl: |                     if self.a != '' and self.a == select_tl: | ||||||
|                         self.a = Tunnel.active() |                         self.a = Tunnel.active() | ||||||
|                         self.StrVar.set(value=self.a) |                         self.StrVar.set(value=self.a) | ||||||
|                     if Path.is_file(Path('/etc/wire_py/wg_py')): |                         with open(path_to_file2, 'r') as set_file5: | ||||||
|                         path_to_file = Path('/etc/wire_py') / 'wg_py' |                             lines5 = set_file5.readlines() | ||||||
|                         a_con = Path.read_text(path_to_file) |                         if select_tl == lines5[7].strip() and not 'off' in lines5[7].strip(): | ||||||
|                         if select_tl == a_con: |                             lines5[7] = new_a_connect | ||||||
|  |                             with open(path_to_file2, 'w') as theme_set5: | ||||||
|  |                                 theme_set5.writelines(lines5) | ||||||
|                             self.autoconnect_var.set(value=new_a_connect) |                             self.autoconnect_var.set(value=new_a_connect) | ||||||
|                             Path.write_text(path_to_file, new_a_connect) |  | ||||||
|  |  | ||||||
|                     return select_tl |                     return select_tl | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user