foo_uie_mega_panel_splitter

Список разделов foobar2000 Плагины

Описание: Все о плагинах, компонентах, расширениях

Сообщение #21 kgena_ua » 07.07.2015, 11:09

megane68, ни чего у меня не получилось с foobar2000 PssMega.
Вот создал чистый Foobar, положил несколько компонентов, создал три панели в MPS.
http://rghost.ru/8C64VzpWV
Что изменял:
Безымянный.png
Безымянный.png (6.78 КБ) Просмотров: 3983

Horisontal splitter на Panel Stack Splitter (в user-components у Вас было все зля PSS).
В корне обязательное присутствие interface.api и jscript.api (надо посмотреть чем они отличаются от *.api из WSH).
Прописал путь к файлам:
Безымянный2.png
Безымянный2.png (7.03 КБ) Просмотров: 3983


Продолжая тему анимации:
https://www.youtube.com/watch?v=UAPCf9pxQxs&feature=youtu.be
kgena_ua M
Автор темы
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #22 kgena_ua » 31.07.2015, 09:47

Вот закончил с "анимацией" переключения панелей.
Левая кнопка: albumlist, explorer и library tree (через меню пр.кл. или колесо мыши).
Затем graphical browser. Далее Playlist switcher. И справа панель Properties с Peak meter. На плейлист слева можно не обрпщать внимание - это тест.
http://rghost.ru/6Z6RHHWq5
kgena_ua M
Автор темы
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #23 kgena_ua » 28.10.2015, 22:34

Привет,macarych. Пока писал ответ тему закрыли. И правильно.
Давайте делать сборки.
Давайте слушать музыку...........
а там, кстати, можно найти некоторые ответы на наши вопросы.
kgena_ua M
Автор темы
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #24 Aum » 16.11.2015, 15:57

Интереснейший плагин. Зачем закрывать тему-то? kgena_ua, какую тему закрыли и кто?
А по плагину вопрос, не могу въехать:
как заставить обновляться MPS при нажатии кнопки в другом скрипте WSH?
Скрипт кнопки-менюшки:
Код: Выделить всё
function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }

var font = gdi.Font("Arial",14,1);
var ww,wh;

DT_CENTER = 0x00000001;
DT_VCENTER = 0x00000004;
DT_SINGLELINE = 0x00000020;
DT_WORD_ELLIPSIS = 0x00040000;
MF_STRING = 0x00000000;
MF_POPUP = 0x00000010;
MF_SEPARATOR = 0x00000800;

var fso = new ActiveXObject("Scripting.FileSystemObject");
var set_path = fb.ProfilePath + "\\maybe\\settings\\";

function on_size(){
    ww = window.Width;   
    wh = window.Height;
}

var panel = parseInt( utils.ReadINI( set_path + 'settings.ini', 'panel', 'panel'));
if (!panel) {
    panel = 0;
    try {
        fso.deleteFile( set_path + "panel_" + 0 );
    } catch(e) {};
    fso.CreateTextFile( set_path + "panel_" + 0 );
    utils.WriteINI( set_path + 'settings.ini', 'panel', 'panel', 0 );
}


function on_paint(gr) {
    gr.FillSolidRect(0, 0, ww, wh, RGB(0,10,20));
   }


function on_mouse_lbtn_up(x, y) {
    var Menu = window.CreatePopupMenu();
var basemenu = window.CreatePopupMenu();
 
    Menu.AppendMenuItem(MF_STRING, 1, "Show library");
Menu.AppendMenuItem(MF_STRING, 2, "Show explorer");
Menu.AppendMenuItem(MF_STRING, 3, "Show biography");
Menu.AppendMenuItem(MF_STRING, 4, "Show lyric");
Menu.AppendMenuItem(MF_STRING, 5, "Show playlists");
   
 switch (Menu.TrackPopupMenu(x, y)) {
 case 1:
 panel = 0;
 try {
    fso.deleteFile( set_path + "panel_" + "*" );
        } catch(e) {};
    fso.CreateTextFile( set_path + "panel_" + panel );
    utils.WriteINI( set_path + 'settings.ini', 'panel', 'panel', panel );
   
    break;
    case 2:
     panel = 1;
   try {
    fso.deleteFile( set_path + "panel_" + "*" );
        } catch(e) {};
    fso.CreateTextFile( set_path + "panel_" + panel );
    utils.WriteINI( set_path + 'settings.ini', 'panel', 'panel', panel );
    break;
    case 3:
       panel = 2;
 try {
    fso.deleteFile( set_path + "panel_" + "*" );
        } catch(e) {};
    fso.CreateTextFile( set_path + "panel_" + panel );
    utils.WriteINI( set_path + 'settings.ini', 'panel', 'panel', panel );
    break;
    case 4:
     panel = 3;
 try {
    fso.deleteFile( set_path + "panel_" + "*" );
        } catch(e) {};
    fso.CreateTextFile( set_path + "panel_" + panel );
    utils.WriteINI( set_path + 'settings.ini', 'panel', 'panel', panel );
    break; 
    case 5:
     panel = 4;
 try {
    fso.deleteFile( set_path + "panel_" + "*" );
        } catch(e) {};
    fso.CreateTextFile( set_path + "panel_" + panel );
    utils.WriteINI( set_path + 'settings.ini', 'panel', 'panel', panel );
    break;

   
    Menu.Dispose();
       
    return true
   

}}



