[Qgis-developer] New adv labeling freeze-thaw tools

Marco Hugentobler marco.hugentobler at sourcepole.ch
Mon Jul 16 08:45:13 PDT 2012


Hi Larry

>If you have the time to look at the constructor for
>QgsMapToolFreezeLabels (the FIXME), you'll notice I could not find a
>way to make the signal/slot connections from there. Currently they are
>in qgisapp.cpp, but I would prefer to not pollute that core file with
>any more of my tool's code than necessary. What's the simplest way to
>create the connections from inside my QObject-inherited tool instead?

The slot methods need to be declared as slots in the header file, like this:

public slots:

     //! Update frozen label highlights on canvas render finished
     void updateFrozenLabels();
     //! Render rectangles around frozen labels
     void highlightFrozenLabels();

Currently, they are just normal public methods.

Regards,
Marco

Am 16.07.2012 11:35, schrieb Larry Shaffer:
> On Mon, Jul 16, 2012 at 2:18 AM, Marco Hugentobler
> <marco.hugentobler at sourcepole.ch> wrote:
>> Hi Larry
>>
>> Excellent work, thank you!
>> The freeze/thaw tool will be a great addition to the label tool bar.
>>
>> I wonder if the tool could also be active if x/y is data defined and
>> rotation not (currently, x/y/rotation need to be data defined to use the
>> tool).
> Yes, that is an unnecessary restriction. I'll make the rotation field optional.
>
>> On a detail level, in QgsMapToolFreezeLabels::highlightLabel you could
>> probably use QgsMapRenderer::mapToLayerCoordinates to transform the
>> rectangle (instead of mCoordTransform ).
> Will make the change. Thanks.
>
> If you have the time to look at the constructor for
> QgsMapToolFreezeLabels (the FIXME), you'll notice I could not find a
> way to make the signal/slot connections from there. Currently they are
> in qgisapp.cpp, but I would prefer to not pollute that core file with
> any more of my tool's code than necessary. What's the simplest way to
> create the connections from inside my QObject-inherited tool instead?
>
> Regards,
> Larry
>
>
>
>> Am 16.07.2012 05:31, schrieb Larry Shaffer:
>>
>> Hi,
>>
>> The current large-format project I'm working on requires me to layout,
>> for print, thousands of labels. So I spent the last couple of days
>> making two new tools for the advanced labeling toolbar that allow the
>> user to interactively 'freeze' (write coords and rotation info to
>> attribute table) and 'thaw' (revert from data-defined to dynamic) any
>> rendered labels.
>>
>> *Show Frozen Labels*
>>
>> This tool highlights frozen labels for all visible layers. Blue
>> highlighted labels are frozen, green are frozen and editable (parent
>> layer's in edit mode).
>>
>> *Freeze/Thaw Labels*
>>
>> This tool allows the user to interactively choose, by single or
>> marquee selection, labels to freeze or thaw. The in-memory attribute
>> table is immediately updated and results shown to user. This tool
>> allows the user to interactively manipulate the PAL labeling engine to
>> find the best solutions for their frozen labels.
>>
>> Since the topic and how the tool interacts with the labeling engine is
>> more complicated, I made an intro video. (Note: I haven't had much
>> sleep recently, so it's a bit rough.)
>>
>> http://vimeo.com/dakotacarto/freezethawlabels
>>
>>
>> This is my first C++ project, so I'd be really happy if someone
>> audited the code before I squash the commits and send a pull request:
>>
>> https://github.com/dakcarto/Quantum-GIS/tree/feature_freeze-thaw-labels
>>
>> Only tested on Mac, as of now. Nothing platform-specific about it though.
>>
>> Regards,
>>
>> Larry Shaffer
>> Dakota Cartography
>> Black Hills, South Dakota
>>
>>
>>
>> _______________________________________________
>> Qgis-developer mailing list
>> Qgis-developer at 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.hugentobler at sourcepole.ch http://www.sourcepole.ch
>> Technical Advisor QGIS Project Steering Committee
>>
>>
>> _______________________________________________
>> Qgis-developer mailing list
>> Qgis-developer at 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.hugentobler at sourcepole.ch http://www.sourcepole.ch
Technical Advisor QGIS Project Steering Committee



More information about the Qgis-developer mailing list