Enter numbers with commas
This commit is contained in:
parent
f1123a6fd5
commit
6183acf307
4 changed files with 260 additions and 182 deletions
|
@ -1,7 +1,13 @@
|
||||||
# Changelog GarageCalc1
|
# Changelog GarageCalc1
|
||||||
|
|
||||||
|
## [0.6] - 2021-07-06
|
||||||
|
## Added
|
||||||
|
- Dezimalzahlen werden nun mit Dezimaltrennzeichen Komma (",") eingegeben statt Punkt (".")
|
||||||
|
- Export nach EXCEL exportiert nun Formeln für die Berechnung des Ergebnis, keine zuvor berechneten Ergebniswerte
|
||||||
|
- Export nach EXCEL: automatische Spaltenbreite
|
||||||
|
|
||||||
## [0.5.2] - 2021-07-02
|
## [0.5.2] - 2021-07-02
|
||||||
## Changed
|
## Fixed
|
||||||
- Verbesserungen in Sprachdatei "hu_HU.ts"
|
- Verbesserungen in Sprachdatei "hu_HU.ts"
|
||||||
|
|
||||||
## [0.5.1] - 2021-07-02
|
## [0.5.1] - 2021-07-02
|
||||||
|
|
|
@ -47,7 +47,6 @@ class TableWidget(QTableWidget):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
self.setParent(parent)
|
|
||||||
|
|
||||||
# self.setSelectionMode(QAbstractItemView.ContiguousSelection)
|
# self.setSelectionMode(QAbstractItemView.ContiguousSelection)
|
||||||
self.setSelectionMode(QAbstractItemView.SingleSelection)
|
self.setSelectionMode(QAbstractItemView.SingleSelection)
|
||||||
|
@ -245,8 +244,7 @@ class TableWidget(QTableWidget):
|
||||||
for idx in sel_idx:
|
for idx in sel_idx:
|
||||||
self.clipboard_data.append(idx.data())
|
self.clipboard_data.append(idx.data())
|
||||||
|
|
||||||
def item_del(self):
|
def item_del(self, ask_cofirmation=True):
|
||||||
ask_cofirmation = True
|
|
||||||
sel_idx = self.selectionModel().selectedIndexes()
|
sel_idx = self.selectionModel().selectedIndexes()
|
||||||
for idx in sel_idx:
|
for idx in sel_idx:
|
||||||
row = idx.row()
|
row = idx.row()
|
||||||
|
@ -262,3 +260,9 @@ class TableWidget(QTableWidget):
|
||||||
|
|
||||||
ask_cofirmation = False
|
ask_cofirmation = False
|
||||||
item.setData(Qt.DisplayRole, None)
|
item.setData(Qt.DisplayRole, None)
|
||||||
|
|
||||||
|
if len(sel_idx) == self.columnCount() * self.rowCount():
|
||||||
|
try:
|
||||||
|
self.parent.is_modified = False # set parents modification flag (if present)
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
|
345
src/main.py
345
src/main.py
|
@ -22,13 +22,13 @@ from PySide2.QtUiTools import QUiLoader
|
||||||
import xlsxwriter
|
import xlsxwriter
|
||||||
|
|
||||||
# Local imports
|
# Local imports
|
||||||
from utils import show_about, resource_path
|
from utils import show_about, resource_path, str_iff, fit_col_widths
|
||||||
|
|
||||||
# my own classes imports
|
# my own classes imports
|
||||||
from clsTableWidget import TableWidget
|
from clsTableWidget import TableWidget
|
||||||
|
|
||||||
# Local globals
|
# Local globals
|
||||||
APP_VERSION = "v0.5.2"
|
APP_VERSION = "v0.6"
|
||||||
|
|
||||||
DIR_APPDATA = os.getenv('LOCALAPPDATA')
|
DIR_APPDATA = os.getenv('LOCALAPPDATA')
|
||||||
|
|
||||||
|
@ -51,16 +51,21 @@ ICON_QUIT = "./img/system-shutdown.png"
|
||||||
|
|
||||||
UI_MAIN = "./ui/main.ui"
|
UI_MAIN = "./ui/main.ui"
|
||||||
|
|
||||||
COL_STUFF = 0
|
|
||||||
COL_LENGTH = 1
|
|
||||||
COL_WIDTH = 2
|
|
||||||
COL_HEIGHT = 3
|
|
||||||
COL_WEIGHT = 4
|
|
||||||
COL_COMMENT = 5
|
|
||||||
|
|
||||||
DEFAULT_GARAGE_LENGTH = "6"
|
DEFAULT_GARAGE_LENGTH = "6"
|
||||||
DEFAULT_GARAGE_WIDTH = "2.5"
|
DEFAULT_GARAGE_WIDTH = "2,5"
|
||||||
DEFAULT_GARAGE_HEIGHT = "2.5"
|
DEFAULT_GARAGE_HEIGHT = "2,5"
|
||||||
|
|
||||||
|
COL_GARAGE_LENGTH = 1
|
||||||
|
COL_GARAGE_WIDTH = 2
|
||||||
|
COL_GARAGE_HEIGHT = 3
|
||||||
|
COL_GARAGE_COMMENT = 4
|
||||||
|
|
||||||
|
COL_STUFF_NAME = 0
|
||||||
|
COL_STUFF_LENGTH = 1
|
||||||
|
COL_STUFF_WIDTH = 2
|
||||||
|
COL_STUFF_HEIGHT = 3
|
||||||
|
COL_STUFF_WEIGHT = 4
|
||||||
|
COL_STUFF_COMMENT = 5
|
||||||
|
|
||||||
TBL_STUFF_COL_COUNT = 6
|
TBL_STUFF_COL_COUNT = 6
|
||||||
TBL_STUFF_ROW_COUNT = 50
|
TBL_STUFF_ROW_COUNT = 50
|
||||||
|
@ -129,21 +134,21 @@ def main():
|
||||||
####################################################################
|
####################################################################
|
||||||
|
|
||||||
def create_examples(table):
|
def create_examples(table):
|
||||||
from random import randint, choice
|
from random import randint, choice, uniform
|
||||||
from string import ascii_letters, punctuation, digits
|
from string import ascii_letters, punctuation, digits
|
||||||
min = 12
|
min = 12
|
||||||
max = 15
|
max = 15
|
||||||
string_format = ascii_letters
|
string_format = ascii_letters
|
||||||
|
|
||||||
for row in range(table.rowCount()):
|
for row in range(10):
|
||||||
generated_string1 = "".join(choice(string_format) for x in range(randint(min, max)))
|
generated_string1 = "".join(choice(string_format) for x in range(randint(min, max)))
|
||||||
generated_string2 = "".join(choice(string_format) for x in range(randint(min, max)))
|
generated_string2 = "".join(choice(string_format) for x in range(randint(min, max)))
|
||||||
|
|
||||||
table.setItem(row, 0, QTableWidgetItem(generated_string1))
|
table.setItem(row, 0, QTableWidgetItem(generated_string1))
|
||||||
table.setItem(row, 1, QTableWidgetItem(str(randint(1, 10))))
|
table.setItem(row, 1, QTableWidgetItem(str(round(uniform(1.1, 10.2), 2)).replace('.', ',')))
|
||||||
table.setItem(row, 2, QTableWidgetItem(str(randint(1, 10))))
|
table.setItem(row, 2, QTableWidgetItem(str(round(uniform(1.5, 10.2), 2)).replace('.', ',')))
|
||||||
table.setItem(row, 3, QTableWidgetItem(str(randint(1, 10))))
|
table.setItem(row, 3, QTableWidgetItem(str(round(uniform(1.125, 8.75), 2)).replace('.', ',')))
|
||||||
table.setItem(row, 4, QTableWidgetItem(str(randint(20, 100))))
|
table.setItem(row, 4, QTableWidgetItem(str(round(uniform(20, 100), 2)).replace('.', ',')))
|
||||||
table.setItem(row, 5, QTableWidgetItem(generated_string2))
|
table.setItem(row, 5, QTableWidgetItem(generated_string2))
|
||||||
|
|
||||||
####################################################################
|
####################################################################
|
||||||
|
@ -169,11 +174,15 @@ class MainWindow(QMainWindow):
|
||||||
self.calc_voluminae()
|
self.calc_voluminae()
|
||||||
self.ui.efWeight.setText(str("0"))
|
self.ui.efWeight.setText(str("0"))
|
||||||
self.retranslateUi()
|
self.retranslateUi()
|
||||||
self.ui.tableStuff.setFocus()
|
|
||||||
|
|
||||||
# TODO: disable for PROD!
|
# TODO: disable for PROD!
|
||||||
create_examples(self.ui.tableStuff)
|
# create_examples(self.ui.tableStuff)
|
||||||
self.ui.tableGarage.setItem(0, 3, QTableWidgetItem("Garázs az udvaron"))
|
# self.ui.tableGarage.setItem(0, 3, QTableWidgetItem("Garázs az udvaron"))
|
||||||
|
|
||||||
|
for col in range(self.ui.tableStuff.columnCount()): # optimize column width
|
||||||
|
self.ui.tableStuff.resizeColumnToContents(col)
|
||||||
|
self.ui.tableStuff.resizeRowsToContents() # optimize row height
|
||||||
|
self.ui.tableStuff.setFocus()
|
||||||
|
|
||||||
def create_menu(self, language=None):
|
def create_menu(self, language=None):
|
||||||
menuMain = self.menuBar()
|
menuMain = self.menuBar()
|
||||||
|
@ -217,7 +226,7 @@ class MainWindow(QMainWindow):
|
||||||
QCoreApplication.translate("main","Length") + " [m]",
|
QCoreApplication.translate("main","Length") + " [m]",
|
||||||
QCoreApplication.translate("main","Width") + " [m]",
|
QCoreApplication.translate("main","Width") + " [m]",
|
||||||
QCoreApplication.translate("main","Height") + " [m]",
|
QCoreApplication.translate("main","Height") + " [m]",
|
||||||
QCoreApplication.translate("main","Weight") + " [m]",
|
QCoreApplication.translate("main","Weight") + " [kg]",
|
||||||
QCoreApplication.translate("main","Comment")
|
QCoreApplication.translate("main","Comment")
|
||||||
])
|
])
|
||||||
|
|
||||||
|
@ -249,7 +258,7 @@ class MainWindow(QMainWindow):
|
||||||
|
|
||||||
# implement custom class 'TableWidget'
|
# implement custom class 'TableWidget'
|
||||||
layoutGb = self.ui.gbStuff.layout()
|
layoutGb = self.ui.gbStuff.layout()
|
||||||
self.ui.tableStuff = TableWidget()
|
self.ui.tableStuff = TableWidget(self)
|
||||||
self.ui.tableStuff.setColumnCount(TBL_STUFF_COL_COUNT)
|
self.ui.tableStuff.setColumnCount(TBL_STUFF_COL_COUNT)
|
||||||
self.ui.tableStuff.setRowCount(TBL_STUFF_ROW_COUNT)
|
self.ui.tableStuff.setRowCount(TBL_STUFF_ROW_COUNT)
|
||||||
self.ui.tableStuff.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
self.ui.tableStuff.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
||||||
|
@ -332,9 +341,10 @@ class MainWindow(QMainWindow):
|
||||||
tblGarage.setRowCount(1)
|
tblGarage.setRowCount(1)
|
||||||
|
|
||||||
# clear stuff
|
# clear stuff
|
||||||
# tblStuff.clear()
|
## tblStuff.clear()
|
||||||
tblStuff.setRowCount(0)
|
# tblStuff.setRowCount(0)
|
||||||
tblStuff.setRowCount(TBL_STUFF_ROW_COUNT)
|
# tblStuff.setRowCount(TBL_STUFF_ROW_COUNT)
|
||||||
|
tblStuff.clearContents()
|
||||||
|
|
||||||
# clear results
|
# clear results
|
||||||
self.ui.efVol_Garage.clear()
|
self.ui.efVol_Garage.clear()
|
||||||
|
@ -368,7 +378,13 @@ class MainWindow(QMainWindow):
|
||||||
if reply == QMessageBox.No:
|
if reply == QMessageBox.No:
|
||||||
return False
|
return False
|
||||||
self.init_ui()
|
self.init_ui()
|
||||||
self.ui.tableStuff.sortByColumn(-1) # reset sorting
|
|
||||||
|
self.ui.tableStuff.sortByColumn(-1, Qt.AscendingOrder) # reset sorting
|
||||||
|
|
||||||
|
for col in range(self.ui.tableStuff.columnCount()): # optimize column width
|
||||||
|
self.ui.tableStuff.resizeColumnToContents(col)
|
||||||
|
self.ui.tableStuff.resizeRowsToContents() # optimize row height
|
||||||
|
self.ui.tableStuff.setFocus()
|
||||||
|
|
||||||
def file_save(self):
|
def file_save(self):
|
||||||
tblGarage = self.ui.tableGarage
|
tblGarage = self.ui.tableGarage
|
||||||
|
@ -407,26 +423,14 @@ class MainWindow(QMainWindow):
|
||||||
# get garage length
|
# get garage length
|
||||||
if item_length:
|
if item_length:
|
||||||
garage_length = item_length.text()
|
garage_length = item_length.text()
|
||||||
try:
|
|
||||||
garage_length = float(garage_length)
|
|
||||||
except ValueError:
|
|
||||||
garage_length = 0.0
|
|
||||||
|
|
||||||
# get garage width
|
# get garage width
|
||||||
if item_width:
|
if item_width:
|
||||||
garage_width = item_width.text()
|
garage_width = item_width.text()
|
||||||
try:
|
|
||||||
garage_width = float(garage_width)
|
|
||||||
except ValueError:
|
|
||||||
garage_width = 0.0
|
|
||||||
|
|
||||||
# get garage height
|
# get garage height
|
||||||
if item_height:
|
if item_height:
|
||||||
garage_height = item_height.text()
|
garage_height = item_height.text()
|
||||||
try:
|
|
||||||
garage_height = float(garage_height)
|
|
||||||
except ValueError:
|
|
||||||
garage_height = 0.0
|
|
||||||
|
|
||||||
# get garage comment
|
# get garage comment
|
||||||
if item_comment:
|
if item_comment:
|
||||||
|
@ -444,44 +448,32 @@ class MainWindow(QMainWindow):
|
||||||
weight = None
|
weight = None
|
||||||
comment = None
|
comment = None
|
||||||
|
|
||||||
item_stuff = tblStuff.item(row, COL_STUFF)
|
item_stuff = tblStuff.item(row, COL_STUFF_NAME)
|
||||||
item_length = tblStuff.item(row, COL_LENGTH)
|
item_length = tblStuff.item(row, COL_STUFF_LENGTH)
|
||||||
item_width = tblStuff.item(row, COL_WIDTH)
|
item_width = tblStuff.item(row, COL_STUFF_WIDTH)
|
||||||
item_height = tblStuff.item(row, COL_HEIGHT)
|
item_height = tblStuff.item(row, COL_STUFF_HEIGHT)
|
||||||
item_weight = tblStuff.item(row, COL_WEIGHT)
|
item_weight = tblStuff.item(row, COL_STUFF_WEIGHT)
|
||||||
item_comment = tblStuff.item(row, COL_COMMENT)
|
item_comment = tblStuff.item(row, COL_STUFF_COMMENT)
|
||||||
|
|
||||||
if item_stuff:
|
if item_stuff:
|
||||||
stuff_text = item_stuff.text()
|
stuff_text = item_stuff.text()
|
||||||
|
|
||||||
if item_length:
|
if item_length:
|
||||||
try:
|
length = item_length.text()
|
||||||
length = float(item_length.text())
|
|
||||||
except ValueError:
|
|
||||||
length = None
|
|
||||||
|
|
||||||
if item_width:
|
if item_width:
|
||||||
try:
|
width = item_width.text()
|
||||||
width = float(item_width.text())
|
|
||||||
except ValueError:
|
|
||||||
width = None
|
|
||||||
|
|
||||||
if item_height:
|
if item_height:
|
||||||
try:
|
height = item_height.text()
|
||||||
height = float(item_height.text())
|
|
||||||
except ValueError:
|
|
||||||
height = None
|
|
||||||
|
|
||||||
if item_weight:
|
if item_weight:
|
||||||
try:
|
weight = item_weight.text()
|
||||||
weight = float(item_weight.text())
|
|
||||||
except ValueError:
|
|
||||||
weight = None
|
|
||||||
|
|
||||||
if item_comment:
|
if item_comment:
|
||||||
comment = item_comment.text()
|
comment = item_comment.text()
|
||||||
|
|
||||||
if item_stuff or item_length or item_width or item_height or item_weight:
|
if stuff_text or length or width or height or weight:
|
||||||
writer.writerow([stuff_text, length, width, height, weight, comment])
|
writer.writerow([stuff_text, length, width, height, weight, comment])
|
||||||
is_file_saved = True
|
is_file_saved = True
|
||||||
|
|
||||||
|
@ -515,7 +507,7 @@ class MainWindow(QMainWindow):
|
||||||
options=options)
|
options=options)
|
||||||
if fileName:
|
if fileName:
|
||||||
self.init_ui()
|
self.init_ui()
|
||||||
self.ui.tableStuff.sortByColumn(-1) # reset sorting
|
self.ui.tableStuff.sortByColumn(-1, Qt.AscendingOrder) # reset sorting
|
||||||
|
|
||||||
file = open(fileName, "r", newline='')
|
file = open(fileName, "r", newline='')
|
||||||
reader = csv.reader(file, delimiter=';')
|
reader = csv.reader(file, delimiter=';')
|
||||||
|
@ -524,50 +516,50 @@ class MainWindow(QMainWindow):
|
||||||
for row in reader:
|
for row in reader:
|
||||||
if row_idx == 0: # first row (index=0) ist always garage dimension
|
if row_idx == 0: # first row (index=0) ist always garage dimension
|
||||||
try:
|
try:
|
||||||
garage_length = row[1]
|
garage_length = str(row[COL_GARAGE_LENGTH].replace(".", ","))
|
||||||
garage_width = row[2]
|
garage_width = str(row[COL_GARAGE_WIDTH].replace(".", ","))
|
||||||
garage_height = row[3]
|
garage_height = str(row[COL_GARAGE_HEIGHT].replace(".", ","))
|
||||||
garage_comment = row[4]
|
garage_comment = row[COL_GARAGE_COMMENT]
|
||||||
|
|
||||||
tblGarage.setItem(0, COL_LENGTH-1, QTableWidgetItem(garage_length))
|
tblGarage.setItem(0, 0, QTableWidgetItem(garage_length))
|
||||||
tblGarage.setItem(0, COL_WIDTH-1, QTableWidgetItem(garage_width))
|
tblGarage.setItem(0, 1, QTableWidgetItem(garage_width))
|
||||||
tblGarage.setItem(0, COL_HEIGHT-1, QTableWidgetItem(garage_height))
|
tblGarage.setItem(0, 2, QTableWidgetItem(garage_height))
|
||||||
tblGarage.setItem(0, COL_COMMENT-1, QTableWidgetItem(garage_comment))
|
tblGarage.setItem(0, 3, QTableWidgetItem(garage_comment))
|
||||||
|
|
||||||
except IndexError as ex:
|
except IndexError as ex:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if row_idx > 0:
|
if row_idx > 0:
|
||||||
try:
|
try:
|
||||||
stuff = row[0]
|
stuff = row[COL_STUFF_NAME]
|
||||||
stuff_length = row[1]
|
stuff_length = str(row[COL_STUFF_LENGTH].replace(".", ","))
|
||||||
stuff_width = row[2]
|
stuff_width = str(row[COL_STUFF_WIDTH].replace(".", ","))
|
||||||
stuff_height = row[3]
|
stuff_height = str(row[COL_STUFF_HEIGHT].replace(".", ","))
|
||||||
stuff_weight = row[4]
|
stuff_weight = str(row[COL_STUFF_WEIGHT].replace(".", ","))
|
||||||
stuff_comment = row[5]
|
stuff_comment = row[COL_STUFF_COMMENT]
|
||||||
|
|
||||||
tblStuff.setItem(row_idx - 1, COL_STUFF, QTableWidgetItem(stuff))
|
tblStuff.setItem(row_idx - 1, COL_STUFF_NAME, QTableWidgetItem(stuff))
|
||||||
|
|
||||||
item = QTableWidgetItem()
|
item = QTableWidgetItem()
|
||||||
item.setData(Qt.DisplayRole, float(stuff_length))
|
item.setData(Qt.DisplayRole, stuff_length)
|
||||||
tblStuff.setItem(row_idx - 1, COL_LENGTH, item)
|
tblStuff.setItem(row_idx - 1, COL_STUFF_LENGTH, item)
|
||||||
|
|
||||||
# tblStuff.setItem(row_idx - 1, COL_WIDTH, QTableWidgetItem(float(stuff_width)))
|
# tblStuff.setItem(row_idx - 1, COL_STUFF_WIDTH, QTableWidgetItem(float(stuff_width)))
|
||||||
item = QTableWidgetItem()
|
item = QTableWidgetItem()
|
||||||
item.setData(Qt.DisplayRole, float(stuff_width))
|
item.setData(Qt.DisplayRole, stuff_width)
|
||||||
tblStuff.setItem(row_idx - 1, COL_WIDTH, item)
|
tblStuff.setItem(row_idx - 1, COL_STUFF_WIDTH, item)
|
||||||
|
|
||||||
#tblStuff.setItem(row_idx - 1, COL_HEIGHT, QTableWidgetItem(float(stuff_height)))
|
#tblStuff.setItem(row_idx - 1, COL_STUFF_HEIGHT, QTableWidgetItem(float(stuff_height)))
|
||||||
item = QTableWidgetItem(stuff_height)
|
item = QTableWidgetItem(stuff_height)
|
||||||
item.setData(Qt.DisplayRole, float(stuff_height))
|
item.setData(Qt.DisplayRole, stuff_height)
|
||||||
tblStuff.setItem(row_idx - 1, COL_HEIGHT, item)
|
tblStuff.setItem(row_idx - 1, COL_STUFF_HEIGHT, item)
|
||||||
|
|
||||||
# tblStuff.setItem(row_idx - 1, COL_WEIGHT, QTableWidgetItem(float(stuff_weight)))
|
# tblStuff.setItem(row_idx - 1, COL_STUFF_WEIGHT, QTableWidgetItem(float(stuff_weight)))
|
||||||
item = QTableWidgetItem(stuff_weight)
|
item = QTableWidgetItem(stuff_weight)
|
||||||
item.setData(Qt.DisplayRole, float(stuff_weight))
|
item.setData(Qt.DisplayRole, stuff_weight)
|
||||||
tblStuff.setItem(row_idx - 1, COL_WEIGHT, item)
|
tblStuff.setItem(row_idx - 1, COL_STUFF_WEIGHT, item)
|
||||||
|
|
||||||
tblStuff.setItem(row_idx - 1, COL_COMMENT, QTableWidgetItem(stuff_comment))
|
tblStuff.setItem(row_idx - 1, COL_STUFF_COMMENT, QTableWidgetItem(stuff_comment))
|
||||||
|
|
||||||
except IndexError as ex:
|
except IndexError as ex:
|
||||||
pass
|
pass
|
||||||
|
@ -575,16 +567,19 @@ class MainWindow(QMainWindow):
|
||||||
row_idx += 1
|
row_idx += 1
|
||||||
|
|
||||||
tblStuff.setRowCount(TBL_STUFF_ROW_COUNT)
|
tblStuff.setRowCount(TBL_STUFF_ROW_COUNT)
|
||||||
# optimize row height
|
|
||||||
tblStuff.resizeRowsToContents()
|
|
||||||
|
|
||||||
self.is_modified = False
|
for col in range(self.ui.tableStuff.columnCount()): # optimize column width
|
||||||
self.opened_file = os.path.basename(fileName)
|
self.ui.tableStuff.resizeColumnToContents(col)
|
||||||
|
self.ui.tableStuff.resizeRowsToContents() # optimize row height
|
||||||
|
self.ui.tableStuff.setFocus()
|
||||||
|
|
||||||
if fileName:
|
self.is_modified = False
|
||||||
self.setWindowTitle(self.opened_file)
|
self.opened_file = os.path.basename(fileName)
|
||||||
else:
|
|
||||||
self.setWindowTitle(f"{qApp.applicationName()} {APP_VERSION} - {APP_AUTHOR}")
|
if fileName:
|
||||||
|
self.setWindowTitle(self.opened_file)
|
||||||
|
else:
|
||||||
|
self.setWindowTitle(f"{qApp.applicationName()} {APP_VERSION} - {APP_AUTHOR}")
|
||||||
|
|
||||||
def file_export(self):
|
def file_export(self):
|
||||||
tblGarage = self.ui.tableGarage
|
tblGarage = self.ui.tableGarage
|
||||||
|
@ -604,14 +599,14 @@ class MainWindow(QMainWindow):
|
||||||
|
|
||||||
# write col header
|
# write col header
|
||||||
start_row = 0
|
start_row = 0
|
||||||
worksheet.write(start_row, 0, QCoreApplication.translate("main", "Dimension of the garage"))
|
worksheet.write_string(start_row, 0, QCoreApplication.translate("main", "Dimension of the garage"))
|
||||||
|
|
||||||
start_row = 1
|
start_row = 1
|
||||||
|
|
||||||
worksheet.write(start_row, COL_LENGTH, QCoreApplication.translate("main","Length") + " [m]")
|
worksheet.write_string(start_row, COL_STUFF_LENGTH, QCoreApplication.translate("main","Length") + " [m]")
|
||||||
worksheet.write(start_row, COL_WIDTH, QCoreApplication.translate("main","Width") + " [m]")
|
worksheet.write_string(start_row, COL_STUFF_WIDTH, QCoreApplication.translate("main","Width") + " [m]")
|
||||||
worksheet.write(start_row, COL_HEIGHT, QCoreApplication.translate("main","Height") + " [m]")
|
worksheet.write_string(start_row, COL_STUFF_HEIGHT, QCoreApplication.translate("main","Height") + " [m]")
|
||||||
worksheet.write(start_row, COL_COMMENT, QCoreApplication.translate("main","Comment"))
|
worksheet.write_string(start_row, COL_STUFF_COMMENT, QCoreApplication.translate("main","Comment"))
|
||||||
worksheet.set_column(0, 0, 25)
|
worksheet.set_column(0, 0, 25)
|
||||||
worksheet.set_column(1, 3, 10)
|
worksheet.set_column(1, 3, 10)
|
||||||
worksheet.set_column(4, 5, 20)
|
worksheet.set_column(4, 5, 20)
|
||||||
|
@ -619,120 +614,110 @@ class MainWindow(QMainWindow):
|
||||||
start_row = 2
|
start_row = 2
|
||||||
# loop over table Garage
|
# loop over table Garage
|
||||||
for row in range(tblGarage.rowCount()):
|
for row in range(tblGarage.rowCount()):
|
||||||
# get garage length
|
|
||||||
garage_length = tblGarage.item(0, 0).text()
|
garage_length = tblGarage.item(0, 0).text()
|
||||||
try:
|
|
||||||
garage_length = float(garage_length)
|
|
||||||
except ValueError:
|
|
||||||
garage_length = 0.0
|
|
||||||
|
|
||||||
# get garage width
|
|
||||||
garage_width = tblGarage.item(0, 1).text()
|
garage_width = tblGarage.item(0, 1).text()
|
||||||
try:
|
|
||||||
garage_width = float(garage_width)
|
|
||||||
except ValueError:
|
|
||||||
garage_width = 0.0
|
|
||||||
|
|
||||||
# get garage height
|
|
||||||
garage_height = tblGarage.item(0, 2).text()
|
garage_height = tblGarage.item(0, 2).text()
|
||||||
try:
|
|
||||||
garage_height = float(garage_height)
|
|
||||||
except ValueError:
|
|
||||||
garage_height = 0.0
|
|
||||||
|
|
||||||
# get garage comment
|
|
||||||
garage_comment = tblGarage.item(0, 3).text()
|
garage_comment = tblGarage.item(0, 3).text()
|
||||||
|
|
||||||
worksheet.write(start_row + row, COL_LENGTH, garage_length)
|
worksheet.write_number(start_row + row, COL_STUFF_LENGTH, float(garage_length.replace(',', '.')))
|
||||||
worksheet.write(start_row + row, COL_WIDTH, garage_width)
|
worksheet.write_number(start_row + row, COL_STUFF_WIDTH, float(garage_width.replace(',', '.')))
|
||||||
worksheet.write(start_row + row, COL_HEIGHT, garage_height)
|
worksheet.write_number(start_row + row, COL_STUFF_HEIGHT, float(garage_height.replace(',', '.')))
|
||||||
worksheet.write(start_row + row, COL_COMMENT, garage_comment)
|
worksheet.write_string(start_row + row, COL_STUFF_COMMENT, garage_comment)
|
||||||
|
|
||||||
start_row = 4
|
start_row = 4
|
||||||
worksheet.write(start_row, 0, QCoreApplication.translate("main", "Dimensions of the objects to be stored"))
|
worksheet.write_string(start_row, 0, QCoreApplication.translate("main", "Dimensions of the objects to be stored"))
|
||||||
|
|
||||||
start_row = 5
|
start_row = 5
|
||||||
worksheet.write(start_row, COL_LENGTH, QCoreApplication.translate("main","Length") + " [m]")
|
worksheet.write_string(start_row, COL_STUFF_LENGTH, QCoreApplication.translate("main","Length") + " [m]")
|
||||||
worksheet.write(start_row, COL_WIDTH, QCoreApplication.translate("main","Width") + " [m]")
|
worksheet.write_string(start_row, COL_STUFF_WIDTH, QCoreApplication.translate("main","Width") + " [m]")
|
||||||
worksheet.write(start_row, COL_HEIGHT, QCoreApplication.translate("main","Height") + " [m]")
|
worksheet.write_string(start_row, COL_STUFF_HEIGHT, QCoreApplication.translate("main","Height") + " [m]")
|
||||||
worksheet.write(start_row, COL_WEIGHT, QCoreApplication.translate("main","Weight") + " [kg]")
|
worksheet.write_string(start_row, COL_STUFF_WEIGHT, QCoreApplication.translate("main","Weight") + " [kg]")
|
||||||
worksheet.write(start_row, COL_COMMENT, QCoreApplication.translate("main","Comment") )
|
worksheet.write_string(start_row, COL_STUFF_COMMENT, QCoreApplication.translate("main","Comment") )
|
||||||
|
|
||||||
start_row = 6
|
start_row = 6
|
||||||
# loop over table Stuff
|
# loop over table Stuff
|
||||||
|
formula = ""
|
||||||
row_idx = start_row
|
row_idx = start_row
|
||||||
for row in range(tblStuff.rowCount()):
|
for row in range(tblStuff.rowCount()):
|
||||||
item_stuff = tblStuff.item(row, COL_STUFF)
|
item_stuff = tblStuff.item(row, COL_STUFF_NAME)
|
||||||
item_length = tblStuff.item(row, COL_LENGTH)
|
item_length = tblStuff.item(row, COL_STUFF_LENGTH)
|
||||||
item_width = tblStuff.item(row, COL_WIDTH)
|
item_width = tblStuff.item(row, COL_STUFF_WIDTH)
|
||||||
item_height = tblStuff.item(row, COL_HEIGHT)
|
item_height = tblStuff.item(row, COL_STUFF_HEIGHT)
|
||||||
item_weight = tblStuff.item(row, COL_WEIGHT)
|
item_weight = tblStuff.item(row, COL_STUFF_WEIGHT)
|
||||||
item_comment = tblStuff.item(row, COL_COMMENT)
|
item_comment = tblStuff.item(row, COL_STUFF_COMMENT)
|
||||||
|
|
||||||
if item_stuff:
|
if item_stuff:
|
||||||
stuff_text = item_stuff.text()
|
stuff_text = item_stuff.text()
|
||||||
if len(stuff_text)>0:
|
if len(stuff_text)>0:
|
||||||
worksheet.write(start_row + row, COL_STUFF, stuff_text)
|
worksheet.write_string(start_row + row, COL_STUFF_NAME, stuff_text)
|
||||||
|
|
||||||
if item_length:
|
if item_length:
|
||||||
try:
|
try:
|
||||||
length = float(item_length.text())
|
length = item_length.text()
|
||||||
if length:
|
if length:
|
||||||
worksheet.write(start_row + row, COL_LENGTH, length)
|
worksheet.write_number(start_row + row, COL_STUFF_LENGTH, float(length.replace(',', '.')))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if item_width:
|
if item_width:
|
||||||
try:
|
try:
|
||||||
width = float(item_width.text())
|
width = item_width.text()
|
||||||
if width:
|
if width:
|
||||||
worksheet.write(start_row + row, COL_WIDTH, width)
|
worksheet.write_number(start_row + row, COL_STUFF_WIDTH, float(width.replace(',', '.')))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if item_height:
|
if item_height:
|
||||||
try:
|
try:
|
||||||
height = float(item_height.text())
|
height = item_height.text()
|
||||||
if height:
|
if height:
|
||||||
worksheet.write(start_row + row, COL_HEIGHT, height)
|
worksheet.write_number(start_row + row, COL_STUFF_HEIGHT, float(height.replace(',', '.')))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if item_weight:
|
if item_weight:
|
||||||
try:
|
try:
|
||||||
weight = float(item_weight.text())
|
weight = item_weight.text()
|
||||||
if weight:
|
if weight:
|
||||||
worksheet.write(start_row + row, COL_WEIGHT, weight)
|
worksheet.write_number(start_row + row, COL_STUFF_WEIGHT, float(weight.replace(',', '.')))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if item_comment:
|
if item_comment:
|
||||||
comment = item_comment.text()
|
comment = item_comment.text()
|
||||||
if len(comment)>0:
|
if len(comment)>0:
|
||||||
worksheet.write(start_row + row, COL_COMMENT, comment)
|
worksheet.write_string(start_row + row, COL_STUFF_COMMENT, comment)
|
||||||
|
|
||||||
if item_stuff or item_length or item_width or item_height or item_weight:
|
if item_stuff or item_length or item_width or item_height or item_weight:
|
||||||
row_idx += 1
|
row_idx += 1
|
||||||
|
|
||||||
|
formula = formula + str_iff(formula, "", "=ROUND(", " + ") + f"(B{row_idx} * C{row_idx} * D{row_idx})"
|
||||||
|
|
||||||
|
formula += ", 2)"
|
||||||
row_idx += 1
|
row_idx += 1
|
||||||
# loop over Results
|
# loop over Results
|
||||||
worksheet.write(row_idx, 0, QCoreApplication.translate("main","Result"))
|
worksheet.write_string(row_idx, 0, QCoreApplication.translate("main","Result"))
|
||||||
|
|
||||||
row_idx += 1
|
row_idx += 1
|
||||||
worksheet.write(row_idx, 0, QCoreApplication.translate("main","Volume of the garage") + ":")
|
worksheet.write_string(row_idx, 0, QCoreApplication.translate("main","Volume of the garage") + ":")
|
||||||
worksheet.write(row_idx, 1, float(self.ui.efVol_Garage.text()))
|
# worksheet.write(row_idx, 1, self.ui.efVol_Garage.text())
|
||||||
|
worksheet.write_formula(row_idx, 1, '=B3 * C3 * D3')
|
||||||
|
row_idx += 1
|
||||||
|
worksheet.write_string(row_idx, 0, QCoreApplication.translate("main","Volume of the items") + ":")
|
||||||
|
#worksheet.write_number(row_idx, 1, float(self.ui.efVol_Stuff.text().replace(',', '.')))
|
||||||
|
worksheet.write_formula(row_idx, 1, formula)
|
||||||
|
|
||||||
row_idx += 1
|
row_idx += 1
|
||||||
worksheet.write(row_idx, 0, QCoreApplication.translate("main","Volume of the items") + ":")
|
worksheet.write_string(row_idx, 0, QCoreApplication.translate("main","Free space in the garage") + ":")
|
||||||
worksheet.write(row_idx, 1, float(self.ui.efVol_Stuff.text()))
|
# worksheet.write(row_idx, 1, self.ui.efVol_Free.text())
|
||||||
|
worksheet.write_formula(row_idx, 1, f"=B{row_idx-1}-B{row_idx}")
|
||||||
|
|
||||||
row_idx += 1
|
row_idx += 1
|
||||||
worksheet.write(row_idx, 0, QCoreApplication.translate("main","Free space in the garage") + ":")
|
worksheet.write_string(row_idx, 0, QCoreApplication.translate("main", "Total weight") + ":")
|
||||||
worksheet.write(row_idx, 1, float(self.ui.efVol_Free.text()))
|
# worksheet.write(row_idx, 1, self.ui.efWeight.text())
|
||||||
|
worksheet.write_formula(row_idx, 1, f"=SUM(E7:E{row_idx-5}")
|
||||||
|
|
||||||
row_idx += 1
|
fit_col_widths(tblStuff, worksheet)
|
||||||
worksheet.write(row_idx, 0, QCoreApplication.translate("main", "Total weight") + ":")
|
|
||||||
worksheet.write(row_idx, 1, float(self.ui.efWeight.text()))
|
|
||||||
|
|
||||||
workbook.close()
|
workbook.close()
|
||||||
msg = QCoreApplication.translate("main", "Successfully exported to EXCEL") + " :-)"
|
msg = QCoreApplication.translate("main", "Successfully exported to EXCEL") + " :-)"
|
||||||
|
@ -760,7 +745,7 @@ class MainWindow(QMainWindow):
|
||||||
garage_length = tblGarage.item(0, 0).text()
|
garage_length = tblGarage.item(0, 0).text()
|
||||||
if garage_length:
|
if garage_length:
|
||||||
try:
|
try:
|
||||||
garage_length = float(garage_length)
|
garage_length = float(garage_length.replace(',', '.'))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
garage_length = 0.0
|
garage_length = 0.0
|
||||||
is_error = True
|
is_error = True
|
||||||
|
@ -770,7 +755,7 @@ class MainWindow(QMainWindow):
|
||||||
garage_width = tblGarage.item(0, 1).text()
|
garage_width = tblGarage.item(0, 1).text()
|
||||||
if garage_width:
|
if garage_width:
|
||||||
try:
|
try:
|
||||||
garage_width = float(garage_width)
|
garage_width = float(garage_width.replace(',', '.'))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
garage_width = 0.0
|
garage_width = 0.0
|
||||||
is_error = True
|
is_error = True
|
||||||
|
@ -780,13 +765,13 @@ class MainWindow(QMainWindow):
|
||||||
garage_height = tblGarage.item(0, 2).text()
|
garage_height = tblGarage.item(0, 2).text()
|
||||||
if garage_height:
|
if garage_height:
|
||||||
try:
|
try:
|
||||||
garage_height = float(garage_height)
|
garage_height = float(garage_height.replace(',', '.'))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
garage_height = 0.0
|
garage_height = 0.0
|
||||||
is_error = True
|
is_error = True
|
||||||
|
|
||||||
if not is_error:
|
if not is_error:
|
||||||
garage_vol = round(float(garage_length) * float(garage_width) * float(garage_height), 2)
|
garage_vol = round(garage_length * garage_width * garage_height, 2)
|
||||||
else:
|
else:
|
||||||
msg = QCoreApplication.translate("main", "Error in the garage dimension") + " :-("
|
msg = QCoreApplication.translate("main", "Error in the garage dimension") + " :-("
|
||||||
self.statusBar.showMessage(msg, 5000)
|
self.statusBar.showMessage(msg, 5000)
|
||||||
|
@ -810,34 +795,34 @@ class MainWindow(QMainWindow):
|
||||||
length = 0
|
length = 0
|
||||||
width = 0
|
width = 0
|
||||||
height = 0
|
height = 0
|
||||||
item_length = tblStuff.item(row, COL_LENGTH)
|
item_length = tblStuff.item(row, COL_STUFF_LENGTH)
|
||||||
item_width = tblStuff.item(row, COL_WIDTH)
|
item_width = tblStuff.item(row, COL_STUFF_WIDTH)
|
||||||
item_height = tblStuff.item(row, COL_HEIGHT)
|
item_height = tblStuff.item(row, COL_STUFF_HEIGHT)
|
||||||
|
|
||||||
if item_length:
|
if item_length:
|
||||||
try:
|
try:
|
||||||
length = float(item_length.text())
|
length = float(item_length.text().replace(',', '.'))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
length = 0
|
length = 0
|
||||||
is_error = True
|
is_error = True
|
||||||
|
|
||||||
if item_width:
|
if item_width:
|
||||||
try:
|
try:
|
||||||
width = float(item_width.text())
|
width = float(item_width.text().replace(',', '.'))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
width = 0
|
width = 0
|
||||||
is_error = True
|
is_error = True
|
||||||
|
|
||||||
if item_height:
|
if item_height:
|
||||||
try:
|
try:
|
||||||
height = float(item_height.text())
|
height = float(item_height.text().replace(',', '.'))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
height = 0
|
height = 0
|
||||||
is_error = True
|
is_error = True
|
||||||
|
|
||||||
vol = round(length * width * height, 2)
|
vol = length * width * height
|
||||||
|
|
||||||
stuff_vol = stuff_vol + vol
|
stuff_vol = round(stuff_vol + vol, 2)
|
||||||
|
|
||||||
if is_error:
|
if is_error:
|
||||||
# stuff_vol = 0.0
|
# stuff_vol = 0.0
|
||||||
|
@ -851,16 +836,22 @@ class MainWindow(QMainWindow):
|
||||||
|
|
||||||
# get garage vol
|
# get garage vol
|
||||||
garage_vol = self.get_garage_vol()
|
garage_vol = self.get_garage_vol()
|
||||||
|
# print(f"{garage_vol=}")
|
||||||
|
|
||||||
# get stuff vol
|
# get stuff vol
|
||||||
stuff_vol = self.get_stuff_vol()
|
stuff_vol = self.get_stuff_vol()
|
||||||
|
# print(f"{stuff_vol=}")
|
||||||
|
|
||||||
|
# get free space
|
||||||
|
free_vol = garage_vol - stuff_vol
|
||||||
|
# print(f"{free_vol=}")
|
||||||
|
|
||||||
# display results
|
# display results
|
||||||
self.ui.efVol_Garage.setText(f"{garage_vol:2.2f}")
|
self.ui.efVol_Garage.setText(f"{str(garage_vol).replace('.', ',')}")
|
||||||
self.ui.efVol_Stuff.setText(f"{stuff_vol:2.2f}")
|
self.ui.efVol_Stuff.setText(f"{str(stuff_vol).replace('.', ',')}")
|
||||||
self.ui.efVol_Free.setText(f"{garage_vol - stuff_vol:2.2f}")
|
self.ui.efVol_Free.setText(f"{str(free_vol).replace('.', ',')}")
|
||||||
|
|
||||||
if ( garage_vol - stuff_vol ) < 0:
|
if free_vol < 0:
|
||||||
self.ui.efVol_Free.setStyleSheet("border: 1px solid red;")
|
self.ui.efVol_Free.setStyleSheet("border: 1px solid red;")
|
||||||
else:
|
else:
|
||||||
self.ui.efVol_Free.setStyleSheet("")
|
self.ui.efVol_Free.setStyleSheet("")
|
||||||
|
@ -874,16 +865,16 @@ class MainWindow(QMainWindow):
|
||||||
|
|
||||||
for row in range(row_count):
|
for row in range(row_count):
|
||||||
weight = 0.0
|
weight = 0.0
|
||||||
item = tblStuff.item(row, COL_WEIGHT)
|
item = tblStuff.item(row, COL_STUFF_WEIGHT)
|
||||||
if item:
|
if item:
|
||||||
try:
|
try:
|
||||||
weight = float(item.text())
|
weight = float(str(item.text()).replace(',','.'))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
weight = 0.0
|
weight = 0.0
|
||||||
|
|
||||||
weight_sum = round(weight_sum + weight, 2)
|
weight_sum = round(weight_sum + weight, 2)
|
||||||
|
|
||||||
self.ui.efWeight.setText(f"{weight_sum:2.2f}")
|
self.ui.efWeight.setText(f"{str(weight_sum).replace('.', ',')}")
|
||||||
|
|
||||||
def store_selected_language(self, menu):
|
def store_selected_language(self, menu):
|
||||||
""" Stores selected menu labels to ini-file. """
|
""" Stores selected menu labels to ini-file. """
|
||||||
|
|
79
src/utils.py
79
src/utils.py
|
@ -13,12 +13,14 @@ import os
|
||||||
from PySide2.QtWidgets import QMessageBox, QApplication, QMainWindow, QTableWidgetItem, QStatusBar, QAction
|
from PySide2.QtWidgets import QMessageBox, QApplication, QMainWindow, QTableWidgetItem, QStatusBar, QAction
|
||||||
from PySide2 import QtCore
|
from PySide2 import QtCore
|
||||||
from PySide2.QtGui import QIcon, QPixmap
|
from PySide2.QtGui import QIcon, QPixmap
|
||||||
from PySide2.QtCore import QFile, QSize
|
from PySide2.QtCore import QFile, QSize, Qt
|
||||||
from PySide2.QtUiTools import QUiLoader
|
from PySide2.QtUiTools import QUiLoader
|
||||||
|
|
||||||
# local globals
|
# local globals
|
||||||
APP_ICON = "./img/icons8-garage-32.ico"
|
APP_ICON = "./img/icons8-garage-32.ico"
|
||||||
|
|
||||||
|
STD_COL_WIDTH: int = 7
|
||||||
|
|
||||||
def resource_path(relative_path):
|
def resource_path(relative_path):
|
||||||
""" Get absolute path to resource, works for dev and for PyInstaller """
|
""" Get absolute path to resource, works for dev and for PyInstaller """
|
||||||
try:
|
try:
|
||||||
|
@ -52,3 +54,78 @@ def show_about():
|
||||||
msg.setStandardButtons(QMessageBox.Ok)
|
msg.setStandardButtons(QMessageBox.Ok)
|
||||||
|
|
||||||
msg.exec_()
|
msg.exec_()
|
||||||
|
|
||||||
|
def str_iff(input: str, output1: str, output2: str, output3: str) -> str:
|
||||||
|
""" Return outputs based on length of given input """
|
||||||
|
str_ret = ""
|
||||||
|
str_length = len(input)
|
||||||
|
|
||||||
|
if str_length < 0:
|
||||||
|
str_ret = output1
|
||||||
|
|
||||||
|
if str_length == 0:
|
||||||
|
str_ret = output2
|
||||||
|
|
||||||
|
if str_length > 0:
|
||||||
|
str_ret = output3
|
||||||
|
|
||||||
|
return str_ret
|
||||||
|
|
||||||
|
def fit_col_widths(table, worksheet):
|
||||||
|
try:
|
||||||
|
model = table.model().sourceModel()
|
||||||
|
except AttributeError:
|
||||||
|
model = table.model()
|
||||||
|
|
||||||
|
max_col_lengths = []
|
||||||
|
dict_max_col_length = {}
|
||||||
|
sel_indexes = table.selectedIndexes()
|
||||||
|
sel_rows_idx = table.selectionModel().selectedRows()
|
||||||
|
sel_rows = []
|
||||||
|
for sel_index in sel_rows_idx:
|
||||||
|
sel_rows.append(sel_index.row())
|
||||||
|
|
||||||
|
for col_ind in range(model.columnCount()):
|
||||||
|
cur_item_length = 0
|
||||||
|
lengths = []
|
||||||
|
|
||||||
|
# get column header
|
||||||
|
row = 0
|
||||||
|
col_header_text = str(model.headerData(col_ind, Qt.Horizontal))
|
||||||
|
if not table.isColumnHidden(col_ind): # export only visible column headers
|
||||||
|
cur_item_length = len(col_header_text)
|
||||||
|
lengths.append(cur_item_length)
|
||||||
|
|
||||||
|
# get columns data lengths
|
||||||
|
row = 1
|
||||||
|
# iterate over all rows
|
||||||
|
for row_ind in range(model.rowCount()):
|
||||||
|
if row_ind in sel_rows:
|
||||||
|
item = model.item(row_ind, col_ind)
|
||||||
|
if item:
|
||||||
|
cur_item_text = item.text()
|
||||||
|
cur_item_length = len(cur_item_text)
|
||||||
|
else:
|
||||||
|
cur_item_length = 0
|
||||||
|
|
||||||
|
if not table.isColumnHidden(col_ind): # export only visible column headers
|
||||||
|
lengths.append(cur_item_length)
|
||||||
|
|
||||||
|
if not table.isColumnHidden(col_ind): # export only visible column headers
|
||||||
|
dict_max_col_length[col_ind] = lengths
|
||||||
|
|
||||||
|
col_ind = 0
|
||||||
|
for col in dict_max_col_length:
|
||||||
|
lengths = dict_max_col_length[col]
|
||||||
|
col_width = max(lengths)
|
||||||
|
|
||||||
|
## special: enlage first col
|
||||||
|
if col == 0:
|
||||||
|
col_width = 20
|
||||||
|
# debug info
|
||||||
|
# print(f"worksheet.set_column({col_ind} -> {col_width})")
|
||||||
|
# worksheet.write(29, col_ind, col_width)
|
||||||
|
## debug info
|
||||||
|
if col_width > STD_COL_WIDTH: # anticipated default size
|
||||||
|
worksheet.set_column(col_ind, col_ind, col_width*1.25)
|
||||||
|
col_ind += 1
|
||||||
|
|
Loading…
Reference in a new issue