function on_mouse_move(x, y) {
    window.SetCursor(32649);
    window.Repaint();
}

function on_mouse_leave() {   
    window.SetCursor(32512);
    window.Repaint();
}

И простейший скрипт MPS
Код: Выделить всё
function RGB(r, g, b) {
   return (0xff000000 | (r << 16) | (g << 8) | (b));
}

var fso = new ActiveXObject("Scripting.FileSystemObject");
var set_path = fb.ProfilePath + "\\maybe\\settings\\";
var timer = window.CreateTimerInterval(4);

DT_LEFT = 0x00000000;
DT_CENTER = 0x00000001;
DT_VCENTER = 0x00000004;
DT_SINGLELINE = 0x00000020;
DT_WORD_ELLIPSIS = 0x00040000;

var font = gdi.Font("Areal",10,0);
var ww, wh;

var panel = parseInt( utils.ReadINI( set_path + 'settings.ini', 'panel', 'panel'));
//if (!panel) panel = 0;

   

function on_paint(gr) {
//pss.GetPanel(panel).Show();

if (panel == 0) {
      pss.GetPanel(0).Show();
      pss.GetPanel(1).Show(false);
      pss.GetPanel(2).Show(false);
      pss.GetPanel(3).Show(false);
      //pss.GetPanel(4).Show(false);
      //pss.GetPanel(панель такая).Move(x,y,ww, wh, true);
      
   } else
   if (panel == 1) {
      pss.GetPanel(0).Show(false);
      pss.GetPanel(1).Show();
      pss.GetPanel(2).Show(false);
      pss.GetPanel(3).Show(false);
      //pss.GetPanel(4).Show(false);
   
   } else {
      pss.GetPanel(0).Show(false);
      pss.GetPanel(1).Show(false);
      pss.GetPanel(2).Show();
      pss.GetPanel(3).Show(false);
      //pss.GetPanel(4).Show(false);
   
   }
}

   function on_mouse_move(x,y) {
    on_mouse = true;
    window.SetCursor(32649);
    window.Repaint();
}

function on_mouse_leave() {
    on_mouse = false;
    window.SetCursor(32512);
    window.Repaint();
}

Т.е. по нажатии на кпоку в файле меняется значение панелей, но как заставить скрипт прочитать значение этого файла, по какому событию?
Aum M
Аватара
Репутация: 20
С нами: 14 лет

Сообщение #25 kgena_ua » 16.11.2015, 18:20

Aum:как заставить обновляться MPS при нажатии кнопки в другом скрипте WSH?
Aum, через файл ini и таймер в MPS.
В первом скрипте Вы записываете в файл ini номер панели, которую хотите отображать:
utils.WriteINI( set_path + 'settings.ini', 'panel', 'panel', panel );
Во втором скрипте, в MPS панели, нужно добавить:
var timer = window.CreateTimerInterval(тут время обновления);
и
function on_timer(id) {
panel = parseInt( utils.ReadINI( set_path + 'settings.ini', 'panel', 'panel'));
}

таким образом переменная panel в MPS будет периодически обновляться.
kgena_ua M
Автор темы
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #26 Aum » 16.11.2015, 20:51

kgena_ua:таким образом переменная panel в MPS будет периодически обновляться.
Точно! Спсб! Только вот теперь теоретический вопрос: таймер запущен и все время работает, что понемножку ест ресурсы (хотя при времени в 1 секунду - это минимум~0.5% проца, но все же). Получается другого способа пока нет?
Но и на этом спасибо китайским мастерам)) - этот мега сплиттер решает старую проблему - достучаться из WSH в одном сплиттере до панелей внутри другого сплиттера!
Aum M
Аватара
Репутация: 20
С нами: 14 лет

Сообщение #27 kgena_ua » 17.11.2015, 10:12

Да,Aum, на данный момент другого способа пока нет, если разные панели. А если всю сборку сделать в одной панели MPS, то можно и без таймеров. На pccar.ru в основном так и делают - http://pccar.ru/showpost.php?p=339840&postcount=239.
kgena_ua M
Автор темы
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #28 Aum » 14.12.2015, 22:17

Всем доброго времени суток! Помогите разрешить задачку:

Левой кнопкой переключаем две разных панели "по две в каждой": одна под одной.
Правой кнопкой вызываем меню с возможностью выбора дополнительных панелей.

Как заставить плавно "уезжать" и "приезжать" те панели, где их по две!? 3 дня и 3 ночи бьюсь. Выручайте!

Вот примерчик набросал:
http://rghost.net/6hPjLr67F
Изображение

Синий кусочек MPS оставлен специально для понимания процесса, так сказать. Но никак не могу понять ту часть скрипта, где должны отображаться прячущиеся панели: как же объяснить ему, что при определенных условиях необходимо плавно перемещать по 2 панели одновременно, и другие 2 показывать.
Aum M
Аватара
Репутация: 20
С нами: 14 лет

Сообщение #29 zeremy » 15.12.2015, 00:04

zeremy
Репутация: 21
С нами: 8 лет 4 месяца

Сообщение #30 Aum » 15.12.2015, 09:44

zeremy, I know about border arround panels. I want to do other thing:
I try to add scroll function for 2 panel at the same time: after clicking on button - 2 panels go to the left side and other 2 panels come from the right side.
Aum M
Аватара
Репутация: 20
С нами: 14 лет

Сообщение #31 zeremy » 15.12.2015, 11:35

If I understood correctly what you want, you could
Add two panels to a panel stack splitter , and move the panel stack splitter panel.
zeremy
Репутация: 21
С нами: 8 лет 4 месяца

Сообщение #32 Aum » 15.12.2015, 11:48

Yes, you are right - it's one way. But I need 5 panels-it's too many PSS. So I want to do this with 1 MPS!
Aum M
Аватара
Репутация: 20
С нами: 14 лет

Сообщение #33 zeremy » 15.12.2015, 11:58

Add as many PSS you need with 1 MPS
Изображение
zeremy
Репутация: 21
С нами: 8 лет 4 месяца

Сообщение #34 Aum » 15.12.2015, 12:38

man, it's wrong way))
I think a problem is solved: I added a second variable in both script's - "panel2". This variable operate other panels.

Добавлено спустя 2 минуты 8 секунд:
script for MPS:
Спойлер
Код: Выделить всё
function RGB(r, g, b) {
   return (0xff000000 | (r << 16) | (g << 8) | (b));
}
pss.GetPanel(0); /*PANEL: [Explorer Tree]*/
pss.GetPanel(1); /*PANEL: [Item properties]*/
pss.GetPanel(2); /*PANEL: [Biography]*/
pss.GetPanel(3); /*PANEL: [Playlist switcher]*/
pss.GetPanel(4); /*PANEL: [Artwork view]*/

var fso = new ActiveXObject("Scripting.FileSystemObject");
var set_path = fb.ProfilePath + "\\maybe\\settings\\";

DT_LEFT = 0x00000000;
DT_CENTER = 0x00000001;
DT_VCENTER = 0x00000004;
DT_SINGLELINE = 0x00000020;
DT_WORD_ELLIPSIS = 0x00040000;


var font = gdi.Font("Areal",10,0);
var ww, wh;

var c_panel, n_panel = 0;

var panel = parseInt( utils.ReadINI( set_path + 'settings.ini', 'panel', 'panel'));
if (!panel) panel = 0;

var panel2 = parseInt( utils.ReadINI( set_path + 'settings.ini', 'panel2', 'panel2'));
if (!panel2) panel2 = 4;

var dir_move = utils.ReadINI( set_path + 'settings.ini', 'dir_move', 'dir_move');
if (!dir_move) dir_move = "right";


var panels = 3;
var old_panel = panel;
var c_panel = panel;

var panels2 = 2;
var old_panel2 = panel2;
var c_panel2 = panel2;

var c_x=0, n_x = 0;
var c_ww = 0, n_ww = 0;
var c_wh=0, n_wh=0;
var c_y=0, n_y=0;


var timer_anim;
var timer_anime = window.GetProperty("Timer anime", 3);
var timer_parse = window.CreateTimerInterval(500);

var step_c = window.GetProperty("step_c", 8);
var step_n = window.GetProperty("step_n", 8);


function on_paint(gr) {
   if (old_panel != panel) {
      move_panel();
      old_panel = panel;
      old_panel2 = panel2;
   }

    gr.FillSolidRect(0, 0, ww, wh, RGB(0,10,20));
gr.GdiDrawText("Номер панели:             "+panel+"   sec. pan:"+panel2, font, RGB(150,150,150), 120, -2, ww, 20, DT_LEFT | DT_WORD_ELLIPSIS );

gr.GdiDrawText("c_x = "+c_x+" c_ww = "+c_ww, font, RGB(150,150,150), 2, 6, ww, 20, DT_SINGLELINE | DT_VCENTER | DT_WORD_ELLIPSIS );
gr.GdiDrawText("n_x = "+n_x+" n_ww = "+c_ww, font, RGB(150,150,150), 2, 13, ww, 30, DT_SINGLELINE | DT_VCENTER | DT_WORD_ELLIPSIS );
      
      gr.GdiDrawText("текущ. панель-       c =  "+[c_panel], font, RGB(150,150,150), 120, 5, ww, 20, DT_SINGLELINE | DT_VCENTER | DT_WORD_ELLIPSIS );
gr.GdiDrawText("следующ. панель-  n =  "+[n_panel], font, RGB(150,150,150), 120, 12, ww, 30, DT_SINGLELINE | DT_VCENTER | DT_WORD_ELLIPSIS );



   
         if (panel == 0) {
c_ww = ww;
n_ww = ww;
//c_y = wh-wh*0.6;
//n_y = wh-wh*0.6;
c_wh = wh*0.6;
n_wh = wh*0.6;   


   } else          
   if (panel == 1) {
c_ww = ww;
n_ww = ww;
//c_y = wh-wh*0.6;
//n_y = wh-wh*0.6;
c_wh = wh*0.6;
n_wh = wh*0.6;   

   }  else {


c_ww = ww;
n_ww = ww;
//c_y = 0;
//n_y = 0;
c_wh = wh;
n_wh = wh;


   }

      pss.GetPanel(c_panel).Show();
pss.GetPanel(c_panel).Move(c_x, 35, c_ww, c_wh - 35, true);
      
      pss.GetPanel(c_panel2).Show();
pss.GetPanel(c_panel2).Move(c_x, c_wh, c_ww, wh-c_wh, true);
   
   if (dir_move == "right" ? n_x < 0 : n_x > 0) {   
      


   pss.GetPanel(n_panel).Show();
   pss.GetPanel(n_panel).Move(n_x,35, n_ww,n_wh - 35, true);
         pss.GetPanel(n_panel2).Show();
pss.GetPanel(n_panel2).Move(n_x, n_wh, n_ww, wh-n_wh, true);
   
   
   }


   

}

function on_mouse_lbtn_down(x, y) {
}

function move_panel() {
   if (n_x == 0) {
   window.SetProperty("panel",panel)
      n_panel = panel;
      n_panel2 = panel2;
      
 c_x = 0;
   if (dir_move == "right" ? n_x = 0 - c_ww : n_x = c_ww)
      timer_anim = window.CreateTimerInterval(timer_anime);
   move = true;
      }
}

function on_timer(id) {
   if (timer_anim && id == timer_anim.ID) {

      if (dir_move == "left") {
         c_x = c_x - step_c;
         n_x = n_x - step_n;
      }
      
      if (dir_move == "right") {
         c_x = c_x + step_c;
         n_x = n_x + step_n;
      }

      window.Repaint();


      
      //if (dir_move == "right" ? n_x >= 0 : n_x <= 0) {
            if (dir_move == "right" ? n_x >= 0 : n_x <= 0) {
   pss.GetPanel(c_panel).Show(false);
         pss.GetPanel(n_panel).Show(false);
            pss.GetPanel(c_panel2).Show(false);
         pss.GetPanel(n_panel2).Show(false);
         //pss.GetPanel(n_panel).Show(false);
         //window.SetProperty(c_panel,0);
         //window.SetProperty(n_panel,1);
         c_panel = n_panel;
         n_panel = 0;
         c_panel2 = n_panel2;
         n_panel2 = 0;
         c_x = 0;
         n_x = 0;
         timer_anim.Dispose();

        }

}
   if (timer_parse && id == timer_parse.ID) {
      dir_move = utils.ReadINI( set_path + 'settings.ini', 'dir_move', 'dir_move');
      panel = parseInt( utils.ReadINI( set_path + 'settings.ini', 'panel', 'panel'));
      panel2 = parseInt( utils.ReadINI( set_path + 'settings.ini', 'panel2', 'panel2'));

   window.SetProperty("panel",panel);
   }
   window.Repaint();
}

function on_size() {
    ww = window.Width;
    wh = window.Height;
}


script for button:
Спойлер
Код: Выделить всё
function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }
 function RGBA(r, g, b, a) {
   return ((a << 24) | (r << 16) | (g << 8) | (b));
}

var font = gdi.Font("Arial",12,0);
var ww,wh;

DT_CENTER = 0x00000001;
DT_VCENTER = 0x00000004;
DT_SINGLELINE = 0x00000020;
DT_WORD_ELLIPSIS = 0x00040000;
MF_STRING = 0x00000000;
MF_POPUP = 0x00000010;
MF_SEPARATOR = 0x00000800;
var on_mouse = false;
var tooltip = window.CreateTooltip();
tooltip.SetMaxWidth( 200 );
tooltip.Text = "лкм-переключение: 2х панелей,    скм-настройки,                              пкм-переключения панелей";
   var icon;
    var img;
   

    function on_mouse_move(x,y) {
  on_mouse = true;
  window.SetCursor(32649);
  window.Repaint();

tooltip.Activate();

}

function on_mouse_leave() {
  on_mouse = false;
window.Repaint();
  tooltip.Deactivate();
 }
var fso = new ActiveXObject("Scripting.FileSystemObject");
var set_path = fb.ProfilePath + "\\maybe\\settings\\";

function on_size(){
    ww = window.Width;   
    wh = window.Height;
}

var panel = parseInt( utils.ReadINI( set_path + 'settings.ini', 'panel', 'panel'));
if (!panel) {
    panel = 0;
    try {
        fso.deleteFile( set_path + "panel_" + 0 );
    } catch(e) {};
    fso.CreateTextFile( set_path + "panel_" + 0 );
    utils.WriteINI( set_path + 'settings.ini', 'panel', 'panel', 0 );
}

var panel2 = parseInt( utils.ReadINI( set_path + 'settings.ini', 'panel2', 'panel2'));
if (!panel2) {
    panel2 = 3;
    try {
        fso.deleteFile( set_path + "panel2_" + 3 );
    } catch(e) {};
    fso.CreateTextFile( set_path + "panel2_" + 3 );
    utils.WriteINI( set_path + 'settings.ini', 'panel2', 'panel2', 3 );
}

var dir_move = utils.ReadINI( set_path + 'settings.ini', 'dir_move', 'dir_move');
if (!dir_move) {
    dir_move = "right"
    utils.WriteINI( set_path + 'settings.ini', 'dir_move', 'dir_move', "right" );
}

var panels = 3;
var panels2 = 2;


function on_paint(gr) {
 
   gr.FillSolidRect(0, 0, ww, wh,RGBA(20,20,20,255));
gr.GdiDrawText("Кнопка переключения панелей: первая "+panel, font, RGB(150,150,150), 0, 20, ww, 20, DT_VCENTER | DT_WORD_ELLIPSIS );
gr.GdiDrawText("Кнопка переключения панелей: вторая "+panel2, font, RGB(150,150,150), 0, 40, ww, 20, DT_VCENTER | DT_WORD_ELLIPSIS );
   }
var on_l = false, on_r = false;
function on_mouse_lbtn_up(x, y) {
    on_r = false;
    on_l = false;
    window.Repaint();
}
function on_mouse_lbtn_down(x, y) {
   
        on_l = true;
        window.Repaint();
        if (panel == 0) {
            panel = 1;
        utils.WriteINI( set_path + 'settings.ini', 'dir_move', 'dir_move', "left" );
   
   
    try {
    fso.deleteFile( set_path + "panel_" + "*" );
        } catch(e) {};
    fso.CreateTextFile( set_path + "panel_" + panel );
    utils.WriteINI( set_path + 'settings.ini', 'panel', 'panel', panel );
} else {
            panel = 0;
        utils.WriteINI( set_path + 'settings.ini', 'dir_move', 'dir_move', "left" );
   
   
    try {
    fso.deleteFile( set_path + "panel_" + "*" );
        } catch(e) {};
    fso.CreateTextFile( set_path + "panel_" + panel );
    utils.WriteINI( set_path + 'settings.ini', 'panel', 'panel', panel );
}
        if (panel2 == 3) {
            panel2 = 4;
        utils.WriteINI( set_path + 'settings.ini', 'dir_move', 'dir_move', "left" );
   
   
    try {
    fso.deleteFile( set_path + "panel2_" + "*" );
        } catch(e) {};
    fso.CreateTextFile( set_path + "panel2_" + panel2 );
    utils.WriteINI( set_path + 'settings.ini', 'panel2', 'panel2', panel2 );
} else {
            panel2 = 3;
        utils.WriteINI( set_path + 'settings.ini', 'dir_move', 'dir_move', "left" );
   
   
    try {
    fso.deleteFile( set_path + "panel2_" + "*" );
        } catch(e) {};
    fso.CreateTextFile( set_path + "panel2_" + panel2 );
    utils.WriteINI( set_path + 'settings.ini', 'panel2', 'panel2', panel2 );
}
}

