@@ -164,7 +164,7 @@ def __init__(
164164 self ._max_columns = columns
165165
166166 def get_state (self ):
167- return "" .join (map ( self ._send_row , self ._rows ))
167+ return "" .join ([ self ._send_row ( indx , row ) for indx , row in enumerate ( self ._rows )] )
168168
169169 @classmethod
170170 def from_cfg_dict (cls , cfg_dict : dict , column_no = 1 ):
@@ -194,23 +194,25 @@ def from_cfg_dict(cls, cfg_dict: dict, column_no=1):
194194 tmp_cls .parent_id = cfg_dict ["parentID" ]
195195 return tmp_cls
196196
197- def _send_row (self , table_row : TableRow ) -> str :
197+ def _send_row (self , row_number : int , table_row : TableRow | None ) -> str :
198198 header_str = self ._control_hdr_str
199+ if table_row is None :
200+ return f"{ header_str } { row_number } \n "
199201 columns = '\t ' .join (map (str , table_row .columns [:self ._max_columns - 1 ]))
200202 if table_row .units is not None :
201203 row_label = table_row .label
202204 if table_row .label is None :
203205 row_label = ""
204- return f"{ header_str } { len ( self . _rows ) } \t { columns } \t { row_label } \t { table_row .units } \n "
206+ return f"{ header_str } { row_number } \t { columns } \t { row_label } \t { table_row .units } \n "
205207 else :
206208 if table_row .label is None :
207- return f"{ header_str } { len ( self . _rows ) } \t { columns } \n "
208- return f"{ header_str } { len ( self . _rows ) } \t { columns } \t { row_label } \n "
209+ return f"{ header_str } { row_number } \t { columns } \n "
210+ return f"{ header_str } { row_number } \t { columns } \t { row_label } \n "
209211
210212 def add_table_row (self , table_row : TableRow ):
211213 """Add a row to the table and send it"""
212214 self ._rows .append (table_row )
213- self .state_str = self ._send_row (table_row )
215+ self .state_str = self ._send_row (len ( self . _rows ) - 1 , table_row )
214216
215217 def update_table_row (self , table_row : TableRow , row_number : int ) -> int :
216218 """Update the row at row_number. If it doesn't exist then append it.
@@ -229,7 +231,27 @@ def update_table_row(self, table_row: TableRow, row_number: int) -> int:
229231 """
230232 if row_number < len (self ._rows ):
231233 self ._rows [row_number ] = table_row
234+ self .state_str = self ._send_row (row_number , table_row )
232235 return row_number
233236 self ._rows .append (table_row )
234- self .state_str = self ._send_row (table_row )
235- return len (self ._rows )
237+ self .state_str = self ._send_row (len (self ._rows ) - 1 , table_row )
238+ return len (self ._rows - 1 )
239+
240+ def clear_row (self , row_number : int ):
241+ """Clears the row at row_numer
242+
243+ Parameters
244+ ----------
245+ row_number : int
246+ The row to clear
247+ """
248+ self ._rows [row_number ] = None
249+ header_str = self ._control_hdr_str + f"{ row_number } \n "
250+ self .state_str = header_str
251+
252+ def clear_table (self ):
253+ """Clears the table
254+ """
255+ self ._rows = []
256+ header_str = self ._control_hdr_str + '\n '
257+ self .state_str = header_str
0 commit comments