Browse Source

Buttons with text tooltip for artifact sorting screen

Ivan Savenko 8 months ago
parent
commit
52d72c75fc

+ 3 - 3
Mods/vcmi/Content/config/chinese.json

@@ -422,11 +422,11 @@
 	"vcmi.heroWindow.openBackpack.hover" : "开启宝物背包界面",
 	"vcmi.heroWindow.openBackpack.help"  : "用更大的界面显示所有获得的宝物",
 	"vcmi.heroWindow.sortBackpackByCost.hover"  : "按价格排序",
-	"vcmi.heroWindow.sortBackpackByCost.help"  : "将行囊里的宝物按价格排序。",
+	"vcmi.heroWindow.sortBackpackByCost.help"  : "{按价格排序}\n\n将行囊里的宝物按价格排序。",
 	"vcmi.heroWindow.sortBackpackBySlot.hover"  : "按装备槽排序",
-	"vcmi.heroWindow.sortBackpackBySlot.help"  : "将行囊里的宝物按装备槽排序。",
+	"vcmi.heroWindow.sortBackpackBySlot.help"  : "{按装备槽排序}\n\n将行囊里的宝物按装备槽排序。",
 	"vcmi.heroWindow.sortBackpackByClass.hover"  : "按类型排序",
-	"vcmi.heroWindow.sortBackpackByClass.help"  : "将行囊里的宝物按装备槽排序:低级宝物、中级宝物、高级宝物、圣物。",
+	"vcmi.heroWindow.sortBackpackByClass.help"  : "{按类型排序}\n\n将行囊里的宝物按装备槽排序:低级宝物、中级宝物、高级宝物、圣物。",
 	"vcmi.heroWindow.fusingArtifact.fusing" : "你已拥有融合%s所需的全部组件,想现在进行融合吗?{所有组件在融合后将被消耗。}",
 
 	"vcmi.tavernWindow.inviteHero"  : "邀请英雄",

+ 3 - 3
Mods/vcmi/Content/config/czech.json

@@ -424,11 +424,11 @@
 	"vcmi.heroWindow.openBackpack.hover" : "Otevřít okno s artefakty",
 	"vcmi.heroWindow.openBackpack.help"  : "Otevře okno, které umožňuje snadnější správu artefaktů v batohu.",
 	"vcmi.heroWindow.sortBackpackByCost.hover"  : "Seřadit podle ceny",
-	"vcmi.heroWindow.sortBackpackByCost.help"  : "Seřadí artefakty v batohu podle ceny.",
+	"vcmi.heroWindow.sortBackpackByCost.help"  : "{Seřadit podle ceny}\n\nSeřadí artefakty v batohu podle ceny.",
 	"vcmi.heroWindow.sortBackpackBySlot.hover"  : "Seřadit podle slotu",
-	"vcmi.heroWindow.sortBackpackBySlot.help"  : "Seřadí artefakty v batohu podle přiřazeného slotu.",
+	"vcmi.heroWindow.sortBackpackBySlot.help"  : "{Seřadit podle slotu}\n\nSeřadí artefakty v batohu podle přiřazeného slotu.",
 	"vcmi.heroWindow.sortBackpackByClass.hover"  : "Seřadit podle třídy",
-	"vcmi.heroWindow.sortBackpackByClass.help"  : "Seřadí artefakty v batohu podle třídy artefaktu. Poklad, Menší, Větší, Relikvie.",
+	"vcmi.heroWindow.sortBackpackByClass.help"  : "{Seřadit podle třídy}\n\nSeřadí artefakty v batohu podle třídy artefaktu. Poklad, Menší, Větší, Relikvie.",
 	"vcmi.heroWindow.fusingArtifact.fusing" : "Máte všechny potřebné části k vytvoření %s. Chcete provést sloučení? {Při sloučení budou použity všechny části.}",
 
 	"vcmi.tavernWindow.inviteHero"  : "Pozvat hrdinu",

+ 6 - 6
Mods/vcmi/Content/config/english.json

