Re: [Qgis-developer] QGIS Server - GetPrint request does not respect text boxes size and position if dynamic content passed

2013-05-28 Thread Marco Hugentobler

Hi René-Luc

du to the method adjustSizeToText()
Someone can confim it ?

I guess yes. 'adjustSizeToText()' works for text, not html. Html support 
for composer label was added recently to the composer label class. 
Please adapt the relevant lines to work with html labels too.


Question for Marco, Why removed label, if the request doesn't define a 
value ? Why not used the default value ?


The idea was that the web client has the possibility to remove an 
advertised text label completely if it is not used. E.g. if a 
composition defines a text item with id 'author', the web client can 
simply ignore it if it does not want to have author's name printed. Note 
that the labels without ids are not removed as they are considered to be 
fix, so not subject to client text replacement (original meaning of 
label id was that this text item is subject to text replacement by web 
client. Later, the id has been generalized as an id for every item type).


Another possibility would be to remove the item only if the client gives 
an empty text and use the default text otherwise. What do you think?


Regards,
Marco


On 27.05.2013 22:23, rldhont wrote:

Hi Marco and other devs,

In src/mapserver/qgsconfigparser.cpp:530 we can read :

  //replace label text
  foreach ( QgsComposerLabel *currentLabel, composerLabels )
  {
QString title = parameterMap.value( currentLabel-id().toUpper() );

if ( title.isEmpty() )
{
  //remove exported labels not referenced in the request
  if ( !currentLabel-id().isEmpty() )
  {
c-removeItem( currentLabel );
delete currentLabel;
  }
  continue;
}

currentLabel-setText( title );
currentLabel-adjustSizeToText();
  }

This code is used to draw composer label with value defined by the 
QGIS WMS Server Request GetPrint.


The bug defined in the issues #7894 http://hub.qgis.org/issues/7894 is 
probably du to the method adjustSizeToText()

Someone can confim it ?

Question for Marco, Why removed label, if the request doesn't define a 
value ? Why not used the default value ?


Regards,
René-Luc D'Hont
3Liz
___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer



--
Dr. Marco Hugentobler
Sourcepole -  Linux  Open Source Solutions
Weberstrasse 5, CH-8004 Zürich, Switzerland
marco.hugentob...@sourcepole.ch http://www.sourcepole.ch
Technical Advisor QGIS Project Steering Committee

___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer


Re: [Qgis-developer] QGIS Server - GetPrint request does not respect text boxes size and position if dynamic content passed

2013-05-28 Thread René-Luc D'Hont
Hi Marco


 I guess yes. 'adjustSizeToText()' works for text, not html. Html support
 for composer label was added recently to the composer label class. Please
 adapt the relevant lines to work with html labels too.


I'll adapt it



 Question for Marco, Why removed label, if the request doesn't define a
 value ? Why not used the default value ?

 The idea was that the web client has the possibility to remove an
 advertised text label completely if it is not used. E.g. if a composition
 defines a text item with id 'author', the web client can simply ignore it
 if it does not want to have author's name printed. Note that the labels
 without ids are not removed as they are considered to be fix, so not
 subject to client text replacement (original meaning of label id was that
 this text item is subject to text replacement by web client. Later, the id
 has been generalized as an id for every item type).

 Another possibility would be to remove the item only if the client gives
 an empty text and use the default text otherwise. What do you think?



I prefer to remove the label only if the user gives an empty text.
Can I do it ?


Regards,
René-Luc


On 27.05.2013 22:23, rldhont wrote:

 Hi Marco and other devs,

 In src/mapserver/qgsconfigparser.**cpp:530 we can read :

   //replace label text
   foreach ( QgsComposerLabel *currentLabel, composerLabels )
   {
 QString title = parameterMap.value( currentLabel-id().toUpper() );

 if ( title.isEmpty() )
 {
   //remove exported labels not referenced in the request
   if ( !currentLabel-id().isEmpty() )
   {
 c-removeItem( currentLabel );
 delete currentLabel;
   }
   continue;
 }

 currentLabel-setText( title );
 currentLabel-**adjustSizeToText();
   }

 This code is used to draw composer label with value defined by the QGIS
 WMS Server Request GetPrint.

 The bug defined in the issues #7894 
 http://hub.qgis.org/issues/**7894http://hub.qgis.org/issues/7894is 
 probably du to the method adjustSizeToText()
 Someone can confim it ?

 Question for Marco, Why removed label, if the request doesn't define a
 value ? Why not used the default value ?

 Regards,
 René-Luc D'Hont
 3Liz
 __**_
 Qgis-developer mailing list
 Qgis-developer@lists.osgeo.org
 http://lists.osgeo.org/**mailman/listinfo/qgis-**developerhttp://lists.osgeo.org/mailman/listinfo/qgis-developer



 --
 Dr. Marco Hugentobler
 Sourcepole -  Linux  Open Source Solutions
 Weberstrasse 5, CH-8004 Zürich, Switzerland
 marco.hugentobler@sourcepole.**ch marco.hugentob...@sourcepole.ch
 http://www.sourcepole.ch
 Technical Advisor QGIS Project Steering Committee

 __**_
 Qgis-developer mailing list
 Qgis-developer@lists.osgeo.org
 http://lists.osgeo.org/**mailman/listinfo/qgis-**developerhttp://lists.osgeo.org/mailman/listinfo/qgis-developer

