Skip to content

Commit

Permalink
Upload: v6.9-stable Source Files
Browse files Browse the repository at this point in the history
InsertX2k authored Jul 26, 2023
1 parent 4fc1e15 commit 81a11a5
Showing 9 changed files with 3,542 additions and 50 deletions.
2 changes: 1 addition & 1 deletion Config.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[ProgConfig]
version = 6.8.0
version = 6.9.0
rammappath = $DEFAULT
adwclrpath = $DEFAULT
winxpepath = $NONE
11 changes: 7 additions & 4 deletions donators.py
Original file line number Diff line number Diff line change
@@ -33,10 +33,13 @@
donators_list_mrx_server = "https://raw.githubusercontent.com/InsertX2k/software-versions/main/donators.txt"
donators_list_file_local_path = f"{application_path}\\donators.txt"


# Defining the function that will get the current values of an configparser values.
GetConfig = configparser.ConfigParser()
GetConfig.read(f'{application_path}\\Config.ini')
try:
# Defining the function that will get the current values of an configparser values.
GetConfig = configparser.ConfigParser()
GetConfig.read(f'{application_path}\\Config.ini')
except Exception as _errorReadingCFGParser:
print(f"[ERROR]: from donators module: couldn't load from configparser:error details are\n{_errorReadingCFGParser}")
raise SystemExit(255)