function on_mouse_wheel(delta) {
    if (delta > 0) {panel = panel >= panels - 1 ? 0 : panel + 1;
        utils.WriteINI( set_path + 'settings.ini', 'dir_move', 'dir_move', "right" );
    }
   
    if (delta < 0) {panel = panel <= 0 ? panels - 1 : panel - 1;
        utils.WriteINI( set_path + 'settings.ini', 'dir_move', 'dir_move', "left" );
    }
   
    try {
    fso.deleteFile( set_path + "panel_" + "*" );
        } catch(e) {};
    fso.CreateTextFile( set_path + "panel_" + panel );
    utils.WriteINI( set_path + 'settings.ini', 'panel', 'panel', panel );

    window.Repaint();
}
function on_mouse_mbtn_up(x, y) {
    window.ShowConfigure();
}
function on_mouse_rbtn_up(x, y) {
    var Menu = window.CreatePopupMenu();
 
Menu.AppendMenuItem(MF_STRING, 1, "Показать експлорер и плейлисты");
Menu.AppendMenuItem(MF_STRING, 2, "Показать свойства и албумарт");
Menu.AppendMenuItem(MF_STRING, 3, "Показать биографию");
//Menu.AppendMenuItem(MF_STRING, 4, "Show lyric");
//Menu.AppendMenuItem(MF_STRING, 5, "Show Propeties");
//Menu.AppendMenuItem(MF_STRING, 6, "Configure...");
//Menu.AppendMenuItem(MF_STRING, 7, "Properties...");
Menu.CheckMenuRadioItem(1, 3, panel+1);


   
 switch (Menu.TrackPopupMenu(x, y)) {
 case 1:
 panel = 0;
 try {
    fso.deleteFile( set_path + "panel_" + "*" );
        } catch(e) {};
    fso.CreateTextFile( set_path + "panel_" + panel );
    utils.WriteINI( set_path + 'settings.ini', 'panel', 'panel', panel );
   
    break;
    case 2:
     panel = 1;
   try {
    fso.deleteFile( set_path + "panel_" + "*" );
        } catch(e) {};
    fso.CreateTextFile( set_path + "panel_" + panel );
    utils.WriteINI( set_path + 'settings.ini', 'panel', 'panel', panel );
    break;
    case 3:
       panel = 2;
 try {
    fso.deleteFile( set_path + "panel_" + "*" );
        } catch(e) {};
    fso.CreateTextFile( set_path + "panel_" + panel );
    utils.WriteINI( set_path + 'settings.ini', 'panel', 'panel', panel );
    break;
    case 4:
     panel = 3;
 try {
    fso.deleteFile( set_path + "panel_" + "*" );
        } catch(e) {};
    fso.CreateTextFile( set_path + "panel_" + panel );
    utils.WriteINI( set_path + 'settings.ini', 'panel', 'panel', panel );
    break; 
case 5:
     panel = 4;
 try {
    fso.deleteFile( set_path + "panel_" + "*" );
        } catch(e) {};
    fso.CreateTextFile( set_path + "panel_" + panel );
    utils.WriteINI( set_path + 'settings.ini', 'panel', 'panel', panel );
    break; 

   
    Menu.Dispose();
       
    return true
   

}}


     

// Used in window.GetColorCUI()
var ColorTypeCUI = {
    text: 0,
    selection_text: 1,
    inactive_selection_text: 2,
    background: 3,
    selection_background: 4,
    inactive_selection_background: 5,
    active_item_frame: 6
};


// Used in window.GetColorDUI()
var ColorTypeDUI = {
    text: 0,
    background: 1,
    highlight: 2,
    selection: 3
};


