On Fri, 31 Aug 2018 at 22:24, C Hamilton <[email protected]> wrote:
>
> Thanks Nyall!!! Unfortunately I was trying to make this a processing routine 
> when I shouldn't have. It is good to know the boundaries. This function 
> really requires user interactivity.

Mind sharing the general function of the plugin? There may still be a
way to make this work within Processing.

Regards,
Nyall

>
> Calvin
>
> On Thu, Aug 30, 2018 at 9:27 PM, Nyall Dawson <[email protected]> wrote:
>>
>> On Thu, 30 Aug 2018 at 23:38, C Hamilton <[email protected]> wrote:
>> >
>> > I have an algorithm that during execution gathers information from the 
>> > data and then pops up a window for the user to select what the user would 
>> > like to do.
>> >
>> > Is this possible in the Processing framework? I have tried doing this in 
>> > processAlgorithm and it crashes QGIS. Here is how I call the popup window.
>>
>> No - this is not supported and goes against the very fundamental
>> design of Processing. Argggh! ;)
>>
>> But seriously, Processing was designed with the intention that all
>> user choices are made up-front. This allows algorithms to be nicely
>> executed inside of models, without the model halting mid-way waiting
>> for user input. It also allows algorithms, scripts, models, etc to be
>> run from headless environments such as console scripts.
>>
>> In this case, you're getting a crash because you're trying to create
>> GUI components from your algorithm which is being executed in a
>> background thread. This is a big no-no in Qt land, and usually results
>> in a crash.
>>
>> Nyall
>>
>>
>> >         fieldsDialog = SelectionDialog(self.tableFeatures)
>> >         fieldsDialog.exec_()
>> >         items = fieldsDialog.selected
>> >
>> > Here is the beginning of the SelectionDialong class.
>> >
>> > class SelectionDialog(QDialog, FIELDS_CLASS):
>> >     def __init__(self, feat, parent=None):
>> >         super(SelectionDialog, self).__init__(parent)
>> >         self.setupUi(self)
>> >
>> > Prior to Processing I passed in iface.mainWindow() as the parent. Is there 
>> > a proper parent in Processing to pass? Perhaps this is the reason it is 
>> > crashing.
>> >
>> > class SelectionDialog(QDialog, FIELDS_CLASS):
>> >     def __init__(self, iface, feat):
>> >         super(SelectionDialog, self).__init__(iface.mainWindow())
>> >         self.setupUi(self)
>> >
>> > Thanks,
>> >
>> > Calvin
>
>
_______________________________________________
QGIS-Developer mailing list
[email protected]
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to