Модификация темы DarkOne v4

Список разделов Аудиоплеер foobar2000 Сборки Релизы сборок

Описание: Проверенные финальные версии сборок.

Сообщение #441 AHAPXICT » 08.01.2017, 23:13

Nikich 777, какое меню?

Добавлено спустя 1 минуту 20 секунд:
Если в сети, то пишите сразу и подробнее, не надолго заглянул сюда, дел полно
AHAPXICT M
Автор темы, Мастер
Аватара
Возраст: 46
Откуда: Киев
Репутация: 76
С нами: 3 года 2 месяца

Сообщение #442 Nikich 777 » 09.01.2017, 02:06

Извините, что не разъяснил толково.. Вот это меню (которое на кнопке "menu")
Снимок.JPG
Nikich 777
Новичок
Репутация: 2
С нами: 1 год 10 месяцев

Сообщение #443 simmons » 09.01.2017, 02:27

// Maxim Terpilovsky's script
// http://terpilovsky.ru
// Menu Panel 1.0

Код: Выделить всё
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));
}

function menu (x, y, name) {
   var menuman = fb.CreateMainMenuManager();
   var menu = window.CreatePopupMenu();
   var ret;

   menuman.Init( name );
   menuman.BuildMenu(menu, 1, 128);
   
   ret = menu.TrackPopupMenu(x, y);
   
//   fb.trace(ret);
   
   if (ret > 0)
   {
      menuman.ExecuteByID(ret - 1);
   }
   
   menuman.Dispose();
   menu.Dispose();
}


// Config variables
if ( utils.CheckFont( "Segoe UI" ) ) {
   var g_font = gdi.Font("Segoe UI", 12);
} else {
   var g_font = gdi.Font("Verdana", 10, 1);
}

var g_move = null;
var Active_array = [];
var g_button_down = null;
var btn_dim_ready;
var btn;



buttons = {
   file: new Button(0,0,0,0, "FILE", menu ),
   edit: new Button(0,0,0,0, "EDIT", menu ),
   view: new Button(0,0,0,0, "VIEW", menu ),
   playback: new Button(0,0,0,0, "PLAYBACK", menu ),
   library: new Button(0,0,0,0, "LIBRARY", menu ),
   help: new Button(0,0,0,0, "HELP", menu )
   
}



var MyButtons = new Array(
   buttons.file,
   buttons.edit,
   buttons.view,
   buttons.playback,
   buttons.library,
   buttons.help
);



var buttons_num = MyButtons.length;


function Button(x, y, w, h, name, func) {
   this.name = name;
   this.func = func;

   this.traceMouse = function (x, y) {
      var b = (this.left <= x) && (x <= this.right) && (this.top <= y) && (y <= this.bottom);
      return b;
   }

   this.onClick = function ( x, y, name ) {
      this.func && this.func( x, y, this.name );
   }
}



for (var i in MyButtons ) {
   Active_array.push(MyButtons[i]);
}



function on_paint(gr){
   gr.SetTextRenderingHint(5);
   gr.SetSmoothingMode(2);
   var ww = window.Width;
   var wh = window.Height;
   var text_offset = 5, text_w = 10;

   if ( !btn_dim_ready ) {
      for ( var n=0; n<Active_array.length; n++ ) {
         text_offset += Math.min( n, 1) * text_w;
         text_w = gr.CalcTextWidth( Active_array[n].name, g_font) + 10;

         Active_array[n].x = text_offset;
         Active_array[n].y = 0;
         Active_array[n].w = text_w;
         Active_array[n].h = wh;
            fb.trace( "button #" + n + " x=" + Active_array[n].x + " y=" + Active_array[n].y + " w=" + Active_array[n].w + " h=" +Active_array[n].h);
         Active_array[n].left = text_offset;
         Active_array[n].top = Active_array[n].y;
         Active_array[n].right = text_offset + text_w;
         Active_array[n].bottom = Active_array[n].y + Active_array[n].h;
      }
      btn_dim_ready = 1;
   }

   

   for ( var n=0; n<Active_array.length; n++ ) {
//         if ( n == t_color ) var t_color = RGB(0,0,0);
//         else var t_color = RGB(30,50,90);

//         text_offset += Math.min( n, 1) * text_w;
//         text_w = gr.CalcTextWidth( Active_array[n].name, g_font) + 10;

//         fb.trace( 'text_w=' + text_w + '\ntext_offset=' + text_offset);

         gr.GdiDrawText(Active_array[n].name, g_font, RGB(0,0,0),Active_array[n].x, Active_array[n].y, Active_array[n].w, Active_array[n].h, 0x00000001 | 0x00000004 | 0x00000020 | 0x00000400);
//         gr.GdiDrawText(Active_array[n].name, g_font, t_color, text_offset, 0, text_w, wh, 0x00000001 | 0x00000004 | 0x00000020 | 0x00000400);
   }
}

function on_mouse_lbtn_down(x, y, mask) {
   g_move = null;
   g_button_down = 1;
   window.Repaint();
}

function on_mouse_lbtn_up(x,y){
//   g_button_down = null;
//   window.Repaint();
//   var i = Math.floor( x / (window.Width/Active_array.length) );
//   Active_array[i].onClick(x, y);

   g_button_down = null;
   if (hover_button) {
      hover_button.onClick(x, y);
   }
   window.Repaint();

}

function trackbuttons(x,y){
//   var btn = null;

//   !btn

   for ( i in Active_array ) {
      if ( Active_array[i].traceMouse(x, y) && btn != Active_array[i] ) {
         btn = Active_array[i];
//         fb.trace('repaint');
         window.Repaint();
      }
   }
   
   return btn;
}

var hover_button = null;

function on_mouse_move(x, y) {
    window.SetCursor(32649);
   g_move = 1;
   hover_button = trackbuttons(x, y);
}

function on_mouse_leave() {
   g_move = null;
   hover_button = null;
   g_button_down = null;
   btn = null;
   window.SetCursor( 32512 );
   window.Repaint();
}
simmons M
Мастер
Аватара
Возраст: 44
Репутация: 71
С нами: 7 лет 10 месяцев

Сообщение #444 Nikich 777 » 10.01.2017, 00:41

simmons писал(а):Maxim Terpilovsky's script
Спасибо огромное!!!
Этот скрипт не совсем как в данной сборке (в сборке он открывается вертикально при нажатии кнопки меню, и пропадает при нажатии в другом месте, а этот зато дает возможность встроить его в плеер и сделать нужного цвета фон и шрифт). Встроил, все классно!
А не подскажите что изменить, чтоб при нажатии кнопки (например "Fale") выпадающее меню выпадало не в месте нажатия мыши, а чуть ниже курсора? А то при нажатии перекрывает само меню
Снимок.JPG
Nikich 777
Новичок
Репутация: 2
С нами: 1 год 10 месяцев

Пред.

Вернуться в Релизы сборок

Кто сейчас на форуме (по активности за 10 минут)

Сейчас этот раздел просматривают: 1 гость