q2rad 0.1.104__tar.gz → 0.1.105__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of q2rad might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: q2rad
3
- Version: 0.1.104
3
+ Version: 0.1.105
4
4
  Summary: RAD - database, GUI, reports
5
5
  Author: Andrei Puchko
6
6
  Author-email: andrei.puchko@gmx.de
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "q2rad"
3
- version = "0.1.104"
3
+ version = "0.1.105"
4
4
  description = "RAD - database, GUI, reports"
5
5
  authors = ["Andrei Puchko <andrei.puchko@gmx.de>"]
6
6
  readme = "README.md"
@@ -983,6 +983,9 @@ class Q2ReportColumns(Q2Form, ReportForm):
983
983
  self.add_control("/")
984
984
 
985
985
  def column_remove(self):
986
+ rows_qt = len(self.columns_data.rows)
987
+ if rows_qt > 1 and q2AskYN(f"This will also remove column(s) in {rows_qt} row sections ") != 2:
988
+ return
986
989
  selected_columns = list(set([x[1] for x in self.columns_sheet.get_selection()]))
987
990
  selected_columns.reverse()
988
991
  for current_column in selected_columns:
@@ -1212,6 +1215,7 @@ class Q2ReportRows(Q2Form, ReportForm):
1212
1215
  self.table_page_footer_rows = None
1213
1216
 
1214
1217
  self.spanned_cells = {}
1218
+ self.selection_first_cell = None
1215
1219
 
1216
1220
  self.report_columns_form = report_columns_form
1217
1221
  self.report_report_form: Q2ReportReport = report_columns_form.report_report_form
@@ -1409,7 +1413,7 @@ class Q2ReportRows(Q2Form, ReportForm):
1409
1413
  selected_rows = self.get_selected_rows()
1410
1414
  selected_rows.reverse()
1411
1415
  for current_row in selected_rows:
1412
- current_row = self.rows_sheet.current_row()
1416
+ # current_row = self.rows_sheet.current_row()
1413
1417
  self.rows_data.heights.pop(current_row)
1414
1418
  self.rows_sheet.remove_row(current_row)
1415
1419
  tmp = {}
@@ -1705,8 +1709,8 @@ class Q2ReportRows(Q2Form, ReportForm):
1705
1709
  # open up spanned cells
1706
1710
  for x in selection:
1707
1711
  if x in self.spanned_cells:
1708
- for row in range(x[0], x[0]+self.spanned_cells[x][0]):
1709
- for col in range(x[1], x[1]+self.spanned_cells[x][1]):
1712
+ for row in range(x[0], x[0] + self.spanned_cells[x][0]):
1713
+ for col in range(x[1], x[1] + self.spanned_cells[x][1]):
1710
1714
  if (row, col) not in selection:
1711
1715
  selection.append((row, col))
1712
1716
 
@@ -1746,18 +1750,18 @@ class Q2ReportRows(Q2Form, ReportForm):
1746
1750
  row = self.rows_sheet.current_row()
1747
1751
  column = self.rows_sheet.current_column()
1748
1752
  cell_key = f"{row},{column}"
1749
- if cell_key not in self.rows_data.cells:
1750
- self.rows_data.cells[cell_key] = {}
1751
- set_dict_default(self.rows_data.cells[cell_key], "data", "")
1752
- set_dict_default(self.rows_data.cells[cell_key], "style", {})
1753
+ self.ensure_cell(cell_key)
1753
1754
 
1754
- all_style.update(self.rows_data.cells[cell_key]["style"])
1755
+ # when selection - using style of first selected cell - fix it
1756
+ if len(self.rows_sheet.get_selection()) == 1:
1757
+ self.selection_first_cell = cell_key
1758
+ all_style.update(self.rows_data.cells[cell_key]["style"])
1755
1759
 
1756
- self.report_report_form.focus_changed(self.rows_sheet)
1760
+ self.report_report_form.focus_changed(self.rows_sheet)
1757
1761
 
1758
- self.report_report_form.update_style_bar(
1759
- all_style, self.rows_data.cells[cell_key]["style"], self.rows_data.cells[cell_key]
1760
- )
1762
+ self.report_report_form.update_style_bar(
1763
+ all_style, self.rows_data.cells[cell_key]["style"], self.rows_data.cells[cell_key]
1764
+ )
1761
1765
 
1762
1766
  def rows_sheet_focus_out(self):
1763
1767
  pass
@@ -1868,6 +1872,16 @@ class Q2ReportRows(Q2Form, ReportForm):
1868
1872
  self.add_table_footer(self.rows_data.get("table_footer"))
