diff --git a/GTK4/Source/MainWindow.py b/GTK4/Source/MainWindow.py
new file mode 100644
index 0000000..403a0d7
--- /dev/null
+++ b/GTK4/Source/MainWindow.py
@@ -0,0 +1,122 @@
+import gi
+
+# Запрос требуемых версий библиотек.
+gi.require_version("Gtk", "4.0")
+gi.require_version("Adw", "1")
+
+from gi.repository import Gtk, Adw
+
+# Главное окно.
+class MainWindow(Gtk.ApplicationWindow):
+
+ #==========================================================================================#
+ # >>>>> МЕТОДЫ ВЗАИМОДЕЙСТВИЯ ИНТЕРФЕЙСА <<<<< #
+ #==========================================================================================#
+
+ # Изменяет статус загрузки.
+ def __ChangeDownloadingStatus(self):
+
+ # Если нажата кнопка начала загрузки.
+ if "🌎" in self.__Button_Downloading.get_label():
+ # Изменение статуса.
+ self.__IsDownloading = True
+ # Изменение текста кнопки.
+ self.__Button_Downloading.set_label("🟥 Stop")
+ else:
+ # Изменение статуса.
+ self.__IsDownloading = False
+ # Изменение текста кнопки.
+ self.__Button_Downloading.set_label("🌎 Start")
+
+ #==========================================================================================#
+ # >>>>> МЕТОДЫ ГЕНЕРАЦИИ ИНТЕРФЕЙСА <<<<< #
+ #==========================================================================================#
+
+ # Строит интерфейс.
+ def __BuildInterface(self):
+
+ # Настройка главного контейнера.
+ self.__MainBox.set_spacing(20)
+ self.set_child(self.__MainBox)
+
+ # HeaderBar.
+ self.Header = Adw.HeaderBar()
+ self.set_titlebar(self.Header)
+ self.set_default_size(720, 480)
+ HeaderLabel = Gtk.Label()
+ HeaderLabel.set_markup("PornHub Downloader")
+ self.Header.set_title_widget(HeaderLabel)
+
+ # Построение верхней панели.
+ self.__BuildUpPanel()
+
+ # Строит верхнюю панель.
+ def __BuildUpPanel(self):
+
+ # Box: верхняя панель.
+ UpPanelBox = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 0)
+ UpPanelBox.set_spacing(7)
+ UpPanelBox.set_homogeneous(True)
+
+ # Button: открытие файла.
+ Button_Open = Gtk.Button(label = "🗃️ Open")
+ Button_Open.set_margin_start(7)
+ Button_Open.set_margin_top(7)
+
+ # Button: управление загрузкой.
+ self.__Button_Downloading = Gtk.Button(label = "🌎 Start")
+ self.__Button_Downloading.set_margin_end(7)
+ self.__Button_Downloading.set_margin_top(7)
+ self.__Button_Downloading.connect("clicked", lambda _: self.__ChangeDownloadingStatus())
+
+ # Помещение элементов в контейнеры.
+ UpPanelBox.append(Button_Open)
+ UpPanelBox.append(self.__Button_Downloading)
+ self.__MainBox.append(UpPanelBox)
+
+ #==========================================================================================#
+ # >>>>> МЕТОДЫ <<<<< #
+ #==========================================================================================#
+
+ # Конструктор.
+ def __init__(self, *args, **kwargs):
+ # Наследование конструктора базового класса.
+ super().__init__(*args, **kwargs)
+
+ #---> Генерация динамических свойств.
+ #==========================================================================================#
+ # Состояние: выполняется ли загрузка.
+ self.__IsDownloading = False
+ # Главный контейнер.
+ self.__MainBox = Gtk.Box.new(Gtk.Orientation.VERTICAL, 0)
+
+ # Инициализация интерфейса.
+ self.__BuildInterface()
+
+ # # Контейнер: содержимое.
+ # ContentBox = Gtk.Box.new(Gtk.Orientation.VERTICAL, 0)
+ # ContentBox.set_spacing(10)
+ # # Заголовок ввода.
+ # Label_Input = Gtk.Label()
+ # Label_Input.set_markup("Input")
+ # ContentBox.append(Label_Input)
+ # # Поле ввода.
+ # TextView_Input = Gtk.TextView()
+ # TextView_Input.get_buffer().set_text("\n")
+ # TextView_Input.set_size_request(1080, 300)
+ # #ContentBox.append(TextView_Input)
+ # # Скролл-окно.
+ # ScrolledWindow_Input = Gtk.ScrolledWindow()
+ # ScrolledWindow_Input.set_child(TextView_Input)
+ # ContentBox.append(ScrolledWindow_Input)
+ # # Заголовок ввода.
+ # Label_Input = Gtk.Label()
+ # Label_Input.set_markup("Output")
+ # ContentBox.append(Label_Input)
+ # # Поле вывода.
+ # TextView_Output = Gtk.TextView()
+ # TextView_Output.get_buffer().set_text("\n")
+ # TextView_Output.set_editable(False)
+ # ContentBox.append(TextView_Output)
+
+ # self.__MainBox.append(ContentBox)
diff --git a/GTK4/main.py b/GTK4/main.py
new file mode 100644
index 0000000..649e435
--- /dev/null
+++ b/GTK4/main.py
@@ -0,0 +1,34 @@
+import gi
+
+# Запрос требуемых версий библиотек.
+gi.require_version("Gtk", "4.0")
+gi.require_version("Adw", "1")
+
+from gi.repository import Gtk, Adw
+
+from Source.MainWindow import MainWindow
+
+import sys
+
+# Приложение Adwaita.
+class MyApp(Adw.Application):
+
+ def __OnActivate(self, Application: Adw.Application):
+ # Инициализация главного окна.
+ self.win = MainWindow(application = Application)
+ # Представление окна.
+ self.win.present()
+
+ # Конструктор.
+ def __init__(self, **kwargs):
+ # Наследование конструктора базового класса.
+ super().__init__(**kwargs)
+ # Подключение: при активации приложения.
+ self.connect("activate", self.__OnActivate)
+
+# Если точка входа – приложение.
+if __name__ == "__main__":
+ # Создание приложения.
+ Application = MyApp()
+ # Выполнение приложения.
+ exit(Application.run(sys.argv))
\ No newline at end of file
diff --git a/Build/build.bat b/Qt/Build/build.bat
similarity index 100%
rename from Build/build.bat
rename to Qt/Build/build.bat
diff --git a/Build/metadata.txt b/Qt/Build/metadata.txt
similarity index 100%
rename from Build/metadata.txt
rename to Qt/Build/metadata.txt
diff --git a/Source/Locale.py b/Qt/Source/Locale.py
similarity index 100%
rename from Source/Locale.py
rename to Qt/Source/Locale.py
diff --git a/Source/MainWindow.py b/Qt/Source/MainWindow.py
similarity index 100%
rename from Source/MainWindow.py
rename to Qt/Source/MainWindow.py
diff --git a/Source/QLabelAdvertisement.py b/Qt/Source/QLabelAdvertisement.py
similarity index 100%
rename from Source/QLabelAdvertisement.py
rename to Qt/Source/QLabelAdvertisement.py
diff --git a/Source/__init__.py b/Qt/Source/__init__.py
similarity index 100%
rename from Source/__init__.py
rename to Qt/Source/__init__.py
diff --git a/Source/yt_dlp.py b/Qt/Source/yt_dlp.py
similarity index 100%
rename from Source/yt_dlp.py
rename to Qt/Source/yt_dlp.py
diff --git a/icon.ico b/Qt/icon.ico
similarity index 100%
rename from icon.ico
rename to Qt/icon.ico
diff --git a/main.py b/Qt/main.py
similarity index 100%
rename from main.py
rename to Qt/main.py
diff --git a/yt-dlp/ffmpeg.exe b/Qt/yt-dlp/ffmpeg.exe
similarity index 100%
rename from yt-dlp/ffmpeg.exe
rename to Qt/yt-dlp/ffmpeg.exe
diff --git a/yt-dlp/ffprobe.exe b/Qt/yt-dlp/ffprobe.exe
similarity index 100%
rename from yt-dlp/ffprobe.exe
rename to Qt/yt-dlp/ffprobe.exe
diff --git a/yt-dlp/yt-dlp b/Qt/yt-dlp/yt-dlp
similarity index 100%
rename from yt-dlp/yt-dlp
rename to Qt/yt-dlp/yt-dlp