aboutsummaryrefslogtreecommitdiff
path: root/Src/resources/skins/Winamp Modern/scripts/titlebar.m
blob: 5d28307ce696c24ff69f6472c2cfe3f388ffb7a3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#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();
}