1869
1873
 
1870
1874
  def apply_style(self):
1875
+ selection = self.rows_sheet.get_selection()
1876
+ if len(selection) > 1:
1877
+ for cell_key in selection:
1878
+ cell_key = "{0},{1}".format(cell_key[0],cell_key[1])
1879
+ if cell_key != self.selection_first_cell:
1880
+ self.ensure_cell(cell_key)
1881
+ self.rows_data.cells[cell_key]["style"] = dict(
1882
+ self.rows_data.cells[self.selection_first_cell]["style"]
1883
+ )
1884
+
1871
1885
  self.rows_sheet.sheet_styles = self.get_style()
1872
1886
  self.rows_sheet.cell_styles = {}
1873
1887
  self.rows_sheet.clear_spans()
@@ -1884,6 +1898,12 @@ class Q2ReportRows(Q2Form, ReportForm):
1884
1898
  self.rows_sheet.set_span(row, column, rowspan, colspan)
1885
1899
  self.rows_sheet.set_cell_style_sheet(None, row, column)
1886
1900
 
1901
+ def ensure_cell(self, cell_key):
1902
+ if cell_key not in self.rows_data.cells:
1903
+ self.rows_data.cells[cell_key] = {}
1904
+ set_dict_default(self.rows_data.cells[cell_key], "data", "")
1905
+ set_dict_default(self.rows_data.cells[cell_key], "style", {})
1906
+
1887
1907
  def add_table_header(self, header_data={}):
1888
1908
  if self.rows_data.role != "table":
1889
1909
  return
@@ -0,0 +1 @@
1
+ __version__ = "0.1.105"
@@ -15,7 +15,7 @@ entry_points = \
15
15
 
16
16
  setup_kwargs = {
17
17
  'name': 'q2rad',
18
- 'version': '0.1.104',
18
+ 'version': '0.1.105',
19
19
  'description': 'RAD - database, GUI, reports',
20
20
  'long_description': '# The RAD (rapid application development) system. \n\n**(code less, make more)** \n**Based on:** \n q2db (https://pypi.org/project/q2db) \n q2gui (https://pypi.org/project/q2gui) \n q2report (https://pypi.org/project/q2report) \n\n## [Read the docs](docs/index.md) \n## Install & run\n**Linux**\n```bash\nmkdir q2rad && \\\n cd q2rad && \\\n python3 -m pip install --upgrade pip && \\\n python3 -m venv q2rad && \\\n source q2rad/bin/activate && \\\n python3 -m pip install --upgrade q2rad && \\\n q2rad\n```\n**Windows**\n```bash\nmkdir q2rad && \\\n cd q2rad && \\\n py -m pip install --upgrade pip && \\\n py -m venv q2rad && \\\n call q2rad/scripts/activate && \\\n pip install --upgrade q2rad && \\\n q2rad\n```\n**Mac**\n```bash\nmkdir q2rad && \\\n cd q2rad && \\\n python3 -m pip install --upgrade pip && \\\n python3 -m venv q2rad && \\\n source q2rad/bin/activate && \\\n python3 -m pip install --upgrade q2rad && \\\n q2rad\n```\n**Docker**\n```bash\ncurl -s https://raw.githubusercontent.com/AndreiPuchko/q2rad/main/docker-x11/dockerfile > dockerfile && \\\n mkdir -p q2rad_storage/Desktop && \\\n chmod -R 777 q2rad_storage && \\\n sudo docker build -t q2rad . && \\\n sudo docker run -it \\\n -v /tmp/.X11-unix:/tmp/.X11-unix \\\n -v $(pwd)/q2rad_storage:/home/q2rad \\\n -e DISPLAY=$DISPLAY \\\n -u q2rad q2rad python3 -m q2rad\n\n```\n## Concept:\nApplication as a database\n```python\nForms: # may have main menu (menubar) definitions\n # may be linked to database table\n \n Lines: # form fields(type of data and type of form control) and \n # layout definitions\n # when form is linked to database - database columns definitions\n \n Actions: # applies for database linked forms\n # may be standard CRUD-action \n # or \n # run a script (run reports, forms and etc)\n # or\n # may have linked subforms (one-to-many)\n\nModules: # python scripts\n\nQueries: # query development and debugging tool\n\nReports: # multiformat (HTML, DOCX, XLSX) reporting tool \n```\n',
21
21
  'author': 'Andrei Puchko',
@@ -1 +0,0 @@
1
- __version__ = "0.1.104"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes