99
1010class DatasetsSelectorDialog (ObjectsDialog ):
1111
12- def __init__ (self , parent_win = None ):
13- ObjectsDialog .__init__ (self ,parent_win = parent_win , title = 'Datasets selector' ,)
14-
15- self ._datasets = ControlCheckBoxList ('Datasets filter' )
16-
17- self .formset = [('_videos' ,'||' ,'_objects' ,'||' ,'_datasets' )]
18-
19- self ._objects .changed_event = self .__update_datasets
20- self ._datasets .changed_event = self .__datasets_changed_event
21-
22- #for video in conf.PROJECT.videos: self += video
23-
24- #####################################################################
25- ### PRIVATE FUNCTIONS ###############################################
26- #####################################################################
27-
28- def __datasets_changed_event (self ): self .datasets_changed_event ()
29-
30- #####################################################################
31- ### EVENTS ##########################################################
32- #####################################################################
33-
34- def datasets_changed_event (self ): pass
35-
36- #####################################################################
37- ### FUNCTIONS #######################################################
38- #####################################################################
39-
40- # used to update automaticly the name of the videos, objects and paths
41- def refresh (self ):
42- ObjectsDialog .refresh (self )
43- self ._datasets .refresh ()
44-
45- def clear (self ):
46- ObjectsDialog .clear (self )
47- self ._datasets .clear ()
48-
49- def __add__ (self , other ):
50- ObjectsDialog .__add__ (self , other )
51- if isinstance (other , Dataset ): self .__update_datasets ()
52- return self
53-
54-
55- def __sub__ (self , other ):
56- ObjectsDialog .__sub__ (self , other )
57- if isinstance (other , Dataset ): self .__update_datasets ()
58- return self
59-
60-
61- def update_objects (self ):
62- """
63- Update the objects in the list
64- """
65- ObjectsDialog .update_objects (self )
66- self .__update_datasets ()
67-
68-
69-
70- def __update_datasets (self ):
71- """
72- Update the paths in the list
73- """
74- datasets = [elem for elem , checked in self ._datasets .items ]
75-
76- datasets_list = []
77- for obj , checked in self ._objects .items :
78- if not isinstance (obj ,Object2D ): continue
79-
80- for dataset in obj .datasets :
81- if hasattr (self , '_datasets_filter' ) and not self ._datasets_filter (dataset ): continue
82-
83- if dataset not in datasets_list : datasets_list .append (dataset )
84-
85- if not checked and dataset in datasets :
86- self ._datasets -= dataset
87- elif checked and dataset not in datasets :
88- self ._datasets += (dataset , False )
89-
90- for dataset in datasets :
91- if dataset not in datasets_list : self ._datasets -= dataset
92-
93-
94-
95-
96-
97- #####################################################################
98- ### PROPERTIES ######################################################
99- #####################################################################
100-
101- @property
102- def datasets (self ): return self ._datasets .value
103-
104- @property
105- def selected_data (self ):
106- videos = self ._videos .value
107- datasets = self ._datasets .value
108-
109- res = []
110- for video in videos :
111- datasets_list = []
112- for obj in video .objects2D :
113- for dataset in obj .datasets :
114- if dataset in datasets :
115- datasets_list .append (dataset )
116- res .append ( (video , datasets_list ) )
117- return res
118-
119- @property
120- def datasets_filter (self ): return self ._datasets_filter
121- @datasets_filter .setter
122- def datasets_filter (self , value ): self ._datasets_filter = value
123-
124-
125-
126-
127- if __name__ == "__main__" : pyforms .startApp ( DatasetsSelectorDialog )
12+ def __init__ (self , parent_win = None ):
13+ ObjectsDialog .__init__ (self ,parent_win = parent_win , title = 'Datasets selector' ,)
14+
15+ self ._datasets = ControlCheckBoxList ('Datasets filter' )
16+
17+ self .formset = [('_videos' ,'||' ,'_objects' ,'||' ,'_datasets' )]
18+
19+ self ._objects .changed_event = self .__update_datasets
20+ self ._datasets .changed_event = self .__datasets_changed_event
21+
22+ #for video in conf.PROJECT.videos: self += video
23+
24+ #####################################################################
25+ ### PRIVATE FUNCTIONS ###############################################
26+ #####################################################################
27+
28+ def __datasets_changed_event (self ): self .datasets_changed_event ()
29+
30+ #####################################################################
31+ ### EVENTS ##########################################################
32+ #####################################################################
33+
34+ def datasets_changed_event (self ): pass
35+
36+ #####################################################################
37+ ### FUNCTIONS #######################################################
38+ #####################################################################
39+
40+ """
41+ def save_form(self, data={}, path=None):
42+ allparams = self.controls
43+
44+ if hasattr(self, 'load_order'):
45+ for name in self.load_order:
46+ param = allparams[name]
47+ data[name] = {}
48+ param.save_form(data[name])
49+ else:
50+ for name, param in allparams.items():
51+ data[name] = {}
52+ param.save_form(data[name])
53+ return data
54+
55+ def load_form(self, data, path=None):
56+ allparams = self.controls
57+
58+ if hasattr(self, 'load_order'):
59+ for name in self.load_order:
60+ param = allparams[name]
61+ if name in data:
62+ param.load_form(data[name])
63+ else:
64+ for name, param in allparams.items():
65+ if name in data:
66+ param.load_form(data[name])
67+ """
68+
69+ # used to update automaticly the name of the videos, objects and paths
70+ def refresh (self ):
71+ ObjectsDialog .refresh (self )
72+ self ._datasets .refresh ()
73+
74+ def clear (self ):
75+ ObjectsDialog .clear (self )
76+ self ._datasets .clear ()
77+
78+ def __add__ (self , other ):
79+ ObjectsDialog .__add__ (self , other )
80+ if isinstance (other , Dataset ): self .__update_datasets ()
81+ return self
82+
83+
84+ def __sub__ (self , other ):
85+ ObjectsDialog .__sub__ (self , other )
86+ if isinstance (other , Dataset ): self .__update_datasets ()
87+ return self
88+
89+
90+ def update_objects (self ):
91+ """
92+ Update the objects in the list
93+ """
94+ ObjectsDialog .update_objects (self )
95+ self .__update_datasets ()
96+
97+
98+
99+ def __update_datasets (self ):
100+ """
101+ Update the paths in the list
102+ """
103+ datasets = [elem for elem , checked in self ._datasets .items ]
104+
105+ datasets_list = []
106+ for obj , checked in self ._objects .items :
107+ if not isinstance (obj ,Object2D ): continue
108+
109+ for dataset in obj .datasets :
110+ if hasattr (self , '_datasets_filter' ) and not self ._datasets_filter (dataset ): continue
111+
112+ if dataset not in datasets_list : datasets_list .append (dataset )
113+
114+ if not checked and dataset in datasets :
115+ self ._datasets -= dataset
116+ elif checked and dataset not in datasets :
117+ self ._datasets += (dataset , False )
118+
119+ for dataset in datasets :
120+ if dataset not in datasets_list : self ._datasets -= dataset
121+
122+
123+
124+
125+
126+ #####################################################################
127+ ### PROPERTIES ######################################################
128+ #####################################################################
129+
130+ @property
131+ def datasets (self ): return self ._datasets .value
132+
133+ @property
134+ def selected_data (self ):
135+ videos = self ._videos .value
136+ datasets = self ._datasets .value
137+
138+ res = []
139+ for video in videos :
140+ datasets_list = []
141+ for obj in video .objects2D :
142+ for dataset in obj .datasets :
143+ if dataset in datasets :
144+ datasets_list .append (dataset )
145+ res .append ( (video , datasets_list ) )
146+ return res
147+
148+ @property
149+ def datasets_filter (self ): return self ._datasets_filter
150+ @datasets_filter .setter
151+ def datasets_filter (self , value ): self ._datasets_filter = value
152+
153+
154+
155+
156+ if __name__ == "__main__" : pyforms .startApp ( DatasetsSelectorDialog )
0 commit comments