def getCurrentLanguage(CurrentLanguageStr=GetConfig['ProgConfig']['languagesetting']):
"""
Binary file added err.ico
Binary file not shown.
Binary file added err.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
163 changes: 163 additions & 0 deletions error.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
"""
Temp_Cleaner GUI's built-in Exception/Error User Friendly Notifier module
Copyright (C) Ziad Ahmed (Mr.X) - 2021 - 2023
Licensed under the same license as Temp_Cleaner GUI, and might not work properly when used outside of it.
"""
# imports
from tkinter import *
from tkinter import ttk, messagebox, scrolledtext
from translations import *
import sys, os
import configparser
from PIL import ImageTk, Image

# initializing a variable containing the path where application files are stored.
application_path = ''

# attempting to get where the program files are stored
if getattr(sys, 'frozen', False):
# if program was frozen (compiled) using pyinstaller, the pyinstaller bootloader creates a sys attribute
# frozen=True to indicate that the script file was compiled using pyinstaller, then it creates a
# constant in sys that points to the directory where program executable is (where program files are).
application_path = sys._MEIPASS
else:
# if program is not frozen (compiled) using pyinstaller and is running normally like a Python 3.x.x file.
application_path = os.path.dirname(os.path.abspath(__file__))
os.chdir(application_path)

# printing application path to console display
print(f"[DEBUG]: Temp_Cleaner GUI is installed in: {application_path}")

try:
# Defining the function that will get the current values of an configparser values.
GetConfig = configparser.ConfigParser()
GetConfig.read(f'{application_path}\\Config.ini')
except Exception as readingFromConfigFileError:
print(f" Unhandled runtime exception\n\nCouldn't read from local configuration file (Config.ini), please make sure it exists in the current directory of the program and try again.\n\nError details for technical assistance:\n{readingFromConfigFileError}")
raise SystemExit(255)
# checking if autocheck for updates is enabled or not, because if enabled will run the updater before running the main program.
def getCurrentLanguage(currentLanguageStr=GetConfig['ProgConfig']['languagesetting']):
"""
Gets the current language from the config file 'Config.ini'
Should return `en` class if the current language is set to en, and so on.
"""
try:
if str(currentLanguageStr) == "en":
return en
elif str(currentLanguageStr) == "ar":
return ar
else:
return en
except Exception as exception_reading_config_file:
messagebox.showerror("An ERROR has occured",f"Couldn't read from 'Config.ini'\nException details:\n{exception_reading_config_file}\nPress OK to close this program")
raise SystemExit(169) # Exit code 169 is for unreadable config file or untreatable getCurrentLanguage exceptions.
# This is needed to make sure the program doesn't act weirdly.

class ErrorWindow(Tk):
def __init__(self, errorMsgContent=getCurrentLanguage().gathering_error_details) -> None:
"""
This class represents the Error Window (inherited from the `Tk` class)
Optional keyword arguments are:
`errorMsgContent` - Is the string representing the error details text to be shown in the window, for example: (where `x` is the variable that holds the exception information)
```py
f"Import Error, error details are:{x}"
```
"""
global getCurrentLanguage
self.errorMsgContent = errorMsgContent
super().__init__()
self.title(getCurrentLanguage().an_error_has_occured_text)
self.width = 600
self.height = 300
self.geometry(f"{self.width}x{self.height}")
self.resizable(False, False)
try:
self.iconbitmap(f"{application_path}\\err.ico")
except Exception as errorL23ap:
messagebox.showerror("Runtime error has occured", f"Couldn't load iconbitmap for this window\nThis can happen due to many reasons including the antivirus software blocking of this program\nError details are:\n{errorL23ap}\n\nPress OK to continue")
pass

def updateErrorInfoWidget():
"""
The function for inserting error details in the errorInformationSText widget (it must clear it first)
"""
self.errorInformationSText.configure(state='normal')
self.errorInformationSText.delete(1.0, END)
self.errorInformationSText.insert(END, self.errorMsgContent)
self.errorInformationSText.configure(state='disabled')
return None

def exitProgram():
"""
The function for the 'exit program' button in the Error window
"""
self.destroy()
# tries by using sys.exit(0) first
sys.exit(0)
# if it fails, tries by raising SystemExit
raise SystemExit(0)
return None

def continueApp():
"""
The function for the 'continue' button in the Error window
"""
self.destroy()
return None

# defining the top frame that will hold the informative label and the error image.
self.topframe = Frame(self, height=55)
# define inside frame widgets here....
try:
self.imgopen = Image.open(f"{application_path}\\err.png")
self.imgopen = self.imgopen.resize((32,32), Image.LANCZOS)
self.photoimgsrc = ImageTk.PhotoImage(self.imgopen)
self.errIcoDisp = Label(self.topframe, image=self.photoimgsrc)
self.errIcoDisp.pack(anchor=W, side=LEFT)
except Exception as errloadingimg:
print(f"[ERROR]: An error has occured preventing the error image from properly loading, will continue without loading it\nerror details are:\n{errloadingimg}")
messagebox.showerror("Runtime error", f"Couldn't load 'err.png' for this window\nIt's either missing or there is something wrong with your PC\nError details are:\n{errloadingimg}\n\nPress OK to continue")
pass

# defining the label that tells the user that something is wrong
self.lbl0 = Label(self.topframe, text=getCurrentLanguage().error_window_warning, font=("Arial", 9), fg='black', justify=LEFT)
self.lbl0.pack(side=LEFT)

self.topframe.pack(side=TOP, fill=X, expand=False, anchor=N)
# a small configuration to ensure we can set the sizes of frames properly.
self.pack_propagate(True)

# defining another frame that will hold the scrolledtext widget to hold error information in.
self.middleframe = Frame(self, height=214)
# define inside frame (the scrolledtext widget) here
self.errorInformationSText = scrolledtext.ScrolledText(self.middleframe, height=12.49, state='disabled')
self.errorInformationSText.pack(fill=BOTH, expand=True)

self.middleframe.pack(anchor=N, fill=X, expand=False)

# defining the bottom frame (that will hold the action buttons) in it.
self.bottomframe = Frame(self)
# define action buttons here....
self.exitAppBtn = ttk.Button(self.bottomframe, text=getCurrentLanguage().close_app, command=exitProgram)
self.exitAppBtn.pack(side=RIGHT, ipadx=40, anchor=E)
self.continueAppBtn = ttk.Button(self.bottomframe, text=getCurrentLanguage().continue_app, command=continueApp)
self.continueAppBtn.pack(side=RIGHT, anchor=E,ipadx=40)

self.bottomframe.pack(side=BOTTOM, expand=True, fill=BOTH)

# updating and inserting the error information in the scrolledtext widget that holds them.
updateErrorInfoWidget()



if __name__ == '__main__':
# test = ErrorWindow()
# test.mainloop()
# raise SystemExit(0)
pass
3,249 changes: 3,249 additions & 0 deletions temp_cleaner_gui_r6.9.py

Large diffs are not rendered by default.

46 changes: 34 additions & 12 deletions tips.py
Original file line number Diff line number Diff line change
@@ -16,7 +16,12 @@
from translations import *
import sys
import os
from tkinterweb import HtmlFrame
try:
from tkinterweb import HtmlFrame
except Exception as errorImportingTkWebLib:
print(f"[ERROR]: Couldn't import Tkinterweb\n{errorImportingTkWebLib}")
messagebox.showerror("Unhandled runtime exception", f"Couldn't load TkWeb library necessary for displaying tips to the user\nError details are:\n{errorImportingTkWebLib}\n\nPressing OK will make the program continue to function despite this error.")
pass
import random

# initializing a variable containing the path where program executable is stored.
@@ -31,12 +36,16 @@
else: # if program is running as a python script via python terminal
application_path = os.path.dirname(os.path.abspath(__file__))

print(f"{application_path}")
print(f"[DEBUG]: Tips module located at: {application_path}")

# opening a configparser session for reading from the file 'Config.ini'
GetConfig = configparser.ConfigParser()
GetConfig.read(f"{application_path}\\Config.ini")
# ------------------------
try:
# opening a configparser session for reading from the file 'Config.ini'
GetConfig = configparser.ConfigParser()
GetConfig.read(f"{application_path}\\Config.ini")
# ------------------------
except Exception as errorReadingConfigFile:
messagebox.showerror("Runtime error", f"It seems like one of the necessary files to make Temp_Cleaner GUI work are missing, double check that the file 'Config.ini' exists in the directory where this program exists and try again\n\nError details for technical support:\n{errorReadingConfigFile}")
raise SystemExit(255)

# attempts to get the current language for the ui mode of the updater program.
def getCurrentLanguage(currentLanguageStr=GetConfig["ProgConfig"]["languagesetting"]):
@@ -148,7 +157,10 @@ def tipsLinkClicked(link):
Parameters: link -> the target url of the link the user presses
"""
self.tipswebview.load_url(f"file:///{tips_folder_path}\\{str(link).replace('file:///', '')}")
try:
self.tipswebview.load_url(f"file:///{tips_folder_path}\\{str(link).replace('file:///', '')}")
except:
pass
return None