___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer


Re: [Qgis-developer] QGIS Server - GetPrint request does not respect text boxes size and position if dynamic content passed

2013-05-28 Thread Marco Hugentobler

I prefer to remove the label only if the user gives an empty text.
 Can I do it ?

No objection from me. Currently, I'm not using the text replacement 
capabilities.


Marco

On 28.05.2013 11:34, René-Luc D'Hont wrote:

Hi Marco


I guess yes. 'adjustSizeToText()' works for text, not html. Html
support for composer label was added recently to the composer
label class. Please adapt the relevant lines to work with html
labels too. 



I'll adapt it


Question for Marco, Why removed label, if the request doesn't
define a value ? Why not used the default value ?

The idea was that the web client has the possibility to remove an
advertised text label completely if it is not used. E.g. if a
composition defines a text item with id 'author', the web client
can simply ignore it if it does not want to have author's name
printed. Note that the labels without ids are not removed as they
are considered to be fix, so not subject to client text
replacement (original meaning of label id was that this text item
is subject to text replacement by web client. Later, the id has
been generalized as an id for every item type).

Another possibility would be to remove the item only if the client
gives an empty text and use the default text otherwise. What do
you think?



I prefer to remove the label only if the user gives an empty text.
Can I do it ?


Regards,
René-Luc


On 27.05.2013 22 tel:27.05.2013%2022:23, rldhont wrote:

Hi Marco and other devs,

In src/mapserver/qgsconfigparser.cpp:530 we can read :

  //replace label text
  foreach ( QgsComposerLabel *currentLabel, composerLabels )
  {
QString title = parameterMap.value(
currentLabel-id().toUpper() );

if ( title.isEmpty() )
{
  //remove exported labels not referenced in the request
  if ( !currentLabel-id().isEmpty() )
  {
c-removeItem( currentLabel );
delete currentLabel;
  }
  continue;
}

currentLabel-setText( title );
currentLabel-adjustSizeToText();
  }

This code is used to draw composer label with value defined by
the QGIS WMS Server Request GetPrint.

The bug defined in the issues #7894
http://hub.qgis.org/issues/7894 is probably du to the method
adjustSizeToText()
Someone can confim it ?

Question for Marco, Why removed label, if the request doesn't
define a value ? Why not used the default value ?

Regards,
René-Luc D'Hont
3Liz
___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
mailto:Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer



-- 
Dr. Marco Hugentobler

Sourcepole -  Linux  Open Source Solutions
Weberstrasse 5, CH-8004 Zürich, Switzerland
marco.hugentob...@sourcepole.ch
mailto:marco.hugentob...@sourcepole.ch http://www.sourcepole.ch
Technical Advisor QGIS Project Steering Committee

___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org mailto:Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer





--
Dr. Marco Hugentobler
Sourcepole -  Linux  Open Source Solutions
Weberstrasse 5, CH-8004 Zürich, Switzerland
marco.hugentob...@sourcepole.ch http://www.sourcepole.ch
Technical Advisor QGIS Project Steering Committee

___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer


Re: [Qgis-developer] QGIS Server - GetPrint request does not respect text boxes size and position if dynamic content passed

2013-05-28 Thread Andreas Neumann
+1 from me.

I am not using this feature for now but will in the future.

Andreas

Am 28.05.2013 15:36, schrieb Marco Hugentobler:
I prefer to remove the label only if the user gives an empty text.
 Can I do it ?
 
 No objection from me. Currently, I'm not using the text replacement
 capabilities.
 

___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer


Re: [Qgis-developer] QGIS Server - GetPrint request does not respect text boxes size and position if dynamic content passed

2013-05-28 Thread Marco Hugentobler
So for me, simply removing the adjustSizeToText call would be enough. 
Or we have to make sure this method does the job correctly, which may be 
a bit hard to implement : we need to avoid to have collision with other 
composition items, etc.


The problem is if the client provided text does not fit into the 
predefined label box. It would be good to combine dynamic resize 
capabilities with line breaks somehow.

I'm open for suggestions.

Marco


On 28.05.2013 11:53, kimaidou wrote:

Hi

I just made a small test and commented the line
currentLabel-adjustSizeToText();
Then recompile QGIS master and tested it with a classical text box 
(not html rendered) with a long text.


I personnaly prefer the behaviour when this method is not called : the 
text box keep the size set by the user in QGIS. And the text wraps 
when it reaches the right side of the Box. I even tried with HTML 
rendered on (and my fake X Server running), and it worked well too.


At the contrary, when adjustSizeToText is used, the box is transformed 
in a one line box, which goes to the right of the entire composition 
(out of it) : text does not wrap.


So for me, simply removing the adjustSizeToText call would be enough. 
Or we have to make sure this method does the job correctly, which may 
be a bit hard to implement : we need to avoid to have collision with 
other composition items, etc.


Regards
Michael



2013/5/28 René-Luc D'Hont rldh...@gmail.com mailto:rldh...@gmail.com

Hi Marco


I guess yes. 'adjustSizeToText()' works for text, not html.
Html support for composer label was added recently to the
composer label class. Please adapt the relevant lines to work
with html labels too. 



I'll adapt it


Question for Marco, Why removed label, if the request doesn't
define a value ? Why not used the default value ?

The idea was that the web client has the possibility to remove
an advertised text label completely if it is not used. E.g. if
a composition defines a text item with id 'author', the web
client can simply ignore it if it does not want to have
author's name printed. Note that the labels without ids are
not removed as they are considered to be fix, so not subject
to client text replacement (original meaning of label id was
that this text item is subject to text replacement by web
client. Later, the id has been generalized as an id for every
item type).

Another possibility would be to remove the item only if the
client gives an empty text and use the default text otherwise.
What do you think?



I prefer to remove the label only if the user gives an empty text.
Can I do it ?


Regards,
René-Luc


On 27.05.2013 22 tel:27.05.2013%2022:23, rldhont wrote:

Hi Marco and other devs,

In src/mapserver/qgsconfigparser.cpp:530 we can read :

  //replace label text
  foreach ( QgsComposerLabel *currentLabel, composerLabels )
  {
QString title = parameterMap.value(
currentLabel-id().toUpper() );

if ( title.isEmpty() )
{
  //remove exported labels not referenced in the request
  if ( !currentLabel-id().isEmpty() )
  {
c-removeItem( currentLabel );
delete currentLabel;
  }
  continue;
}

currentLabel-setText( title );
currentLabel-adjustSizeToText();
  }

This code is used to draw composer label with value
defined by the QGIS WMS Server Request GetPrint.

The bug defined in the issues #7894
http://hub.qgis.org/issues/7894 is probably du to the
method adjustSizeToText()
Someone can confim it ?

Question for Marco, Why removed label, if the request
doesn't define a value ? Why not used the default value ?

Regards,
René-Luc D'Hont
3Liz
___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
mailto:Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer



-- 
Dr. Marco Hugentobler

Sourcepole -  Linux  Open Source Solutions
Weberstrasse 5, CH-8004 Zürich, Switzerland
marco.hugentob...@sourcepole.ch
mailto:marco.hugentob...@sourcepole.ch http://www.sourcepole.ch
Technical Advisor QGIS Project Steering Committee

___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
mailto:Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer



Re: [Qgis-developer] QGIS Server - GetPrint request does not respect text boxes size and position if dynamic content passed

2013-05-28 Thread kimaidou
2013/5/28 Marco Hugentobler marco.hugentob...@sourcepole.ch

  So for me, simply removing the adjustSizeToText call would be enough.
 Or we have to make sure this method does the job correctly, which may be a
 bit hard to implement : we need to avoid to have collision with other
 composition items, etc.

 The problem is if the client provided text does not fit into the
 predefined label box.


I agree, but it is better than now, and quite logical to me : if the
content does not fit, only the part which fits is visible. This allows the
output PDF to be like the author wanted to, with the position and size of
each text box as set in the Composer. And above all, text wraps correctly
without dynamic resize. We could try to add an option max length for the
text boxes which could be advertised in the getCapabilities ? This way the
client could warn the user whenever he tries to use a text which too many
characters ?


 It would be good to combine dynamic resize capabilities with line breaks
 somehow.