@@ -423,12 +423,12 @@
 	"vcmi.heroWindow.openCommander.help"  : "Shows details about the commander of this hero.",
 	"vcmi.heroWindow.openBackpack.hover" : "Open artifact backpack window",
 	"vcmi.heroWindow.openBackpack.help"  : "Opens window that allows easier artifact backpack management.",
-	"vcmi.heroWindow.sortBackpackByCost.hover"  : "Sort by cost",
-	"vcmi.heroWindow.sortBackpackByCost.help"  : "Sort artifacts in backpack by cost.",
-	"vcmi.heroWindow.sortBackpackBySlot.hover"  : "Sort by slot",
-	"vcmi.heroWindow.sortBackpackBySlot.help"  : "Sort artifacts in backpack by equipped slot.",
-	"vcmi.heroWindow.sortBackpackByClass.hover"  : "Sort by class",
-	"vcmi.heroWindow.sortBackpackByClass.help"  : "Sort artifacts in backpack by artifact class. Treasure, Minor, Major, Relic",
+	"vcmi.heroWindow.sortBackpackByCost.hover"  : "By value",
+	"vcmi.heroWindow.sortBackpackByCost.help"  : "{Sort by cost}\n\nSort artifacts in backpack by cost.",
+	"vcmi.heroWindow.sortBackpackBySlot.hover"  : "By slot",
+	"vcmi.heroWindow.sortBackpackBySlot.help"  : "{Sort by slot}\n\nSort artifacts in backpack by equipped slot.",
+	"vcmi.heroWindow.sortBackpackByClass.hover"  : "By class",
+	"vcmi.heroWindow.sortBackpackByClass.help"  : "{Sort by class}\n\nSort artifacts in backpack by artifact class. Treasure, Minor, Major, Relic",
 	"vcmi.heroWindow.fusingArtifact.fusing" : "You possess all of the components needed for the fusion of the %s. Do you wish to perform the fusion? {All components will be consumed upon fusion.}",
 
 	"vcmi.tavernWindow.inviteHero"  : "Invite hero",

+ 3 - 3
Mods/vcmi/Content/config/german.json

@@ -424,11 +424,11 @@
 	"vcmi.heroWindow.openBackpack.hover" : "Artefakt-Rucksack-Fenster öffnen",
 	"vcmi.heroWindow.openBackpack.help"  : "Öffnet ein Fenster, das die Verwaltung des Artefakt-Rucksacks erleichtert",
 	"vcmi.heroWindow.sortBackpackByCost.hover"  : "Nach Kosten sortieren",
-	"vcmi.heroWindow.sortBackpackByCost.help"  : "Artefakte im Rucksack nach Kosten sortieren.",
+	"vcmi.heroWindow.sortBackpackByCost.help"  : "{Nach Kosten sortieren}\n\nArtefakte im Rucksack nach Kosten sortieren.",
 	"vcmi.heroWindow.sortBackpackBySlot.hover"  : "Nach Slot sortieren",
-	"vcmi.heroWindow.sortBackpackBySlot.help"  : "Artefakte im Rucksack nach Ausrüstungsslot sortieren.",
+	"vcmi.heroWindow.sortBackpackBySlot.help"  : "{Nach Slot sortieren}\n\nArtefakte im Rucksack nach Ausrüstungsslot sortieren.",
 	"vcmi.heroWindow.sortBackpackByClass.hover"  : "Nach Klasse sortieren",
-	"vcmi.heroWindow.sortBackpackByClass.help"  : "Artefakte im Rucksack nach Artefaktklasse sortieren. Schatz, Klein, Groß, Relikt",
+	"vcmi.heroWindow.sortBackpackByClass.help"  : "{Nach Klasse sortieren}\n\nArtefakte im Rucksack nach Artefaktklasse sortieren. Schatz, Klein, Groß, Relikt",
 	"vcmi.heroWindow.fusingArtifact.fusing" : "Ihr verfügt über alle Komponenten, die für die Fusion der %s benötigt werden. Möchtet Ihr die Verschmelzung durchführen? {Alle Komponenten werden bei der Fusion verbraucht.}",
 
 	"vcmi.tavernWindow.inviteHero"  : "Helden einladen",

+ 3 - 3
Mods/vcmi/Content/config/hungarian.json

@@ -424,11 +424,11 @@
 	"vcmi.heroWindow.openBackpack.hover" : "Műtárgy hátizsák ablak megnyitása",
 	"vcmi.heroWindow.openBackpack.help"  : "Az ablak megnyitása, amely megkönnyíti a műtárgy hátizsák kezelését.",
 	"vcmi.heroWindow.sortBackpackByCost.hover"  : "Rendezés ár szerint",
-	"vcmi.heroWindow.sortBackpackByCost.help"  : "A műtárgyak ár szerinti rendezése a hátizsákban.",
+	"vcmi.heroWindow.sortBackpackByCost.help"  : "{Rendezés ár szerint}\n\nA műtárgyak ár szerinti rendezése a hátizsákban.",
 	"vcmi.heroWindow.sortBackpackBySlot.hover"  : "Rendezés nyílás szerint",
-	"vcmi.heroWindow.sortBackpackBySlot.help"  : "A műtárgyak nyílás szerinti rendezése a hátizsákban.",
+	"vcmi.heroWindow.sortBackpackBySlot.help"  : "{Rendezés nyílás szerint}\n\nA műtárgyak nyílás szerinti rendezése a hátizsákban.",
 	"vcmi.heroWindow.sortBackpackByClass.hover"  : "Rendezés osztály szerint",
-	"vcmi.heroWindow.sortBackpackByClass.help"  : "A műtárgyak osztály szerinti rendezése a hátizsákban. Kincs, Kisebb, Nagyobb, Relikvia",
+	"vcmi.heroWindow.sortBackpackByClass.help"  : "{Rendezés osztály szerint}\n\nA műtárgyak osztály szerinti rendezése a hátizsákban. Kincs, Kisebb, Nagyobb, Relikvia",
 	"vcmi.heroWindow.fusingArtifact.fusing" : "Ön birtokában van az összes szükséges komponensnek a(z) %s összeolvasztásához. Szeretné elvégezni az összeolvasztást? {Minden komponens elfogy az összeolvasztás során.}",
 
 	"vcmi.tavernWindow.inviteHero"  : "Hős meghívása",

+ 3 - 3
Mods/vcmi/Content/config/polish.json

@@ -422,11 +422,11 @@
 	"vcmi.heroWindow.openBackpack.hover" : "Otwórz okno sakwy",
 	"vcmi.heroWindow.openBackpack.help"  : "Otwiera okno pozwalające łatwiej zarządzać artefaktami w sakwie",
 	"vcmi.heroWindow.sortBackpackByCost.hover"  : "Sortuj wg. wartości",
-	"vcmi.heroWindow.sortBackpackByCost.help"  : "Sortuj artefakty w sakwie według wartości",
+	"vcmi.heroWindow.sortBackpackByCost.help"  : "{Sortuj wg. wartości}\n\nSortuj artefakty w sakwie według wartości",
 	"vcmi.heroWindow.sortBackpackBySlot.hover"  : "Sortuj wg. miejsc",
-	"vcmi.heroWindow.sortBackpackBySlot.help"  : "Sortuj artefakty w sakwie według umiejscowienia na ciele",
+	"vcmi.heroWindow.sortBackpackBySlot.help"  : "{Sortuj wg. miejsc}\n\nSortuj artefakty w sakwie według umiejscowienia na ciele",
 	"vcmi.heroWindow.sortBackpackByClass.hover"  : "Sortuj wg. jakości",
-	"vcmi.heroWindow.sortBackpackByClass.help"  : "Sortuj artefakty w sakwie według jakości: Skarb, Pomniejszy, Potężny, Relikt",
+	"vcmi.heroWindow.sortBackpackByClass.help"  : "{Sortuj wg. jakości}\n\nSortuj artefakty w sakwie według jakości: Skarb, Pomniejszy, Potężny, Relikt",
 	"vcmi.heroWindow.fusingArtifact.fusing" : "Posiadasz wszystkie niezbędne komponenty do stworzenia %s. Czy chcesz wykonać fuzję? {Wszystkie komponenty zostaną użyte}",
 
 	"vcmi.tavernWindow.inviteHero"  : "Zaproś bohatera",

