Re: [Qgis-developer] Composer... current status and the way forward?

2014-11-12 Thread G. Allegri
I'm not sure about the final scheduling for the composer refactoring.
Following the discussions about LTS and QGIS 3.0 will it be shifted to 3.0?

giovanni
Il 11/nov/2014 21:20 Olivier Dalang olivier.dal...@gmail.com ha scritto:

 I just checked, there's a rich text example for Qt5 :
 http://qt-project.org/doc/qt-5/qtwidgets-richtext-textedit-example.html

 I guess it's also doable with Qt4, since the QTextEdit widget already
 works with HTML, but the provided examples are not exactly a wysiwyg editor.
 http://qt-project.org/doc/qt-4.8/examples-richtext.html

 However, TinyMCE is also nice, especially since it allows to work easily
 on the underlying HTML, so it's even useful for power users. I'd love to
 give it a shot but I'm really not enough at ease with C++ to do more than
 copy/paste some lines of code.


 And about the live templates, the nice thing of overrides is for instance
 when you have several thematic maps, and want the same layout for all those
 (same map extent, same position of the legend, etc.). You can update all of
 those at once. I don't know for you, but I have more than one layout in
 almost all of my projects.
 A good practice is to have a general master defining the very static
 elements (company logo, guides for margins...) in all of your projects, and
 several other masters dependent of every project that inherit the general
 master (for instance one where you display a big map and a small overview,
 one with two maps side by side, ...). This way, you can simply reimport
 your company template in the general master, and have all your project's
 layout update. Still, you're able to reopen old projects without having
 them automatically modified.


 Olivier


 2014-11-11 20:57 GMT+01:00 Andreas Neumann a.neum...@carto.net:

  Hi Olivier,

 Regarding HTML editor:
 I very briefly discussed this with Nyall (and got an offer to do it)). I
 proposed to embed a Javascript based HTML editor (like TinyMCE (LGPL)).
 However, Nyall is probably now busy with composer/report builder. So it
 would probably be ok, if someone else works on this. I would also like to
 see this HTML editor in a text area widget - so people could write rich
 text in an attribute form. Maybe there is also a qt-based rich text widget
 we could use?

 Regarding live templates:
 I was hoping for a global live template that I could link into many
 projects. Otherwise it wouldn't help me much. On the other hand I don't
 need the overrides (maybe only the map title). I would only put fixed
 content in the live templates that needs to be on every print out (like
 company logo, print date, disclaimer, contact information, etc.). However,
 maybe one day I would need the overrides - one never knows ;-)

 Andreas




 On 11.11.2014 12:46, Olivier Dalang wrote:

 Hi,


  Another thing which deserves some work IMO is the text boxes : either
 you have to write HTML, or you're limited to 1 font/color/size per text
 box. Even if it's not really linked to the global structure of the
 composer, an improvement on this would have great impact on usability.

  There must be some lightweight wysiwyg html editor library hat we could
 use ? Ideally it should implement styles that you can apply throughout a
 project (probably through css classes, but I have the feeling someone
 already talked about this idea ?).


  And more about the live templates idea (if it's too much of a thread
 hijacking please start another one) :

  Maybe to avoid confusion between templates and live templates, we could
 call the live templates masters ? That's how they are called in Adobe
 Indesign (which is probably the most polished layouting software around).

  http://helpx.adobe.com/indesign/using/master-pages.html

  The thing Indesign isn't not doing well IMO is overrides : it involves
 an awkward keyboard shortcut and it's hard to know what exactly is
 overridden and what's not (what element, and what part of the element).
 The property system you're mentioning would probably be an excellent
 thing to manage inheritance.

  And then, there's a question about whether the masters are global or
 per-project.
 The problem with global masters is that you can have effects on other
 files without knowing it, and also that projects may display differently on
 different setups. I think we should only have per-project masters.
 And updating a project's layouts only involves reimporting the main
 master once (that may be a bit tricky though if we want to keep overrides,
 but using composer's items UUIDs we may make it work for some simple cases).


  Thanks a lot for those bigger refactoring initiatives !

  Olivier



 2014-11-11 10:52 GMT+01:00 Andreas Neumann a.neum...@carto.net:

  Hi,

 It would be very awesome to have live-linked templates! I would very
 much need them. I have a lot of operational projects and it is my fear that
 some day some details would change and I need to go into all of the
 projects and adopt things like logo, fonts, headers, etc. It 

Re: [Qgis-developer] Composer... current status and the way forward?

2014-11-12 Thread G. Allegri
PS: assuming the QEP will be accepted...
Il 13/nov/2014 00:05 G. Allegri gioha...@gmail.com ha scritto:

 I'm not sure about the final scheduling for the composer refactoring.
 Following the discussions about LTS and QGIS 3.0 will it be shifted to 3.0?

 giovanni
 Il 11/nov/2014 21:20 Olivier Dalang olivier.dal...@gmail.com ha
 scritto:

 I just checked, there's a rich text example for Qt5 :
 http://qt-project.org/doc/qt-5/qtwidgets-richtext-textedit-example.html

 I guess it's also doable with Qt4, since the QTextEdit widget already
 works with HTML, but the provided examples are not exactly a wysiwyg editor.
 http://qt-project.org/doc/qt-4.8/examples-richtext.html

 However, TinyMCE is also nice, especially since it allows to work easily
 on the underlying HTML, so it's even useful for power users. I'd love to
 give it a shot but I'm really not enough at ease with C++ to do more than
 copy/paste some lines of code.


 And about the live templates, the nice thing of overrides is for instance
 when you have several thematic maps, and want the same layout for all those
 (same map extent, same position of the legend, etc.). You can update all of
 those at once. I don't know for you, but I have more than one layout in
 almost all of my projects.
 A good practice is to have a general master defining the very static
 elements (company logo, guides for margins...) in all of your projects, and
 several other masters dependent of every project that inherit the general
 master (for instance one where you display a big map and a small overview,
 one with two maps side by side, ...). This way, you can simply reimport
 your company template in the general master, and have all your project's
 layout update. Still, you're able to reopen old projects without having
 them automatically modified.


 Olivier


 2014-11-11 20:57 GMT+01:00 Andreas Neumann a.neum...@carto.net:

  Hi Olivier,

 Regarding HTML editor:
 I very briefly discussed this with Nyall (and got an offer to do it)). I
 proposed to embed a Javascript based HTML editor (like TinyMCE (LGPL)).
 However, Nyall is probably now busy with composer/report builder. So it
 would probably be ok, if someone else works on this. I would also like to
 see this HTML editor in a text area widget - so people could write rich
 text in an attribute form. Maybe there is also a qt-based rich text widget
 we could use?

 Regarding live templates:
 I was hoping for a global live template that I could link into many
 projects. Otherwise it wouldn't help me much. On the other hand I don't
 need the overrides (maybe only the map title). I would only put fixed
 content in the live templates that needs to be on every print out (like
 company logo, print date, disclaimer, contact information, etc.). However,
 maybe one day I would need the overrides - one never knows ;-)

 Andreas




 On 11.11.2014 12:46, Olivier Dalang wrote:

 Hi,


  Another thing which deserves some work IMO is the text boxes : either
 you have to write HTML, or you're limited to 1 font/color/size per text
 box. Even if it's not really linked to the global structure of the
 composer, an improvement on this would have great impact on usability.

  There must be some lightweight wysiwyg html editor library hat we
 could use ? Ideally it should implement styles that you can apply
 throughout a project (probably through css classes, but I have the feeling
 someone already talked about this idea ?).


  And more about the live templates idea (if it's too much of a thread
 hijacking please start another one) :

  Maybe to avoid confusion between templates and live templates, we
 could call the live templates masters ? That's how they are called in
 Adobe Indesign (which is probably the most polished layouting software
 around).

  http://helpx.adobe.com/indesign/using/master-pages.html

  The thing Indesign isn't not doing well IMO is overrides : it involves
 an awkward keyboard shortcut and it's hard to know what exactly is
 overridden and what's not (what element, and what part of the element).
 The property system you're mentioning would probably be an excellent
 thing to manage inheritance.

  And then, there's a question about whether the masters are global or
 per-project.
 The problem with global masters is that you can have effects on other
 files without knowing it, and also that projects may display differently on
 different setups. I think we should only have per-project masters.
 And updating a project's layouts only involves reimporting the main
 master once (that may be a bit tricky though if we want to keep overrides,
 but using composer's items UUIDs we may make it work for some simple cases).


  Thanks a lot for those bigger refactoring initiatives !

  Olivier



 2014-11-11 10:52 GMT+01:00 Andreas Neumann a.neum...@carto.net:

  Hi,

 It would be very awesome to have live-linked templates! I would very
 much need them. I have a lot of operational projects and it is my fear that
 some day some details 

Re: [Qgis-developer] Composer... current status and the way forward?

2014-11-11 Thread Andreas Neumann

Hi,

It would be very awesome to have live-linked templates! I would very 
much need them. I have a lot of operational projects and it is my fear 
that some day some details would change and I need to go into all of the 
projects and adopt things like logo, fonts, headers, etc. It would 
either require a script to process the .qgs files or a lot of manual work.


So +1 for having live templates. Nyall, maybe you can plan the redesign 
in a way to make it possible? I would also participate in financing the 
development of these live templates.


Andreas


On 07.11.2014 20:10, Olivier Dalang wrote:

Hi,

I don't get the point in keeping the old classes if we upgrade the 
composers to layouts at opening ? Doesn't migration happen at XML level ?



Maybe while thinking about reworking the composer, we could think 
about a new feature : real templates (aka masters in Indesign).


All elements added to a master appear on all the page that apply it. 
This is very handy: you can always edit the master (move some 
elements, change the fonts/colors, etc.), and the changes are 
reflected on all the layouts. The challenging part from an UI point of 
view is the required ability to override the content of templates 
elements (for instance the extent of a map, the text of a textbox, etc.)


I thought of making a plugin for this, but got discouraged because of 
the problem you exposed... So it would be a good test case to see if 
the future API for the layouts allows to implement this easily ;)


