I look forward to seeing this in trunk. Thanks for the great contribution. John
On Jul 17, 2012, at 2:28 PM, Larry Shaffer wrote: > I've updated and extensively tested this new tool (not all platforms) > and it works very well. I have sent in a pull request: > > https://github.com/qgis/Quantum-GIS/pull/193 > > Again, here's the intro video: > http://vimeo.com/dakotacarto/freezethawlabels > (Note: I haven't had much sleep, so the video is a bit rough.) > > As an unexpected added bonus (well, unexpected to me), the tool helps > greatly with slow label rendering options, like a polygon layer's > 'free' and 'horizontal' modes. After the PAL labeling engine finishes > with those modes during a canvas refresh (sometimes taking several > minutes), just use the freeze label tool on the result. The subsequent > canvas refreshes are magnitudes faster. > > Marco H., thank you for your help on this, and thanks to sourcepole > and Martin for doing such a great job of coding the advanced labeling > engine. I would have never been able to produce this tool had it not > been for the excellent existing and flexible code. > > Regards, > > Larry Shaffer > Dakota Cartography > Black Hills, South Dakota > > > On Mon, Jul 16, 2012 at 9:45 AM, Marco Hugentobler > <marco.hugentob...@sourcepole.ch> wrote: >> 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.hugentob...@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@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 >>>> >> >> >> -- >> 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 _______________________________________________ Qgis-developer mailing list Qgis-developer@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/qgis-developer