[Ext] PrefBar - The all in one button container
- dickvl
- Posts: 54163
- Joined: July 18th, 2005, 3:25 am
Re: [Ext] PrefBar - The all in one button container
I created a new Checkbox button and exported the button code to a file (document_colors.but).
You can save the above posted code to a .btn file and import this file in PrefBar.
You can save the above posted code to a .btn file and import this file in PrefBar.
-
- Posts: 20
- Joined: April 15th, 2009, 8:07 pm
Re: [Ext] PrefBar - The all in one button container
I didn't know about importing and exporting. There is always something new to learn. Anyway, I had already created a similar button. Now what I want is to combine this and the systemcolors in one.
-
- Posts: 20
- Joined: April 15th, 2009, 8:07 pm
Re: [Ext] PrefBar - The all in one button container
OK. I found in a backup the old button and exported it. This is it:
{
"prefbar:info": {
"formatversion": 3
},
"prefbar:menu:enabled": {
"items": [
"prefbar:button:togglecolors"
]
},
"prefbar:button:togglecolors": {
"type": "extcheck",
"label": "colors ",
"getfunction": "value = goPrefBar.GetPref(\"browser.display.use_document_colors\");",
"browserbtnupdatefor": "false",
"setfunction": "goPrefBar.SetPref(\"browser.display.use_system_colors\", !value);\ngoPrefBar.SetPref(\"browser.display.use_document_colors\", value);"
}
}
How can I modify the first "getfunction" to apply to the new key? The issue is the line:
"browserbtnupdatefor": "false",
{
"prefbar:info": {
"formatversion": 3
},
"prefbar:menu:enabled": {
"items": [
"prefbar:button:togglecolors"
]
},
"prefbar:button:togglecolors": {
"type": "extcheck",
"label": "colors ",
"getfunction": "value = goPrefBar.GetPref(\"browser.display.use_document_colors\");",
"browserbtnupdatefor": "false",
"setfunction": "goPrefBar.SetPref(\"browser.display.use_system_colors\", !value);\ngoPrefBar.SetPref(\"browser.display.use_document_colors\", value);"
}
}
How can I modify the first "getfunction" to apply to the new key? The issue is the line:
"browserbtnupdatefor": "false",
-
- Posts: 5
- Joined: April 11th, 2015, 12:06 pm
Re: [Ext] PrefBar - The all in one button container
To update the Color check box to use the new browser.display.use_document_colors integer behavior, I built a new Menulist rom the Prefbar Customize window. When I exported the button, it looks like this:
{
"prefbar:info": {
"formatversion": 3
},
"prefbar:menu:enabled": {
"items": [
"prefbar:button:color3"
]
},
"prefbar:button:color3": {
"type": "menulist",
"label": "Color3",
"prefstring": "browser.display.document_color_use",
"items": [
[
"Always",
"2"
],
[
"Only with HCT",
"0"
],
[
"Never",
"1"
]
]
}
}
Always means Always override the document colors and use my color preferences. Never should be obvious. The Only with HCT is Only override the document colors for pages with high contrast themes. I have vision issues that are improved with a lower contrast theme. I hope this will help others if they want to cut and paste the above into a file. Make sure to add quotes ("filename.btn") to save it with the btn extension. Then select Customize and Import.
{
"prefbar:info": {
"formatversion": 3
},
"prefbar:menu:enabled": {
"items": [
"prefbar:button:color3"
]
},
"prefbar:button:color3": {
"type": "menulist",
"label": "Color3",
"prefstring": "browser.display.document_color_use",
"items": [
[
"Always",
"2"
],
[
"Only with HCT",
"0"
],
[
"Never",
"1"
]
]
}
}
Always means Always override the document colors and use my color preferences. Never should be obvious. The Only with HCT is Only override the document colors for pages with high contrast themes. I have vision issues that are improved with a lower contrast theme. I hope this will help others if they want to cut and paste the above into a file. Make sure to add quotes ("filename.btn") to save it with the btn extension. Then select Customize and Import.
-
- Posts: 5
- Joined: April 11th, 2015, 12:06 pm
Re: [Ext] PrefBar - The all in one button container
After trying my initial solution for a bit, I've modified my PrefBar menulist for browser.display.use_document_colors a bit. I replaced "Always" with "My colors" and "Never" with "Doc. colors". I am considering deleting the HCT line since it's redundant for me. (On all of the sites I look at, the behavior of "Never" and "Only with HCT" are the same.)
-
- Posts: 20
- Joined: April 15th, 2009, 8:07 pm
Re: [Ext] PrefBar - The all in one button container
HCT for you is similar to your system colors -- and I can not imagine a case in which it wouldn't be, I cannot understand the reasoning of those who introduced this option.
Anyway, personally I prefer a checkbox since it takes less real estate and it takes only 1 click.
And I would like to combine changing document colors with changing system colors since:
1) For System Colors to have effect, the Document Colors should be off
2) When Document colors is on, if foreground color is not specified in the webpage, FF looks first to System colors if it is on, and if not to the FF colors. Since some webpages specify only background (white), and my System foreground is also white, in these cases I want it to look at the FF colors, where the foreground is specified as black, so in these cases the System Colors should be off.
So I need to change both, and preferably with 1 click instead of with 2, as I now do, by clicking the 2 checkboxes (that also take more space).
Anyway, personally I prefer a checkbox since it takes less real estate and it takes only 1 click.
And I would like to combine changing document colors with changing system colors since:
1) For System Colors to have effect, the Document Colors should be off
2) When Document colors is on, if foreground color is not specified in the webpage, FF looks first to System colors if it is on, and if not to the FF colors. Since some webpages specify only background (white), and my System foreground is also white, in these cases I want it to look at the FF colors, where the foreground is specified as black, so in these cases the System Colors should be off.
So I need to change both, and preferably with 1 click instead of with 2, as I now do, by clicking the 2 checkboxes (that also take more space).
-
- Posts: 5
- Joined: April 11th, 2015, 12:06 pm
Re: [Ext] PrefBar - The all in one button container
For the single checkbox option, you might try a new button or extcheck box and an "on-click" javascript function inside that. Then get the values of document.display.document_color_use, document.display.use_document_colors and document.display.use_system_color together and change them all at once. However, I have no idea how long it would take to build the appropriate script. Today was the first time I've tried making my own item for PrefBar. I may play around with it tomorrow.emf10679 wrote:HCT for you is similar to your system colors -- and I can not imagine a case in which it wouldn't be, I cannot understand the reasoning of those who introduced this option.
Anyway, personally I prefer a checkbox since it takes less real estate and it takes only 1 click.
And I would like to combine changing document colors with changing system colors since:
1) For System Colors to have effect, the Document Colors should be off
2) When Document colors is on, if foreground color is not specified in the webpage, FF looks first to System colors if it is on, and if not to the FF colors. Since some webpages specify only background (white), and my System foreground is also white, in these cases I want it to look at the FF colors, where the foreground is specified as black, so in these cases the System Colors should be off.
So I need to change both, and preferably with 1 click instead of with 2, as I now do, by clicking the 2 checkboxes (that also take more space).
For the white on white, I just hit <Ctrl>+A and get readable text. For space, I've stacked some of my prefBar buttons by adding a Submenu and dropping several into that folder. That still has the two click problem for you.
- dickvl
- Posts: 54163
- Joined: July 18th, 2005, 3:25 am
Re: [Ext] PrefBar - The all in one button container
Something like this should work:
Set-function:
value = (goPrefBar.GetPref("browser.display.use_document_colors") != 1) ? 1 : 2; // Override: 1:never; 2:always
goPrefBar.SetPref("browser.display.use_document_colors", value);
goPrefBar.SetPref("browser.display.use_system_colors", (value == 2));
Get-function:
value = (goPrefBar.GetPref("browser.display.use_document_colors") == 1);
Set-function:
value = (goPrefBar.GetPref("browser.display.use_document_colors") != 1) ? 1 : 2; // Override: 1:never; 2:always
goPrefBar.SetPref("browser.display.use_document_colors", value);
goPrefBar.SetPref("browser.display.use_system_colors", (value == 2));
Get-function:
value = (goPrefBar.GetPref("browser.display.use_document_colors") == 1);
Last edited by dickvl on May 2nd, 2015, 6:44 pm, edited 1 time in total.
-
- Posts: 20
- Joined: April 15th, 2009, 8:07 pm
Re: [Ext] PrefBar - The all in one button container
> goPrefBar.SetPref("browser.display.use_system_colors", (value == 2));
Is this correct? Isn't it boolean?
Is this correct? Isn't it boolean?
- dickvl
- Posts: 54163
- Joined: July 18th, 2005, 3:25 am
Re: [Ext] PrefBar - The all in one button container
The (value == 2) expression is evaluated as a Boolean: true if value is 2 (always) and false otherwise.
You can keep the about:config page open in a tab to see the prefs change when you click the button.
You can keep the about:config page open in a tab to see the prefs change when you click the button.
-
- Posts: 5
- Joined: April 11th, 2015, 12:06 pm
Re: [Ext] PrefBar - The all in one button container
I found that I needed these two lines in the Set function for the extcheck button. Otherwise it didn't work properly due to the new Firefox 37 settings. I found that rest of dickvl's code works nicely.
value1 = (goPrefBar.GetPref("browser.display.document_color_use") != 1) ? 1 : 2; // 1:never use my colors; 2:always use my colors
goPrefBar.SetPref("browser.display.document_color_use", value1);
Thank you. It's much better than my menulist solution.
value1 = (goPrefBar.GetPref("browser.display.document_color_use") != 1) ? 1 : 2; // 1:never use my colors; 2:always use my colors
goPrefBar.SetPref("browser.display.document_color_use", value1);
Thank you. It's much better than my menulist solution.
-
- Posts: 20
- Joined: April 15th, 2009, 8:07 pm
Re: [Ext] PrefBar - The all in one button container
I've added in the Set-function a line to change the system colors simultaneously:
value1 = (goPrefBar.GetPref("browser.display.document_color_use") != 1) ? 1 : 2;
goPrefBar.SetPref("browser.display.document_color_use", value1);
goPrefBar.SetPref("browser.display.use_system_colors", value);
while in the Get-function I have:
value = goPrefBar.GetPref("browser.display.document_color_use");
Now when it's checked it uses the document colors and secondarily the FF colors (so I won't encounter the issue of white text on white background). When it's unchecked, it uses the system colors. I've also added a hot key. Though I am not sure I understand how the Get-function value is used, it seems to be working OK.
value1 = (goPrefBar.GetPref("browser.display.document_color_use") != 1) ? 1 : 2;
goPrefBar.SetPref("browser.display.document_color_use", value1);
goPrefBar.SetPref("browser.display.use_system_colors", value);
while in the Get-function I have:
value = goPrefBar.GetPref("browser.display.document_color_use");
Now when it's checked it uses the document colors and secondarily the FF colors (so I won't encounter the issue of white text on white background). When it's unchecked, it uses the system colors. I've also added a hot key. Though I am not sure I understand how the Get-function value is used, it seems to be working OK.
-
- Posts: 20
- Joined: April 15th, 2009, 8:07 pm
Re: [Ext] PrefBar - The all in one button container
Oops! Something happened and at one point I started getting FF colors instead of system colors. I make some changes and it works again, but I am not so confident, and if someone understands what is going on, please post the correct functions.
-
- Posts: 5
- Joined: April 11th, 2015, 12:06 pm
Re: [Ext] PrefBar - The all in one button container
For the system colors, you don't get the current value in the Set Function. The value in the Get Function isn't global. I matched the function of the original color checkbox; when the box is checked, I see the document colors. My solution:emf10679 wrote:Oops! Something happened and at one point I started getting FF colors instead of system colors. I make some changes and it works again, but I am not so confident, and if someone understands what is going on, please post the correct functions.
Get Function:
value = (goPrefBar.GetPref("browser.display.document_color_use") != 2);
Set function:
value1 = (goPrefBar.GetPref("browser.display.document_color_use") != 2) ? 2 : 1;
// 1:never use my colors; 2:always use my colors
goPrefBar.SetPref("browser.display.document_color_use", value1);
value2 = (goPrefBar.GetPref("browser.display.use_system_colors") != true) ? true : false;
// true: system colors; false: document colors (I chose to keep the Boolean. I saw about:config change to an integer and the browser seemed to get confused.)
goPrefBar.SetPref("browser.display.use_system_colors", value2);
Since I only change the background colors in Firefox and not globally, I've actually commented out the system color lines and instead have:
value = (goPrefBar.GetPref("browser.display.use_document_colors") != false) ? false : true; // true: document colors; false: my colors
goPrefBar.SetPref("browser.display.use_document_colors", value);
and get my desired behavior.
-
- Posts: 20
- Joined: April 15th, 2009, 8:07 pm
Re: [Ext] PrefBar - The all in one button container
Thanks. Sometimes I panic when something in a code does not work and make things worse. Waiting a while to think it over with a clear mind helps.