4 Commits

Author SHA1 Message Date
Gitea Actions
be9ecf5db6 chore: update steam apps list 2025-07-01T00:01:15Z 2025-07-01 00:01:16 +00:00
131f0f2f58 chore(localization): update
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
2025-07-01 00:16:17 +05:00
e1e3092870 feat(dialogs): rewrite Preview widget 2025-07-01 00:13:08 +07:00
8902751d09 fix: border-radius COVER_LABEL_STYLE 2025-06-30 20:36:12 +07:00
15 changed files with 4917 additions and 728 deletions

View File

@@ -197,7 +197,7 @@
}, },
{ {
"normalized_name": "rec room", "normalized_name": "rec room",
"status": "Broken" "status": "Running"
}, },
{ {
"normalized_name": "world war 3", "normalized_name": "world war 3",
@@ -221,7 +221,7 @@
}, },
{ {
"normalized_name": "zero hour", "normalized_name": "zero hour",
"status": "Broken" "status": "Running"
}, },
{ {
"normalized_name": "ironsight", "normalized_name": "ironsight",
@@ -309,7 +309,7 @@
}, },
{ {
"normalized_name": "dirty bomb", "normalized_name": "dirty bomb",
"status": "Broken" "status": "Running"
}, },
{ {
"normalized_name": "empyrion galactic survival", "normalized_name": "empyrion galactic survival",
@@ -989,7 +989,7 @@
}, },
{ {
"normalized_name": "marauders", "normalized_name": "marauders",
"status": "Broken" "status": "Running"
}, },
{ {
"normalized_name": "predecessor", "normalized_name": "predecessor",
@@ -1101,7 +1101,7 @@
}, },
{ {
"normalized_name": "deceit 2", "normalized_name": "deceit 2",
"status": "Broken" "status": "Running"
}, },
{ {
"normalized_name": "block n load 2", "normalized_name": "block n load 2",
@@ -1781,7 +1781,7 @@
}, },
{ {
"normalized_name": "splitgate 2", "normalized_name": "splitgate 2",
"status": "Planned" "status": "Running"
}, },
{ {
"normalized_name": "xera survival", "normalized_name": "xera survival",
@@ -1897,7 +1897,7 @@
}, },
{ {
"normalized_name": "test drive unlimited solar crown", "normalized_name": "test drive unlimited solar crown",
"status": "Planned" "status": "Running"
}, },
{ {
"normalized_name": "resident evil resistance", "normalized_name": "resident evil resistance",
@@ -3461,7 +3461,7 @@
}, },
{ {
"normalized_name": "crsed cuisine royale", "normalized_name": "crsed cuisine royale",
"status": "Supported" "status": "Denied"
}, },
{ {
"normalized_name": "project nebula", "normalized_name": "project nebula",
@@ -4329,7 +4329,7 @@
}, },
{ {
"normalized_name": "blindfire", "normalized_name": "blindfire",
"status": "Broken" "status": "Supported"
}, },
{ {
"normalized_name": "h hour world's elite", "normalized_name": "h hour world's elite",
@@ -4414,5 +4414,17 @@
{ {
"normalized_name": "ragnarok origin roo", "normalized_name": "ragnarok origin roo",
"status": "Running" "status": "Running"
},
{
"normalized_name": "fantasy life i the girl who steals time",
"status": "Running"
},
{
"normalized_name": "la tale evolved",
"status": "Running"
},
{
"normalized_name": "carx street",
"status": "Broken"
} }
] ]

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,4 +1,20 @@
[ [
{
"normalized_title": "settlement survival",
"slug": "settlement-survival"
},
{
"normalized_title": "the elder scrolls iv oblivion",
"slug": "the-elder-scrolls-iv-oblivion-remastered"
},
{
"normalized_title": "dead space 3",
"slug": "dead-space-3"
},
{
"normalized_title": "dead space 2",
"slug": "dead-space-2"
},
{ {
"normalized_title": "hades", "normalized_title": "hades",
"slug": "hades" "slug": "hades"
@@ -99,10 +115,6 @@
"normalized_title": "hotshot racing", "normalized_title": "hotshot racing",
"slug": "hotshot-racing" "slug": "hotshot-racing"
}, },
{
"normalized_title": "s.t.a.l.k.e.r. anomaly g.a.m.m.a",
"slug": "s-t-a-l-k-e-r-anomaly-g-a-m-m-a"
},
{ {
"normalized_title": "golazo! 2", "normalized_title": "golazo! 2",
"slug": "golazo-2" "slug": "golazo-2"
@@ -1798,5 +1810,45 @@
{ {
"normalized_title": "atomic heart", "normalized_title": "atomic heart",
"slug": "atomic-heart" "slug": "atomic-heart"
},
{
"normalized_title": "genshin impact",
"slug": "genshin-impact"
},
{
"normalized_title": "battle.net",
"slug": "battle-net"
},
{
"normalized_title": "valorant",
"slug": "valorant"
},
{
"normalized_title": "русы против ящеров",
"slug": "rusy-protiv-yashherov"
},
{
"normalized_title": "last floor",
"slug": "last-floor"
},
{
"normalized_title": "fpv kamikaze drone",
"slug": "fpv-kamikaze-drone"
},
{
"normalized_title": "wild terra 2 new lands",
"slug": "wild-terra-2-new-lands"
},
{
"normalized_title": "armored warfare",
"slug": "armored-warfare"
},
{
"normalized_title": "warhammer 40 000 dawn of war",
"slug": "warhammer-40-000-dawn-of-war"
},
{
"normalized_title": "warhammer 40 000 space marine",
"slug": "warhammer-40-000-space-marine"
} }
] ]

Binary file not shown.

View File

@@ -3,7 +3,7 @@ import tempfile
from typing import cast, TYPE_CHECKING from typing import cast, TYPE_CHECKING
from PySide6.QtGui import QPixmap, QIcon from PySide6.QtGui import QPixmap, QIcon
from PySide6.QtWidgets import ( from PySide6.QtWidgets import (
QDialog, QLineEdit, QFormLayout, QHBoxLayout, QLabel, QVBoxLayout, QListWidget, QScrollArea, QWidget, QListWidgetItem QDialog, QLineEdit, QFormLayout, QHBoxLayout, QLabel, QVBoxLayout, QListWidget, QScrollArea, QWidget, QListWidgetItem, QSizePolicy
) )
from PySide6.QtCore import Qt, QObject, Signal, QMimeDatabase, QTimer from PySide6.QtCore import Qt, QObject, Signal, QMimeDatabase, QTimer
from icoextract import IconExtractor, IconExtractorError from icoextract import IconExtractor, IconExtractorError
@@ -424,6 +424,7 @@ class AddGameDialog(QDialog):
self.setWindowTitle(_("Edit Game") if edit_mode else _("Add Game")) self.setWindowTitle(_("Edit Game") if edit_mode else _("Add Game"))
self.setModal(True) self.setModal(True)
self.setFixedWidth(600) self.setFixedWidth(600)
self.setFixedHeight(600)
self.setStyleSheet(self.theme.MAIN_WINDOW_STYLE + self.theme.MESSAGE_BOX_STYLE) self.setStyleSheet(self.theme.MAIN_WINDOW_STYLE + self.theme.MESSAGE_BOX_STYLE)
layout = QFormLayout(self) layout = QFormLayout(self)
@@ -437,13 +438,13 @@ class AddGameDialog(QDialog):
if game_name: if game_name:
self.nameEdit.setText(game_name) self.nameEdit.setText(game_name)
name_label = QLabel(_("Game Name:")) name_label = QLabel(_("Game Name:"))
name_label.setStyleSheet(self.theme.PARAMS_TITLE_STYLE + " QLabel { color: #ffffff; font-size: 14px; font-weight: bold; }") name_label.setStyleSheet(self.theme.PARAMS_TITLE_STYLE)
layout.addRow(name_label, self.nameEdit) layout.addRow(name_label, self.nameEdit)
# Exe path # Exe path
exe_label = QLabel(_("Path to Executable:")) exe_label = QLabel(_("Path to Executable:"))
exe_label.setStyleSheet( exe_label.setStyleSheet(
self.theme.PARAMS_TITLE_STYLE + " QLabel { color: #ffffff; font-size: 14px; font-weight: bold; }") self.theme.PARAMS_TITLE_STYLE)
self.exeEdit = QLineEdit(self) self.exeEdit = QLineEdit(self)
self.exeEdit.setStyleSheet(self.theme.ADDGAME_INPUT_STYLE) self.exeEdit.setStyleSheet(self.theme.ADDGAME_INPUT_STYLE)
@@ -465,8 +466,7 @@ class AddGameDialog(QDialog):
# Cover path # Cover path
cover_label = QLabel(_("Custom Cover:")) cover_label = QLabel(_("Custom Cover:"))
cover_label.setStyleSheet( cover_label.setStyleSheet(self.theme.PARAMS_TITLE_STYLE)
self.theme.PARAMS_TITLE_STYLE + " QLabel { color: #ffffff; font-size: 14px; font-weight: bold; }")
self.coverEdit = QLineEdit(self) self.coverEdit = QLineEdit(self)
self.coverEdit.setStyleSheet(self.theme.ADDGAME_INPUT_STYLE) self.coverEdit.setStyleSheet(self.theme.ADDGAME_INPUT_STYLE)
@@ -486,15 +486,23 @@ class AddGameDialog(QDialog):
# Preview # Preview
self.coverPreview = QLabel(self) self.coverPreview = QLabel(self)
self.coverPreview.setStyleSheet(self.theme.CONTENT_STYLE + " QLabel { color: #ffffff; }") self.coverPreview.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.coverPreview.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred)
preview_widget = QWidget(self)
preview_widget.setStyleSheet(self.theme.PREVIEW_WIDGET_STYLE)
preview_layout = QVBoxLayout(preview_widget)
preview_layout.setContentsMargins(0, 0, 0, 0)
preview_layout.setSpacing(0)
preview_label = QLabel(_("Cover Preview:")) preview_label = QLabel(_("Cover Preview:"))
preview_label.setStyleSheet(self.theme.PARAMS_TITLE_STYLE + " QLabel { color: #ffffff; font-size: 14px; font-weight: bold; }") preview_label.setStyleSheet(self.theme.PARAMS_TITLE_STYLE)
layout.addRow(preview_label, self.coverPreview) preview_layout.addWidget(preview_label, alignment=Qt.AlignmentFlag.AlignLeft)
preview_layout.addWidget(self.coverPreview, stretch=1)
layout.addRow(preview_widget)
# Dialog buttons # Dialog buttons
self.button_layout = QHBoxLayout() self.button_layout = QHBoxLayout()
self.button_layout.setSpacing(10) self.button_layout.setSpacing(10)
self.select_button = AutoSizeButton(_("Select"), icon=self.theme_manager.get_icon("apply")) self.select_button = AutoSizeButton(_("Apply"), icon=self.theme_manager.get_icon("apply"))
self.cancel_button = AutoSizeButton(_("Cancel"), icon=self.theme_manager.get_icon("cancel")) self.cancel_button = AutoSizeButton(_("Cancel"), icon=self.theme_manager.get_icon("cancel"))
self.select_button.setStyleSheet(self.theme.ACTION_BUTTON_STYLE) self.select_button.setStyleSheet(self.theme.ACTION_BUTTON_STYLE)
self.cancel_button.setStyleSheet(self.theme.ACTION_BUTTON_STYLE) self.cancel_button.setStyleSheet(self.theme.ACTION_BUTTON_STYLE)

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-06-28 09:04+0500\n" "POT-Creation-Date: 2025-07-01 00:15+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: de_DE\n" "Language: de_DE\n"
@@ -87,9 +87,6 @@ msgstr ""
msgid "Failed to open folder: {error}" msgid "Failed to open folder: {error}"
msgstr "" msgstr ""
msgid "Select Game Installation Folder"
msgstr ""
msgid "No folder selected" msgid "No folder selected"
msgstr "" msgstr ""
@@ -250,10 +247,10 @@ msgstr ""
msgid "Game Name:" msgid "Game Name:"
msgstr "" msgstr ""
msgid "Browse..." msgid "Path to Executable:"
msgstr "" msgstr ""
msgid "Path to Executable:" msgid "Browse..."
msgstr "" msgstr ""
msgid "Custom Cover:" msgid "Custom Cover:"
@@ -262,6 +259,9 @@ msgstr ""
msgid "Cover Preview:" msgid "Cover Preview:"
msgstr "" msgstr ""
msgid "Apply"
msgstr ""
msgid "Invalid image" msgid "Invalid image"
msgstr "" msgstr ""

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-06-28 09:04+0500\n" "POT-Creation-Date: 2025-07-01 00:15+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: es_ES\n" "Language: es_ES\n"
@@ -87,9 +87,6 @@ msgstr ""
msgid "Failed to open folder: {error}" msgid "Failed to open folder: {error}"
msgstr "" msgstr ""
msgid "Select Game Installation Folder"
msgstr ""
msgid "No folder selected" msgid "No folder selected"
msgstr "" msgstr ""
@@ -250,10 +247,10 @@ msgstr ""
msgid "Game Name:" msgid "Game Name:"
msgstr "" msgstr ""
msgid "Browse..." msgid "Path to Executable:"
msgstr "" msgstr ""
msgid "Path to Executable:" msgid "Browse..."
msgstr "" msgstr ""
msgid "Custom Cover:" msgid "Custom Cover:"
@@ -262,6 +259,9 @@ msgstr ""
msgid "Cover Preview:" msgid "Cover Preview:"
msgstr "" msgstr ""
msgid "Apply"
msgstr ""
msgid "Invalid image" msgid "Invalid image"
msgstr "" msgstr ""

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PortProtonQt 0.1.1\n" "Project-Id-Version: PortProtonQt 0.1.1\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-06-28 09:04+0500\n" "POT-Creation-Date: 2025-07-01 00:15+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -85,9 +85,6 @@ msgstr ""
msgid "Failed to open folder: {error}" msgid "Failed to open folder: {error}"
msgstr "" msgstr ""
msgid "Select Game Installation Folder"
msgstr ""
msgid "No folder selected" msgid "No folder selected"
msgstr "" msgstr ""
@@ -248,10 +245,10 @@ msgstr ""
msgid "Game Name:" msgid "Game Name:"
msgstr "" msgstr ""
msgid "Browse..." msgid "Path to Executable:"
msgstr "" msgstr ""
msgid "Path to Executable:" msgid "Browse..."
msgstr "" msgstr ""
msgid "Custom Cover:" msgid "Custom Cover:"
@@ -260,6 +257,9 @@ msgstr ""
msgid "Cover Preview:" msgid "Cover Preview:"
msgstr "" msgstr ""
msgid "Apply"
msgstr ""
msgid "Invalid image" msgid "Invalid image"
msgstr "" msgstr ""

View File

@@ -9,18 +9,17 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2025-06-28 09:04+0500\n" "POT-Creation-Date: 2025-07-01 00:15+0500\n"
"PO-Revision-Date: 2025-06-28 09:05+0500\n" "PO-Revision-Date: 2025-07-01 00:15+0500\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: ru_RU <LL@li.org>\n"
"Language: ru_RU\n" "Language: ru_RU\n"
"Language-Team: ru_RU <LL@li.org>\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 "
"&& (n%100<10 || n%100>=20) ? 1 : 2);\n"
"Generated-By: Babel 2.17.0\n" "Generated-By: Babel 2.17.0\n"
"X-Generator: Poedit 3.6\n"
msgid "Error" msgid "Error"
msgstr "Ошибка" msgstr "Ошибка"
@@ -73,11 +72,11 @@ msgstr "Успешно"
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"'{game_name}' was added to Steam. Please restart Steam for changes to take " "'{game_name}' was added to Steam. Please restart Steam for changes to "
"effect." "take effect."
msgstr "" msgstr ""
"'{game_name}' был(а) добавлен(а) в Steam. Пожалуйста, перезапустите Steam, " "'{game_name}' был(а) добавлен(а) в Steam. Пожалуйста, перезапустите "
"чтобы изменения вступили в силу." "Steam, чтобы изменения вступили в силу."
#, python-brace-format #, python-brace-format
msgid "Executable not found for game: {game_name}" msgid "Executable not found for game: {game_name}"
@@ -91,9 +90,6 @@ msgstr "Открыта папка для '{game_name}'"
msgid "Failed to open folder: {error}" msgid "Failed to open folder: {error}"
msgstr "Не удалось открыть папку для игры: {error}" msgstr "Не удалось открыть папку для игры: {error}"
msgid "Select Game Installation Folder"
msgstr "Выберите папку установки игры"
msgid "No folder selected" msgid "No folder selected"
msgstr "Не выбрана ни одна папка" msgstr "Не выбрана ни одна папка"
@@ -184,11 +180,11 @@ msgstr "Подтвердите удаление"
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"Are you sure you want to delete '{game_name}'? This will remove the .desktop " "Are you sure you want to delete '{game_name}'? This will remove the "
"file and custom data." ".desktop file and custom data."
msgstr "" msgstr ""
"Вы уверены, что хотите удалить '{game_name}'? Это приведёт к удалению файла ." "Вы уверены, что хотите удалить '{game_name}'? Это приведёт к удалению "
"desktop и пользовательских данных." "файла .desktop и пользовательских данных."
#, python-brace-format #, python-brace-format
msgid "Failed to delete .desktop file: {error}" msgid "Failed to delete .desktop file: {error}"
@@ -230,11 +226,11 @@ msgstr "Не удалось добавить '{game_name}' в Steam: {error}"
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"'{game_name}' was removed from Steam. Please restart Steam for changes to take " "'{game_name}' was removed from Steam. Please restart Steam for changes to"
"effect." " take effect."
msgstr "" msgstr ""
"'{game_name}' был(а) удалён(а) из Steam. Пожалуйста, перезапустите Steam, чтобы " "'{game_name}' был(а) удалён(а) из Steam. Пожалуйста, перезапустите Steam,"
"изменения вступили в силу." " чтобы изменения вступили в силу."
#, python-brace-format #, python-brace-format
msgid "Failed to remove game '{game_name}' from Steam: {error}" msgid "Failed to remove game '{game_name}' from Steam: {error}"
@@ -258,18 +254,21 @@ msgstr "Добавить игру"
msgid "Game Name:" msgid "Game Name:"
msgstr "Имя игры:" msgstr "Имя игры:"
msgid "Browse..."
msgstr "Обзор..."
msgid "Path to Executable:" msgid "Path to Executable:"
msgstr "Путь к исполняемому файлу:" msgstr "Путь к исполняемому файлу:"
msgid "Browse..."
msgstr "Обзор..."
msgid "Custom Cover:" msgid "Custom Cover:"
msgstr "Обложка:" msgstr "Обложка:"
msgid "Cover Preview:" msgid "Cover Preview:"
msgstr "Предпросмотр обложки:" msgstr "Предпросмотр обложки:"
msgid "Apply"
msgstr "Применить"
msgid "Invalid image" msgid "Invalid image"
msgstr "Недопустимое изображение" msgstr "Недопустимое изображение"
@@ -477,7 +476,8 @@ msgstr "Подтвердите удаление"
msgid "Are you sure you want to reset all settings? This action cannot be undone." msgid "Are you sure you want to reset all settings? This action cannot be undone."
msgstr "" msgstr ""
"Вы уверены, что хотите сбросить все настройки? Это действие нельзя отменить." "Вы уверены, что хотите сбросить все настройки? Это действие нельзя "
"отменить."
msgid "Settings reset. Restarting..." msgid "Settings reset. Restarting..."
msgstr "Настройки сброшены. Перезапуск..." msgstr "Настройки сброшены. Перезапуск..."
@@ -622,3 +622,4 @@ msgstr "мин."
msgid "sec." msgid "sec."
msgstr "сек." msgstr "сек."

View File

@@ -410,6 +410,14 @@ CONTENT_STYLE = f"""
}} }}
""" """
PREVIEW_WIDGET_STYLE = f"""
QWidget {{
margin-top: 3px;
background-color: {color_c};
border-radius: {border_radius_a};
}}
"""
# СТИЛЬ ОСНОВНЫХ СТРАНИЦ # СТИЛЬ ОСНОВНЫХ СТРАНИЦ
# LIBRARY_WIDGET_STYLE # LIBRARY_WIDGET_STYLE
LIBRARY_WIDGET_STYLE= """ LIBRARY_WIDGET_STYLE= """
@@ -487,7 +495,7 @@ COVER_FRAME_STYLE = f"""
""" """
# СКРУГЛЕНИЕ LABEL ПОД ОБЛОЖКУ # СКРУГЛЕНИЕ LABEL ПОД ОБЛОЖКУ
COVER_LABEL_STYLE = "border-radius: 100px;" COVER_LABEL_STYLE = f"border-radius: {border_radius_b};"
# ВИДЖЕТ ДЕТАЛЕЙ (ТЕКСТ, ОПИСАНИЕ) # ВИДЖЕТ ДЕТАЛЕЙ (ТЕКСТ, ОПИСАНИЕ)
DETAILS_WIDGET_STYLE = f"background: rgba(20,20,20,0.40); border-radius: {border_radius_b}; padding: 10px;" DETAILS_WIDGET_STYLE = f"background: rgba(20,20,20,0.40); border-radius: {border_radius_b}; padding: 10px;"