// Used in window.SetCursor()
var g_is_default_ui = window.InstanceType;
var g_font = null;

var g_textcolor = 0, g_textcolor_hl = 0;
var g_backcolor = 0; g_color_selected_bg = 0; g_color_highlight = 0;


get_colors();


function get_colors() {
    if (g_is_default_ui) { // DUI
        g_textcolor = window.GetColorDUI(ColorTypeDUI.text);
        g_textcolor_hl = window.GetColorDUI(ColorTypeDUI.highlight);
        g_backcolor = window.GetColorDUI(ColorTypeDUI.background);
    } else { // CUI
        g_textcolor = window.GetColorCUI(ColorTypeCUI.text);
        g_textcolor_hl = window.GetColorCUI(ColorTypeCUI.text);
        g_backcolor = window.GetColorCUI(ColorTypeCUI.background);
        g_color_selected_bg = window.GetColorCUI(ColorTypeCUI.selection_background);
        g_color_highlight = window.GetColorCUI(ColorTypeCUI.active_item_frame);
    }
}

function on_size() {
    ww = window.Width;
    wh = window.Height;
}

function on_colors_changed() {
    get_colors();
    window.Repaint();
}

Добавлено спустя 6 минут 42 секунды:
It's work fine! This way you can operate more panels if you add more variables.

Добавлено спустя 4 минуты 21 секунду:
И на родном могучем)):
Способ найден. Если необходимо управлять несколькими панелями одновременно/параллельно, добавляем в скрипт MPS и скрипт кнопки переключения на WSH: дополнительные переменные - panel (управляет одной группой панелей), panel2 (управляет другой группой панелей).
см. пример:

Добавлено спустя 9 минут 58 секунд:
http://rghost.net/7VBB5n5Rt
Aum M
Аватара
Репутация: 20
С нами: 14 лет

Сообщение #35 kgena_ua » 15.12.2015, 13:39

Ого сколько написано, прочитаю позже.
Aum, сразу не ответил. Вот написал скрипт для двух панелей, одна под другой, и две кнопки - 1 и 2.
Скрипт короткий и наглядный, вроде.
Код: Выделить всё
function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }

var font = gdi.Font("Arial",12,1);
var ww = window.Width, wh = window.Height;;

DT_LEFT = 0x00000000;
DT_CENTER = 0x00000001;
DT_VCENTER = 0x00000004;
DT_SINGLELINE = 0x00000020;
DT_WORD_ELLIPSIS = 0x00040000;

var panel1 = window.GetProperty("panel1", 0);
var panel2 = window.GetProperty("panel2", 1);

var c_panel1 = panel1,  n_panel1;
var c_panel2 = panel2,  n_panel2;

var old_panel = panel1;

var dir_move, move = false;

var y = 50;
var c_x = 0;
var n_x = 0;
var c_ww = 0;
var n_ww = 0;
var timer;
var a_timer = window.GetProperty("a_timer", 3);
var step_c = window.GetProperty("step_c", 3);
var step_n = window.GetProperty("step_n", 2);

var y1 = y;
var h1 = window.Height / 2 - 100;
var y2 = window.Height / 2;
var h2 = window.Height / 2;

function default_panel() {
   pss.GetPanel(c_panel1).Show(true);
   pss.GetPanel(c_panel1).Move(c_x,  y1,  window.Width,  h1,  true);
    pss.GetPanel(c_panel2).Show(true);
    pss.GetPanel(c_panel2).Move(c_x,  y2,  window.Width,  h2,  true);
}

function on_paint(gr) {
   gr.FillSolidRect(0, 0, ww, wh, RGB(50,50,50));
   
   gr.GdiDrawText("1", font, RGB(250,250,250), 0, 0, ww / 3, y, DT_SINGLELINE | DT_CENTER | DT_VCENTER | DT_WORD_ELLIPSIS );
   gr.GdiDrawText("2", font, RGB(250,250,250), ww / 3, 0, ww / 3, y, DT_SINGLELINE | DT_CENTER | DT_VCENTER | DT_WORD_ELLIPSIS );   
   gr.GdiDrawText("3", font, RGB(250,250,250), ww / 3 * 2, 0, ww / 3, y, DT_SINGLELINE | DT_CENTER | DT_VCENTER | DT_WORD_ELLIPSIS );   
}

function on_size(){
    ww = window.Width;   
    wh = window.Height;
   default_panel();
}