@@ -177,7 +189,10 @@ def openRandomTip():
self.destroy()
return False
tipfile_chosen = random.choice(tips_files)
self.tipswebview.load_url(f"file:///{tips_folder_path}\\{tipfile_chosen}")
try:
self.tipswebview.load_url(f"file:///{tips_folder_path}\\{tipfile_chosen}")
except:
self.destroy()
return None

# frame for web view widget.
@@ -188,10 +203,17 @@ def openRandomTip():


# webview widget declaration.
self.tipswebview = HtmlFrame(self.viewframe)
self.tipswebview.pack(fill=BOTH, expand=True)
self.tipswebview.on_link_click(tipsLinkClicked)
openRandomTip()
try:
self.tipswebview = HtmlFrame(self.viewframe)
self.tipswebview.pack(fill=BOTH, expand=True)
self.tipswebview.on_link_click(tipsLinkClicked)
except Exception as errorDeclaringWebViewWidget:
messagebox.showerror("Runtime Error", f"Couldn't display the webview widget that displays tips for you because of the error:\n{errorDeclaringWebViewWidget}\n\nPressing OK will close the tips window")
self.destroy()
try:
openRandomTip()
except:
self.destroy()



27 changes: 19 additions & 8 deletions translations.py
Original file line number Diff line number Diff line change
@@ -136,7 +136,7 @@ class en:

