@@ -55,7 +55,10 @@ def _build_form(self):
5555 label = field ["label" ]
5656 row , widget = self ._create_field (label , field )
5757 if widget :
58- self .fields [label ] = widget
58+ self .fields [field .get ("id" )] = {
59+ "widget" : widget ,
60+ "config" : field
61+ }
5962 self .form_container .append (row )
6063 elif row :
6164 self .form_container .append (row )
@@ -111,11 +114,11 @@ def _create_field(self, label_text: str, field: dict):
111114 elif field_type == "label" :
112115 return row , None
113116 elif field_type == "picture" :
114- widget = Gtk .Picture .new_for_resource (field .get ("uri" ))
117+ file = Gio .File .new_for_uri (field .get ("uri" ))
118+ widget = Gtk .Picture ()
119+ widget .set_file (file )
115120 widget .set_halign (3 )
116121 widget .set_valign (3 )
117- widget .set_hexpand (True )
118- widget .set_vexpand (True )
119122 widget .can_shrink = True
120123 width = field .get ("width" )
121124 height = field .get ("height" )
@@ -124,6 +127,7 @@ def _create_field(self, label_text: str, field: dict):
124127 widget .set_margin_top (10 )
125128 widget .set_margin_bottom (10 )
126129 row .append (widget )
130+ return row , None
127131 else :
128132 return None , None
129133
@@ -147,25 +151,26 @@ def on_submit_clicked(self, *_):
147151 def _collect_data (self ) -> dict :
148152 data = {}
149153
150- for label , widget in self .fields .items ():
154+ for field_id , field_dict in self .fields .items ():
155+ widget = field_dict ["widget" ]
151156 if isinstance (widget , Gtk .Entry ):
152- data [label ] = widget .get_text ()
157+ data [field_id ] = widget .get_text ()
153158 elif isinstance (widget , Gtk .TextView ):
154159 text_buffer = widget .get_buffer ()
155160 start_iter = text_buffer .get_start_iter ()
156161 end_iter = text_buffer .get_end_iter ()
157- data [label ] = text_buffer .get_text (start_iter , end_iter , True )
162+ data [field_id ] = text_buffer .get_text (start_iter , end_iter , True )
158163 elif isinstance (widget , list ):
159164 for indv_widget in widget :
160165 active = indv_widget .get_active ()
161166 if active :
162- data [label ] = indv_widget .get_label ()
167+ data [field_id ] = indv_widget .get_label ()
163168 elif isinstance (widget , Gtk .CheckButton ):
164169 active = widget .get_active ()
165- data [label ] = True if active else False
170+ data [field_id ] = True if active else False
166171
167172 elif isinstance (widget , Gtk .SpinButton ):
168- data [label ] = widget .get_value_as_int ()
173+ data [field_id ] = widget .get_value_as_int ()
169174
170175 return data
171176
@@ -187,7 +192,8 @@ def _append_to_csv(self, data: dict):
187192 writer .writerow (data )
188193
189194 def _reset_form (self ):
190- for widget in self .fields .values ():
195+ for fields_dict in self .fields .values ():
196+ widget = fields_dict ["widget" ]
191197 if isinstance (widget , Gtk .Entry ):
192198 widget .set_text ("" )
193199 elif isinstance (widget , Gtk .TextView ):
0 commit comments