Merge branch 'feature_update_notification' into UI_2.0

This commit is contained in:
Sakamoto Shiina
2023-09-23 17:18:32 +09:00
8 changed files with 103 additions and 8 deletions

BIN
img/refresh_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -668,5 +668,8 @@ view.register(
},
)
if config.UPDATE_FLAG is True:
view.showUpdateAvailableButton()
if __name__ == "__main__":
view.startMainLoop()

View File

@@ -91,6 +91,9 @@ class View():
VAR_LABEL_TEXTBOX_RECEIVED=StringVar(value="Received"), # JA: 受信
VAR_LABEL_TEXTBOX_SYSTEM=StringVar(value="System"), # JA: システム
VAR_UPDATE_AVAILABLE=StringVar(value="New version is here!"), # JA: 新しいバージョンが出ました!
# VAR_UPDATE_AVAILABLE=StringVar(value="新しいバージョンが出ました!"),
# Selectable Language Window
VAR_TITLE_LABEL_SELECTABLE_LANGUAGE=StringVar(value=""),
@@ -389,6 +392,9 @@ class View():
# self._insertSampleConversationToTextbox()
@staticmethod
def showUpdateAvailableButton():
vrct_gui.update_available_container.grid()
@staticmethod
def setMainWindowAllWidgetsStatusToNormal():

View File

@@ -1,9 +1,10 @@
from .widgets import createSidebar, createMinimizeSidebarButton, createTextbox, createEntryMessageBox
from customtkinter import CTkFrame
from customtkinter import CTkFrame, CTkLabel, CTkFont, CTkImage
from ..ui_utils import createButtonWithImage, getImagePath
from ..ui_utils import createButtonWithImage, getImagePath, bindButtonFunctionAndColor
import webbrowser
def createMainWindowWidgets(vrct_gui, settings, view_variable):
vrct_gui.protocol("WM_DELETE_WINDOW", vrct_gui.quitVRCT)
@@ -41,6 +42,57 @@ def createMainWindowWidgets(vrct_gui, settings, view_variable):
# Update Available Button
vrct_gui.update_available_container = CTkFrame(
vrct_gui.main_topbar_container,
corner_radius=settings.uism.UPDATE_AVAILABLE_BUTTON_CORNER_RADIUS,
fg_color=settings.ctm.MAIN_BG_COLOR,
cursor="hand2",
)
vrct_gui.update_available_container.grid(row=0, column=3, padx=settings.uism.UPDATE_AVAILABLE_BUTTON_PADX, pady=settings.uism.TOP_BAR_BUTTON_PADY, sticky="nse")
vrct_gui.update_available_container.grid_remove()
vrct_gui.update_available_container.rowconfigure((0,2), weight=1)
vrct_gui.update_available_icon = CTkLabel(
vrct_gui.update_available_container,
text=None,
corner_radius=0,
height=0,
image=CTkImage(settings.image_file.REFRESH_ICON.rotate(25), size=settings.uism.UPDATE_AVAILABLE_BUTTON_SIZE)
)
vrct_gui.update_available_icon.grid(row=1, column=0, padx=(settings.uism.UPDATE_AVAILABLE_BUTTON_IPADX, settings.uism.UPDATE_AVAILABLE_PADX_BETWEEN_LABEL_AND_ICON), pady=0)
vrct_gui.update_available_label = CTkLabel(
vrct_gui.update_available_container,
textvariable=view_variable.VAR_UPDATE_AVAILABLE,
height=0,
corner_radius=0,
font=CTkFont(family=settings.FONT_FAMILY, size=settings.uism.UPDATE_AVAILABLE_BUTTON_FONT_SIZE, weight="normal"),
anchor="e",
text_color=settings.ctm.UPDATE_AVAILABLE_BUTTON_TEXT_COLOR,
)
# This "right padx +1" is for fixing a bug that sticks out from the frame. I don't know why that happens...
vrct_gui.update_available_label.grid(row=1, column=1, padx=(0,settings.uism.UPDATE_AVAILABLE_BUTTON_IPADX+1), pady=0)
bindButtonFunctionAndColor(
target_widgets=[
vrct_gui.update_available_container,
vrct_gui.update_available_label,
vrct_gui.update_available_icon,
],
enter_color=settings.ctm.UPDATE_AVAILABLE_BUTTON_HOVERED_BG_COLOR,
leave_color=settings.ctm.UPDATE_AVAILABLE_BUTTON_BG_COLOR,
clicked_color=settings.ctm.UPDATE_AVAILABLE_BUTTON_CLICKED_BG_COLOR,
buttonReleasedFunction=lambda e: webbrowser.open_new_tab("https://booth.pm/ja/items/4814313"),
)
# Help and Info button
vrct_gui.help_and_info_button_container = createButtonWithImage(
@@ -54,7 +106,7 @@ def createMainWindowWidgets(vrct_gui, settings, view_variable):
button_command=vrct_gui.openHelpAndInfoWindow,
corner_radius=settings.uism.HELP_AND_INFO_BUTTON_CORNER_RADIUS,
)
vrct_gui.help_and_info_button_container.grid(row=0, column=3, padx=settings.uism.HELP_AND_INFO_BUTTON_PADX, pady=settings.uism.HELP_AND_INFO_BUTTON_PADY, sticky="e")
vrct_gui.help_and_info_button_container.grid(row=0, column=4, padx=settings.uism.HELP_AND_INFO_BUTTON_PADX, pady=settings.uism.TOP_BAR_BUTTON_PADY, sticky="e")
createSidebar(settings, vrct_gui, view_variable)

View File