+ 3 - 3
Mods/vcmi/Content/config/portuguese.json

@@ -422,11 +422,11 @@
 	"vcmi.heroWindow.openBackpack.hover" : "Abrir janela da mochila de artefatos",
 	"vcmi.heroWindow.openBackpack.help" : "Abre a janela que facilita o gerenciamento da mochila de artefatos.",
 	"vcmi.heroWindow.sortBackpackByCost.hover"  : "Ordenar por custo",
-	"vcmi.heroWindow.sortBackpackByCost.help"   : "Ordena artefatos na mochila por custo.",
+	"vcmi.heroWindow.sortBackpackByCost.help"   : "{Ordenar por custo}\n\nOrdena artefatos na mochila por custo.",
 	"vcmi.heroWindow.sortBackpackBySlot.hover"  : "Ordenar por espaço",
-	"vcmi.heroWindow.sortBackpackBySlot.help"   : "Ordena artefatos na mochila por espaço equipado.",
+	"vcmi.heroWindow.sortBackpackBySlot.help"   : "{Ordenar por espaço}\n\nOrdena artefatos na mochila por espaço equipado.",
 	"vcmi.heroWindow.sortBackpackByClass.hover" : "Ordenar por classe",
-	"vcmi.heroWindow.sortBackpackByClass.help"  : "Ordena artefatos na mochila por classe de artefato. Tesouro, Menor, Maior, Relíquia.",
+	"vcmi.heroWindow.sortBackpackByClass.help"  : "{Ordenar por classe}\n\nOrdena artefatos na mochila por classe de artefato. Tesouro, Menor, Maior, Relíquia.",
 	"vcmi.heroWindow.fusingArtifact.fusing" : "Você possui todos os componentes necessários para a fusão de %s. Deseja realizar a fusão? {Todos os componentes serão consumidos após a fusão.}",
 
 	"vcmi.tavernWindow.inviteHero" : "Convidar herói",

+ 3 - 3
Mods/vcmi/Content/config/swedish.json

@@ -423,11 +423,11 @@
 	"vcmi.heroWindow.openBackpack.hover"  : "Öppna artefaktryggsäcksfönster",
 	"vcmi.heroWindow.openBackpack.help"   : "Öppnar fönster som gör det enklare att hantera artefaktryggsäcken.",
 	"vcmi.heroWindow.sortBackpackByCost.hover"  : "Sortera efter kostnad",
-	"vcmi.heroWindow.sortBackpackByCost.help"   : "Sorterar artefakter i ryggsäcken efter kostnad.",
+	"vcmi.heroWindow.sortBackpackByCost.help"   : "{Sortera efter kostnad}\n\nSorterar artefakter i ryggsäcken efter kostnad.",
 	"vcmi.heroWindow.sortBackpackBySlot.hover"  : "Sortera efter plats",
-	"vcmi.heroWindow.sortBackpackBySlot.help"   : "Sorterar artefakter i ryggsäcken efter utrustad plats.",
+	"vcmi.heroWindow.sortBackpackBySlot.help"   : "{Sortera efter plats}\n\nSorterar artefakter i ryggsäcken efter utrustad plats.",
 	"vcmi.heroWindow.sortBackpackByClass.hover" : "Sortera efter klass",
-	"vcmi.heroWindow.sortBackpackByClass.help"  : "Sorterar artefakter i ryggsäcken efter artefaktklass (skatt, mindre, större, relik)",
+	"vcmi.heroWindow.sortBackpackByClass.help"  : "{Sortera efter klass}\n\nSorterar artefakter i ryggsäcken efter artefaktklass (skatt, mindre, större, relik)",
 	"vcmi.heroWindow.fusingArtifact.fusing"     : "Du har alla komponenterna som behövs för en sammanslagning av %s. Vill du utföra sammanslagningen? {Alla komponenter kommer att förbrukas vid sammanslagningen.}",
 
 	"vcmi.tavernWindow.inviteHero" : "Bjud in hjälte",

+ 6 - 6
Mods/vcmi/Content/config/ukrainian.json

@@ -423,12 +423,12 @@
 	"vcmi.heroWindow.openCommander.help"  : "Показує інформацію про командира героя",
 	"vcmi.heroWindow.openBackpack.hover" : "Відкрити вікно рюкзака з артефактами",
 	"vcmi.heroWindow.openBackpack.help"  : "Відкриває вікно, що дозволяє легше керувати рюкзаком артефактів",
-	"vcmi.heroWindow.sortBackpackByCost.hover"  : "Сортувати за вартістю",
-	"vcmi.heroWindow.sortBackpackByCost.help"  : "Сортувати артефакти в рюкзаку за вартістю.",
-	"vcmi.heroWindow.sortBackpackBySlot.hover"  : "Сортувати за типом",
-	"vcmi.heroWindow.sortBackpackBySlot.help"  : "Сортувати артефакти в рюкзаку за слотом, в який цей артефакт може бути екіпірований",
-	"vcmi.heroWindow.sortBackpackByClass.hover"  : "Сортування за рідкістю",
-	"vcmi.heroWindow.sortBackpackByClass.help"  : "Сортувати артефакти в рюкзаку за класом рідкісності артефакту. Скарб, Малий, Великий, Реліквія",
+	"vcmi.heroWindow.sortBackpackByCost.hover"  : "За вартістю",
+	"vcmi.heroWindow.sortBackpackByCost.help"  : "{Сортування за вартістю}\n\nСортувати артефакти в рюкзаку за вартістю.",
+	"vcmi.heroWindow.sortBackpackBySlot.hover"  : "За слотом",
+	"vcmi.heroWindow.sortBackpackBySlot.help"  : "{Сортування за слотом}\n\nСортувати артефакти в рюкзаку за слотом, в який цей артефакт може бути екіпірований",
+	"vcmi.heroWindow.sortBackpackByClass.hover"  : "За рідкістю",
+	"vcmi.heroWindow.sortBackpackByClass.help"  : "{Сортування за рідкістю}\n\nСортувати артефакти в рюкзаку за класом рідкісності артефакту. Скарб, Малий, Великий, Реліквія",
 	"vcmi.heroWindow.fusingArtifact.fusing" : "Ви володієте всіма компонентами, необхідними для злиття %s. Ви бажаєте виконати злиття? {Всі компоненти буде спожито під час злиття.}",
 
 	"vcmi.tavernWindow.inviteHero"  : "Запросити героя",

+ 3 - 3
Mods/vcmi/Content/config/vietnamese.json

@@ -423,11 +423,11 @@
 	"vcmi.heroWindow.openBackpack.hover" : "Mở cửa sổ ba lô báu vật",
 	"vcmi.heroWindow.openBackpack.help"  : "Mở cửa sổ để quản lý ba lô báu vật dễ dàng hơn.",
 	"vcmi.heroWindow.sortBackpackByCost.hover"  : "Sắp xếp theo giá",
-	"vcmi.heroWindow.sortBackpackByCost.help"  : "Sắp xếp các báu vật trong ba lô theo giá.",
+	"vcmi.heroWindow.sortBackpackByCost.help"  : "{Sắp xếp theo giá}\n\nSắp xếp các báu vật trong ba lô theo giá.",
 	"vcmi.heroWindow.sortBackpackBySlot.hover"  : "Sắp xếp theo vị trí",
-	"vcmi.heroWindow.sortBackpackBySlot.help"  : "Sắp xếp báu vật trong ba lô theo ô được trang bị.",
+	"vcmi.heroWindow.sortBackpackBySlot.help"  : "{Sắp xếp theo vị trí}\n\nSắp xếp báu vật trong ba lô theo ô được trang bị.",
 	"vcmi.heroWindow.sortBackpackByClass.hover"  : "Sắp xếp theo loại",