help_on_using_minimal_accessibility_pack_msgbox_title = "Help on using Minimal Accessibility Pack v1.0"
console_output_text = "Cleaning Progress"
about_window_txt = """Version: 6.8
about_window_txt = """Version: 6.9
Release Channel: stable
Additional features installed:
1-Arabic Language Pack v1.1
@@ -155,7 +155,7 @@ class en:
You can press 'F1' to show you some help about using Minimal Accessibility Pack v1.0 or about increasing or decreasing screen font size.
"""

about_window_title = "About 'The Temp_Cleaner GUI Project (v6.8)'"
about_window_title = "About 'The Temp_Cleaner GUI Project (v6.9)'"
cant_retrieve_config_fromfile_msgbox_content = "Unable to retrieve the configuration information, this can be due to a catastrophic failure, or a something else, the settings window will close."
cant_retrieve_config_fromfile_msgbox_title = "Runtime Exception"
cant_read_config_frominside_file_msgbox_title = "A runtime exception"
@@ -165,9 +165,9 @@ class en:
done_reboot_for_changes_to_apply_text = "All changes you did has been successfully saved, but for the changes to take effect, you will need to restart Temp_Cleaner GUI."
changes_saved_text = "Saved your changes"
unable_to_save_your_changes_text = "Unable to save your changes to the file 'Config.ini', Nothing has been changed yet, and this window will not close."
prog_title_no_username = "Welcome to Temp_Cleaner GUI v6.8!"
prog_title_no_username = "Welcome to Temp_Cleaner GUI v6.9!"
prog_title_1 = "Welcome "
prog_title_2 = " to Temp_Cleaner GUI v6.8!"
prog_title_2 = " to Temp_Cleaner GUI v6.9!"
settings_window_title = "Temp_Cleaner GUI Settings"
settings_hint_one = "Change the way Temp_Cleaner GUI behaves"
rammap_path_settings_hint = "RAMMap Executable Path:"
@@ -265,6 +265,10 @@ class en:
tips_next = "Another Tip"
tip_of_the_day = "Tip of the Day"
error_unsupported_lang_in_tips = "Unsupported language in Tips window\nPress OK to close this window."
gathering_error_details = "Gathering Error Details, Please wait..."
error_window_warning = "An unhandled error has occured causing this window to appear, for you as a user, all you need\n to do is just contacting the support of Temp_Cleaner GUI, or pressing the OK button and\n choosing to continue with this error as it is (Not recommended in most cases), Error\n details available below:"
close_app = "Exit Program"
continue_app = "Continue and Ignore"


class ar:
@@ -408,7 +412,7 @@ class ar:

help_on_using_minimal_accessibility_pack_msgbox_title = "المساعدة في إستخدام حزمة إمكانية الوصول الإدني الاصدار 1.0"
console_output_text = "تقدم التنظيف"
about_window_txt = """ الإصدار: 6.8
about_window_txt = """ الإصدار: 6.9
قناة الإصدار : مستقرة
:المميزات الإضافية المفعلة
1-Arabic Language Pack v1.1 (حزمة اللغة العربية v1.1)
@@ -427,7 +431,7 @@ class ar:
لإظهار معلومات عن كيفية إستخدام حزمة امكانية الوصول او كيفية تكبير وتصغير الكتابه في الشاشة 'F1' يمكنك الضغط علي زر
"""

about_window_title = "حول 'The Temp_Cleaner GUI Project (v6.8)'"
about_window_title = "حول 'The Temp_Cleaner GUI Project (v6.9)'"
cant_retrieve_config_fromfile_msgbox_content = "خطأ في الحصول علي المعلومات من الضبط، هذا قد يكون بسبب خطأ كارثي او شئ اخر، شاشة الضبط سوف تغلق"
cant_retrieve_config_fromfile_msgbox_title = "حدث خطأ في وقت التشغيل"
cant_read_config_frominside_file_msgbox_title = "حدث خطأ في وقت التشغيل"
@@ -439,7 +443,7 @@ class ar:
unable_to_save_your_changes_text = "لم يتغير اي شئ حتي الان، وهذه النافذة لن تغلق ،'Config.ini' فشل في حفظ التغييرات في ملف "
prog_title_no_username = "Temp_Cleaner GUI! اهلا بك في برنامج"
prog_title_1 = " مرحبا"
prog_title_2 = " Temp_Cleaner GUI v6.8 في "
prog_title_2 = " Temp_Cleaner GUI v6.9 في "
settings_window_title = "Temp_Cleaner GUI ضبط"
settings_hint_one = "Temp_Cleaner GUI قم بتغيير الطريقة التي يتصرف بها "
rammap_path_settings_hint = "Sysinternals من RAMMap ماهو مسار الملف التنفيذي لبرنامج :"
@@ -536,4 +540,11 @@ class ar:
tips_folder_missing = "فشل في قراءة مجلد النصائح، ربما قد تم حذفه بواسطة برنامج خارجي او ان برنامج مضاد الفيروسات الخاص بك قد منع هذا البرنامج من الوصول إليه\nتفاصيل الخطأ"
tips_next = "ﻱﺮﺧﺃ ﺔﺤﻴﺼﻧ"
tip_of_the_day = "ﻡﻮﻴﻟﺍ ﺔﺤﻴﺼﻧ"
error_unsupported_lang_in_tips = "لغة غير مدعومة في شاشة النصائح اليومية\nبرجاء الضغط علي زر الخروج لإغلاق النافذة"
error_unsupported_lang_in_tips = "لغة غير مدعومة في شاشة النصائح اليومية\nبرجاء الضغط علي زر الخروج لإغلاق النافذة"
gathering_error_details = "...جاري تجميع معلومات عن الخطأ، برجاء الإنتظار"
close_app = "إغلاق البرنامج"
continue_app = "تجاهل وإستمر"
error_window_warning = """ حدث خطأ ما تسبب في ظهور هذه النافذة
يمكنك التواصل مع الدعم او الإستمرار في إستخدام البرنامج كما هو Temp_Cleaner GUI كمستخدم لبرنامج
معلومات الخطأ موجودة بالأسفل
"""
94 changes: 69 additions & 25 deletions updater.py
Original file line number Diff line number Diff line change
@@ -15,9 +15,14 @@
from PIL import ImageTk, Image
import webbrowser
import os
import threading

