Skip to content

Commit e94a5ed

Browse files
authored
fix #43 (autoresize) (#81)
* fix #43 : fixed autoresize of axes columns
1 parent a4e0a42 commit e94a5ed

File tree

2 files changed

+30
-9
lines changed

2 files changed

+30
-9
lines changed

larray_editor/api.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -339,13 +339,14 @@ def restore_display_hook():
339339
[ '', 1664780726569649730, -9196963249083393206, -7664327348053294350]])
340340

341341
# test autoresizing
342-
arr8 = la.zeros('a=a_long_label,another_long_label')
342+
long_labels = la.zeros('a=a_long_label,another_long_label; b=this_is_a_label,this_is_another_one')
343+
long_axes_names = la.zeros('first_axis=a0,a1; second_axis=b0,b1')
343344

344345
# compare(arr3, arr4, arr5, arr6)
345346

346347
# view(la.stack((arr3, arr4), la.Axis('arrays=arr3,arr4')))
347-
ses = la.Session(arr2=arr2, arr3=arr3, arr4=arr4, arr5=arr5, arr6=arr6, arr7=arr7, arr8=arr8,
348-
data2=data2, data3=data3)
348+
ses = la.Session(arr2=arr2, arr3=arr3, arr4=arr4, arr5=arr5, arr6=arr6, arr7=arr7, long_labels=long_labels,
349+
long_axes_names=long_axes_names, data2=data2, data3=data3)
349350

350351
# from larray.tests.common import abspath
351352
# file = abspath('test_session.xlsx')

larray_editor/arraywidget.py

+26-6
Original file line numberDiff line numberDiff line change
@@ -537,8 +537,10 @@ def __init__(self, parent, data, readonly=False, bg_value=None, bg_gradient=None
537537
self.view_xlabels.horizontalHeader().sectionResized.connect(self.view_data.updateSectionWidth)
538538
self.view_ylabels.verticalHeader().sectionResized.connect(self.view_data.updateSectionHeight)
539539
# Synchronize auto-resizing
540-
self.view_xlabels.horizontalHeader().sectionHandleDoubleClicked.connect(self.resizeColumnToContents)
541-
self.view_ylabels.verticalHeader().sectionHandleDoubleClicked.connect(self.resizeRowToContents)
540+
self.view_axes.horizontalHeader().sectionHandleDoubleClicked.connect(self.resize_axes_column_to_contents)
541+
self.view_xlabels.horizontalHeader().sectionHandleDoubleClicked.connect(self.resize_xlabels_column_to_contents)
542+
self.view_axes.verticalHeader().sectionHandleDoubleClicked.connect(self.resize_axes_row_to_contents)
543+
self.view_ylabels.verticalHeader().sectionHandleDoubleClicked.connect(self.resize_ylabels_row_to_contents)
542544

543545
# synchronize specific methods
544546
self.view_axes.allSelected.connect(self.view_data.selectAll)
@@ -718,6 +720,7 @@ def set_data(self, data, bg_gradient=None, bg_value=None):
718720
self.data_adapter.update_filtered_data({})
719721

720722
# reset default size
723+
self.view_axes.set_default_size()
721724
self.view_ylabels.set_default_size()
722725
self.view_xlabels.set_default_size()
723726
self.view_data.set_default_size()
@@ -841,20 +844,37 @@ def _data_digits(self, data, maxdigits=6):
841844
return maxdigits
842845

843846
def autofit_columns(self):
847+
self.view_axes.autofit_columns()
848+
for column in range(self.model_axes.columnCount()):
849+
self.resize_axes_column_to_contents(column)
844850
self.view_xlabels.autofit_columns()
845851
for column in range(self.model_xlabels.columnCount()):
846-
self.resizeColumnToContents(column)
852+
self.resize_xlabels_column_to_contents(column)
847853

848-
def resizeColumnToContents(self, column):
854+
def resize_axes_column_to_contents(self, column):
855+
# must be connected to view_axes.horizontalHeader().sectionHandleDoubleClicked signal
856+
width = max(self.view_axes.horizontalHeader().sectionSize(column),
857+
self.view_ylabels.sizeHintForColumn(column))
858+
# no need to call resizeSection on view_ylabels (see synchronization lines in init)
859+
self.view_axes.horizontalHeader().resizeSection(column, width)
860+
861+
def resize_xlabels_column_to_contents(self, column):
849862
# must be connected to view_labels.horizontalHeader().sectionHandleDoubleClicked signal
850863
width = max(self.view_xlabels.horizontalHeader().sectionSize(column),
851864
self.view_data.sizeHintForColumn(column))
852865
# no need to call resizeSection on view_data (see synchronization lines in init)
853866
self.view_xlabels.horizontalHeader().resizeSection(column, width)
854867

855-
def resizeRowToContents(self, row):
868+
def resize_axes_row_to_contents(self, row):
869+
# must be connected to view_axes.verticalHeader().sectionHandleDoubleClicked
870+
height = max(self.view_axes.verticalHeader().sectionSize(row),
871+
self.view_xlabels.sizeHintForRow(row))
872+
# no need to call resizeSection on view_xlabels (see synchronization lines in init)
873+
self.view_axes.verticalHeader().resizeSection(row, height)
874+
875+
def resize_ylabels_row_to_contents(self, row):
856876
# must be connected to view_labels.verticalHeader().sectionHandleDoubleClicked
857-
height = max(self.view_xlabels.verticalHeader().sectionSize(row),
877+
height = max(self.view_ylabels.verticalHeader().sectionSize(row),
858878
self.view_data.sizeHintForRow(row))
859879
# no need to call resizeSection on view_data (see synchronization lines in init)
860880
self.view_ylabels.verticalHeader().resizeSection(row, height)

0 commit comments

Comments
 (0)