Thanks !

Olivier



2014-11-07 16:26 GMT+01:00 Andreas Neumann a.neum...@carto.net 
mailto:a.neum...@carto.net:


Hi Nyall,

I also think that option 2 would work best. Option one would be
very confusing (I remember the days when we had two labeling
versions, 2 symbology versions, etc. - awful!).

Thanks,
Andreas


On 07.11.2014 16:16, G. Allegri wrote:

Hi Nyall,
as I already told you privately, I agree with the second
approach: remove the current Composer and guarantee transparent
auto-upgrade of existing layouts in projects.
The improvements to the composer worth the effort, and the
consequent visual impact for users. The important thing is to
guarantee old projects to provide the same results (layouts)
though, without re-designing them from the ground.
Having both the old Composer and the new GUI tools would be
misleading and confusing to the users, and I imagine it would
double the effort to mantain both the tools.

giovanni

2014-11-07 12:37 GMT+01:00 Nyall Dawson nyall.daw...@gmail.com
mailto:nyall.daw...@gmail.com:

Hi all,

I'm seeking feedback about the best way to move forward with
QGIS' map
composer. I'm currently running up against some large issues
with the
current design and API of composer which are holding back
important
features and fixes. Some of these issues include:

- there's too much composer logic tied up in app and gui.
This makes
it very difficult for plugins to manipulate and export
compositions
without duplicating large blocks of code
- there's too much item-specific logic and handling scattered
through
QgsComposition, QgsComposerView and QgsComposer. This makes it
impossible to have features like plugin generated item types, and
makes maintenance difficult.
- everything is coded to expect measurements and sizes in mm.
I can't
(nicely) add support for other units without breaking api or
resorting
to a lot of hacks
- same for mixed page sizes and orientations within a single
composition, this requires an api break to implement cleanly
- I need to totally break composer api in order to fix the
instability
in undo/redo commands (see http://hub.qgis.org/issues/11371)
- QgsComposition should not require a
QgsMapSettings/QgsMapRenderer.
This should instead be set individually for map items. Doing
so would
pave the way for features such as reprojection support for
individual
map items.
- the composer is full is deprecated methods and legacy api

I've slowly come to the conclusion that the way forward is to
move to
a bunch of new classes, much like what was done with
symbologyV2. If
https://github.com/qgis/QGIS-Enhancement-Proposals/pull/9
passes then
these would be named QgsLayout, QgsLayoutDesigner, etc. If
not, well,
I'll have to resort to QgsCompositionV2, etc.

The potential problem with this approach is how to handle the
GUI and
existing projects. As far as I can see, there's a few options:
1. Expose both the existing composer and the new layout
designer to
users. Composers aren't automatically upgraded to layouts. 

Re: [Qgis-developer] Composer... current status and the way forward?

2014-11-11 Thread Olivier Dalang
Hi,


Another thing which deserves some work IMO is the text boxes : either you
have to write HTML, or you're limited to 1 font/color/size per text box.
Even if it's not really linked to the global structure of the composer, an
improvement on this would have great impact on usability.

There must be some lightweight wysiwyg html editor library hat we could use
? Ideally it should implement styles that you can apply throughout a
project (probably through css classes, but I have the feeling someone
already talked about this idea ?).


And more about the live templates idea (if it's too much of a thread
hijacking please start another one) :

Maybe to avoid confusion between templates and live templates, we could
call the live templates masters ? That's how they are called in Adobe
Indesign (which is probably the most polished layouting software around).

http://helpx.adobe.com/indesign/using/master-pages.html

The thing Indesign isn't not doing well IMO is overrides : it involves an
awkward keyboard shortcut and it's hard to know what exactly is overridden
and what's not (what element, and what part of the element).
The property system you're mentioning would probably be an excellent thing
to manage inheritance.

And then, there's a question about whether the masters are global or
per-project.
The problem with global masters is that you can have effects on other files
without knowing it, and also that projects may display differently on
different setups. I think we should only have per-project masters.
And updating a project's layouts only involves reimporting the main master
once (that may be a bit tricky though if we want to keep overrides, but
using composer's items UUIDs we may make it work for some simple cases).


Thanks a lot for those bigger refactoring initiatives !

Olivier



2014-11-11 10:52 GMT+01:00 Andreas Neumann a.neum...@carto.net:

  Hi,

 It would be very awesome to have live-linked templates! I would very much
 need them. I have a lot of operational projects and it is my fear that some
 day some details would change and I need to go into all of the projects and
 adopt things like logo, fonts, headers, etc. It would either require a
 script to process the .qgs files or a lot of manual work.

 So +1 for having live templates. Nyall, maybe you can plan the redesign in
 a way to make it possible? I would also participate in financing the
 development of these live templates.

 Andreas



 On 07.11.2014 20:10, Olivier Dalang wrote:

 Hi,

  I don't get the point in keeping the old classes if we upgrade the
 composers to layouts at opening ? Doesn't migration happen at XML level ?


  Maybe while thinking about reworking the composer, we could think about
 a new feature : real templates (aka masters in Indesign).

  All elements added to a master appear on all the page that apply it.
 This is very handy: you can always edit the master (move some elements,
 change the fonts/colors, etc.), and the changes are reflected on all the
 layouts. The challenging part from an UI point of view is the required
 ability to override the content of templates elements (for instance the
 extent of a map, the text of a textbox, etc.)

  I thought of making a plugin for this, but got discouraged because of
 the problem you exposed... So it would be a good test case to see if the
 future API for the layouts allows to implement this easily ;)

  Thanks !

  Olivier



 2014-11-07 16:26 GMT+01:00 Andreas Neumann a.neum...@carto.net:

  Hi Nyall,

 I also think that option 2 would work best. Option one would be very
 confusing (I remember the days when we had two labeling versions, 2
 symbology versions, etc. - awful!).

 Thanks,
 Andreas


 On 07.11.2014 16:16, G. Allegri wrote:

 Hi Nyall,
 as I already told you privately, I agree with the second approach: remove
 the current Composer and guarantee transparent auto-upgrade of existing
 layouts in projects.
 The improvements to the composer worth the effort, and the consequent
 visual impact for users. The important thing is to guarantee old projects
 to provide the same results (layouts) though, without re-designing them
 from the ground.
 Having both the old Composer and the new GUI tools would be misleading
 and confusing to the users, and I imagine it would double the effort to
 mantain both the tools.

  giovanni

 2014-11-07 12:37 GMT+01:00 Nyall Dawson nyall.daw...@gmail.com:

 Hi all,

 I'm seeking feedback about the best way to move forward with QGIS' map
 composer. I'm currently running up against some large issues with the
 current design and API of composer which are holding back important
 features and fixes. Some of these issues include:

 - there's too much composer logic tied up in app and gui. This makes
 it very difficult for plugins to manipulate and export compositions
 without duplicating large blocks of code
 - there's too much item-specific logic and handling scattered through
 QgsComposition, QgsComposerView and QgsComposer. This makes it
 

Re: [Qgis-developer] Composer... current status and the way forward?

2014-11-11 Thread Andreas Neumann

Hi Olivier,

Regarding HTML editor:
I very briefly discussed this with Nyall (and got an offer to do it)). I 
proposed to embed a Javascript based HTML editor (like TinyMCE (LGPL)). 
However, Nyall is probably now busy with composer/report builder. So it 
would probably be ok, if someone else works on this. I would also like 
to see this HTML editor in a text area widget - so people could write 
rich text in an attribute form. Maybe there is also a qt-based rich text 
widget we could use?


Regarding live templates:
I was hoping for a global live template that I could link into many 
projects. Otherwise it wouldn't help me much. On the other hand I don't 
need the overrides (maybe only the map title). I would only put fixed 
content in the live templates that needs to be on every print out (like 
company logo, print date, disclaimer, contact information, etc.). 
However, maybe one day I would need the overrides - one never knows ;-)


Andreas



On 11.11.2014 12:46, Olivier Dalang wrote:

Hi,


Another thing which deserves some work IMO is the text boxes : either 
you have to write HTML, or you're limited to 1 font/color/size per 
text box. Even if it's not really linked to the global structure of 
the composer, an improvement on this would have great impact on usability.


There must be some lightweight wysiwyg html editor library hat we 
could use ? Ideally it should implement styles that you can apply 
throughout a project (probably through css classes, but I have the 
feeling someone already talked about this idea ?).



And more about the live templates idea (if it's too much of a thread 
hijacking please start another one) :


Maybe to avoid confusion between templates and live templates, we 
could call the live templates masters ? That's how they are called 
in Adobe Indesign (which is probably the most polished layouting 
software around).


http://helpx.adobe.com/indesign/using/master-pages.html

The thing Indesign isn't not doing well IMO is overrides : it involves 
an awkward keyboard shortcut and it's hard to know what exactly is 
overridden and what's not (what element, and what part of the element).
The property system you're mentioning would probably be an excellent 
thing to manage inheritance.


And then, there's a question about whether the masters are global or 
per-project.
The problem with global masters is that you can have effects on other 
files without knowing it, and also that projects may display 
differently on different setups. I think we should only have 
per-project masters.
And updating a project's layouts only involves reimporting the main 
master once (that may be a bit tricky though if we want to keep 
overrides, but using composer's items UUIDs we may make it work for 
some simple cases).



Thanks a lot for those bigger refactoring initiatives !

Olivier



2014-11-11 10:52 GMT+01:00 Andreas Neumann a.neum...@carto.net 
mailto:a.neum...@carto.net:


Hi,

It would be very awesome to have live-linked templates! I would
very much need them. I have a lot of operational projects and it
is my fear that some day some details would change and I need to
go into all of the projects and adopt things like logo, fonts,
headers, etc. It would either require a script to process the .qgs
files or a lot of manual work.

So +1 for having live templates. Nyall, maybe you can plan the
redesign in a way to make it possible? I would also participate in
financing the development of these live templates.

Andreas



On 07.11.2014 20:10, Olivier Dalang wrote:

Hi,

I don't get the point in keeping the old classes if we upgrade
the composers to layouts at opening ? Doesn't migration happen at
XML level ?


Maybe while thinking about reworking the composer, we could think
about a new feature : real templates (aka masters in Indesign).

All elements added to a master appear on all the page that
apply it. This is very handy: you can always edit the master
(move some elements, change the fonts/colors, etc.), and the
changes are reflected on all the layouts. The challenging part
from an UI point of view is the required ability to override the
content of templates elements (for instance the extent of a map,
the text of a textbox, etc.)

I thought of making a plugin for this, but got discouraged
because of the problem you exposed... So it would be a good test
case to see if the future API for the layouts allows to implement
this easily ;)

Thanks !

Olivier



2014-11-07 16:26 GMT+01:00 Andreas Neumann a.neum...@carto.net
mailto:a.neum...@carto.net:

Hi Nyall,

I also think that option 2 would work best. Option one would
be very confusing (I remember the days when we had two
labeling versions, 2 symbology versions, etc. - awful!).

Thanks,
Andreas


On 07.11.2014 16:16, G. Allegri wrote:

Hi Nyall,

Re: [Qgis-developer] Composer... current status and the way forward?

2014-11-07 Thread G. Allegri
Hi Nyall,
as I already told you privately, I agree with the second approach: remove
the current Composer and guarantee transparent auto-upgrade of existing
layouts in projects.
The improvements to the composer worth the effort, and the consequent
visual impact for users. The important thing is to guarantee old projects
to provide the same results (layouts) though, without re-designing them
from the ground.
Having both the old Composer and the new GUI tools would be misleading and
confusing to the users, and I imagine it would double the effort to mantain
both the tools.

giovanni

2014-11-07 12:37 GMT+01:00 Nyall Dawson nyall.daw...@gmail.com:

 Hi all,

 I'm seeking feedback about the best way to move forward with QGIS' map
 composer. I'm currently running up against some large issues with the
 current design and API of composer which are holding back important
 features and fixes. Some of these issues include:

 - there's too much composer logic tied up in app and gui. This makes
 it very difficult for plugins to manipulate and export compositions
 without duplicating large blocks of code
 - there's too much item-specific logic and handling scattered through
 QgsComposition, QgsComposerView and QgsComposer. This makes it
 impossible to have features like plugin generated item types, and
 makes maintenance difficult.
 - everything is coded to expect measurements and sizes in mm. I can't
 (nicely) add support for other units without breaking api or resorting
 to a lot of hacks
 - same for mixed page sizes and orientations within a single
 composition, this requires an api break to implement cleanly
 - I need to totally break composer api in order to fix the instability
 in undo/redo commands (see http://hub.qgis.org/issues/11371)
 - QgsComposition should not require a QgsMapSettings/QgsMapRenderer.
 This should instead be set individually for map items. Doing so would
 pave the way for features such as reprojection support for individual
 map items.
 - the composer is full is deprecated methods and legacy api

 I've slowly come to the conclusion that the way forward is to move to
 a bunch of new classes, much like what was done with symbologyV2. If
 https://github.com/qgis/QGIS-Enhancement-Proposals/pull/9 passes then
 these would be named QgsLayout, QgsLayoutDesigner, etc. If not, well,
 I'll have to resort to QgsCompositionV2, etc.

 The potential problem with this approach is how to handle the GUI and
 existing projects. As far as I can see, there's a few options:
 1. Expose both the existing composer and the new layout designer to
 users. Composers aren't automatically upgraded to layouts. This
 approach means that existing PyQgis code and plugins will still
 function for existing projects, but at the expense of a confusing
 experience for users.
 2. Add all the new layout classes and keep the existing composer
 classes. Composer would NOT be exposed in the GUI and compositions are
 upgraded to layouts when projects are opened. This approach means that
 standalone python code would still operate, but plugins or code which
 are designed to be run from within QGIS would no longer function.
 3. Move totally to the new layout classes and remove all composer
 classes (unlikely)

 I'm leaning toward option 2, but what are you thoughts? What's the
 best approach to move forward? Obviously I'll submit all this as a QEP
 when the plans are finalised, but for now I'm just after advice on the
 preferred approach.

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




-- 
Giovanni Allegri
http://about.me/giovanniallegri
Twitter: https://twitter.com/_giohappy_
blog: http://blog.spaziogis.it
GEO+ geomatica in Italia http://bit.ly/GEOplus
___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer

Re: [Qgis-developer] Composer... current status and the way forward?

2014-11-07 Thread Andreas Neumann

Hi Nyall,

I also think that option 2 would work best. Option one would be very 
confusing (I remember the days when we had two labeling versions, 2 
symbology versions, etc. - awful!).


Thanks,
Andreas

On 07.11.2014 16:16, G. Allegri wrote:

Hi Nyall,
as I already told you privately, I agree with the second approach: 
remove the current Composer and guarantee transparent auto-upgrade of 
existing layouts in projects.
The improvements to the composer worth the effort, and the consequent 
visual impact for users. The important thing is to guarantee old 
projects to provide the same results (layouts) though, without 
re-designing them from the ground.
Having both the old Composer and the new GUI tools would be misleading 
and confusing to the users, and I imagine it would double the effort 
to mantain both the tools.


giovanni

2014-11-07 12:37 GMT+01:00 Nyall Dawson nyall.daw...@gmail.com 
mailto:nyall.daw...@gmail.com:


Hi all,

I'm seeking feedback about the best way to move forward with QGIS' map
composer. I'm currently running up against some large issues with the
current design and API of composer which are holding back important
features and fixes. Some of these issues include:

- there's too much composer logic tied up in app and gui. This makes
it very difficult for plugins to manipulate and export compositions
without duplicating large blocks of code
- there's too much item-specific logic and handling scattered through
QgsComposition, QgsComposerView and QgsComposer. This makes it
impossible to have features like plugin generated item types, and
makes maintenance difficult.
- everything is coded to expect measurements and sizes in mm. I can't
(nicely) add support for other units without breaking api or resorting
to a lot of hacks
- same for mixed page sizes and orientations within a single
composition, this requires an api break to implement cleanly
- I need to totally break composer api in order to fix the instability
in undo/redo commands (see http://hub.qgis.org/issues/11371)
- QgsComposition should not require a QgsMapSettings/QgsMapRenderer.
This should instead be set individually for map items. Doing so would
pave the way for features such as reprojection support for individual
map items.
- the composer is full is deprecated methods and legacy api

I've slowly come to the conclusion that the way forward is to move to
a bunch of new classes, much like what was done with symbologyV2. If
https://github.com/qgis/QGIS-Enhancement-Proposals/pull/9 passes then
these would be named QgsLayout, QgsLayoutDesigner, etc. If not, well,
I'll have to resort to QgsCompositionV2, etc.

The potential problem with this approach is how to handle the GUI and
existing projects. As far as I can see, there's a few options:
1. Expose both the existing composer and the new layout designer to
users. Composers aren't automatically upgraded to layouts. This
approach means that existing PyQgis code and plugins will still
function for existing projects, but at the expense of a confusing
experience for users.
2. Add all the new layout classes and keep the existing composer
classes. Composer would NOT be exposed in the GUI and compositions are
upgraded to layouts when projects are opened. This approach means that
standalone python code would still operate, but plugins or code which
are designed to be run from within QGIS would no longer function.
3. Move totally to the new layout classes and remove all composer
classes (unlikely)

I'm leaning toward option 2, but what are you thoughts? What's the
best approach to move forward? Obviously I'll submit all this as a QEP
when the plans are finalised, but for now I'm just after advice on the
preferred approach.

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




--
Giovanni Allegri
http://about.me/giovanniallegri
Twitter: https://twitter.com/_giohappy_
blog: http://blog.spaziogis.it
GEO+ geomatica in Italia http://bit.ly/GEOplus


___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
http://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] Composer... current status and the way forward?

2014-11-07 Thread Olivier Dalang
Hi,

I don't get the point in keeping the old classes if we upgrade the
composers to layouts at opening ? Doesn't migration happen at XML level ?


Maybe while thinking about reworking the composer, we could think about a
new feature : real templates (aka masters in Indesign).

All elements added to a master appear on all the page that apply it. This
is very handy: you can always edit the master (move some elements, change
the fonts/colors, etc.), and the changes are reflected on all the layouts.
The challenging part from an UI point of view is the required ability to
override the content of templates elements (for instance the extent of a
map, the text of a textbox, etc.)

I thought of making a plugin for this, but got discouraged because of the
problem you exposed... So it would be a good test case to see if the future
API for the layouts allows to implement this easily ;)

Thanks !

Olivier



2014-11-07 16:26 GMT+01:00 Andreas Neumann a.neum...@carto.net:

  Hi Nyall,

 I also think that option 2 would work best. Option one would be very
 confusing (I remember the days when we had two labeling versions, 2
 symbology versions, etc. - awful!).

 Thanks,
 Andreas


 On 07.11.2014 16:16, G. Allegri wrote:

 Hi Nyall,
 as I already told you privately, I agree with the second approach: remove
 the current Composer and guarantee transparent auto-upgrade of existing
 layouts in projects.
 The improvements to the composer worth the effort, and the consequent
 visual impact for users. The important thing is to guarantee old projects
 to provide the same results (layouts) though, without re-designing them
 from the ground.
 Having both the old Composer and the new GUI tools would be misleading and
 confusing to the users, and I imagine it would double the effort to mantain
 both the tools.

  giovanni

 2014-11-07 12:37 GMT+01:00 Nyall Dawson nyall.daw...@gmail.com:

 Hi all,

 I'm seeking feedback about the best way to move forward with QGIS' map
 composer. I'm currently running up against some large issues with the
 current design and API of composer which are holding back important
 features and fixes. Some of these issues include:

 - there's too much composer logic tied up in app and gui. This makes
 it very difficult for plugins to manipulate and export compositions
 without duplicating large blocks of code
 - there's too much item-specific logic and handling scattered through
 QgsComposition, QgsComposerView and QgsComposer. This makes it
 impossible to have features like plugin generated item types, and
 makes maintenance difficult.
 - everything is coded to expect measurements and sizes in mm. I can't
 (nicely) add support for other units without breaking api or resorting
 to a lot of hacks
 - same for mixed page sizes and orientations within a single
 composition, this requires an api break to implement cleanly
 - I need to totally break composer api in order to fix the instability
 in undo/redo commands (see http://hub.qgis.org/issues/11371)
 - QgsComposition should not require a QgsMapSettings/QgsMapRenderer.
 This should instead be set individually for map items. Doing so would
 pave the way for features such as reprojection support for individual
 map items.
 - the composer is full is deprecated methods and legacy api

 I've slowly come to the conclusion that the way forward is to move to
 a bunch of new classes, much like what was done with symbologyV2. If
 https://github.com/qgis/QGIS-Enhancement-Proposals/pull/9 passes then
 these would be named QgsLayout, QgsLayoutDesigner, etc. If not, well,
 I'll have to resort to QgsCompositionV2, etc.

 The potential problem with this approach is how to handle the GUI and
 existing projects. As far as I can see, there's a few options:
 1. Expose both the existing composer and the new layout designer to
 users. Composers aren't automatically upgraded to layouts. This
 approach means that existing PyQgis code and plugins will still
 function for existing projects, but at the expense of a confusing
 experience for users.
 2. Add all the new layout classes and keep the existing composer
 classes. Composer would NOT be exposed in the GUI and compositions are
 upgraded to layouts when projects are opened. This approach means that
 standalone python code would still operate, but plugins or code which
 are designed to be run from within QGIS would no longer function.
 3. Move totally to the new layout classes and remove all composer
 classes (unlikely)

 I'm leaning toward option 2, but what are you thoughts? What's the
 best approach to move forward? Obviously I'll submit all this as a QEP
 when the plans are finalised, but for now I'm just after advice on the
 preferred approach.

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




  --
  Giovanni Allegri
 http://about.me/giovanniallegri
 Twitter: https://twitter.com/_giohappy_
 blog: 

Re: [Qgis-developer] Composer... current status and the way forward?

2014-11-07 Thread Nyall Dawson
On 08/11/2014 6:11 am, Olivier Dalang olivier.dal...@gmail.com wrote:

 Hi,

 I don't get the point in keeping the old classes if we upgrade the
composers to layouts at opening ? Doesn't migration happen at XML level ?

It would allow standalone scripts which utilise compositions, or scripts
which operate within qgis but without any gui, to still function.



 Maybe while thinking about reworking the composer, we could think about a
new feature : real templates (aka masters in Indesign).

 All elements added to a master appear on all the page that apply it.
This is very handy: you can always edit the master (move some elements,
change the fonts/colors, etc.), and the changes are reflected on all the
layouts. The challenging part from an UI point of view is the required
ability to override the content of templates elements (for instance the
extent of a map, the text of a textbox, etc.)

 I thought of making a plugin for this, but got discouraged because of the
problem you exposed... So it would be a good test case to see if the future
API for the layouts allows to implement this easily ;)

Hmmm.. Intriguing idea. On my longer term radar is a rework of how composer
item properties work. I think eventually we need to switch to a property
browser for setting item properties (think qt designer style). A new button
just like the data defined button could be used to set property
inheritance. (I think eventually labelling could use the same widget). This
is out of scope for the planned 2.8 work, but I'll keep it in mind whilst
doing the redesign.

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

Re: [Qgis-developer] Composer... current status and the way forward?

2014-11-07 Thread Mathieu Pellerin
Nyall,

Please, let's not go down the road of two options to do the same thing (ala
double symbology  double labelling engine era of qgis 1.x)

Nor can we leave users' previously saved composers broken.

So #2 seems to be the wining option.

A fundamental change like that would go very well with a name change too.

Every move that gets us closer to having non mm units is worth the sweat :)
On 7 Nov 2014 18:38, Nyall Dawson nyall.daw...@gmail.com wrote:

 Hi all,

 I'm seeking feedback about the best way to move forward with QGIS' map
 composer. I'm currently running up against some large issues with the
 current design and API of composer which are holding back important
 features and fixes. Some of these issues include:

 - there's too much composer logic tied up in app and gui. This makes
 it very difficult for plugins to manipulate and export compositions
 without duplicating large blocks of code
 - there's too much item-specific logic and handling scattered through
 QgsComposition, QgsComposerView and QgsComposer. This makes it
 impossible to have features like plugin generated item types, and
 makes maintenance difficult.
 - everything is coded to expect measurements and sizes in mm. I can't
 (nicely) add support for other units without breaking api or resorting
 to a lot of hacks
 - same for mixed page sizes and orientations within a single
 composition, this requires an api break to implement cleanly
 - I need to totally break composer api in order to fix the instability
 in undo/redo commands (see http://hub.qgis.org/issues/11371)
 - QgsComposition should not require a QgsMapSettings/QgsMapRenderer.
 This should instead be set individually for map items. Doing so would
 pave the way for features such as reprojection support for individual
 map items.
 - the composer is full is deprecated methods and legacy api

 I've slowly come to the conclusion that the way forward is to move to
 a bunch of new classes, much like what was done with symbologyV2. If
 https://github.com/qgis/QGIS-Enhancement-Proposals/pull/9 passes then
 these would be named QgsLayout, QgsLayoutDesigner, etc. If not, well,
 I'll have to resort to QgsCompositionV2, etc.

 The potential problem with this approach is how to handle the GUI and
 existing projects. As far as I can see, there's a few options:
 1. Expose both the existing composer and the new layout designer to
 users. Composers aren't automatically upgraded to layouts. This
 approach means that existing PyQgis code and plugins will still
 function for existing projects, but at the expense of a confusing
 experience for users.
 2. Add all the new layout classes and keep the existing composer
 classes. Composer would NOT be exposed in the GUI and compositions are
 upgraded to layouts when projects are opened. This approach means that
 standalone python code would still operate, but plugins or code which
 are designed to be run from within QGIS would no longer function.
 3. Move totally to the new layout classes and remove all composer
 classes (unlikely)

 I'm leaning toward option 2, but what are you thoughts? What's the
 best approach to move forward? Obviously I'll submit all this as a QEP
 when the plans are finalised, but for now I'm just after advice on the
 preferred approach.

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

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