Thread overview
Using CSS Data from Within My Code
Sep 12, 2019
Ron Tarrant
Sep 12, 2019
Max Samukha
Sep 12, 2019
Andrea Fontana
Sep 12, 2019
Ron Tarrant
Sep 12, 2019
Ron Tarrant
Sep 12, 2019
Mike Parker
Sep 12, 2019
Ron Tarrant
Sep 12, 2019
Ali Çehreli
Sep 13, 2019
Ron Tarrant
September 12, 2019
I found this presented as a solution in a 2016 post:

On Wednesday, 15 June 2016 at 22:05:37 UTC, captaindet wrote:

> enum myCSS = q{
>     GtkNotebook {
>         background-color: #e9e9e9;
>     }
>     GtkNotebook tab {
>         background-color: #d6d6d6;
>     }
> };

But when I try to use it, I get the following errors:

Warning: C preprocessor directive #e9e9e9 is not supported
Warning: C preprocessor directive #d6d6d6 is not supported

I thought it was odd having 'q' in front of the opening curly brace... is this a typo? Shorthand for "string quote"? Something like that?

Or do I need to escape these somehow?


September 12, 2019
On Thursday, 12 September 2019 at 09:54:35 UTC, Ron Tarrant wrote:
> I found this presented as a solution in a 2016 post:
>
> On Wednesday, 15 June 2016 at 22:05:37 UTC, captaindet wrote:
>
>> enum myCSS = q{
>>     GtkNotebook {
>>         background-color: #e9e9e9;
>>     }
>>     GtkNotebook tab {
>>         background-color: #d6d6d6;
>>     }
>> };
>
> But when I try to use it, I get the following errors:
>
> Warning: C preprocessor directive #e9e9e9 is not supported
> Warning: C preprocessor directive #d6d6d6 is not supported
>
> I thought it was odd having 'q' in front of the opening curly brace... is this a typo? Shorthand for "string quote"? Something like that?
>
> Or do I need to escape these somehow?

q{} is a string that must only contain valid D tokens. D lexer does not like C directives. https://dlang.org/spec/lex.html#token_strings
September 12, 2019
On Thursday, 12 September 2019 at 09:54:35 UTC, Ron Tarrant wrote:
> I found this presented as a solution in a 2016 post:
>
> On Wednesday, 15 June 2016 at 22:05:37 UTC, captaindet wrote:
>
>> enum myCSS = q{
>>     GtkNotebook {
>>         background-color: #e9e9e9;
>>     }
>>     GtkNotebook tab {
>>         background-color: #d6d6d6;
>>     }
>> };
>
> But when I try to use it, I get the following errors:
>
> Warning: C preprocessor directive #e9e9e9 is not supported
> Warning: C preprocessor directive #d6d6d6 is not supported
>
> I thought it was odd having 'q' in front of the opening curly brace... is this a typo? Shorthand for "string quote"? Something like that?
>
> Or do I need to escape these somehow?

They are named "token string" and contained code must be a valid d code. See https://dlang.org/spec/lex.html#token_strings

September 12, 2019
On Thursday, 12 September 2019 at 10:09:06 UTC, Andrea Fontana wrote:
> On Thursday, 12 September 2019 at 09:54:35 UTC, Ron Tarrant wrote:
>> I found this presented as a solution in a 2016 post:
>>
>> On Wednesday, 15 June 2016 at 22:05:37 UTC, captaindet wrote:
>>
>>> enum myCSS = q{
>>>     GtkNotebook {
>>>         background-color: #e9e9e9;
>>>     }
>>>     GtkNotebook tab {
>>>         background-color: #d6d6d6;
>>>     }
>>> };
>>
>> But when I try to use it, I get the following errors:
>>
>> Warning: C preprocessor directive #e9e9e9 is not supported
>> Warning: C preprocessor directive #d6d6d6 is not supported
>>
>> I thought it was odd having 'q' in front of the opening curly brace... is this a typo? Shorthand for "string quote"? Something like that?
>>
>> Or do I need to escape these somehow?
>
> They are named "token string" and contained code must be a valid d code. See https://dlang.org/spec/lex.html#token_strings

Thanks, Andrea and Max.

