Problem with Arrays of dialogs



Hi to everyone,

I have a class where I want to store a list of Dialogs; This List is dynamical.
so I've declared an:
            std::vector <Gtk::Dialog> ;
Here I've faced my first problem

when i try to do:

    myList.push_back (temp_dialog);
 
the compiler output is:
error C2248: 'Gtk::Dialog::Dialog' : cannot access private member declared in class 'Gtk::Dialog'

while compiling class template member function 'void std::vector<_Ty>::_Insert_n(std::_Vector_const_iterator<_Ty,_Alloc>,__w64 unsigned int,const _Ty &)'
        with (...........)

I tried with assign, with resize and many others methods of vector (also tried std::list) and all do the same error.

Second problem:
Because I couldn't use std::vector I created a array which I would allocate dynamically:

Declaration:      Gtk::Dialog* mPopUpDialog;

void
MyClass::LaunchPopUps(bool launch)
{
   
1- int numberOfPopUps = mpSystem->GetNumberOfItems();
   
2-    if (launch)
3-    {
4-        if (mActualpopUpListSize != 0)
5-        {
6-            LaunchVariablePopUps(false);
7-        }

8-        mActualpopUpListSize = numberOfPopUps;

9-        mPopUpDialog = new Gtk::Dialog[numberOfPopUps];
       
10-        std::map<Glib::ustring,Variable> variableMap;
11-       std::map<Glib::ustring,Variable>::iterator variableIT;
12-        variableMap = mpSystem->GetVariablesList();
       
13-       int i = 0;       
14-        for (variableIT = variableMap.begin(); variableIT != variableMap.end(); ++variableIT)
15-       {
16-            mPopUpsWindow.push_back (tempWindow);
17-            //mPopUpDialog[i].set_parent(*pParentWindow);
18-            mPopUpDialog[i].set_title(variableIT->second.GetName());
19-            mPopUpDialog[i].show_now();
20-            ++i;
21-        }
       
22-    }
23-    else
24-   {
25-        for (int i = 0; i < mActualpopUpListSize; i++)
26-        {
27-            mPopUpDialog[i].hide();        
28-        }

29-        mActualpopUpListSize = 0;
30-        delete[] mPopUpDialog;
31-    }


At line 9  I allocate memory for the pop up dialogs that I need; Here OK;
At line 19 I call show() instead of run() to allow the main window interaction with the open dialogs. Here OK;

When I want to Hide the dialogs the program crashes when it reaches line 30. If I comment it the app runs as I want, it shows and hides well, however it will allocate memory without freeing it.


Problem 3:
I tried to use Gtk::manage at line 9: mPopUpDialog = Gtk::manage(new Gtk::Dialog[numberOfPopUps]); and comment line 30. But it does not solve the problem; The app does not crash but at debug console it appears a gtk error message that says:
 WARNING **: gtkm: Atempt to call Gtk::manage() on a Gtk::Window, but a Gtk::Window has no parent container to manage its lifetime;


Can anyone figure out how to crate a dynamical array of Gtk::Dialogs?


Thanks in advance,
Filipe Apóstolo



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]