function on_mouse_lbtn_down(x, y) {
   if (!move) {

         if (x > 0 && x < ww / 3) {
            panel1 = 2;
            panel2 = 3
         };
         
         if (x > ww / 3 && x < ww / 3 * 2) {
            panel1 = 0;
            panel2 = 1
         };
         
         //if (x >= ww / 3 * 2 && x <= ww) {panel = 2};

         dir_move = panel1 > old_panel ? "left" : "right";

         if (old_panel != panel1) {
            move_panel();
            old_panel = panel1;
         }
   }
}

function move_panel() {
   n_panel1 = panel1;
   n_panel2 = panel2;
   dim();

   if (dir_move == "right" ? n_x = 0 - n_ww : n_x = c_ww);
   
   move = true;
   pss.GetPanel(n_panel1).Show(true);
   pss.GetPanel(n_panel2).Show(true);
   timer = window.CreateTimerInterval(a_timer);
}

function on_timer(id) {
      if (dir_move == "left") {
         c_x = c_x - step_c;
         n_x = n_x - step_n;
      }
      if (dir_move == "right") {
         c_x = c_x + step_c;
         n_x = n_x + step_n;
      }
      
      pss.GetPanel(c_panel1).Move(c_x, y1, window.Width, h1, true);
      pss.GetPanel(c_panel2).Move(c_x, y2, window.Width, h2, true);
   
      if (dir_move == "right" ? n_x < 0 : n_x > 0) {
         pss.GetPanel(n_panel1).Move(n_x, y1, n_ww, h1, true);
         pss.GetPanel(n_panel2).Move(n_x, y2, n_ww, h2, true);
         
      }
      if (dir_move == "right" ? n_x >= 0 : n_x <= 0) {
         pss.GetPanel(c_panel1).Show(false);
         pss.GetPanel(c_panel2).Show(false);
         c_panel1 = n_panel1;
         c_panel2 = n_panel2;
         c_x = 0;
         n_x = 0;

         window.KillTimer(timer);
         CollectGarbage();
         move = false; window.Repaint();
         default_panel();
        }
   window.SetProperty("panel1", panel1);
   window.SetProperty("panel2", panel2);
}


function dim() {
   n_ww = ww;
   c_ww = ww;
}

var on_mouse = false;

function on_mouse_move(x, y) {
    on_mouse = true;
    window.SetCursor(32649);
    window.Repaint();
}

function on_mouse_leave() {   
    on_mouse = false;
    window.SetCursor(32512);
    window.Repaint();
}

function on_mouse_wheel(delta) {
}

kgena_ua M
Автор темы
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #36 Aum » 24.01.2016, 00:03

Наткнулся на devianart на новую неофициальную бету!foo_uie_mega_panel_splitter-ver0.2.0b. Некая группа людей якобы работает(ла) над компонентом.
Aum M
Аватара
Репутация: 20
С нами: 14 лет

Сообщение #37 kgena_ua » 24.01.2016, 10:47

Aum, в новой версии не предлагает импортировать конфигурацию, а Вы пробовали установить новую версию.
kgena_ua M
Автор темы
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #38 Aum » 24.01.2016, 20:02

Поставил, но что-то на домашнем ноуте перестали вообще открываться настройки MPS (хоть старого хоть нового), не пойму что за конфликт. Завтра на работе погоняю новую версию. Писал человек на девианарте, что не подходят сохраненные конфигурации от старого.
Aum M
Аватара
Репутация: 20
С нами: 14 лет

Сообщение #39 duzzy » 16.02.2016, 03:44

kgena_ua

Aum

Файлы конфигурации от версии 0.1.5 не подходят для foo_uie_mega_panel_splitter-ver0.2.0b., придется все вручную загонять.
Я его пробовал, мне его alwaysbeta предложил на DA... погонял его денек особой разницы не заметил, за исключением испорченного меню сплиттера и глюков при отрисовке графики(и работает он весьма странно).
Автор походу забил на этот плагин, а жаль...

Марк на Гидрогене предлагал способ вызова скриптов через JScript Panel, и у него заготовки были выложены"Panel Receiver by marc2003"(ссыль я не нашел потерял где то), интересное решение хоть это всего лишь функция on_notify_data(name, info).
duzzy
Репутация: 25
С нами: 8 лет 8 месяцев

Сообщение #40 kgena_ua » 16.02.2016, 09:04

duzzy, WSH панели нормально общаются через on_notify_data(name, info), а mega_panel_splitter попросту игнорирует эту функцию, а очень хотелось-бы.
kgena_ua M
Автор темы
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Пред.След.

Вернуться в Плагины