140 lines
4.1 KiB
Python
140 lines
4.1 KiB
Python
# #### BEGIN GPL LICENSE BLOCK #####
|
||
#
|
||
# This program is free software; you can redistribute it and/or
|
||
# modify it under the terms of the GNU General Public License
|
||
# as published by the Free Software Foundation; either version 2
|
||
# of the License, or (at your option) any later version.
|
||
#
|
||
# This program is distributed in the hope that it will be useful,
|
||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
# GNU General Public License for more details.
|
||
#
|
||
# You should have received a copy of the GNU General Public License
|
||
# along with this program; if not, write to the Free Software Foundation,
|
||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
#
|
||
# ##### END GPL LICENSE BLOCK #####
|
||
|
||
import bpy
|
||
|
||
from ..modules.poliigon_core.api_remote_control_params import (
|
||
KEY_TAB_IMPORTED,
|
||
KEY_TAB_MY_ASSETS,
|
||
KEY_TAB_ONLINE)
|
||
from ..modules.poliigon_core.multilingual import _t
|
||
|
||
|
||
def _draw_unlimited_icon(cTB, *, row: bpy.types.UILayout) -> None:
|
||
icon_value = cTB.ui_icons["LOGO_unlimited"].icon_id
|
||
op_icon = row.operator(
|
||
"poliigon.poliigon_setting", text="", emboss=True, icon_value=icon_value)
|
||
op_icon.mode = "show_user"
|
||
# TODO(Andreas): Tooltip???
|
||
op_icon.tooltip = _t("Switch to your account details")
|
||
|
||
|
||
def _draw_asset_balance(cTB, *, row: bpy.types.UILayout) -> None:
|
||
if cTB.is_unlimited_user():
|
||
_draw_unlimited_icon(cTB, row=row)
|
||
return
|
||
|
||
# Asset balance
|
||
credits = cTB.get_user_credits()
|
||
balance_icon = cTB.ui_icons["ICON_asset_balance"].icon_id
|
||
if cTB.is_paused_subscription() and credits <= 0:
|
||
balance_icon = cTB.ui_icons["ICON_subscription_paused"].icon_id
|
||
|
||
op_credits = row.operator(
|
||
"poliigon.poliigon_setting",
|
||
text=str(credits),
|
||
icon_value=balance_icon # TODO: use new asset icon
|
||
)
|
||
op_credits.tooltip = _t(
|
||
"Your asset balance shows how many assets you can\n"
|
||
"purchase. Free assets and downloading assets you\n"
|
||
"already own doesn’t affect your balance")
|
||
op_credits.mode = "show_user"
|
||
|
||
|
||
def _add_asset_tab(cTB,
|
||
row: bpy.types.UILayout,
|
||
*,
|
||
tab: str,
|
||
mode: str,
|
||
icon: str = "NONE",
|
||
icon_value: int = 0,
|
||
tooltip: str = ""
|
||
) -> None:
|
||
no_user = not cTB.settings["show_user"]
|
||
no_settings = not cTB.settings["show_settings"]
|
||
no_user_or_settings = no_user and no_settings
|
||
|
||
col = row.column(align=True)
|
||
is_tab_active = cTB.settings["area"] == tab
|
||
op = col.operator(
|
||
"poliigon.poliigon_setting",
|
||
text="",
|
||
icon=icon,
|
||
icon_value=icon_value,
|
||
depress=is_tab_active and no_user_or_settings,
|
||
)
|
||
op.mode = mode
|
||
op.tooltip = tooltip
|
||
|
||
|
||
# @timer
|
||
def build_areas(cTB):
|
||
cTB.logger_ui.debug("build_areas")
|
||
cTB.initial_view_screen()
|
||
|
||
row = cTB.vBase.row(align=True)
|
||
row.scale_x = 1.1
|
||
row.scale_y = 1.1
|
||
|
||
_add_asset_tab(
|
||
cTB,
|
||
row,
|
||
tab=KEY_TAB_ONLINE,
|
||
mode="area_poliigon",
|
||
icon="HOME",
|
||
tooltip=_t("Show Poliigon Assets"))
|
||
_add_asset_tab(
|
||
cTB,
|
||
row,
|
||
tab=KEY_TAB_MY_ASSETS,
|
||
mode="area_my_assets",
|
||
icon_value=cTB.ui_icons["ICON_myassets"].icon_id,
|
||
tooltip=_t("Show My Assets"))
|
||
_add_asset_tab(
|
||
cTB,
|
||
row,
|
||
tab=KEY_TAB_IMPORTED,
|
||
mode="area_imported",
|
||
icon="OUTLINER_OB_GROUP_INSTANCE",
|
||
tooltip=_t("Show Imported Assets"))
|
||
|
||
op = row.operator(
|
||
"poliigon.poliigon_setting",
|
||
text="",
|
||
icon_value=cTB.ui_icons["ICON_poliigon"].icon_id,
|
||
depress=cTB.settings["show_user"],
|
||
)
|
||
op.mode = "my_account"
|
||
op.tooltip = _t("Show Your Account Details")
|
||
|
||
row.separator()
|
||
|
||
row_prefs = row.row(align=True)
|
||
row_prefs.alignment = "RIGHT"
|
||
|
||
_draw_asset_balance(cTB, row=row_prefs)
|
||
|
||
_ = row_prefs.operator(
|
||
"poliigon.open_preferences",
|
||
text="",
|
||
icon="PREFERENCES",
|
||
).set_focus = "all"
|
||
|
||
cTB.vBase.separator()
|