diff --git a/src/petab_gui/controllers/table_controllers.py b/src/petab_gui/controllers/table_controllers.py index 0c99b0c..bf0b69f 100644 --- a/src/petab_gui/controllers/table_controllers.py +++ b/src/petab_gui/controllers/table_controllers.py @@ -1315,3 +1315,61 @@ def __init__( undo_stack=undo_stack, mother_controller=mother_controller, ) + + def setup_completers(self): + """Set completers for the visualization table.""" + table_view = self.view.table_view + # plotTypeSimulation + index = self.model.return_column_index("plotTypeSimulation") + if index and index > -1: + self.completers["plotTypeSimulation"] = ComboBoxDelegate( + ["LinePlot", "BarPlot", "ScatterPlot"] + ) + table_view.setItemDelegateForColumn( + index, self.completers["plotTypeSimulation"] + ) + # plotTypeData + index = self.model.return_column_index("plotTypeData") + if index and index > -1: + self.completers["plotTypeData"] = ComboBoxDelegate( + ["MeanAndSD", "MeanAndSEM", "replicate", "provided"] + ) + table_view.setItemDelegateForColumn( + index, self.completers["plotTypeData"] + ) + # datasetId + index = self.model.return_column_index("datasetId") + if index and index > -1: + self.completers["datasetId"] = ColumnSuggestionDelegate( + self.mother_controller.model.measurement, "datasetId" + ) + table_view.setItemDelegateForColumn( + index, self.completers["datasetId"] + ) + # yValues + index = self.model.return_column_index("yValues") + if index and index > -1: + self.completers["yValues"] = ColumnSuggestionDelegate( + self.mother_controller.model.observable, "observableId" + ) + table_view.setItemDelegateForColumn( + index, self.completers["yValues"] + ) + # xScale + index = self.model.return_column_index("xScale") + if index and index > -1: + self.completers["xScale"] = ComboBoxDelegate( + ["lin", "log", "log10", "order"] + ) + table_view.setItemDelegateForColumn( + index, self.completers["xScale"] + ) + # yScale + index = self.model.return_column_index("yScale") + if index and index > -1: + self.completers["yScale"] = ComboBoxDelegate( + ["lin", "log", "log10", "order"] + ) + table_view.setItemDelegateForColumn( + index, self.completers["yScale"] + ) diff --git a/src/petab_gui/models/pandas_table_model.py b/src/petab_gui/models/pandas_table_model.py index 4ba208f..295f069 100644 --- a/src/petab_gui/models/pandas_table_model.py +++ b/src/petab_gui/models/pandas_table_model.py @@ -670,7 +670,9 @@ def return_column_index(self, column_name): Returns: int: The view column index for the given column name, or -1 """ - pass + if column_name in self._data_frame.columns: + return self._data_frame.columns.get_loc(column_name) + return -1 def unique_values(self, column_name): """Return a list of unique values in a specified column. @@ -1115,12 +1117,6 @@ def get_default_values(self, index, changed: dict | None = None): else: command.redo() - def return_column_index(self, column_name): - """Return the index of a column.""" - if column_name in self._data_frame.columns: - return self._data_frame.columns.get_loc(column_name) - return -1 - class ObservableModel(IndexedPandasTableModel): """Table model for the observable data."""