Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions src/petab_gui/controllers/mother_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,15 @@ def setup_actions(self):
actions["redo"].triggered.connect(self.undo_stack.redo)
actions["redo"].setEnabled(self.undo_stack.canRedo())
self.undo_stack.canRedoChanged.connect(actions["redo"].setEnabled)
# Clear cells
actions["clear_cells"] = QAction(
qta.icon("mdi6.delete"),
"&Clear Cells", self.view
)
actions["clear_cells"].setShortcuts(
[QKeySequence.Delete, QKeySequence.Backspace]
)
actions["clear_cells"].triggered.connect(self.clear_cells)
return actions

def sync_visibility_with_actions(self):
Expand Down Expand Up @@ -768,6 +777,11 @@ def delete_column(self):
if controller:
controller.delete_column()

def clear_cells(self):
controller = self.active_controller()
if controller:
controller.clear_cells()

def filter_table(self):
"""Filter the currently activated tables"""
filter_text = self.filter_input.text()
Expand Down
7 changes: 6 additions & 1 deletion src/petab_gui/controllers/table_controllers.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
ColumnSuggestionDelegate, ComboBoxDelegate, ParameterIdSuggestionDelegate
from ..utils import get_selected, process_file, ConditionInputDialog
from .utils import prompt_overwrite_or_append, linter_wrapper
from ..C import COLUMN
from ..C import COLUMN, INDEX
import re


Expand Down Expand Up @@ -286,6 +286,11 @@ def add_column(self, column_name: str = None):
return
self.model.insertColumn(column_name)

def clear_cells(self):
"""Clear all selected cells"""
selected = get_selected(self.view.table_view, mode=INDEX)
self.model.clear_cells(selected)

def set_index_on_new_row(self, index: QModelIndex):
"""Set the index of the model when a new row is added."""
proxy_index = self.proxy_model.mapFromSource(index)
Expand Down
18 changes: 15 additions & 3 deletions src/petab_gui/models/pandas_table_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,9 @@ def insertColumn(self, column_name: str):

return True

def setData(self, index, value, role=Qt.EditRole):
def setData(
self, index, value, role=Qt.EditRole, check_multi: bool = True
):
if not (index.isValid() and role == Qt.EditRole):
return False

Expand All @@ -157,8 +159,10 @@ def setData(self, index, value, role=Qt.EditRole):

if is_invalid(value) or value == "":
value = None
# check whether multiple rows but only one column is selected
multi_row_change, selected = self.check_selection()
multi_row_change = False
if check_multi:
# check whether multiple rows but only one column is selected
multi_row_change, selected = self.check_selection()
if not multi_row_change:
self.undo_stack.beginMacro("Set data")
success = self._set_data_single(index, value)
Expand Down Expand Up @@ -250,6 +254,14 @@ def _push_change_and_notify(
[Qt.DisplayRole])
self.something_changed.emit(True)

def clear_cells(self, selected):
"""Clear the selected cells."""
self.undo_stack.beginMacro("Clear cells")
for index in selected:
if index.isValid():
self.setData(index, None, Qt.EditRole, False)
self.undo_stack.endMacro()

def handle_named_index(self, index, value):
"""Handle the named index column."""
pass
Expand Down