-	"vcmi.heroWindow.sortBackpackByClass.help"  : "Sắp xếp các báu vật trong ba lô theo loại: Chính, Phụ, Cổ đại và Quý hiếm.",
+	"vcmi.heroWindow.sortBackpackByClass.help"  : "{Sắp xếp theo loại}\n\nSắp xếp các báu vật trong ba lô theo loại: Chính, Phụ, Cổ đại và Quý hiếm.",
 	"vcmi.heroWindow.fusingArtifact.fusing" : "Bạn đã sở hữu tất cả các món đồ cần thiết để hợp nhất %s. Bạn có muốn hợp nhất không? {Tất cả các món đồ sẽ được sử dụng khi hợp nhất.}",
 
 	"vcmi.tavernWindow.inviteHero"  : "Mới thêm tướng",

+ 11 - 3
client/windows/CHeroBackpackWindow.cpp

@@ -24,6 +24,7 @@
 
 #include "../../lib/mapObjects/CGHeroInstance.h"
 #include "../../lib/networkPacks/ArtifactLocation.h"
+#include "../../lib/texts/CGeneralTextHandler.h"
 
 CHeroBackpackWindow::CHeroBackpackWindow(const CGHeroInstance * hero, const std::vector<CArtifactsOfHeroPtr> & artsSets)
 	: CWindowWithArtifacts(&artsSets)
@@ -43,16 +44,23 @@ CHeroBackpackWindow::CHeroBackpackWindow(const CGHeroInstance * hero, const std:
 	};
 	addSet(arts);
 	arts->setHero(hero);
+
+	std::string sortByValue = VLC->generaltexth->translate("vcmi.heroWindow.sortBackpackByCost.hover");
+	std::string sortBySlot = VLC->generaltexth->translate("vcmi.heroWindow.sortBackpackBySlot.hover");
+	std::string sortByClass = VLC->generaltexth->translate("vcmi.heroWindow.sortBackpackByClass.hover");
 	