I think dynamic resize should be used only if we can use it with line
breaks.Better respect the position and size defined by the user in QGIS
composer than having a text item which get so long that it get out of the
composer limits.



 I'm open for suggestions.


Thanks, and please forgive my english which sometimes prevents me from
souding moderate enough. I know that giving ideas is easy and developping
features is harder !

Some suggestions (I am thinking out loud...)

* new option with max text length, advertised in the getCapabilities
* linked text boxes. In softwares like Adobe Illustrator, or Scribus
(open-source), you can link serveral text boxes, so that the text is
written is the first box then in the linked one if the content does not fit
the first one.
* If linked text boxes is implemented, the killer feature would have to
dynamically generate new pages with linked text boxes so that all the
content is written in as many boxes as necessary to have the full content
written down.

Sincerely
Michael




 Marco



 On 28.05.2013 11:53, kimaidou wrote:

 Hi

  I just made a small test and commented the line
 currentLabel-adjustSizeToText();
  Then recompile QGIS master and tested it with a classical text box (not
 html rendered) with a long text.

  I personnaly prefer the behaviour when this method is not called : the
 text box keep the size set by the user in QGIS. And the text wraps when it
 reaches the right side of the Box. I even tried with HTML rendered on
 (and my fake X Server running), and it worked well too.

  At the contrary, when adjustSizeToText is used, the box is transformed in
 a one line box, which goes to the right of the entire composition (out of
 it) : text does not wrap.

  So for me, simply removing the adjustSizeToText call would be enough. Or
 we have to make sure this method does the job correctly, which may be a bit
 hard to implement : we need to avoid to have collision with other
 composition items, etc.

  Regards
  Michael



 2013/5/28 René-Luc D'Hont rldh...@gmail.com

 Hi Marco


  I guess yes. 'adjustSizeToText()' works for text, not html. Html
 support for composer label was added recently to the composer label class.
 Please adapt the relevant lines to work with html labels too.


  I'll adapt it



 Question for Marco, Why removed label, if the request doesn't define a
 value ? Why not used the default value ?

  The idea was that the web client has the possibility to remove an
 advertised text label completely if it is not used. E.g. if a composition
 defines a text item with id 'author', the web client can simply ignore it
 if it does not want to have author's name printed. Note that the labels
 without ids are not removed as they are considered to be fix, so not
 subject to client text replacement (original meaning of label id was that
 this text item is subject to text replacement by web client. Later, the id
 has been generalized as an id for every item type).

 Another possibility would be to remove the item only if the client gives
 an empty text and use the default text otherwise. What do you think?



  I prefer to remove the label only if the user gives an empty text.
  Can I do it ?


  Regards,
  René-Luc


 On 27.05.2013 22 27.05.2013%2022:23, rldhont wrote:

   Hi Marco and other devs,

 In src/mapserver/qgsconfigparser.cpp:530 we can read :

   //replace label text
   foreach ( QgsComposerLabel *currentLabel, composerLabels )
   {
 QString title = parameterMap.value( currentLabel-id().toUpper() );

 if ( title.isEmpty() )
 {
   //remove exported labels not referenced in the request
   if ( !currentLabel-id().isEmpty() )
   {
 c-removeItem( currentLabel );
 delete currentLabel;
   }
   continue;
 }

 currentLabel-setText( title );
 currentLabel-adjustSizeToText();
   }

 This code is used to draw composer label with value defined by the QGIS
 WMS Server Request GetPrint.

 The bug defined 

Re: [Qgis-developer] QGIS Server - GetPrint request does not respect text boxes size and position if dynamic content passed

2013-05-28 Thread kimaidou
Hi again

I reply here because I have just noticed a very cool new feature in QGIS
composer. You can add an HTML box, give a file stored in the disk
containing the HTML code to display in the box. I knew this option. What I
did not notice was the ability to let QGIS create as many pages as
necessary to dispplay the full content of the HTML file related to the box.

So instead of passing long parameter to getPrint text boxes to dynamically
replace the content (html rendered or not), I could use this feature
instead. What is missing for me right now to achieve this goal :
* be able to pass the HTML file path via a parameter. We could use the id
of the HTML item in the composer.
* be able to make it work in getPrint : I managed to create a PDF from QGIS
with the HTML content from a file, but could not via QGIS Server: the HTML
block stays empty. This is not because of X server, because I can use HTML
text for text blocks via the fake X server.

