[Update] Config Window: Add About VRCT Tab. This is The Credit Page.

*The button that is supposed to open the link is not working yet.
This commit is contained in:
Sakamoto Shiina
2024-04-06 21:53:29 +09:00
parent fc5f9b24c3
commit 1b6fa4c3e8
62 changed files with 934 additions and 23 deletions

View File

@@ -30,7 +30,13 @@ def _createSettingBoxContainer(config_window, settings, view_variable, setting_b
setting_box_row=0
for setting_box_setting in setting_box_container_settings["setting_boxes"]:
# Top-Padding that can be container the section title
setting_box_top_padding = CTkFrame(setting_box_container_widget, corner_radius=0, fg_color=settings.ctm.MAIN_BG_COLOR, width=0, height=settings.uism.SB__TOP_PADY)
if setting_box_setting.get("about_vrct", False) is True:
setting_box_top_padding = CTkFrame(setting_box_container_widget, corner_radius=0, fg_color=settings.ctm.ABOUT_VRCT_BG, width=0, height=settings.uism.ABOUT_VRCT_SB__TOP_PADY)
setting_box_wrapper = CTkFrame(setting_box_container_widget, fg_color=settings.ctm.MAIN_BG_COLOR, corner_radius=0, width=0, height=0)
else:
setting_box_top_padding = CTkFrame(setting_box_container_widget, corner_radius=0, fg_color=settings.ctm.MAIN_BG_COLOR, width=0, height=settings.uism.SB__TOP_PADY)
setting_box_wrapper = CTkFrame(setting_box_container_widget, fg_color=settings.ctm.SB__WRAPPER_BG_COLOR, corner_radius=0, width=0, height=0)
setting_box_top_padding.grid(row=setting_box_row, column=0, sticky="ew", padx=0, pady=0)
setting_box_top_padding.grid_columnconfigure(0, weight=1)
setting_box_row+=1
@@ -47,7 +53,6 @@ def _createSettingBoxContainer(config_window, settings, view_variable, setting_b
setting_box_wrapper_section_title.place(relx=0, rely=0.4, anchor="nw")
setting_box_wrapper = CTkFrame(setting_box_container_widget, fg_color=settings.ctm.SB__WRAPPER_BG_COLOR, corner_radius=0, width=0, height=0)
setting_box_wrapper.grid(row=setting_box_row, column=0, sticky="ew")
setting_box_wrapper.grid_columnconfigure(0, weight=1)
setting_box_row+=1

View File

@@ -12,6 +12,8 @@ from .setting_box_containers.setting_box_others import createSettingBox_Others,
from .setting_box_containers.setting_box_advanced_settings import createSettingBox_AdvancedSettings
from .setting_box_containers.setting_box_translation import createSettingBox_Translation
from .setting_box_containers.setting_box_about_vrct import createSettingBox_AboutVrct
def createSideMenuAndSettingsBoxContainers(config_window, settings, view_variable):
@@ -30,9 +32,9 @@ def createSideMenuAndSettingsBoxContainers(config_window, settings, view_variabl
config_window.side_menu_bg_container = CTkFrame(config_window, corner_radius=0, fg_color=settings.ctm.SIDE_MENU_BG_COLOR, width=0, height=0)
config_window.side_menu_bg_container.grid(row=1, column=0, sticky="nsew")
config_window.side_menu_bg_container.grid_columnconfigure(0, weight=1)
config_window.side_menu_bg_container.grid_rowconfigure(0, weight=1)
config_window.side_menu_container = CTkFrame(config_window.side_menu_bg_container, corner_radius=0, fg_color=settings.ctm.SIDE_MENU_LABELS_BG_FOR_FAKE_BORDER_COLOR, width=0, height=0)
config_window.side_menu_container.grid(row=0, column=0, padx=settings.uism.TOP_BAR_SIDE__TITLE_PADX, pady=(settings.uism.SIDE_MENU_TOP_PADY, 0), sticky="nsew")
config_window.side_menu_container.grid(row=0, column=0, padx=settings.uism.TOP_BAR_SIDE__TITLE_PADX, pady=settings.uism.SIDE_MENU_TOP_PADY, sticky="nsew")
@@ -128,12 +130,36 @@ def createSideMenuAndSettingsBoxContainers(config_window, settings, view_variabl
]
},
},
# About VRCT. It is separated from the others.
{
"side_menu_tab_attr_name": "side_menu_tab_about_vrct",
"label_attr_name": "label_about_vrct",
"selected_mark_attr_name": "selected_mark_about_vrct",
"textvariable": view_variable.VAR_SIDE_MENU_LABEL_ABOUT_VRCT,
"setting_box_container_settings": {
"setting_box_container_attr_name": "setting_box_container_about_vrct",
"setting_boxes": [
{ "var_section_title": None, "setting_box": createSettingBox_AboutVrct, "about_vrct": True },
]
},
},
]
SEPARATE_ROW_COUNT=1 # It's just count the row and separate from below.
SEPARATE_ROW_NUMBER = len(side_menu_and_setting_box_containers_settings) - SEPARATE_ROW_COUNT
all_side_menu_tab_attr_name = [item["side_menu_tab_attr_name"] for item in side_menu_and_setting_box_containers_settings]
side_menu_row=0
for sm_and_sbc_setting in side_menu_and_setting_box_containers_settings:
if side_menu_row == SEPARATE_ROW_NUMBER:
side_menu_separator = CTkFrame(config_window.side_menu_container, corner_radius=0, fg_color=settings.ctm.SIDE_MENU_LABELS_BG_COLOR, width=0, height=0)
config_window.side_menu_container.grid_rowconfigure(side_menu_row, weight=1, minsize=settings.uism.SIDE_MENU_LABELS_SEPARATE_MIN_HEIGHT)
side_menu_separator.grid(row=side_menu_row, column=0, sticky="nsew")
side_menu_row+=1
_addConfigSideMenuItem(
config_window=config_window,
settings=settings,

View File

@@ -0,0 +1 @@
from .createSettingBox_AboutVrct import createSettingBox_AboutVrct

View File

@@ -0,0 +1,578 @@
from types import SimpleNamespace
from customtkinter import CTkFrame, CTkLabel, CTkImage, CTkFont
from utils import callFunctionIfCallable, splitListRandomly
from ......ui_utils import bindButtonFunctionAndColor, animateRotation, bindEnterAndLeaveFunction
def createSettingBox_AboutVrct(setting_box_wrapper, config_window, settings, view_variable):
setting_box_wrapper.grid_columnconfigure(0, weight=1, minsize=settings.uism.MAIN_AREA_MIN_WIDTH)
about_vrct_uism = settings.about_vrct.uism
ABOUT_VRCT_BG = settings.ctm.ABOUT_VRCT_BG
# For padding left. without this, setting_box_wrapper's bg shows...
about_vrct_container_wrapper = CTkFrame(setting_box_wrapper, fg_color=ABOUT_VRCT_BG, corner_radius=0, width=0, height=0)
about_vrct_container_wrapper.grid(column=0, row=0, padx=0, pady=0, sticky="nsew")
about_vrct_container_wrapper.grid_columnconfigure(0, weight=1)
about_vrct_container = CTkFrame(about_vrct_container_wrapper, fg_color=ABOUT_VRCT_BG, corner_radius=0, width=0, height=0)
about_vrct_container.grid(column=0, row=0, padx=about_vrct_uism.ABOUT_VRCT_CONTAINER_LEFT_PADX, pady=0, sticky="nsew")
about_vrct_container.grid_columnconfigure(0, weight=1)
def createSectionContainer(section_row, section_title_image_file_name:str=None, section_bottom_padding:int=0, section_title_bottom_padding:int=0):
section_container = CTkFrame(about_vrct_container, fg_color=ABOUT_VRCT_BG, corner_radius=0, width=0, height=0)
section_container.grid(column=0, row=section_row, padx=0, pady=(0, section_bottom_padding), sticky="nsew")
section_container.grid_columnconfigure(0, weight=1)
contents_row=0
if section_title_image_file_name is not None:
section_title_frame = settings.about_vrct.embedImageCTkLabel(section_container, section_title_image_file_name)
section_title_frame.grid(column=0, row=contents_row, padx=0, pady=(0,section_title_bottom_padding), sticky="nw")
contents_row = 1
section_contents_wrapper = CTkFrame(section_container, fg_color=ABOUT_VRCT_BG, corner_radius=0, width=0, height=0)
section_contents_wrapper.grid(column=0, row=contents_row, padx=0, pady=0, sticky="nsew")
section_contents_wrapper.grid_columnconfigure(0, weight=1)
return (section_container, section_contents_wrapper)
def createImageButtonRows(parent_frame, image_buttons_settings:list, bottom_pady, directly_type:str=None, corner_radius:int=0, ipadx:int=0, ipady:int=0):
button_row=0
setting_length = len(image_buttons_settings)
for index, each_setting in enumerate(image_buttons_settings):
each_button = settings.about_vrct.embedImageButtonCTkLabel(
parent_frame=parent_frame,
image_file_name=each_setting["image_file_name"],
callback=each_setting["callback"],
directly_type=directly_type,
corner_radius=corner_radius,
)
each_button.grid(column=0, row=button_row, padx=0, pady=(0, bottom_pady), sticky="nsew")
each_button.img_label.grid(padx=ipadx, pady=ipady, sticky="nsew")
if index == setting_length-1:
each_button.grid(pady=0)
button_row+=1
def createContactButton(parent_frame, image_file_name, callback_arg, fg_color=ABOUT_VRCT_BG):
frame = settings.about_vrct.embedImageButtonCTkLabel(
parent_frame=parent_frame,
image_file_name=image_file_name,
callback=lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, callback_arg),
fg_color=fg_color,
hovered_color=fg_color,
clicked_color=fg_color,
)
return frame
def createTellUsButton(parent_frame, image_file_name, callback):
tell_us_button_frame = settings.about_vrct.embedImageButtonCTkLabel(
parent_frame=parent_frame,
image_file_name=image_file_name,
callback=callback,
corner_radius=about_vrct_uism.TELL_US_BUTTON_CORNER_RADIUS,
)
tell_us_button_frame.img_label.grid(padx=about_vrct_uism.TELL_US_BUTTON_PADX, pady=about_vrct_uism.TELL_US_BUTTON_PADY, sticky="nsew")
tell_us_button_frame.configure(border_width=about_vrct_uism.TELL_US_BUTTON_BORDER_WIDTH, border_color=settings.ctm.ABOUT_VRCT_TELL_US_BUTTON_BORDER_COLOR)
return tell_us_button_frame
section_row=0
# The Developers ----------------------------------
_the_developers, the_developers_contents_wrapper = createSectionContainer(
section_row=section_row,
section_title_image_file_name="dev_section_title.png",
section_bottom_padding=about_vrct_uism.SECTION_BOTTOM_PADY,
section_title_bottom_padding=about_vrct_uism.THE_DEVELOPERS_SECTION_TITLE_BOTTOM_PADY
)
dev_misya_label = settings.about_vrct.embedImageCTkLabel(the_developers_contents_wrapper, "dev_misya.png")
dev_misya_label.grid(column=0, row=0, padx=0, pady=0, sticky="nsw")
dev_misya_x = createContactButton(
parent_frame=dev_misya_label,
image_file_name="dev_x_icon.png",
callback_arg="X_MISYA",
fg_color=settings.ctm.ABOUT_VRCT_DEV_BG
)
dev_misya_x.place(x=about_vrct_uism.DEVS_MISYA_X_X, y=about_vrct_uism.DEVS_CONTACTS_Y1, anchor="nw")
dev_misya_github = createContactButton(
parent_frame=dev_misya_label,
image_file_name="dev_github_icon.png",
callback_arg="GITHUB_MISYA",
fg_color=settings.ctm.ABOUT_VRCT_DEV_BG
)
dev_misya_github.place(x=about_vrct_uism.DEVS_MISYA_GITHUB_X, y=about_vrct_uism.DEVS_CONTACTS_Y1, anchor="nw")
dev_shiina_label = settings.about_vrct.embedImageCTkLabel(the_developers_contents_wrapper, "dev_shiina.png")
dev_shiina_label.grid(column=1, row=0, padx=0, pady=0, sticky="nse")
dev_shiina_x = createContactButton(
parent_frame=dev_shiina_label,
image_file_name="dev_x_icon.png",
callback_arg="X_SHIINA",
fg_color=settings.ctm.ABOUT_VRCT_DEV_BG
)
dev_shiina_x.place(x=about_vrct_uism.DEVS_SHIINA_X_X, y=about_vrct_uism.DEVS_CONTACTS_Y1, anchor="nw")
section_row+=1
# Project Links And Logo ----------------------------------
_project_links_and_logo, project_links_and_logo_contents_wrapper = createSectionContainer(
section_bottom_padding=about_vrct_uism.PROJECT_LINKS_SECTION_BOTTOM_PADDING,
section_row=section_row,
)
project_links_and_logo_wrapper = CTkFrame(project_links_and_logo_contents_wrapper, fg_color=ABOUT_VRCT_BG, corner_radius=0, width=0, height=0)
project_links_and_logo_wrapper.grid(column=0, row=0, padx=about_vrct_uism.PROJECT_LINK_CONTENTS_PADX, pady=0, sticky="nsew")
project_links_and_logo_wrapper.grid_columnconfigure(1, weight=1)
vrct_logo_label = settings.about_vrct.embedImageCTkLabel(project_links_and_logo_wrapper, "vrct_logo_for_about_vrct.png")
vrct_logo_label.grid(column=0, row=0, padx=0, pady=0, sticky="nsw")
project_links_wrapper = CTkFrame(project_links_and_logo_wrapper, fg_color=ABOUT_VRCT_BG, corner_radius=0, width=0, height=0)
project_links_wrapper.grid(column=2, row=0, padx=0, pady=0, sticky="nse")
project_link_settings = [
{
"image_file_name": "project_link_booth.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "BOOTH")
},
{
"image_file_name": "project_link_documents.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "VRCT_DOCUMENTS")
},
{
"image_file_name": "project_link_vrct_github.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "VRCT_GITHUB")
},
{
"image_file_name": "project_link_contact_us.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "CONTACT_US")
},
]
createImageButtonRows(
parent_frame=project_links_wrapper,
image_buttons_settings=project_link_settings,
bottom_pady=about_vrct_uism.PROJECT_LINK_BOTTOM_PADY,
corner_radius=about_vrct_uism.PROJECT_LINK_CORNER_RADIUS,
ipadx=about_vrct_uism.PROJECT_LINK_ITEM_IPADX,
ipady=about_vrct_uism.PROJECT_LINK_ITEM_IPADY,
)
section_row+=1
# Contributors ----------------------------------
_contributors, contributors_contents_wrapper = createSectionContainer(
section_row=section_row,
section_title_image_file_name="contributors_section_title.png",
section_bottom_padding=about_vrct_uism.SECTION_BOTTOM_PADY,
section_title_bottom_padding=about_vrct_uism.CONTRIBUTORS_SECTION_TITLE_BOTTOM_PADY
)
contributors_members = settings.about_vrct.embedImageCTkLabel(contributors_contents_wrapper, "contributors_members.png")
contributors_members.grid(column=0, row=0, padx=0, pady=0, sticky="nsew")
# done_san
contributors_done_san_x = createContactButton(
parent_frame=contributors_members,
image_file_name="contributors_x_icon.png",
callback_arg="X_DONE_SAN",
)
contributors_done_san_x.place(x=about_vrct_uism.CONTRIBUTORS_DONE_SAN_X_X, y=about_vrct_uism.CONTRIBUTORS_CONTACTS_Y1, anchor="nw")
# IYA
contributors_iya_x = createContactButton(
parent_frame=contributors_members,
image_file_name="contributors_x_icon.png",
callback_arg="X_IYA",
)
contributors_iya_x.place(x=about_vrct_uism.CONTRIBUTORS_IYA_X_X, y=about_vrct_uism.CONTRIBUTORS_CONTACTS_Y1, anchor="nw")
# RERA
contributors_rera_x = createContactButton(
parent_frame=contributors_members,
image_file_name="contributors_x_icon.png",
callback_arg="X_RERA",
)
contributors_rera_x.place(x=about_vrct_uism.CONTRIBUTORS_RERA_X_X, y=about_vrct_uism.CONTRIBUTORS_CONTACTS_Y1, anchor="nw")
contributors_rera_github = createContactButton(
parent_frame=contributors_members,
image_file_name="contributors_github_icon.png",
callback_arg="GITHUB_RERA",
)
contributors_rera_github.place(x=about_vrct_uism.CONTRIBUTORS_RERA_GITHUB_X, y=about_vrct_uism.CONTRIBUTORS_CONTACTS_Y1, anchor="nw")
# POPOSUKE
contributors_poposuke_x = createContactButton(
parent_frame=contributors_members,
image_file_name="contributors_x_icon.png",
callback_arg="X_POPOSUKE",
)
contributors_poposuke_x.place(x=about_vrct_uism.CONTRIBUTORS_POPOSUKE_X_X, y=about_vrct_uism.CONTRIBUTORS_CONTACTS_Y2, anchor="nw")
# KUMAGUMA
contributors_kumaguma_x = createContactButton(
parent_frame=contributors_members,
image_file_name="contributors_x_icon.png",
callback_arg="X_KUMAGUMA",
)
contributors_kumaguma_x.place(x=about_vrct_uism.CONTRIBUTORS_KUMAGUMA_X_X, y=about_vrct_uism.CONTRIBUTORS_CONTACTS_Y2, anchor="nw")
section_row+=1
# Special Thanks & Supporters ----------------------------------
_special_thanks, special_thanks_contents_wrapper = createSectionContainer(
section_row=section_row,
section_title_image_file_name="special_thanks_section_title.png",
section_bottom_padding=about_vrct_uism.SECTION_BOTTOM_PADY,
section_title_bottom_padding=about_vrct_uism.SPECIAL_THANKS_SECTION_TITLE_BOTTOM_PADY
)
special_thanks_members = settings.about_vrct.embedImageCTkLabel(special_thanks_contents_wrapper, "special_thanks_members.png")
special_thanks_members.grid(column=0, row=0, padx=0, pady=(0,about_vrct_uism.SPECIAL_THANKS_MEMBERS_BOTTOM_PADY), sticky="nsew")
special_thanks_message = settings.about_vrct.embedImageCTkLabel(special_thanks_contents_wrapper, settings.about_vrct.image_file.SPECIAL_THANKS_MESSAGE)
special_thanks_message.grid(column=0, row=1, padx=0, pady=(0,about_vrct_uism.SPECIAL_THANKS_MESSAGE_BOTTOM_PADY), sticky="nsew")
special_thanks_message_and_you = settings.about_vrct.embedImageCTkLabel(special_thanks_contents_wrapper, "special_thanks_message_and_you.png")
special_thanks_message_and_you.grid(column=0, row=2, padx=0, pady=(0,about_vrct_uism.SPECIAL_THANKS_MESSAGE_AND_YOU_BOTTOM_PADY), sticky="nsw")
special_thanks_tell_us_message = createTellUsButton(
parent_frame=special_thanks_contents_wrapper,
image_file_name=settings.about_vrct.image_file.SPECIAL_THANKS_TELL_US_MESSAGE,
callback=lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "SUPPORTER_REGISTRATION"),
)
special_thanks_tell_us_message.grid(column=0, row=3)
section_row+=1
# Special Thanks & Supporters ----------------------------------
_poster_showcase, poster_showcase_contents_wrapper = createSectionContainer(
section_row=section_row,
section_title_image_file_name="poster_showcase_section_title.png",
section_bottom_padding=about_vrct_uism.SECTION_BOTTOM_PADY,
section_title_bottom_padding=about_vrct_uism.POSTER_SHOWCASE_SECTION_TITLE_BOTTOM_PADY
)
poster_showcase_worlds_wrapper = CTkFrame(poster_showcase_contents_wrapper, fg_color=ABOUT_VRCT_BG, corner_radius=0, width=0, height=0)
poster_showcase_worlds_wrapper.grid(column=0, row=0, padx=0, pady=0, sticky="nsew")
poster_showcase_worlds_wrapper.grid_columnconfigure(0, weight=1)
poster_showcase_worlds = CTkFrame(poster_showcase_worlds_wrapper, fg_color=ABOUT_VRCT_BG, corner_radius=0, width=0, height=0)
poster_showcase_worlds.grid(column=0, row=0, padx=0, pady=(0,about_vrct_uism.POSTER_SHOWCASE_WORLD_BOTTOM_PADY), sticky="nsew")
poster_showcase_worlds.grid_columnconfigure(0, weight=1)
poster_showcase_worlds_settings = [
{
"image_file_name": "ehon_no_heikousekai_jimusho.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP")
},
{
"image_file_name": "ikoiba.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP")
},
{
"image_file_name": "ippaidou.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP")
},
{
"image_file_name": "japanese_culture_osenbeito.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP")
},
{
"image_file_name": "kimodameshi.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP")
},
{
"image_file_name": "kokekkopiyopiyo.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP")
},
{
"image_file_name": "kuroinu_work_room.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP")
},
{
"image_file_name": "language_exchange_tervern.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP")
},
{
"image_file_name": "nihongokurabu.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP")
},
{
"image_file_name": "parallel_collar.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP")
},
{
"image_file_name": "re_yatuha_room.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP")
},
{
"image_file_name": "silakan_datang_ke_rumahku.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP")
},
{
"image_file_name": "study_japanese_world_japanichijou.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP")
},
{
"image_file_name": "uj_club.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP")
},
{
"image_file_name": "usanezumi_shrine2.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP")
},
{
"image_file_name": "yuttari_eikaiwa.png",
"callback": lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP")
},
]
result = splitListRandomly(poster_showcase_worlds_settings, 8)
poster_showcase_worlds_frame_list = []
for split_poster_showcase_worlds_settings in result:
poster_showcase_worlds_frame = CTkFrame(poster_showcase_worlds_wrapper, fg_color=ABOUT_VRCT_BG, corner_radius=0, width=0, height=0)
poster_showcase_worlds_frame.grid_columnconfigure(0, weight=1)
createImageButtonRows(
parent_frame=poster_showcase_worlds_frame,
image_buttons_settings=split_poster_showcase_worlds_settings,
bottom_pady=about_vrct_uism.POSTER_SHOWCASE_WORLD_ITEM_BOTTOM_PADY,
directly_type="showcased_worlds",
corner_radius=about_vrct_uism.POSTER_SHOWCASE_WORLD_CORNER_RADIUS,
ipadx=about_vrct_uism.POSTER_SHOWCASE_WORLD_ITEM_IPADX,
ipady=about_vrct_uism.POSTER_SHOWCASE_WORLD_ITEM_IPADY,
)
poster_showcase_worlds_frame_list.append(poster_showcase_worlds_frame)
pagination_button_settings = settings.about_vrct.image_file.POSTER_SHOWCASE_WORLD_PAGINATION_BUTTON
def toNextPagePosterShowcase(current_function_index):
view_variable.CALLBACK_ABOUT_VRCT_CHANGE_POSTER_SHOWCASE_WORLD_LIST=None
poster_showcase_worlds_frame_list[current_function_index].grid_remove()
current_function_index = (current_function_index + 1) % len(poster_showcase_worlds_frame_list)
poster_showcase_worlds_frame_list[current_function_index].grid(column=0, row=0, padx=0, pady=(0,about_vrct_uism.POSTER_SHOWCASE_WORLD_BOTTOM_PADY), sticky="nsew")
view_variable.CALLBACK_ABOUT_VRCT_POSTER_SHOWCASE_CURRENT_PAGE_NUM = current_function_index
start_angle = 0
goal_angle = 180
if current_function_index == 0:
start_angle = 180
goal_angle = 360
animateRotation(
tk_root=config_window,
img_frame=config_window.poster_showcase_pagination_button.img_label,
img=pagination_button_settings.img,
img_width=pagination_button_settings.width,
img_height=pagination_button_settings.height,
start_angle=start_angle,
goal_angle=goal_angle,
duration=0.5,
)
view_variable.CALLBACK_ABOUT_VRCT_CHANGE_POSTER_SHOWCASE_WORLD_LIST=toNextPagePosterShowcase
# Initialize
view_variable.CALLBACK_ABOUT_VRCT_CHANGE_POSTER_SHOWCASE_WORLD_LIST=toNextPagePosterShowcase
poster_showcase_worlds_frame_list[0].grid(column=0, row=0, padx=0, pady=(0,about_vrct_uism.POSTER_SHOWCASE_WORLD_BOTTOM_PADY), sticky="nsew")
poster_showcase_worlds_wrapper.grid_rowconfigure(1, weight=1)
poster_showcase_pagination_button_wrapper = CTkFrame(poster_showcase_worlds_wrapper, fg_color=ABOUT_VRCT_BG, corner_radius=0, width=0, height=0)
poster_showcase_pagination_button_wrapper.grid(column=0, row=2, padx=0, pady=0, sticky="nsew")
poster_showcase_pagination_button_wrapper.grid_columnconfigure((0,2), weight=1)
config_window.poster_showcase_pagination_button = settings.about_vrct.embedImageButtonCTkLabel(
parent_frame=poster_showcase_pagination_button_wrapper,
image_file_name="poster_showcase_pagination_button.png",
callback=lambda _e: callFunctionIfCallable(view_variable.CALLBACK_ABOUT_VRCT_CHANGE_POSTER_SHOWCASE_WORLD_LIST, view_variable.CALLBACK_ABOUT_VRCT_POSTER_SHOWCASE_CURRENT_PAGE_NUM),
hovered_color="transparent",
clicked_color="transparent",
)
config_window.poster_showcase_pagination_button.grid(column=1, row=0, padx=0, pady=0, sticky="nsew")
# poster_showcase_pagination_button_wrapper.grid_columnconfigure((0,2), weight=1)
poster_showcase_pagination_button_chato = settings.about_vrct.embedImageButtonCTkLabel(
parent_frame=poster_showcase_pagination_button_wrapper,
image_file_name="poster_showcase_pagination_button_chato.png",
callback=lambda _e: callFunctionIfCallable(view_variable.CALLBACK_ABOUT_VRCT_CHANGE_POSTER_SHOWCASE_WORLD_LIST, view_variable.CALLBACK_ABOUT_VRCT_POSTER_SHOWCASE_CURRENT_PAGE_NUM),
hovered_color="transparent",
clicked_color="transparent",
)
poster_showcase_pagination_button_chato.place(relx=0.5, rely=0.5, anchor="center")
pagination_button_chato_settings = settings.about_vrct.image_file.POSTER_SHOWCASE_WORLD_PAGINATION_BUTTON_CHATO
def rotateChatoAnimation():
view_variable.CALLBACK_ABOUT_VRCT_CHANGE_POSTER_SHOWCASE_BUTTON_HOVERED = None
animateRotation(
tk_root=config_window,
img_frame=poster_showcase_pagination_button_chato.img_label,
img=pagination_button_chato_settings.img,
img_width=pagination_button_chato_settings.width,
img_height=pagination_button_chato_settings.height,
start_angle=0,
goal_angle=360,
duration=0.5,
)
view_variable.CALLBACK_ABOUT_VRCT_CHANGE_POSTER_SHOWCASE_BUTTON_HOVERED = rotateChatoAnimation
view_variable.CALLBACK_ABOUT_VRCT_CHANGE_POSTER_SHOWCASE_BUTTON_HOVERED = rotateChatoAnimation
bindEnterAndLeaveFunction(
target_widgets=[config_window.poster_showcase_pagination_button.img_label,poster_showcase_pagination_button_chato.img_label],
enterFunction=lambda _e: callFunctionIfCallable(view_variable.CALLBACK_ABOUT_VRCT_CHANGE_POSTER_SHOWCASE_BUTTON_HOVERED),
leaveFunction=None,
)
poster_container = CTkFrame(poster_showcase_contents_wrapper, fg_color=ABOUT_VRCT_BG, corner_radius=0, width=0, height=0)
poster_container.grid(column=1, row=0, padx=0, pady=0, sticky="nsew")
poster_container.grid_columnconfigure(1, weight=1)
poster_images_wrapper = CTkFrame(poster_container, fg_color=ABOUT_VRCT_BG, corner_radius=0, width=0, height=0)
poster_images_wrapper.grid(column=0, row=0, padx=0, pady=(0,about_vrct_uism.POSTER_SHOWCASE_POSTER_IMAGES_BOTTOM_PADY), sticky="nsew")
poster_images_wrapper.grid_columnconfigure(1, weight=1)
poster_image_arrow_left = settings.about_vrct.embedImageButtonCTkLabel(poster_images_wrapper, "arrow_left.png", lambda _e: callFunctionIfCallable(view_variable.CALLBACK_ABOUT_VRCT_POSTER_PREV_BUTTON))
poster_image_arrow_left.grid(column=0, row=0, padx=0, pady=0, sticky="nsew")
poster_image_arrow_left.configure(corner_radius=about_vrct_uism.POSTER_CHANGE_BUTTON_CORNER_RADIUS)
bindButtonFunctionAndColor(
target_widgets=[poster_image_arrow_left],
enter_color=settings.ctm.ABOUT_VRCT_BUTTON_HOVERED_BG_COLOR,
leave_color=ABOUT_VRCT_BG,
clicked_color=settings.ctm.ABOUT_VRCT_BUTTON_CLICKED_BG_COLOR,
buttonReleasedFunction=None,
)
# For change the image, register to config_window
config_window.poster_image_frame__iya_vrct_poster_ja = settings.about_vrct.embedImageCTkLabel(poster_images_wrapper, "iya_vrct_poster_ja.png", directly_type="vrct_posters")
config_window.poster_image_frame__iya_vrct_poster_en = settings.about_vrct.embedImageCTkLabel(poster_images_wrapper, "iya_vrct_poster_en.png", directly_type="vrct_posters")
config_window.poster_image_frame__iya_vrct_poster_cn = settings.about_vrct.embedImageCTkLabel(poster_images_wrapper, "iya_vrct_poster_cn.png", directly_type="vrct_posters")
config_window.poster_image_frame_dict = {
"iya_vrct_poster_ja": config_window.poster_image_frame__iya_vrct_poster_ja,
"iya_vrct_poster_en": config_window.poster_image_frame__iya_vrct_poster_en,
"iya_vrct_poster_cn": config_window.poster_image_frame__iya_vrct_poster_cn,
}
def vrctPostersGridRemove():
for poster_frame in config_window.poster_image_frame_dict.values():
poster_frame.grid_remove()
def gridVrctPoster_Ja():
vrctPostersGridRemove()
config_window.poster_image_frame_dict["iya_vrct_poster_ja"].grid(column=1, row=0, padx=0, pady=0, sticky="nsew")
view_variable.CALLBACK_ABOUT_VRCT_POSTER_PREV_BUTTON=gridVrctPoster_Cn
view_variable.CALLBACK_ABOUT_VRCT_POSTER_NEXT_BUTTON=gridVrctPoster_En
def gridVrctPoster_En():
vrctPostersGridRemove()
config_window.poster_image_frame_dict["iya_vrct_poster_en"].grid(column=1, row=0, padx=0, pady=0, sticky="nsew")
view_variable.CALLBACK_ABOUT_VRCT_POSTER_PREV_BUTTON=gridVrctPoster_Ja
view_variable.CALLBACK_ABOUT_VRCT_POSTER_NEXT_BUTTON=gridVrctPoster_Cn
def gridVrctPoster_Cn():
vrctPostersGridRemove()
config_window.poster_image_frame_dict["iya_vrct_poster_cn"].grid(column=1, row=0, padx=0, pady=0, sticky="nsew")
view_variable.CALLBACK_ABOUT_VRCT_POSTER_PREV_BUTTON=gridVrctPoster_En
view_variable.CALLBACK_ABOUT_VRCT_POSTER_NEXT_BUTTON=gridVrctPoster_Ja
gridVrctPoster_Ja()
poster_image_arrow_right = settings.about_vrct.embedImageButtonCTkLabel(poster_images_wrapper, "arrow_right.png", lambda _e: callFunctionIfCallable(view_variable.CALLBACK_ABOUT_VRCT_POSTER_NEXT_BUTTON))
poster_image_arrow_right.grid(column=2, row=0, padx=0, pady=0, sticky="nsew")
poster_image_arrow_right.configure(corner_radius=about_vrct_uism.POSTER_CHANGE_BUTTON_CORNER_RADIUS)
bindButtonFunctionAndColor(
target_widgets=[poster_image_arrow_right],
enter_color=settings.ctm.ABOUT_VRCT_BUTTON_HOVERED_BG_COLOR,
leave_color=ABOUT_VRCT_BG,
clicked_color=settings.ctm.ABOUT_VRCT_BUTTON_CLICKED_BG_COLOR,
buttonReleasedFunction=None,
)
poster_images_authors_wrapper = CTkFrame(poster_container, fg_color=ABOUT_VRCT_BG, corner_radius=0, width=0, height=0)
poster_images_authors_wrapper.grid(column=0, row=1, padx=0, pady=0, sticky="nsew")
poster_images_authors = settings.about_vrct.embedImageCTkLabel(poster_images_authors_wrapper, "poster_images_authors.png")
poster_images_authors.grid(column=0, row=0, padx=0, pady=0, sticky="nsew")
poster_tell_us_message = createTellUsButton(
parent_frame=poster_showcase_contents_wrapper,
image_file_name=settings.about_vrct.image_file.POSTER_TELL_US_MESSAGE,
callback=lambda _e: callFunctionIfCallable(view_variable.CALLBACK_OPEN_WEBPAGE_ABOUT_VRCT, "TEMP"),
)
poster_tell_us_message.grid(column=0, row=1, columnspan=2, padx=0, pady=(about_vrct_uism.POSTER_TELL_US_MESSAGE_TOP_PADY,0), sticky="nse")
section_row+=1
# VRChat disclaimer ----------------------------------
vrchat_disclaimer, vrchat_disclaimer_contents_wrapper = createSectionContainer(
section_row=section_row,
)
vrchat_disclaimer_label = settings.about_vrct.embedImageCTkLabel(vrchat_disclaimer_contents_wrapper, "vrchat_disclaimer.png")
vrchat_disclaimer_label.grid(column=0, row=0, padx=0, pady=(about_vrct_uism.VRCHAT_DISCLAIMER_SECTION_TOP_PADDING, 0), sticky="nsew")