Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: WSH Panel Mod script discussion/help (Read 1399794 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

WSH Panel Mod script discussion/help

Reply #800
if you're using my main last.fm playcount sync script, it should be %LASTFM_LOVED_DB%

also, if in any doubt, use Library>Search to verify your queries.

WSH Panel Mod script discussion/help

Reply #801
from what i've read, this should act on all selected items, but it's only acting on the now playing item. what's wrong?

Code: [Select]
    ReplayGain: new SimpleButton(104, 0, 20, 20, "▣", function () {
        fb.RunContextCommandWithMetadb('ReplayGain/Scan selection as albums (by tags)', fb.GetSelections());
    }),

WSH Panel Mod script discussion/help

Reply #802
Another question Marco: is there a way to change the background and font color of last.fm panels?

WSH Panel Mod script discussion/help

Reply #803
my name isn't marco... 

colours are dictated by the main foobar config found under foobar preferences>display>YOUR UI OF CHOICE>colours and fonts.

if you really want to customise them separately then you need to find the on_paint function in each script and add these as the first lines in it...

Code: [Select]
function on_paint(gr) {
    g_backcolor = RGB(0,0,0);
    g_textcolor = RGB(255,255,255);
    g_textcolor_hl = RGB(255,0,0);
    .....
}

WSH Panel Mod script discussion/help

Reply #804
Sorry...i thing i saw someone refering to you as Marco? Anyway, i will make sure to refer to you as marc2003 from now on 

WSH Panel Mod script discussion/help

Reply #805
@marc:

I modified the script you provided me with (including wikipedia and rym), and i added a discogs entry. I did my best to add the entry as accuratly as possible, and i also placed discogs.png and discogs_h.png in the "C:\Documents and Settings\*\Application Data\foobar2000\marc2003\images" directory. But i am getting this error in the console:
Code: [Select]
WSH Panel Mod (Web Links by marc2003): Parsing file "C:\Documents and Settings\*\Application Data\foobar2000\marc2003\common.js"
WSH Panel Mod (Web Links by marc2003): Parsing file "C:\Documents and Settings\*\Application Data\foobar2000\marc2003\tooltip_buttons.js"
Error: WSH Panel Mod (Web Links by marc2003): Microsoft JScript compilation error:
Expected '}'
Ln: 34, Col: 9
        but6: new Button (left_margin + (bw*2),top_margin,bw,bh,(normail: images_path + "discogs.png", hover: images_path + discogs_h.png"), function () Wshell.run(discogs);), discogs)


And here is the whole script:
Code: [Select]
// ==PREPROCESSOR==
// @import "%fb2k_profile_path%marc2003\common.js"
// @import "%fb2k_profile_path%marc2003\tooltip_buttons.js"
// @name "Web Links"
// @author "marc2003"
// ==/PREPROCESSOR==

var bw = 20;
var bh = 20;
var top_margin = 0;
var left_margin = 0;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

var panel_id = window.GetProperty("panel_id", window.id);
var custom_background_file = settings_path + panel_id + "buttons_background";
var custom_background = read(custom_background_file);

on_item_focus_change();

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

function on_metadb_changed() {
    if(!g_metadb) return;
    var wikipedia = fb.TitleFormat("http://en.wikipedia.org/wiki/$replace(%artist%, ,_)").EvalWithMetadb(g_metadb);
    var rateyourmusic = fb.TitleFormat("http://rateyourmusic.com/artist/$lower($replace(%artist%, ,_))").EvalWithMetadb(g_metadb);
    var discogs = fb. Titleformat ("http://www.discogs.com/artist/$lower($replace(%artist%, ,))").EvalWithMetadb(g_metadb);
    Buttons = {
        but4: new Button(left_margin + (bw*0),top_margin,bw,bh, {normal: images_path + "wikipedia.png", hover: images_path + "wikipedia_h.png"}, function(){WshShell.run(wikipedia);}, wikipedia),
        but5: new Button(left_margin + (bw*1),top_margin,bw,bh, {normal: images_path + "rateyourmusic.png", hover: images_path + "rateyourmusic_h.png"}, function(){WshShell.run(rateyourmusic);}, rateyourmusic)
        but6: new Button (left_margin + (bw*2),top_margin,bw,bh,(normail: images_path + "discogs.png", hover: images_path + discogs_h.png"), function () Wshell.run(discogs);), discogs)
    }
        window.Repaint();
}

function on_playback_new_track() {
    on_item_focus_change();
}

function on_mouse_rbtn_up(x, y) {
    buttons_menu(x,y);
    return true;
}

function on_paint(gr) {
    buttons_background(gr);
    buttonsDraw(gr);
}

WSH Panel Mod script discussion/help

Reply #806
you're missing a comma at the end of the line that begins "but5:"

WSH Panel Mod script discussion/help

Reply #807
I added the coma at the end of the "but5:" line (right after the last bracket), but now i am getting this error:

Code: [Select]
WSH Panel Mod (Web Links by marc2003): Parsing file "C:\Documents and Settings\*\Application Data\foobar2000\marc2003\common.js"
WSH Panel Mod (Web Links by marc2003): Parsing file "C:\Documents and Settings\*\Application Data\foobar2000\marc2003\tooltip_buttons.js"
Error: WSH Panel Mod (Web Links by marc2003): Microsoft JScript compilation error:
Expected ')'
Ln: 34, Col: 73
        but6: new Button (left_margin + (bw*2),top_margin,bw,bh,(normail: images_path + "discogs.png", hover: images_path + discogs_h.png"), function () Wshell.run(discogs);), discogs)

WSH Panel Mod script discussion/help

Reply #808
you're not using squiggly brackets around the function like the other 2 entries. open your eyes. 

WSH Panel Mod script discussion/help

Reply #809
 
Fixed 

<3

WSH Panel Mod script discussion/help

Reply #810
Is there any script available that will open up "Tagging/Discogs/Write tags" from the context menu?

WSH Panel Mod script discussion/help

Reply #811
I am trying to make an icon change based on what the current playback order is. For instance, if the playback order is on default, a certain icon will be showing, but if the playback order is on shuffle, a different icon will be showing.

I want to use something similar to this:

Code: [Select]
function genPPImageSrc() {
    return (fb.IsPlaying && !fb.IsPaused) ? pause_image : play_image;
}



I just dont know what to use instead of fb.isplaying and fb.ispaused. Is there something like this for default, shuffle, or repeat?




Alternatively I have tried using  function on_playback_order_changed(new_order_index)  but I cant get the numbers for new_order_index to return unless the playback is actually changed. Normally this would be okay, except for when foobar is first loaded. It loads the previously selected playback order, therefore, I cannot just assume that the initial playback order will always be the same.


Do any of you have any ideas or tips?

WSH Panel Mod script discussion/help

Reply #812
Code: [Select]
var pbo = fb.PlaybackOrder;


will give an index between 0 and 6.

also, check out the samples from the component homepage. there are a couple of playback order related examples.

WSH Panel Mod script discussion/help

Reply #813
Does anyone have a solution to toggle the visibility of a 'dockable panel' (in my example that would be chronflow in DUI and a panel with foo_run links) with one button?
Atm I modified marcs 'weblinks buttons' with the following commands, but it needs ugly two buttons per panel so far...

Code: [Select]
		but11: new Button(left_margin,top_margin,bw,bh, {normal: images_path + "search.png", hover: images_path + "search.png"}, function(){ fb.RunMainMenuCommand("View/Dockable Panels/Activate/1 - Chronflow"); },coverflow),
but12: new Button(left_margin + bw,top_margin,bw,bh, {normal: images_path + "edit.png", hover: images_path + "edit.png"}, function () { fb.RunMainMenuCommand("View/Dockable Panels/Activate/2 - Panel Stack Splitter"); },run),
but21: new Button(left_margin,top_margin + bh,bw,bh, {normal: images_path + "cross.png", hover: images_path + "cross.png"}, function () { fb.RunMainMenuCommand("View/Dockable Panels/Collapse/Chronflow"); },coverflowoff),
but22: new Button(left_margin + bw,top_margin + bh,bw,bh, {normal: images_path + "cross.png", hover: images_path + "cross.png"}, function() { fb.RunMainMenuCommand("View/Dockable Panels/Collapse/Panel Stack Splitter"); },runoff)

WSH Panel Mod script discussion/help

Reply #814
Hey guys! Long time lurker, first time poster (let me know if I'm breaking any rules or such which I don't know of)

Anyways, on to the point. I've been using Marc2003s DUI for quite some time (it was lovely ) but now I'm trying to make something for myself, and, yes, my JScripting is horrible. Nonexistant, actually. So I tried "borrowing" from others but so far I've been unable to get anything done properly. I'm not really sure if I should ask this, but I'll go ahead! I'm trying to add a toggleable panel containing lyrics. I'm also trying to add a seekbar, play/pause/next/previous buttons. Now, the buttons I'm *fairly* certian I can manage myself. *Fairly*. But as for a toggleable panel my googling has been fruitless.

I've uploaded a picture of how I'd like it, and if someone experienced could tell me if it's possible and/or help me, that would be lovely, mmkay?


The lyrics panel should obviously extend to the menu aswell, but such minor things I can probably manage myself. I haven't yet added the panel for the bottom buttons et.c., but that I can do myself, it's the coding I can't.

Thanks for any replies whatsoever on this topic. :>

WSH Panel Mod script discussion/help

Reply #815
you should use panel stack splitter for toggling panels on/off. it has functions to create buttons, show/hide panels and adjust the window size.

http://foo2k.chottu.net/#pss

WSH Panel Mod script discussion/help

Reply #816
I'm working on seekbar. then I found out skipping repaint();
In on_timer() function , called window.RepaintRect() or window.Repaint(), but It didn't repaint in no burden program is running.

for checking, use code " bar.test = <value>; " in on_timer function, and reset variable " bar.test = 0;" in on_paint function.
next recursive on_timer function, check bar.test is empty with  " if (bar.test) echo("error"); "

within playing a song, lots of error was printed in console.

there is other window.RepaintRect(..); code in on_playback_time function. but same results popped though make it comment.

Is this a bug? or miss something?

This is whole source code
Code: [Select]
// ==PREPROCESSOR==
// @name "j-seekbar"
// @version "0.3.3b"
// @author "jk007"
// ==/PREPROCESSOR==
var pn = "js| ",
    debug = window.GetProperty("debug", 0),
    dragging = 0,
    cc=0, c0=0,
    dragging_seek = 0,
    timer, timerbar, timeout, g_now,
    fz_song=12,fz_album=12, fz_info=12, fz_time=12,
    last_x,
    ww, wh,
    bar={time:0,pos:0,interval:10},
    song={posTime:0}
;
window.GetProperty("AutoResize",0);
window.GetProperty("SkipInst", 1);
window.MinHeight = 37;
window.MaxHeight = 185;

DT_TOP = 0x00000000;
DT_LEFT = 0x00000000;
DT_CENTER = 0x00000001;
DT_RIGHT = 0x00000002;
DT_VCENTER = 0x00000004;
DT_BOTTOM = 0x00000008;
DT_WORDBREAK = 0x00000010;
DT_CALCRECT = 0x00000400;
DT_NOPREFIX = 0x00000800;
DT_END_ELLIPSIS = 0x00008000;

ColorTypeCUI = {
    text: 0,
    selection_text: 1,
    inactive_selection_text: 2,
    background: 3,
    selection_background: 4,
    inactive_selection_background: 5,
    active_item_frame: 6
};
ColorTypeDUI = {
    text: 0,
    background: 1,
    highlight: 2,
    selection: 3
};
(function get_colors(){
    if (window.InstanceType) {
        clr_txt = window.GetColorDUI(ColorTypeDUI.text);
        clr_txt_hl = window.GetColorDUI(ColorTypeDUI.highlight);
        clr_bckgrnd = window.GetColorDUI(ColorTypeDUI.background);
    }
    else {
        clr_txt = window.GetColorCUI(ColorTypeCUI.text);
        clr_txt_hl = window.GetColorCUI(ColorTypeCUI.text);
        clr_bckgrnd = window.GetColorCUI(ColorTypeCUI.background);
    }
})();
function on_size(){
    debug && echo();
    ww = window.Width;
    wh = window.Height;

    if (window.GetProperty("AutoResize") == 1)
        window.MinHeight = window.MaxHeight = Math.max(37,ww * 185/2500);
    else {
        window.MinHeight = 37;
        window.MaxHeight = 185;
    }
    fz_song = Math.floor(Math.max(12,Math.min(0.52*wh-5,0.0345*ww+2)));
    fz_time = Math.floor(Math.max(12,Math.min(0.5*wh-5,0.0338*ww+2)));
    fz_album = Math.floor(Math.max(11,Math.min(0.26*wh,0.0175*ww+4)));
    fz_info = Math.floor(Math.max(11,Math.min(0.24*wh,0.0159*ww+4)));
    compute_timeInfoWidth();
    
    if (fb.IsPlaying) {
        compute_repaintBarInterval();
        if (!fb.IsPaused) timerbar = window.CreateTimerInterval(bar.interval);
    }
}
function parseHMS(seconds)
{
    var h, m, s;
    seconds = Math.round(seconds);
    h = Math.floor(seconds/3600);
    m = Math.floor((seconds-=h*3600)/60);
    s = seconds % 60;
    return (h ? h+":" + (m<10 ? "0"+m : m) : m) + ":" + (s<10 ? "0"+s : s);
}
function on_paint(gr)
{
    var timeInfo=song.length, pos, now;
    if (fb.IsPlaying && fb.PlaybackLength)
    {
        now = g_now || fb.PlaybackTime;
        pos = Math.round(now * bar.w);
        if (now == bar.time) {
            bar.test = 0;
            bar.pos = pos;
        } else if (pos < bar.pos) pos = bar.pos;
        gr.FillGradRect(0, 0, pos, wh, 90, 0xffff1303, 0xffbe1303);
        timeInfo = (fb.IsPaused ? "Paused  ":"") + parseHMS(now) + " / " + song.length;
        if (dragging) {
            timeInfo = "< "+parseHMS(fb.PlaybackLength * dragging_seek) +" >  "+ timeInfo;
            gr.FillGradRect(0, 0, ww*dragging_seek, wh, 90, 0xa0f000f0, 0xb04000f0);
        }
        debug && gr.FillSolidRect(song.posTime,0,song.timeInfoWidth,wh,0x304000f0)
    }
    gr.SetTextRenderingHint(5);
    gr.DrawString(timeInfo, gdi.Font("Segoe UI", fz_time, 3), clr_txt, 0, 1, ww-10, wh, 0x20000000);
    gr.DrawString(song.codec, gdi.Font("Segoe UI", fz_info, 1), song.colorCodec, 0, 0, ww-10, wh-3, 0x22000000);
    gr.gdiDrawText(song.album , gdi.Font("Segoe UI", fz_album, 2),clr_txt,20,0,ww-80, wh-2, DT_CALCRECT | DT_NOPREFIX|DT_BOTTOM);
    gr.gdiDrawText(song.title, gdi.Font("Segoe UI", fz_song, 1), clr_txt, 7, 1, ww-17-song.timeInfoWidth*2, wh, DT_CALCRECT | DT_NOPREFIX);
}
function on_timer(id)
{
    var now = fb.PlaybackTime;
    var gap = now - bar.time;
    0&&debug && echo("\t"+now.toFixed(5));
    
    if (gap > 0){
        if (bar.test) echo("Error Didn't repaint @ "+ bar.time);
        bar.test = g_now = bar.time = now;
        gap = Math.round(now*bar.w) - bar.pos;
        window.RepaintRect(bar.pos, 0, gap, wh);
    }
}
function on_playback_time(time)
{
    g_now = time;
    window.RepaintRect(song.posTime,0,song.timeInfoWidth,wh);
}
function on_playback_new_track()
{
    debug && echo();
    if (window.GetProperty("SkipInst") == 1 && fb.TitleFormat("%title%").Eval().match(/\(inst.|\(instrument|\(MR|instrumental\)/i))
        fb.Next();
    get_info();
    //if (fb.isPaused) return;
    compute_repaintBarInterval();
    start_timer();
}
function compute_repaintBarInterval()
{
    debug && echo(" +  "+/.+\)/.exec(arguments.callee)+" ~~ "+/.+\)/.exec(arguments.callee.caller));
    if (!ww || !fb.PlaybackLength) return false;
    g_now = bar.time = bar.pos = 0;
    bar.interval = Math.max(10,Math.round(fb.PlaybackLength*1000/ww));
    bar.w = ww / fb.PlaybackLength;
    debug && echo("bar.interval="+bar.interval+",  ww="+ww+",  PlaybackLength="+fb.PlaybackLength);
    debug && echo("bar.w="+bar.w+"\t"+(bar.w*bar.interval/1000));
}
function start_timer()
{
    window.Repaint();
    debug && echo(" +  "+/.+\)/.exec(arguments.callee)+" ~~ "+/.+\)/.exec(arguments.callee.caller));
    timerbar = window.CreateTimerInterval(bar.interval);
}
function get_info()
{
    song.title =  fb.TitleFormat("%artist% - %title%").Eval(true);
    song.length = fb.TitleFormat("%length%").Eval(true);
    song.album = fb.TitleFormat("%album%[  '(' %date% ')'] [Disk %discnumber%]").Eval(true);
    song.codec = fb.TitleFormat("$replace(%codec%,Monkey$char(39)s Audio,APE,PCM,WAV)[  %__codec_profile%]  %__bitrate%kbps$ifequal(16,%__bitspersample%,,[  %__bitspersample%bit])$ifequal(44100,%__samplerate%,,  %__samplerate%Hz)$if($strcmp(stereo,%channels%),,  %channels%)").Eval(true);
    song.colorCodec = (fb.TitleFormat("%__encoding%").Eval() ==  "lossy") ? 0xffff0000 : 0xff0000ff;
    compute_timeInfoWidth();
}
function compute_timeInfoWidth()
{
       // Using a temp IGdiGraphics interface
    var temp_bmp = gdi.CreateImage(1, 1);
    // Don't forget to call temp_bmp.ReleaseGraphics(temp_gr)!
    var temp_gr = temp_bmp.GetGraphics();
    song.timeInfoWidth = temp_gr.CalcTextWidth('/ '+song.length, gdi.Font("Segoe UI", fz_time, 3));
    song.posTime = ww-10-song.timeInfoWidth*2;//*2.46;
    // Free the resources
    temp_bmp.ReleaseGraphics(temp_gr);
    temp_bmp.Dispose();
}
function on_item_focus_change()
{
    debug && echo();
    if (fb.IsPlaying) return true;
    get_info();
    window.Repaint();
}
function on_playback_pause(state)
{
    debug && echo();
    if (state) {
        timer && window.KillTimer(timer);
        timeout && window.KillTimer(timeout);
        timerbar && window.killTimer(timerbar);
        CollectGarbage();
        window.Repaint();
    }
    else
        start_timer();
}
function on_playback_stop()
{
    debug && echo();
    timer && window.KillTimer(timer);
    timeout && window.KillTimer(timeout);
    timerbar && window.killTimer(timerbar);
    window.Repaint();
    CollectGarbage();
}
function on_playback_seek(time)
{
    window.Repaint();
}
function on_mouse_lbtn_down(x,y)
{
    if (fb.IsPlaying && fb.PlaybackLength > 0) {
        dragging = 1;
        dragging_seek = x < 0 ? 0 : x > ww ? 1 : x / ww;
        last_x = x;
        window.Repaint();
    }
}
function on_mouse_lbtn_up(x,y)
{
    if (dragging) {
        g_now = bar.time = bar.pos = dragging = 0;
        dragging_seek = x < 0 ? 0 : x > ww ? 1 : x / ww;
        fb.PlaybackTime = fb.PlaybackLength * dragging_seek;
    }
}
function on_mouse_move(x,y)
{
    if (dragging && last_x != x) {
        last_x = x;
        dragging_seek = x < 0 ? 0 : x > ww ? 1 : x / ww;
        if (y < 0 || wh < y) dragging = 0;
        window.Repaint();
    }
}
function on_colors_changed()
{
    get_colors();
    window.Repaint();
}
function echo(txt)
{
    txt = txt || " +  "+/.+\)/.exec(arguments.callee.caller);
    fb.trace(pn+txt);
}
function on_mouse_rbtn_up(x, y)
{
    var MF_SEPARATOR = 0x00000800;
    var MF_STRING = 0x00000000;
    var _menu = window.CreatePopupMenu();
    var idx;

    _menu.AppendMenuItem(MF_STRING, 14, "Debug mode");
    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
    _menu.AppendMenuItem(MF_STRING, 1, "Auto Resize");
    _menu.AppendMenuItem(MF_STRING, 4, "Skip Instrumantal");
    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
    _menu.AppendMenuItem(MF_STRING, 2, "Properties");
    _menu.AppendMenuItem(MF_STRING, 3, "Configure...");
    _menu.CheckMenuItem(1, window.GetProperty("AutoResize")== 0 ? 0x0 : 0x8);
    _menu.CheckMenuItem(4, window.GetProperty("SkipInst")== 0 ? 0x0 : 0x8);
    _menu.CheckMenuItem(14, window.GetProperty("debug")== 0 ? 0 : 1);
    
    idx = _menu.TrackPopupMenu(x, y);
    
    switch (idx) {
    case 1:
        window.SetProperty("AutoResize", !window.GetProperty("AutoResize"));
        on_size();
        break;
    case 2:
        window.ShowProperties();
        break;
    case 3:
        window.ShowConfigure();
        break;
    case 4:
        window.SetProperty("SkipInst", !window.GetProperty("SkipInst"));
        break;
    case 14:
        window.SetProperty("debug", !window.GetProperty("debug"));
        debug = window.Getproperty('debug');
        window.RepaintRect(song.posTime,0,song.timeInfoWidth,wh);
        break;
    }
    _menu.Dispose();
    return true;
}
(function (){
    if (fb.isplaying)
        on_playback_new_track();
    else
        on_item_focus_change();
})();

WSH Panel Mod script discussion/help

Reply #817
Hi, i am new to jscript and i'm still reading script examples found on this forum.

I want write a string with gradient effect, but i'm not able to find nothing like this, can someone suggest me how to do it or in alternative where i can look ?

Perhaps something similar at "glow text sample" script ?

I need some big help for start with this panel.

 

WSH Panel Mod script discussion/help

Reply #818
Hey there, all!

I'm having an issue with Br3tt's "WSH Tree Explorer", version 1.7.

note: I haven't changed anything in its code.

Problem: it doesn't display all folders on my D:\ drive. As it can be seen in the image below, the folders "Music" and "Video" don't show up in the tree. There' sno problem if "Video" doesn't show, but I'd kinda need "Music". At first I thought that it simply doesn't show folders containing music files with paths already added to the Library, but I added the "Spoken" folder (which contains mp3 podcasts and audiobooks) to the Library, but that one shows just fine. Then I added only a subfolder of "Spoken", but it still works fine. Also my C:\ drive shows up correctly.

Does anyone have an idea?

Explanation image:


A few notes:
- running on Win7 32bit SP1 fully updated
- using a foobar2000 1.1.5 portable install
- path to scripts is C:\foobar2000\WSH samples
- the link to Br3tt's script (posted a few pages back): deviantART page

WSH Panel Mod script discussion/help

Reply #819
Another question, for marc2003: what would be the line I should put in your "now playing" script to display a placeholder image for tracks w/out artwork (having the placeholder png of course).

WSH Panel Mod script discussion/help

Reply #820
file>preferences>display>front cover>stub image path.

edit: removed "artist" from description - it doesn't use the foobar artreader 

WSH Panel Mod script discussion/help

Reply #821
Great, thanks a bunch!

WSH Panel Mod script discussion/help

Reply #822
Hey there, all!

I'm having an issue with Br3tt's "WSH Tree Explorer", version 1.7.
...


my script doesn't show all the "kind" of folder, for example, system folder are not shown. Maybe (surely in fact!) these 2 folders have an attribut "kind" value not allowed by my script.

check function FillTreeLevel (near line #530 ...), you find this test : if(item_fld.Attributes==16 || item_fld.Attributes==17 || item_fld.Attributes==2064)

only these 3 value are allowed in my script, you can add a line above this one to display to the console the value of item_fld.Attributes for each folder browsed, to check the value of this one for Music and Videos folders, like this:
fb.trace("fld name = "+item_fld.Name+" hase an attrb value = "+item_fld.Attributes);

Once script launched, open the console (menu View->Console) and check the values of the trace method, and then modify the test in the script to add more values than 16, 17 and 2064 in order to fix the issue for you. Tell me too what's the missing value, i'm curious. Thanx.

HTH

WSH Panel Mod script discussion/help

Reply #823
Marc another question.. what parameteres should I give to Gdi.Drawtext so it would wrap text if at all possible.

@Falstaff: I'm going to read this for a while... kudos!

Edit: nevermind; got my code-monkey room-mate to help!

WSH Panel Mod script discussion/help

Reply #824
replace DT_END_ELLIPSIS with DT_WORDBREAK.