winamp/Src/resources/skins/Winamp Modern/scripts/titlebar.m
2024-09-24 14:54:57 +02:00

105 lines
2.6 KiB
Objective-C

#include <lib/std.mi>
#define MARGIN 0
Function resizeObjects();
Global GuiObject left, right, center;
Global Text tcenter;
Global Layer lcenter;
Global Group sg;
Global int padleft, padright;
System.onScriptLoaded() {
padleft = 0;
padright = 0;
sg = getScriptGroup();
if (sg == NULL) {
messageBox("titlebar.maki can only run within a group", "Error", 0, "");
return;
}
left = sg.findObject(getToken(getParam(), ";", 0));
center = sg.findObject(getToken(getParam(), ";", 1));
if (center != NULL) {
tcenter = center.findObject("window.titlebar.title");
lcenter = center.findObject("window.titlebar.title.overlay");
}
right = sg.findObject(getToken(getParam(), ";", 2));
}
// backward compatibility with prerelease notify trick
sg.onNotify(String cmd, String param, int a, int b) {
String _command = getToken(cmd, ",", 0);
String _param = getToken(cmd, ",", 1);
if (_command == "padtitleright" || _command == "padtitleright")
onSetXuiParam(_command, _param);
}
System.onSetXuiParam(String param, String value) {
if (param == "padtitleright") {
padright = padright + StringToInteger(value);
resizeObjects();
}
if (param == "padtitleleft") {
padleft = padleft + StringToInteger(value);
resizeObjects();
}
}
resizeObjects() {
int text_width = 0;
int layout_width = 0;
int group_width = sg.getWidth();
Layout l = sg.getParentLayout();
layout_width = l.getWidth();
if (center != NULL) {
text_width = center.getAutoWidth();
}
int lx = (layout_width - text_width) / 2;
lx = l.clientToScreenX(lx);
lx = sg.screenToClientX(lx);
lx = lx - sg.getLeft();
if (center != NULL) {
center.setXmlParam("x", IntegerToString(lx));
center.setXmlParam("relatx", "0");
center.setXmlParam("w", IntegerToString(text_width));
center.setXmlParam("relatw", "0");
lcenter.setXmlParam("x", IntegerToString(lx));
lcenter.setXmlParam("relatx", "0");
lcenter.setXmlParam("w", IntegerToString(text_width));
lcenter.setXmlParam("relatw", "0");
}
if (left != NULL) {
left.setXmlParam("x", IntegerToString(padleft));
left.setXmlParam("relatx", "0");
left.setXmlParam("w", IntegerToString(lx-padleft-MARGIN));
left.setXmlParam("relatw", "0");
}
if (right != NULL) {
right.setXmlParam("x", IntegerToString(lx+text_width+MARGIN+1));
right.setXmlParam("relatx", "0");
right.setXmlParam("w", "-" + IntegerToString(lx+text_width+1+padright+MARGIN+1)); //IntegerToString(group_width-(lx+text_width)));
right.setXmlParam("relatw", "1");
}
}
tcenter.onTextChanged(string newtext) {
resizeObjects();
}
sg.onResize(int x, int y, int w, int h) {
resizeObjects();
}