Turns out there's a simpler way to inject CSS into D code. In case anyone else comes looking, I found that instead of an enum, a string will do. Here's the solution I came up with to make visible tabs in a Notebook:

class CSS // GTK4 compliant
{
	CssProvider provider;
	string cssPath = "./css/visible_tabs.css";

	string myCSS = "tab { background-color: #f2f2f2; }";

	this(StyleContext styleContext)
	{
		provider = new CssProvider();
		provider.loadFromData(myCSS);
		styleContext.addProvider(provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
		
	} // this()	
	
} // class CSS

And in the class that will use it, this line does it:

	css = new CSS(getStyleContext());


September 12, 2019
On Thursday, 12 September 2019 at 11:35:04 UTC, Ron Tarrant wrote:
> On Thursday, 12 September 2019 at 10:09:06 UTC, Andrea Fontana wrote:
>> On Thursday, 12 September 2019 at 09:54:35 UTC, Ron Tarrant wrote:
>>> I found this presented as a solution in a 2016 post:
>>>
>>> On Wednesday, 15 June 2016 at 22:05:37 UTC, captaindet wrote:
>>>
>>>> enum myCSS = q{
>>>>     GtkNotebook {
>>>>         background-color: #e9e9e9;
>>>>     }
>>>>     GtkNotebook tab {
>>>>         background-color: #d6d6d6;
>>>>     }
>>>> };
>>>
>>> But when I try to use it, I get the following errors:
>>>
>>> Warning: C preprocessor directive #e9e9e9 is not supported
>>> Warning: C preprocessor directive #d6d6d6 is not supported
>>>
>>> I thought it was odd having 'q' in front of the opening curly brace... is this a typo? Shorthand for "string quote"? Something like that?
>>>
>>> Or do I need to escape these somehow?
>>
>> They are named "token string" and contained code must be a valid d code. See https://dlang.org/spec/lex.html#token_strings
>
> Thanks, Andrea and Max.
>
> Turns out there's a simpler way to inject CSS into D code. In case anyone else comes looking, I found that instead of an enum, a string will do. Here's the solution I came up with to make visible tabs in a Notebook:
>

That should have been:

class CSS // GTK4 compliant
{
	CssProvider provider;
	string myCSS = "tab { background-color: #f2f2f2; }";

	this(StyleContext styleContext)
	{
		provider = new CssProvider();
		provider.loadFromData(myCSS);
		styleContext.addProvider(provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
		
	} // this()	
	
} // class CSS

The CSS path/file name isn't needed.

September 12, 2019
On Thursday, 12 September 2019 at 11:40:33 UTC, Ron Tarrant wrote:

> 	string myCSS = "tab { background-color: #f2f2f2; }";
>
>

enum will work just as well here and without the need for the variable:

        enum myCSS = "tab { background-color: #f2f2f2; }";

The original error was because q strings have to be valid D, not because of the enum.
September 12, 2019
On Thursday, 12 September 2019 at 13:09:16 UTC, Mike Parker wrote:
> On Thursday, 12 September 2019 at 11:40:33 UTC, Ron Tarrant wrote:
>
>> 	string myCSS = "tab { background-color: #f2f2f2; }";
>>
>>
>
> enum will work just as well here and without the need for the variable:
>
>         enum myCSS = "tab { background-color: #f2f2f2; }";
>
> The original error was because q strings have to be valid D, not because of the enum.

Ah! Thanks for clearing that up, Mike. My D knowledge is still rather sparse, so this fills in another blank for me.
September 12, 2019
On 09/12/2019 02:54 AM, Ron Tarrant wrote:

> I thought it was odd having 'q' in front of the opening curly brace...

I think my index can be useful in such searches. Both q"" and q{} are there:

  http://ddili.org/ders/d.en/ix.html

Ali

September 13, 2019
On Thursday, 12 September 2019 at 19:14:26 UTC, Ali Çehreli wrote:
> On 09/12/2019 02:54 AM, Ron Tarrant wrote:
>
> > I thought it was odd having 'q' in front of the opening curly
> brace...
>
> I think my index can be useful in such searches. Both q"" and q{} are there:
>
>   http://ddili.org/ders/d.en/ix.html
>
> Ali

Thanks, Ali. I suppose I should be looking in your book first when I have a question... as I so often do.