# initializing colorama
init(autoreset=True)
try:
# initializing colorama
init(autoreset=True)
except Exception as _errorColoramaInit:
print(f"[ERROR]: updater module: failed to initialize colorama:{_errorColoramaInit}")
pass



@@ -41,17 +46,28 @@
releaseNotesFilePath = "https://raw.githubusercontent.com/InsertX2k/software-versions/main/release_notes_tcg.txt"
downloadLink = "https://insertx2k.github.io/temp_cleaner_gui/downloads.html"

# a variable containing a string of the current version.
versionNumber = configparser.ConfigParser()
versionNumber.read(f"{application_path}\\Config.ini")
currentVersion = str(versionNumber['ProgConfig']['version'])
print(f"[DEBUG]: Current version is:{currentVersion}")
# ------------------------

# opening a configparser session for reading from the file 'Config.ini'
GetConfig = configparser.ConfigParser()
GetConfig.read(f"{application_path}\\Config.ini")
# a global variable for return values of multithreaded functions.
_RetVal = None


try:
# a variable containing a string of the current version.
versionNumber = configparser.ConfigParser()
versionNumber.read(f"{application_path}\\Config.ini")
currentVersion = str(versionNumber['ProgConfig']['version'])
print(f"[DEBUG]: Current version is:{currentVersion}")
except Exception as _errorReadingFromCFGFile:
print(f"[ERROR]: updater module: Couldn't read from Config.ini due to this error:\n{_errorReadingFromCFGFile}")
# ------------------------
try:
# opening a configparser session for reading from the file 'Config.ini'
GetConfig = configparser.ConfigParser()
GetConfig.read(f"{application_path}\\Config.ini")
# ------------------------
except Exception as _errorReadingCFGParser:
print(f"[ERROR]: updater module: couldn't read from Config.ini file\nerror details are:\n{_errorReadingCFGParser}")
raise SystemExit(255)