@@ -60,6 +60,16 @@ def createSidebar(settings, main_window, view_variable):
main_window.sidebar_config_button.grid(row=0, column=0, padx=0, pady=settings.uism.SIDEBAR_CONFIG_BUTTON_IPADY)
# main_window.sidebar_config_button_update_badge = CTkFrame(
# main_window.sidebar_config_button,
# corner_radius=3,
# fg_color="#ca5361",
# width=6,
# height=6,
# )
# main_window.sidebar_config_button_update_badge.place(relx=0.9, rely=0.1, anchor="center")
bindButtonFunctionAndColor(
target_widgets=[main_window.sidebar_config_button_wrapper, main_window.sidebar_config_button],
enter_color=settings.ctm.CONFIG_BUTTON_HOVERED_BG_COLOR,

View File

@@ -172,10 +172,23 @@ class ColorThemeManager():
self.main.MINIMIZE_SIDEBAR_BUTTON_CLICKED_BG_COLOR = self.DARK_900_COLOR
# self.main.MINIMIZE_SIDEBAR_BUTTON_DISABLE_COLOR = self.DARK_900_COLOR
self.main.HELP_AND_INFO_BUTTON_BG_COLOR = self.main.MAIN_BG_COLOR
self.main.HELP_AND_INFO_BUTTON_HOVERED_BG_COLOR = self.DARK_850_COLOR
self.main.HELP_AND_INFO_BUTTON_CLICKED_BG_COLOR = self.DARK_950_COLOR
# self.main.HELP_AND_INFO_BUTTON_DISABLE_COLOR = self.DARK_900_COLOR
self.main.TOP_BAR_BUTTON_BG_COLOR = self.main.MAIN_BG_COLOR
self.main.TOP_BAR_BUTTON_HOVERED_BG_COLOR = self.DARK_850_COLOR
self.main.TOP_BAR_BUTTON_CLICKED_BG_COLOR = self.DARK_900_COLOR
# self.main.TOP_BAR_BUTTON_DISABLE_COLOR = self.DARK_900_COLOR
self.main.UPDATE_AVAILABLE_BUTTON_BG_COLOR = self.main.TOP_BAR_BUTTON_BG_COLOR
self.main.UPDATE_AVAILABLE_BUTTON_HOVERED_BG_COLOR = self.main.TOP_BAR_BUTTON_HOVERED_BG_COLOR
self.main.UPDATE_AVAILABLE_BUTTON_CLICKED_BG_COLOR = self.main.TOP_BAR_BUTTON_CLICKED_BG_COLOR
# self.main.UPDATE_AVAILABLE_BUTTON_DISABLE_COLOR = self.main.TOP_BAR_BUTTON_DISABLE_COLOR
self.main.UPDATE_AVAILABLE_BUTTON_TEXT_COLOR = self.PRIMARY_300_COLOR
self.main.HELP_AND_INFO_BUTTON_BG_COLOR = self.main.TOP_BAR_BUTTON_BG_COLOR
self.main.HELP_AND_INFO_BUTTON_HOVERED_BG_COLOR = self.main.TOP_BAR_BUTTON_HOVERED_BG_COLOR
self.main.HELP_AND_INFO_BUTTON_CLICKED_BG_COLOR = self.main.TOP_BAR_BUTTON_CLICKED_BG_COLOR
# self.main.HELP_AND_INFO_BUTTON_DISABLE_COLOR = self.main.TOP_BAR_BUTTON_DISABLE_COLOR

View File

@@ -30,6 +30,7 @@ class ImageFileManager():
self.ARROW_LEFT = getImageFileFromUiUtils("arrow_left_white.png")
self.ARROW_LEFT_DISABLED = getImageFileFromUiUtils("arrow_left_disabled.png")
self.REFRESH_ICON = getImageFileFromUiUtils("refresh_icon.png")
self.HELP_ICON = getImageFileFromUiUtils("help_icon_white.png")
def _createLightModeImages(self):

View File

@@ -75,11 +75,21 @@ class UiScalingManager():
self.main.SIDEBAR_CONFIG_BUTTON_PADY = self._calculateUiSize(10)
self.main.SIDEBAR_CONFIG_BUTTON_IPADY = self._calculateUiSize(8)
self.main.TOP_BAR_BUTTON_PADY = (self._calculateUiSize(6),0)
self.main.UPDATE_AVAILABLE_BUTTON_CORNER_RADIUS = self._calculateUiSize(6)
self.main.UPDATE_AVAILABLE_BUTTON_SIZE = (self._calculateUiSize(18), self._calculateUiSize(18))
self.main.UPDATE_AVAILABLE_BUTTON_FONT_SIZE = self._calculateUiSize(12)
self.main.UPDATE_AVAILABLE_BUTTON_PADX = (0, self._calculateUiSize(4))
self.main.UPDATE_AVAILABLE_BUTTON_IPADX = self._calculateUiSize(6)
self.main.UPDATE_AVAILABLE_ICON_PADX = (self._calculateUiSize(6), self._calculateUiSize(4))
self.main.UPDATE_AVAILABLE_PADX_BETWEEN_LABEL_AND_ICON = self._calculateUiSize(4)
self.main.HELP_AND_INFO_BUTTON_CORNER_RADIUS = self._calculateUiSize(6)
self.main.HELP_AND_INFO_BUTTON_SIZE = self._calculateUiSize(24)
self.main.HELP_AND_INFO_BUTTON_PADX = (0, self._calculateUiSize(6))
self.main.HELP_AND_INFO_BUTTON_PADY = (self._calculateUiSize(6),0)
self.main.HELP_AND_INFO_BUTTON_IPADXY = self._calculateUiSize(6)
self.main.MINIMIZE_SIDEBAR_BUTTON_ICON_SIZE_X = int(self.main.TEXTBOX_PADX/2+self.main.TEXTBOX_CORNER_RADIUS*2)