Any comment appreciated.

Good evening
Michael


2013/5/28 kimaidou kimai...@gmail.com



 2013/5/28 Marco Hugentobler marco.hugentob...@sourcepole.ch

  So for me, simply removing the adjustSizeToText call would be enough.
 Or we have to make sure this method does the job correctly, which may be a
 bit hard to implement : we need to avoid to have collision with other
 composition items, etc.

 The problem is if the client provided text does not fit into the
 predefined label box.


 I agree, but it is better than now, and quite logical to me : if the
 content does not fit, only the part which fits is visible. This allows the
 output PDF to be like the author wanted to, with the position and size of
 each text box as set in the Composer. And above all, text wraps correctly
 without dynamic resize. We could try to add an option max length for the
 text boxes which could be advertised in the getCapabilities ? This way the
 client could warn the user whenever he tries to use a text which too many
 characters ?


 It would be good to combine dynamic resize capabilities with line breaks
 somehow.


 I think dynamic resize should be used only if we can use it with line
 breaks.Better respect the position and size defined by the user in QGIS
 composer than having a text item which get so long that it get out of the
 composer limits.



 I'm open for suggestions.


 Thanks, and please forgive my english which sometimes prevents me from
 souding moderate enough. I know that giving ideas is easy and developping
 features is harder !

 Some suggestions (I am thinking out loud...)

 * new option with max text length, advertised in the getCapabilities
 * linked text boxes. In softwares like Adobe Illustrator, or Scribus
 (open-source), you can link serveral text boxes, so that the text is
 written is the first box then in the linked one if the content does not fit
 the first one.
 * If linked text boxes is implemented, the killer feature would have to
 dynamically generate new pages with linked text boxes so that all the
 content is written in as many boxes as necessary to have the full content
 written down.

 Sincerely
 Michael




 Marco



 On 28.05.2013 11:53, kimaidou wrote:

 Hi

  I just made a small test and commented the line
 currentLabel-adjustSizeToText();
  Then recompile QGIS master and tested it with a classical text box (not
 html rendered) with a long text.

  I personnaly prefer the behaviour when this method is not called : the
 text box keep the size set by the user in QGIS. And the text wraps when it
 reaches the right side of the Box. I even tried with HTML rendered on
 (and my fake X Server running), and it worked well too.

  At the contrary, when adjustSizeToText is used, the box is transformed
 in a one line box, which goes to the right of the entire composition (out
 of it) : text does not wrap.

  So for me, simply removing the adjustSizeToText call would be enough. Or
 we have to make sure this method does the job correctly, which may be a bit
 hard to implement : we need to avoid to have collision with other
 composition items, etc.

  Regards
  Michael



 2013/5/28 René-Luc D'Hont rldh...@gmail.com

 Hi Marco


  I guess yes. 'adjustSizeToText()' works for text, not html. Html
 support for composer label was added recently to the composer label class.
 Please adapt the relevant lines to work with html labels too.


  I'll adapt it



 Question for Marco, Why removed label, if the request doesn't define a
 value ? Why not used the default value ?

  The idea was that the web client has the possibility to remove an
 advertised text label completely if it is not used. E.g. if a composition
 defines a text item with id 'author', the web client can simply ignore it
 if it does not want to have author's name printed. Note that the labels
 without ids are not removed as they are considered to be fix, so not
 subject to client text replacement (original meaning of label id was that
 this text item is subject to text replacement by web client. Later, 

[Qgis-developer] QGIS Server - GetPrint request does not respect text boxes size and position if dynamic content passed

2013-05-27 Thread rldhont

Hi Marco and other devs,

In src/mapserver/qgsconfigparser.cpp:530 we can read :

  //replace label text
  foreach ( QgsComposerLabel *currentLabel, composerLabels )
  {
QString title = parameterMap.value( currentLabel-id().toUpper() );

if ( title.isEmpty() )
{
  //remove exported labels not referenced in the request
  if ( !currentLabel-id().isEmpty() )
  {
c-removeItem( currentLabel );
delete currentLabel;
  }
  continue;
}

currentLabel-setText( title );
currentLabel-adjustSizeToText();
  }

This code is used to draw composer label with value defined by the QGIS 
WMS Server Request GetPrint.


The bug defined in the issues #7894 http://hub.qgis.org/issues/7894 is 
probably du to the method adjustSizeToText()

Someone can confim it ?

Question for Marco, Why removed label, if the request doesn't define a 
value ? Why not used the default value ?


Regards,
René-Luc D'Hont
3Liz
___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer