Index: guiframe/data_manager.py
===================================================================
--- guiframe/data_manager.py	(revision c5e84fb11578e2140d320b7ab4a7aec024c02ed2)
+++ guiframe/data_manager.py	(revision 584c4c42de7f561146b2dab9184b786cc646381a)
@@ -38,5 +38,5 @@
         receive a list of 
         """
-        self._selected_data = []
+        self._selected_data = {}
         for data in data_list:
             if data.id  in self.stored_data:
@@ -45,7 +45,8 @@
                 logging.info(msg)
             data_state = DataState(data)
-            self._selected_data.append(data_state)
-            self.stored_data[id] = data_state
-            
+            self._selected_data[data.id] = data_state
+            self.stored_data[data.id] = data_state
+        print "datalist", self._selected_data    
+        
     def set_auto_plot(self, flag=False):
         """
@@ -71,8 +72,8 @@
         get a list of data given a list of id
         """
-        self._selected_data = []
+        self._selected_data = {}
         for id in id_list:
             if id in self.stored_data:
-                self._selected_data.append(self.stored_data[id])
+                self._selected_data[id] = self.stored_data[id]
         return self._selected_data
     
@@ -83,8 +84,7 @@
         for id in id_list:
             if id in self.stored_data:
-                data = self.stored_data[id]
-                if data in self._selected_data:
-                    self._selected_data.remove(data)
                 del self.stored_data[id]
+            if id  in self._selected_data:
+                del self._selected_data[id]
     
     def get_by_name(self, name_list=None):
@@ -92,9 +92,9 @@
         return a list of data given a list of data names
         """
-        self._selected_data = []
+        self._selected_data = {}
         for selected_name in name_list:
-            for data in self.stored_data.values():
-                if data.name == selected_name:
-                    self._selected_data.append(data)
+            for id, data_state in self.stored_data.iteritems():
+                if data_state.data.name == selected_name:
+                    self._selected_data[id] = data_state
         return self._selected_data
     
@@ -104,10 +104,8 @@
         """
         for selected_name in name_list:
-            for data in self.stored_data.values():
-                if data.name == selected_name:
-                    if data in self._selected_data:
-                        self._selected_data.remove(data)
-                    if data.id in self.stored_data:
-                        del self.stored_data[data.id]
+            for id, data_state in self.stored_data.iteritems():
+                if data_state.data.name == selected_name:
+                    del self._selected_data[id]
+                    del self.stored_data[data.id]
 
     def get_selected_data(self):
@@ -121,5 +119,5 @@
         return list of all available data
         """
-        return self.stored_data.values()
+        return self.stored_data
     
 
Index: guiframe/data_panel.py
===================================================================
--- guiframe/data_panel.py	(revision c5e84fb11578e2140d320b7ab4a7aec024c02ed2)
+++ guiframe/data_panel.py	(revision 584c4c42de7f561146b2dab9184b786cc646381a)
@@ -296,4 +296,5 @@
         
         """
+        print "list", list
         if not list:
             return
@@ -306,5 +307,4 @@
             else:
                 data_name = data.name
-        
             data_class = data.__class__.__name__
             path = dstate.get_path() 
@@ -322,5 +322,5 @@
                         if theory is not None:
                             av_theory_child =self.tree_ctrl.AppendItem(theory_child,
-                                                theory.name,ct_type=1)
+                                                theory.name,ct_type=1, data=theory.id)
                             self.list_cb_theory.append(av_theory_child)
                             av_theory_child_info =self.tree_ctrl.AppendItem(av_theory_child,
@@ -333,5 +333,5 @@
             if data_child is None:
                 data_child =self.tree_ctrl.InsertItem(self.tree_ctrl.root,0,
-                                                   data_name,ct_type=1)
+                                                   data_name,ct_type=1, data=data.id)
                 cb_data = self.tree_ctrl.GetFirstChild(self.tree_ctrl.root) 
                 item, id = cb_data
@@ -364,16 +364,11 @@
         """
         data_to_plot = []
-        #num = self.tree_ctrl.GetCount()
-        #print num, self.tree_ctrl
         for item in self.list_cb_data:
-            print "set_data_helper",self.tree_ctrl.GetItemText(item), item.IsChecked()
             if item.IsChecked():
-               data_to_plot.append(self.tree_ctrl.GetItemText(item))
-        
-        theory_to_plot =[]
+               data_to_plot.append(self.tree_ctrl.GetItemPyData(item))
+        theory_to_plot = []
         for item in self.list_cb_theory:
             if item.IsChecked():