-	buttons.emplace_back(std::make_unique<CButton>(Point(), AnimationPath::builtin("ALTFILL.DEF"),
+	buttons.emplace_back(std::make_shared<CButton>(Point(), AnimationPath::builtin("heroBackpackSort"),
 		CButton::tooltipLocalized("vcmi.heroWindow.sortBackpackByCost"),
 		[hero]() { LOCPLINT->cb->sortBackpackArtifactsByCost(hero->id); }));
-	buttons.emplace_back(std::make_unique<CButton>(Point(), AnimationPath::builtin("ALTFILL.DEF"),
+	buttons.back()->setTextOverlay(sortByValue, EFonts::FONT_SMALL, Colors::YELLOW);
+	buttons.emplace_back(std::make_shared<CButton>(Point(), AnimationPath::builtin("heroBackpackSort"),
 		CButton::tooltipLocalized("vcmi.heroWindow.sortBackpackBySlot"),
 		[hero]() { LOCPLINT->cb->sortBackpackArtifactsBySlot(hero->id); }));
-	buttons.emplace_back(std::make_unique<CButton>(Point(), AnimationPath::builtin("ALTFILL.DEF"),
+	buttons.back()->setTextOverlay(sortBySlot, EFonts::FONT_SMALL, Colors::YELLOW);
+	buttons.emplace_back(std::make_shared<CButton>(Point(), AnimationPath::builtin("heroBackpackSort"),
 		CButton::tooltipLocalized("vcmi.heroWindow.sortBackpackByClass"),
 		[hero]() { LOCPLINT->cb->sortBackpackArtifactsByClass(hero->id); }));
+	buttons.back()->setTextOverlay(sortByClass, EFonts::FONT_SMALL, Colors::YELLOW);
 
 	pos.w = stretchedBackground->pos.w = arts->pos.w + 2 * windowMargin;
 	pos.h = stretchedBackground->pos.h = arts->pos.h + buttons.back()->pos.h + 3 * windowMargin;

+ 1 - 1
client/windows/CHeroBackpackWindow.h

@@ -21,7 +21,7 @@ public:
 	
 protected:
 	std::shared_ptr<CArtifactsOfHeroBackpack> arts;
-	std::vector<std::unique_ptr<CButton>> buttons;
+	std::vector<std::shared_ptr<CButton>> buttons;
 	std::shared_ptr<CFilledTexture> stretchedBackground;
 	const int windowMargin = 5;
 

+ 114 - 0
config/widgets/buttons/heroBackpackSort.json

@@ -0,0 +1,114 @@
+{
+	"normal" : {
+		"width": 115,
+		"height": 24,
+		"items" : [
+			{
+				"type": "texture",
+				"image": "DiBoxBck",
+				"rect": {"x": 0, "y": 0, "w": 115, "h": 24}
+			},
+			{
+				"type": "graphicalPrimitive",
+				"rect": {"x": 0, "y": 0, "w": 115, "h": 24},
+				"primitives" : [
+					{ "type" : "filledBox", "a" : { "x" : 2, "y" : 2}, "b" : { "x" : -3, "y" : -3}, "color" : [ 0, 0, 0, 80 ] },
+				
+					{ "type" : "line", "a" : { "x" : 0, "y" : 0}, "b" : { "x" : 0, "y" : -1}, "color" : [ 255, 255, 255, 64 ] },
+					{ "type" : "line", "a" : { "x" : 0, "y" : 0}, "b" : { "x" : -1, "y" : 0}, "color" : [ 255, 255, 255, 128 ] },
+
+					{ "type" : "line", "a" : { "x" : 1, "y" : 1}, "b" : { "x" : 1, "y" : -2}, "color" : [ 255, 255, 255, 80 ] },
+					{ "type" : "line", "a" : { "x" : 1, "y" : 1}, "b" : { "x" : -2, "y" : 1}, "color" : [ 255, 255, 255, 1115 ] },
+
+					{ "type" : "line", "a" : { "x" : 1, "y" : -2}, "b" : { "x" : -2, "y" : -2}, "color" : [ 0, 0, 0, 192 ] },
+					{ "type" : "line", "a" : { "x" : -2, "y" : 1}, "b" : { "x" : -2, "y" : -2}, "color" : [ 0, 0, 0, 192 ] },
+
+					{ "type" : "line", "a" : { "x" : 0, "y" : -1}, "b" : { "x" : -1, "y" : -1}, "color" : [ 0, 0, 0, 255 ] },
+					{ "type" : "line", "a" : { "x" : -1, "y" : 0}, "b" : { "x" : -1, "y" : -1}, "color" : [ 0, 0, 0, 255 ] },
+				]
+			}
+		]
+	},
+	"pressed" : {
+		"width": 115,
+		"height": 24,
+		"items" : [
+			{
+				"type": "texture",
+				"image": "DiBoxBck",
+				"rect": {"x": 1, "y": 1, "w": 114, "h": 23}
+			},
+			{
+				"type": "graphicalPrimitive",
+				"rect": {"x": 0, "y": 0, "w": 115, "h": 24},
+				"primitives" : [
+					{ "type" : "filledBox", "a" : { "x" : 3, "y" : 3}, "b" : { "x" : -3, "y" : -3}, "color" : [ 0, 0, 0, 96 ] },
+				
+					{ "type" : "rectangle", "a" : { "x" : 0, "y" : 0}, "b" : { "x" : -1, "y" : -1}, "color" : [ 0, 0, 0, 255 ] },
+					
+					{ "type" : "line", "a" : { "x" : 1, "y" : 1}, "b" : { "x" : 1, "y" : -2}, "color" : [ 255, 255, 255, 48 ] },
+					{ "type" : "line", "a" : { "x" : 1, "y" : 1}, "b" : { "x" : -2, "y" : 1}, "color" : [ 255, 255, 255, 96 ] },
+
+					{ "type" : "line", "a" : { "x" : 2, "y" : 2}, "b" : { "x" : 2, "y" : -3}, "color" : [ 255, 255, 255, 64 ] },
+					{ "type" : "line", "a" : { "x" : 2, "y" : 2}, "b" : { "x" : -3, "y" : 2}, "color" : [ 255, 255, 255, 128 ] },
+				]
+			}
+		]
+	},
+	"blocked" : {
+		"width": 115,
+		"height": 24,
+		"items" : [
+			{
+				"type": "texture",
+				"image": "DiBoxBck",
+				"rect": {"x": 0, "y": 0, "w": 115, "h": 24}
+			},
+			{
+				"type": "graphicalPrimitive",
+				"rect": {"x": 0, "y": 0, "w": 115, "h": 24},
+				"primitives" : [
+					{ "type" : "filledBox", "a" : { "x" : 2, "y" : 2}, "b" : { "x" : -3, "y" : -3}, "color" : [ 0, 0, 0, 80 ] },
+				
+					{ "type" : "line", "a" : { "x" : 0, "y" : 0}, "b" : { "x" : 0, "y" : -1}, "color" : [ 255, 255, 255, 64 ] },
+					{ "type" : "line", "a" : { "x" : 0, "y" : 0}, "b" : { "x" : -1, "y" : 0}, "color" : [ 255, 255, 255, 128 ] },
+
+					{ "type" : "line", "a" : { "x" : 1, "y" : 1}, "b" : { "x" : 1, "y" : -2}, "color" : [ 255, 255, 255, 80 ] },
+					{ "type" : "line", "a" : { "x" : 1, "y" : 1}, "b" : { "x" : -2, "y" : 1}, "color" : [ 255, 255, 255, 1115 ] },
+
+					{ "type" : "line", "a" : { "x" : 1, "y" : -2}, "b" : { "x" : -2, "y" : -2}, "color" : [ 0, 0, 0, 192 ] },
+					{ "type" : "line", "a" : { "x" : -2, "y" : 1}, "b" : { "x" : -2, "y" : -2}, "color" : [ 0, 0, 0, 192 ] },
+					
+					{ "type" : "line", "a" : { "x" : 0, "y" : -1}, "b" : { "x" : -1, "y" : -1}, "color" : [ 0, 0, 0, 255 ] },
+					{ "type" : "line", "a" : { "x" : -1, "y" : 0}, "b" : { "x" : -1, "y" : -1}, "color" : [ 0, 0, 0, 255 ] },
+				]
+			}
+		]
+	},
+	"highlighted" : {
+		"width": 115,
+		"height": 24,
+		"items" : [
+			{
+				"type": "texture",
+				"image": "DiBoxBck",
+				"rect": {"x": 0, "y": 0, "w": 115, "h": 24}
+			},
+			{
+				"type": "graphicalPrimitive",
+				"rect": {"x": 0, "y": 0, "w": 115, "h": 24},
+				"primitives" : [
+					{ "type" : "filledBox", "a" : { "x" : 2, "y" : 2}, "b" : { "x" : -3, "y" : -3}, "color" : [ 0, 0, 0, 80 ] },
+				
+					{ "type" : "rectangle", "a" : { "x" : 2, "y" : 2}, "b" : { "x" : -3, "y" : -3}, "color" : [ 255, 255, 255, 255 ] },
+					
+					{ "type" : "line", "a" : { "x" : 1, "y" : -2}, "b" : { "x" : -2, "y" : -2}, "color" : [ 0, 0, 0, 255 ] },
+					{ "type" : "line", "a" : { "x" : -2, "y" : 1}, "b" : { "x" : -2, "y" : -2}, "color" : [ 0, 0, 0, 255 ] },
+					
+					{ "type" : "line", "a" : { "x" : 1, "y" : 1}, "b" : { "x" : 1, "y" : -2}, "color" : [ 255, 255, 255, 1115 ] },
+					{ "type" : "line", "a" : { "x" : 1, "y" : 1}, "b" : { "x" : -2, "y" : 1}, "color" : [ 255, 255, 255, 1115 ] },
+				]
+			}
+		]
+	},
+}