Skip to content

Commit

Permalink
Small tweaks and fixes 20200305 (#383)
Browse files Browse the repository at this point in the history
* Ensure up to 5 relevant decimals for float delegates

* Ensure CSMethods table can remove multiple rows without issue

* Expand ViewOnly delegate to handle floats as well

* Set delegate as default for view-only table
  • Loading branch information
dgdekoning authored Mar 5, 2020
1 parent 2895847 commit 8a0285b
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 4 deletions.
6 changes: 3 additions & 3 deletions activity_browser/app/ui/tables/LCA_setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,11 +184,11 @@ def sync(self, name: str = None):
], columns=self.HEADERS)

def delete_rows(self):
indices = [self.get_source_index(p) for p in self.selectedIndexes()]
indices = (self.get_source_index(p) for p in self.selectedIndexes())
rows = [i.row() for i in indices]
self.dataframe.drop(rows, axis=0, inplace=True)
self.sync()
signals.calculation_setup_changed.emit()
signals.calculation_setup_changed.emit() # Trigger update of CS in brightway
self.sync(self.current_cs) # Sync CS from brightway back into table.

def to_python(self):
return self.dataframe["method"].to_list()
Expand Down
2 changes: 1 addition & 1 deletion activity_browser/app/ui/tables/delegates/float.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def __init__(self, parent=None):
def displayText(self, value, locale):
if math.isnan(value):
return ""
return str(value)
return "{:.5g}".format(value)

def createEditor(self, parent, option, index):
editor = QtWidgets.QLineEdit(parent)
Expand Down
14 changes: 14 additions & 0 deletions activity_browser/app/ui/tables/delegates/viewonly.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
import math

from PySide2.QtWidgets import QStyledItemDelegate


Expand All @@ -9,5 +11,17 @@ class ViewOnlyDelegate(QStyledItemDelegate):
def __init__(self, parent=None):
super().__init__(parent)

def displayText(self, value, locale):
try:
value = float(value)
if math.isnan(value):
return ""
return "{:.5g}".format(value)
except ValueError:
return str(value)
except TypeError:
# Unexpected object types (eg. parameters)
return repr(value)

def createEditor(self, parent, option, index):
return None
4 changes: 4 additions & 0 deletions activity_browser/app/ui/tables/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from PySide2.QtWidgets import QFileDialog, QTableView, QTreeView

from ...settings import ab_settings
from .delegates import ViewOnlyDelegate
from .models import (DragPandasModel, EditableDragPandasModel,
EditablePandasModel, PandasModel,
SimpleCopyDragPandasModel, SimpleCopyPandasModel)
Expand Down Expand Up @@ -52,6 +53,9 @@ def __init__(self, parent=None):
self.setSortingEnabled(True)
self.verticalHeader().setDefaultSectionSize(22) # row height
self.verticalHeader().setVisible(True)
# Use a custom ViewOnly delegate by default.
# Can be overridden table-wide or per column in child classes.
self.setItemDelegate(ViewOnlyDelegate(self))

self.table_name = 'LCA results'
self.dataframe = None
Expand Down

0 comments on commit 8a0285b

Please sign in to comment.