# attempts to get the current language for the ui mode of the updater program.
def getCurrentLanguage(currentLanguageStr=GetConfig["ProgConfig"]["languagesetting"]):
@@ -73,20 +89,33 @@ def getCurrentLanguage(currentLanguageStr=GetConfig["ProgConfig"]["languagesetti
# ------------------------
def latestVersionNumber():
"""
Gets the latest version number from server, then returns it.
Gets the latest version number from server, then returns it. (with a timeout of 25 seconds)
If it fails for some reason, it only returns None
"""
global _RetVal
try:
with urllib.request.urlopen(mrxTCGFilePath) as file:
with urllib.request.urlopen(mrxTCGFilePath, timeout=25) as file:
text = file.read().decode('utf-8')[0:6].replace(' ', '').replace('\n', '')
_RetVal = text
return str(text)
except Exception:
print("[ERROR]: couldn't download from the server.")
_RetVal = None
return None
# ------------------------
# Attempting to get the latest version number.
latestVerNum = latestVersionNumber()
# threading.Thread(target=latestVersionNumber).start()
# latestVerNum = None
# def multiThreadedlatestVer3Up7():
# """
# A function for updating the global variable `latestVerNum` using multithreading to avoid long time imports
# """
# global latestVerNum
# latestVerNum = latestVersionNumber()

# threading.Thread(target=latestVerNum).start()

# ------------------------

# def downloadAndSaveVersionFile():
@@ -138,7 +167,7 @@ def readVersion():
If there is an update, it should return True
"""
global versionNumber, latestVersionNumber, currentVersion
global versionNumber, latestVersionNumber, currentVersion, _RetVal

version = latestVersionNumber()
if version is not None:
@@ -176,8 +205,16 @@ def readVersion():
# class for updater program ui window.
class updaterProgramUI(Toplevel):
def __init__(self):
super().__init__()
global versionNumber, application_path, downloadLink, readVersion, latestVersionNumber, currentVersion
# a variable containing the latest version number from the server.
_SrvrVerNum = latestVersionNumber()
# a simple check cuz if it is None the window should close.
if _SrvrVerNum == None:
# messagebox.showerror(getCurrentLanguage().updater_title, getCurrentLanguage().couldnt_download)
self.destroy()
else:
pass
super().__init__()
deactivate_automatic_dpi_awareness() # deactivating automatic dpi awareness in updater program.
self.title(getCurrentLanguage().updater_title)
self.attributes('-topmost',True)
@@ -188,6 +225,7 @@ def __init__(self):
pass



# trying to load the style.json file to apply customtkinter styles.
try:
set_default_color_theme(f"{application_path}\\style.json")
@@ -246,10 +284,10 @@ def getCurrentAppearanceMode():
try:
if str(GetConfig["ProgConfig"]['appearancemode']) == '2': # dark mode ui
# loading the 'updater.png' file in memory.
self.updaterLoader = Image.open(f"{application_path}\\updater_dark.png").resize((image_width,image_height), Image.ANTIALIAS)
self.updaterLoader = Image.open(f"{application_path}\\updater_dark.png").resize((image_width,image_height), Image.LANCZOS)
self.updaterLoader = ImageTk.PhotoImage(self.updaterLoader)
else: # light mode ui
self.updaterLoader = Image.open(f"{application_path}\\updater.png").resize((image_width,image_height), Image.ANTIALIAS)
self.updaterLoader = Image.open(f"{application_path}\\updater.png").resize((image_width,image_height), Image.LANCZOS)
self.updaterLoader = ImageTk.PhotoImage(self.updaterLoader)
except Exception as loading_updater_logo_error:
messagebox.showerror("Runtime error", f"Couldn't load the updater logo due to the following error\n{loading_updater_logo_error}\nThe program will close.")
@@ -286,6 +324,8 @@ def openWebBrowserWindow():
def getReleaseNotes():
"""
A function used to get the content of the release notes file and insert it into the scrolledtext.ScrolledText widget of the release notes.
the timeout for the download packet sent is 25 seconds.
"""
# if downloadAndSaveReleaseNotesFile() == False:
# messagebox.showerror("Runtime exception", "Couldn't read from release notes file")
@@ -300,7 +340,7 @@ def getReleaseNotes():
except:
pass
try:
with urllib.request.urlopen(releaseNotesFilePath) as file:
with urllib.request.urlopen(releaseNotesFilePath, timeout=25) as file:
releaseNotesText = file.read().decode('utf-8')
try:
self.release_notes_widget.configure(state='normal')
@@ -316,6 +356,8 @@ def getReleaseNotes():
self.release_notes_widget.configure(state='disabled')

return None



# a label for showing the updater icon
self.updaterIcon = Label(self, text='', background=getCurrentAppearanceMode()[0], image=self.updaterLoader)
@@ -324,7 +366,7 @@ def getReleaseNotes():
# other informative labels.
self.lbl0 = Label(self, text=getCurrentLanguage().new_update_tcg, background=getCurrentAppearanceMode()[0], foreground=getCurrentAppearanceMode()[1], font=("Arial", 14))
self.lbl0.place(x=170, y=5)
self.lbl1 = Label(self, text=f"{getCurrentLanguage().new_version_is}{latestVerNum}{getCurrentLanguage().current_version_is}{currentVersion}", background=getCurrentAppearanceMode()[0], foreground=getCurrentAppearanceMode()[1], font=("Arial", 9))
self.lbl1 = Label(self, text=f"{getCurrentLanguage().new_version_is}{_SrvrVerNum}{getCurrentLanguage().current_version_is}{currentVersion}", background=getCurrentAppearanceMode()[0], foreground=getCurrentAppearanceMode()[1], font=("Arial", 9))
self.lbl1.place(x=170, y=35)
self.release_notes_widget = scrolledtext.ScrolledText(self, background=getCurrentAppearanceMode()[0], foreground=getCurrentAppearanceMode()[1], selectbackground='blue', state='disabled', font=("Arial", 10))
self.release_notes_widget.place(x=170, y=55, relwidth=0.7, relheight=0.63)
@@ -347,11 +389,13 @@ def getReleaseNotes():
else:
pass

if getReleaseNotes() == False:
self.destroy()
return
else:
pass
# if getReleaseNotes() == False:
# self.destroy()
# return
# else:
# pass
# updating release notes.
threading.Thread(target=getReleaseNotes).start()


# ----------------------

0 comments on commit 81a11a5

Please sign in to comment.