Hi Noelia,
This line of code is correct. However, you can try to isolate the
problem, not adding the data to the rendering tree of your working area. You
can add the data to the data entity list only, after this, using the user
interface, change to the standard OrthoSliceWorkingArea, and visualize your
output signal in the signal viewer, using the check box:
Core::DataEntity::Pointer dataEntity = dataEntityHolder->GetSubject(
);
if ( dataEntity.IsNotNull() )
{
// Add to list and connect holders
DataEntityHelper::AddDataEntityToList( dataEntityHolder,
false );
}
DataEntity is a container. When the processor calls UpdateOutput( ),
it creates a new DataEntity holding the pointer to the data created by your
processor (in your case it is blSignalCollective). The DataEntity will be
destroyed when there are no references pointing to it. When the user removes
the DataEntity from the data tree, it sends an event to all widgets to
remove the references to this DataEntity.
Best regards,
Xavi
-----Original Message-----
From: Noelia MartÃn Hernández [mailto:[email protected]]
Sent: lunes, 25 de abril de 2011 13:04
To: Xavier Planes
Cc: [email protected]
Subject: RE: Signal working area
Hello.
I tried to do what you told me, and both the processor and in the
OnModifiedOutputDataEntity my data signal are correct, but when viewing in
the corresponding dataEntity happens what I said earlier, maybe it is
because this well done publish output?
Core:: DataTreeHelper:: PublishOutput (m_Processor->
GetOutputDataEntityHolder (0), GetRenderingTree ());
I thought that dataEntity destroy or initialize the output but not very
well how, I've seen Core:: RenderingTreeMITK:: OnDestroyDataEntity (), but
not as relating to the right dataentity.
You can help me?
Thank you very much!
On Fri, 15 Apr 2011, Xavier Planes wrote:
> Hi Noelia,
>
> It seems that there is a problem when using a blSignalCollective
> containing multiple signals. Is it working using the SignalViewerPlugin?
> Sometimes to find the problem what I do is:
> - Debug the code and check the value of the variables. Sometimes you
> find a variable uninitialized or pointing to uninitialized memory
> - Isolate the code: You can try to remove code and reduce it to the
> small number of lines of code that makes the problem continue happening
> - Saving partial data to disk: You can save intermediate results
> - Printing variables to console window: This is useful when using
> release mode or for long processing tasks
> - Using different input data: Sometimes you discover that the
> problem only appears using a specific type of input data
>
> For example you can try to save the signal in different parts of
> your code or commenting out other parts like the processing part.
>
> For the second question, I think there's a problem when allocating
> the memory because sometimes it works fine and sometimes not. I think you
> can apply similar strategy to find where is the problem.
>
> Best regards,
> Xavi
>
>
> -----Original Message-----
> From: Noelia MartÃn Hernández [mailto:[email protected]]
> Sent: viernes, 15 de abril de 2011 13:42
> To: Xavier Planes
> Cc: [email protected]
> Subject: RE: Signal working area
>
>
> Hello again.
>
> Further tested my plugin I found a problem when I go to change my
> input signal in the widget panel, the first few times it works well but
> there comes a time to change the entry, before returning to give the Apply
> button should erase everything is in the Working Area. But what I command
> appears in the capture does not delete it.
>
> And in the code of my widget panel to delete it does not happen:
>
>
Preprocess_signal::Filter_Baseline_WanderPanelWidget::Filter_Baseline_Wander
> PanelWidget(
> wxWindow* parent, int id/*= wxID_ANY*/,
>
> const wxPoint& pos /*= wxDefaultPosition*/,
>
> const wxSize& size /*= wxDefaultSize*/,
>
> long style/* = 0*/ )
> : Preprocess_signalFilter_Baseline_WanderPanelWidgetUI(parent,
> id,pos,size,style)
> {
> m_Processor =
> Preprocess_signal::Filter_Baseline_WanderProcessor::New();
>
> SetName( "Filter_Baseline_Wander Panel Widget" );
>
>
> //Font
> wxFont plotFont = wxFont(8, wxDEFAULT, wxNORMAL, wxNORMAL, 0);
> //Initial axis settings
> m_xscale = new mpScaleX("x label",mpALIGN_BORDER_BOTTOM, false);
> m_yscale = new mpScaleY("y label",mpALIGN_LEFT, false);
> m_xscale->SetFont(plotFont);
> m_yscale->SetFont(plotFont);
> m_xscale->SetTicks(true);
> m_yscale->SetTicks(true);
> dataPlotLayer.clear();
> dataPlotLayer2.clear();
> m_RenderingTree = Core::RenderingTreeMITK::New();
>
>
> }
>
>
> What I have to do?
>
> Thanks again. Noelia.
>
> On Fri, 15 Apr 2011, Noelia MartÃn Hernández wrote:
>
>>
>> Perfect, it works.
>>
>> Now the another problem that I comment you. The inputs for my Paner
>> Widget are blsignalcollective consisting of one or more blsignal, and
>> it does the following:
>>
>> - If a charge a blsignalcollective consisting in a only blsignal and
>> execute my Widget works, but if later charge a blsignalCollective
>> consisting in a several blsignal in the Data Tree DataEntity the
>> output can not see anything, any data disappears. Although the working
>> area data are good and the widget works correctly.
>>
>> - If you charge a blsignalcollective first of several and later only
>> one of a disappearing also blsignal DataEntity data.
>>
>> What I have to do to fix it?
>>
>> Thank you very much.Noelia.
>>
>> On Wed, 13 Apr 2011, Xavier Planes wrote:
>>
>>> Hi Noelia,
>>>
>>> I'm sorry about your problem. There's a mistake in the code I sent
>>> you. In order to keep the rendering data and switch back to the
>>> initial working area, you need to store the rendering tree as member
>>> variable of your working area:
>>> In your class:
>>> Core::RenderingTreeMITK::Pointer m_RenderingTree;
>>> In your constructor:
>>> m_RenderingTree = Core::RenderingTreeMITK::New();
>>> In your enable function:
>>> if ( enable )
>>> {
>>>
>>> GetPluginTab()->GetRenderingTreeManager()->SetActiveTree(
>>> m_RenderingTree.GetPointer() );
>>> }
>>>
>>> The problem was that the rendering data is deleted when you switch
>>> back to the initial working area because a new rendering tree is
created.
>>> However, the ToolbarAppearance was holding a reference to the deleted
>>> rendering data and it crashed.
>>>
>>> Please let me know if this fixes your problem.
>>>
>>> Best,
>>> Xavi
>>>
>>>
>>> -----Original Message-----
>>> From: Noelia MartÃn Hernández [mailto:[email protected]]
>>> Sent: miércoles, 13 de abril de 2011 11:22
>>> To: Xavier Planes; [email protected]
>>> Subject: Re: Signal working area
>>>
>>>
>>> Hello Xavi.
>>>
>>> Not if you remember the multiple rendering problem I had on
>>> configurating the working area.
>>>
>>> I created the following enable function in both panelWidget:
>>>
>>> bool Preprocess_signal::Filter_Baseline_WanderPanelWidget::Enable(
>>> bool enable /*= true */ ) {
>>> bool bReturn =
>>> Preprocess_signalFilter_Baseline_WanderPanelWidgetUI::Enable( enable
>>> );
>>>
>>> // If this panel widget is selected -> Update the widget
>>> if ( enable )
>>> {
>>> UpdateWidget();
>>> Core::RenderingTreeMITK::Pointer tree =
>>> Core::RenderingTreeMITK::New();
>>> GetPluginTab()->GetRenderingTreeManager()->SetActiveTree(
>>> tree.GetPointer() );
>>> }
>>>
>>> return bReturn;
>>> }
>>>
>>> In the other obviusly with the name Preprocess_signalPanelWidget.
>>>
>>>
>>> If I put the enable in one of the panel widget and change to the
>>> other works perfectly, but I can not return to the initial panel
>>> widget as is logical, but it seems that I can not put the enable
>>> funcion in the two at a time to pass from one to another without
>>> problem. if I do that I get the error of screenshot. In the data tree
> when I check box jump the error.
>>>
>>> Thanks.
>>>
>>> On Mon, 11 Apr 2011, Xavier Planes wrote:
>>>
>>>> Hi Noelia,
>>>>
>>>> Don't worry about your English, I can understand it perfectly and
>>>> my
>>>
>>>> English is not very good neither.
>>>>
>>>> The parent class is the same as the base class. You can search
>>>> "base
>>>
>>>> class c++" in Google to get further information. For example:
>>>>
>>>> class Car: public vehicle
>>>> {
>>>> protected:
>>>> char type_of_fuel;
>>>> public:
>>>> Car();
>>>> };
>>>> The base class of Car is vehicle.
>>>>
>>>> To read more about C++ programming I recommend you to read the book
>>> "
>>>> The C+ + Programming Language (Bjarne Stroustrup)". You can find it
>>>> if you search "c++ stroustrup pdf" in Google. In this book you will
>>>> find the basic concepts of C++ language that will be very helpful
>>>> for
>>> developing in C++.
>>>>
>>>> Best,
>>>> Xavi
>>>>
>>>> -----Original Message-----
>>>> From: Noelia MartÃn Hernández [mailto:[email protected]]
>>>> Sent: lunes, 11 de abril de 2011 13:46
>>>> To: Xavier Planes
>>>> Subject: Re: [cvremod-developers] Signal working area
>>>>
>>>> Ok, I will try to answer in English.
>>>>
>>>> Let's see if I understand correctly, I have to add a new method to
>>>> my panelWidget including the code that I have indicated and stated
>>>> in the course. H
>>>>
>>>> But not what you mean with this:
>>>> / / Call the Enable function of the parent class
>>>> bool result = ...
>>>>
>>>> What is my parent class?
>>>>
>>>> Thanks and sorry for my horrible English.
>>>>
>>>> On Mon, 11 Apr 2011, Xavier Planes wrote:
>>>>
>>>>> Hi Noelia,
>>>>>
>>>>> I will answer you in English and forward this email to the GIMIAS
>>>>> mailing list, if it's ok with you. I think that your question is
>>>>> very interesting to share with the rest of GIMIAS developers.
>>>>>
>>>>> To create the function Enable on a working area you need to add
>>>>> the member function in your working area class
>>>>> (Filter_Baseline_WanderPanelWidget):
>>>>> bool Enable( bool enable = true );
>>>>>
>>>>> Inside this function you need to call the function Enable of the
>>>>> superclass and add this code:
>>>>> Void Preprocess_signal::Filter_Baseline_WanderPanelWidget::Enable(
>>>>> bool enable /*=true*/)
>>>>> {
>>>>> // Call the Enable function of the parent class
>>>>> bool result = ...
>>>>>
>>>>> If ( enable )
>>>>> {
>>>>> Core::RenderingTreeMITK::Pointer tree =
>>>>> Core::RenderingTreeMITK::New();
>>>>>
>>>>> GetPluginTab()->GetRenderingTreeManager()->SetActiveTree(
>>>>> tree.GetPointer() );
>>>>> }
>>>>>
>>>>> return result;
>>>>> }
>>>>>
>>>>> Best,
>>>>> Xavi
>>>>>
>>>>> -----Original Message-----
>>>>> From: Noelia MartÃn Hernández
>>>>> [mailto:[email protected]]
>>>>> Sent: lunes, 11 de abril de 2011 11:19
>>>>> To: Xavier Planes
>>>>> Cc: [email protected]
>>>>> Subject: RE: [cvremod-developers] Support Gimias
>>>>>
>>>>> Vale, creo que no se cual es la funcion enable de mi working area,
>>>>> inclui el codigo que me indicaste en el panelwidget en el metodo de
>>>>> OnModifiedOutput que es donde tengo puesta la configuracion de mi
>>>>> Working Area del siguiente modo:
>>>>>
>>>>> void
>>>>> Preprocess_signal::Filter_Baseline_WanderPanelWidget::OnModifiedOut
>>>>> pu
>>>>> t
>>>>> DataEn
>>>>> tity()
>>>>> {
>>>>> try{
>>>>>
>>>>> if (m_Processor->GetOutputDataEntity(0).IsNotNull() )
>>>>> {
>>>>>
>>>>> Core::RenderingTreeMITK::Pointer tree =
>>>>> Core::RenderingTreeMITK::New();
>>>>>
>>>>> GetPluginTab()->GetRenderingTreeManager()->SetActiveTree(
>>>>> tree.GetPointer() );
>>>>>
>>>>> Y me da el error que te envio en la screenshot, asique no se si es
>>>>> aqui donde tengo que ponerlo o como...
>>>>>
>>>>> Gracias!
>>>>>
>>>>> On Fri, 8 Apr 2011, Xavier Planes wrote:
>>>>>
>>>>>> Hola Noelia,
>>>>>>
>>>>>> Para los dos problemas que me comentas, creo que hemos tenido un
>>>>>> problema similar en otro plugin de señales. El problema consistía
>>>>>> en que no había ningún rendering tree activo. Chiara puso la
>>>>>> información necesaria en esta página:
>>>>>>
>>>>>> http://sourceforge.net/apps/mediawiki/gimias/index.php?title=HowTo
>>>>>> Cr e a teNewW
>>>>>> orkingArea#Another_Example_:_WorkingArea_with_plotWindow
>>>>>>
>>>>>> Este es el código que hay que poner en la función Enable de tu
>>>>>> working área:
>>>>>> Core::RenderingTreeMITK::Pointer tree =
>>>>>> Core::RenderingTreeMITK::New();
>>>>>> GetPluginTab()->GetRenderingTreeManager()->SetActiveTree(
>>>>>> tree.GetPointer() );
>>>>>>
>>>>>> Si la working area no tiene ningún rendering tree activo, no se
>>>>> podrá
>>>>>> crear la "rendering data" de una señal. Este código solamente crea
>>>>>> una rendering tree vacío para guardar los "rendering data" de las
>>>> señales.
>>>>>>
>>>>>> Para obtener el nombre de las señales, yo probaría de imprimir
>>>>>> por pantalla el nombre de la señal de input. La función
>>>>>> blSignalCollective::Copy( ) sólo copia las variables miembro de
>>>>>> una instancia a otra:
>>>>>> std::cout << prep_signal->GetOutput()
>>>>>>
>>>>>> Gracias!
>>>>>> Xavi
>>>>>>
>>>>>> -----Original Message-----
>>>>>> From: [email protected]
>>>>>> [mailto:[email protected]] On Behalf Of
>>>>>> Noelia MartÃn Hernández
>>>>>> Sent: jueves, 07 de abril de 2011 16:57
>>>>>> To: Luigi Carotenuto
>>>>>> Cc: [email protected]
>>>>>> Subject: RE: [cvremod-developers] Support Gimias
>>>>>>
>>>>>> Hola, pues perfecto, empleare esta herramienta para comentar mis
> dudas.
>>>>>>
>>>>>> Tengo problemas a la hora de configurar el Working Area de mis
>>>>>> Panel
>>>>> Widget.
>>>>>>
>>>>>> Os comento tengo un plugin llamado Preprocess_signal que tiene dos
>>>>>> panel
>>>>>> Widget: Preprocess_signal y Filter_Baseline_Wander, en ambos
>>>>>> realizo una configuracin del Working Area para mostrar varias
>>>>>> seales en los mismo ejes y funciona segun las condiciones.
>>>>>>
>>>>>> Tengo dos problemas:
>>>>>>
>>>>>> 1.- Si cargo el Working Area del Panel Widget Preprocess_signal y
>>>>>> luego cargo con View/Working Area/
>>>>>> Filter_Baseline_WanderPanelWidget funcionan ambos sin problemas,
>>>>>> pero si una vez hecho esto, intento volver a cargar el primer
>>>>>> Widget, el de Preprocess_signal o partiendo del Baseline_Wander
>>>>>> voy al Preprocess_signal parece que desaparecen los datos del Data
> Tree.
>>>>>>
>>>>>> Estan los dataEntity, pero sin seleccionar y si intento cargarlos
>>>>>> o seleccionarlos me salta un error de lectura, envio una
>>>>>> screenshot del error que me salta. Creo que es algun error de
>>>>>> multirenderizacion o algo asi pero no se como solucionarlo, y para
>>>>>> el caso de Preprocess_signal no me pasa esto.
>>>>>>
>>>>>> 2.- Las entradas para mis Panel Widget son blsignalcollective
>>>>>> formadas por una o varias blsignal, y me ocurre lo siguiente:
>>>>>>
>>>>>> - Si cargo una blsignalcollective de una unica blsignal y luego
>>>>>> una de varias funcionan ambas bien, pero al intentar volver a
>>>>>> cargar una blsignalcollective de una unica blsignal en el
>>>>>> DataEntity del Data Tree de salida no se ve nada, desaparece
>>>>>> cualquier dato. Aunque en el working area se ven los datos bien.
>>>>>> Tambien mando una screenshot de como
>>>>> queda.
>>>>>>
>>>>>> - Si cargo primero una blsignalcollective de varias y luego una
>>>>>> de una unica blsignal tambien funcionan las dos, pero al intentar
>>>>>> cargar la de varias desaparecen los datos del DataEntity, como antes.
>>>>>>
>>>>>> Agradeceria que me informaseis como puedo solucionarlo.
>>>>>>
>>>>>> Gracias. Noelia.
>>>>>>
>>>>>>
>>>>>> On Thu, 7 Apr 2011, Luigi Carotenuto wrote:
>>>>>>
>>>>>>> Hola Noelia,
>>>>>>> La lista de correo es la mejor manera para contactar con nosotros.
>>>>>>> Estamos
>>>>>> intentando distribuir el soporte por temas asm que no haya un
>>>>>> encargado para todo si no una persona para cada tema y/o usuario.
>>>>>> Entonces, si envmas tus dudas a la lista intentaremos
>>>>>> distribuirlas entre los que puedan ayudarte mas y ellos
>>>>>> contestaran directamente a la lista o te contactaran personalmente
>>>>>> si las dudas no son tan
>>>> generales.
>>>>>>>
>>>>>>> Gracias y saludos,
>>>>>>> Luigi
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: [email protected]
>>>>>>> [mailto:[email protected]] On Behalf Of
>>>>>>> [email protected]
>>>>>>> Sent: jueves, 07 de abril de 2011 12:31
>>>>>>> To: [email protected]
>>>>>>> Subject: [cvremod-developers] Support Gimias
>>>>>>>
>>>>>>>
>>>>>>> Hola.
>>>>>>>
>>>>>>> Me gustaria saber quien es el nuevo encargado del Support de
>>>>>>> Gimias,
>>>>>>
>>>>>>> y como puedo contactar con el o ella, ya sea por la lista de
>>>>>>> correo, correo personal o por el skype.
>>>>>>>
>>>>>>> Gracias y un saludo!
>>>>>>> _______________________________________________
>>>>>>> cvremod-developers mailing list
>>>>>>> [email protected]
>>>>>>> http://cilab.upf.edu:81/mailman/listinfo/cvremod-developers
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> cvremod-developers mailing list
>>>>>>> [email protected]
>>>>>>> http://cilab.upf.edu:81/mailman/listinfo/cvremod-developers
>>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> cvremod-developers mailing list
>>>>>> [email protected]
>>>>>> http://cilab.upf.edu:81/mailman/listinfo/cvremod-developers
>>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> cvremod-developers mailing list
>>>>> [email protected]
>>>>> http://cilab.upf.edu:81/mailman/listinfo/cvremod-developers
>>>>>
>>>>
>>>>
>>>
>>
>
>
------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network
management toolset available today. Delivers lowest initial
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Gimias-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gimias-developers