-               theory_to_plot.append(self.tree_ctrl.GetItemText(item))
-        
+               theory_to_plot.append(self.tree_ctrl.GetItemPyData(item))
         return data_to_plot, theory_to_plot
     
@@ -419,10 +414,7 @@
         """
         data_to_plot, theory_to_plot = self.set_data_helper()
-        #print "data_to_plot",data_to_plot
-        current_perspective = self.get_active_perspective()
-        
-        if self.manager is not None:
-            self.parent.post_data_helper(data_name=data_to_plot,
-                                 perspective=current_perspective, plot=plot)
+      
+        if self.parent is not None:
+            self.parent.get_data_from_panel(data_id=data_to_plot, plot=plot)
 
 
@@ -494,8 +486,10 @@
         data = Data1D()
         data.name = "data1"
+        data.id = 1
         #data.append_process()
         #process = data.process[len(data.process)-1]
         #process.data = "07/01/2010"
         theory = Theory1D()
+        theory.id = 34
         theory.pseudo_name = "theory1"
         path = "path1"
@@ -505,5 +499,7 @@
         data = Data1D()
         data.name = "data2"
+        data.id = 76
         theory = Theory1D()
+        theory.id = 78
         theory.name = "CoreShell 07/24/25"
         theory.pseudo_name = "CoreShell"
@@ -512,8 +508,10 @@
         data_list['2']=set_data_state(data, path,theory, state)
         data = Data1D()
+        data.id = 3
         data.name = "data2"
         theory = Theory1D()
         theory.name = "CoreShell"
         theory.pseudo_name = "CoreShell"
+        theory.id = 4
         #theory.append_process()
         #process = theory.process[len(theory.process)-1]
@@ -527,4 +525,5 @@
         data = Data2D()
         data.name = "data3"
+        data.id = 5
         #data.append_process()
         #process = data.process[len(data.process)-1]
@@ -536,4 +535,5 @@
         dstate= set_data_state(data, path,theory, state)
         theory = Theory1D()
+        theory.id = 6
         theory.pseudo_name = "Sphere"
         dstate.set_theory(theory)
Index: guiframe/data_state.py
===================================================================
--- guiframe/data_state.py	(revision 3feed3eac4f5473379f0e4e7c091064db6f71965)
+++ guiframe/data_state.py	(revision 584c4c42de7f561146b2dab9184b786cc646381a)
@@ -20,20 +20,20 @@
         """
         self.parent = parent
-        self._data = data
-        self._name = ""
-        self._path = None
-        self._theory_list = []
-        self._state_list = []
-        self._message = ""
+        self.data = data
+        self.name = ""
+        self.path = None
+        self.theory_list = []
+        self.state_list = []
+        self.message = ""
         
     def set_name(self, name):
-        self._name = name
+        self.name = name
     def get_name(self):
-        return self._name
+        return self.name
     def set_data(self, data):
-        self._data = data
+        self.data = data
         
     def get_data(self):
-        return self._data
+        return self.data
     
     def set_path(self, path):
@@ -41,5 +41,5 @@
         Set the path of the loaded data
         """
-        self._path = path
+        self.path = path
         
     def get_path(self):
@@ -47,22 +47,22 @@
         return the path of the loaded data
         """
-        return self._path
+        return self.path
     
     def set_theory(self, theory):
         """
         """
-        self._theory_list.append(theory)
+        self.theory_list.append(theory)
         
     def get_theory(self):
-        return self._theory_list
+        return self.theory_list
     
     def set_state(self, state):
         """
         """
-        #self._theory_list.append(state)
+        #self.theory_list.append(state)
         return
         
     def get_state(self):
-        return self._state_list
+        return self.state_list
     
     def get_message(self):
@@ -70,5 +70,5 @@
         return message
         """
-        return self._message
+        return self.message
     
   
Index: guiframe/gui_manager.py
===================================================================
--- guiframe/gui_manager.py	(revision c5e84fb11578e2140d320b7ab4a7aec024c02ed2)
+++ guiframe/gui_manager.py	(revision 584c4c42de7f561146b2dab9184b786cc646381a)
@@ -1041,9 +1041,19 @@
                 self.set_data(data_list)
                 
-    def set_data_from_panel(self, data_id):
+    def get_data_from_panel(self, data_id, plot=False):
         """
         receive a list of data key retreive the data from data manager and set 
         then to the current perspective
         """
+        data_dict = self._data_manager.get_by_id(data_id)
+        data_list = []
+        for data_state in data_dict.values():
+            data_list.append(data_state.data)
+        if plot:
+            self.plot_data(data_list)
+        else:
+            #sent data to active application
+            self.set_data(data_list=data_list)
+       
         
     def set_data(self, data_list):
