File: NOTE.txt

package info (click to toggle)
sqlkit 0.9.6.1-2
  • links: PTS, VCS
  • area: main
  • in suites: buster, stretch
  • size: 7,684 kB
  • ctags: 3,098
  • sloc: python: 17,605; sql: 166; makefile: 92; xml: 23; sh: 11
file content (100 lines) | stat: -rw-r--r-- 3,331 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
 ===========
l'obiettivo
===========

  1. Quando si apre una tabella deve aprirsi con già le colonne dimensionate
     correttamente per il testo che deve mostrare -anche se è al momento
     vuota-, prendendo le informazioni dal database via il campo
     fields[field_name]['length'] 

  2. La dimensione della tabella deve essere sufficiente per mostrare tutte
     le colonne ma non superiore alla dimensione dello schermo.

  2b. per le colonne condimensione > di (circa) 60 caratteri, la colonna
     deve non superare i 60 caratteri.

  3. Deve essere possibile ridimensionare le colonne *ai dati presenti* in un
     *dato momento*. Questa è una operazioen differente dalla
     precedente. Quetsa funzione potrebbe ad esempio essere invocata da una
     icona Zoom-to-fit

  4. per quanto possibile le funzioni deve  essere esportabile alle table
     non SqlTable, ovvero quelle che non hanno un database sotto e quindi
     che non hanno coscienza a priori della larghezza del campo (questo può
     essere vero solo per il punto 3.)

columns
=======

Usando la proprietà 'expand' solo per le colonne corrispondenti a VarChar
con length > x (es. 20 o 30), ed il resize = True  per tutti si ottiene già
una maggiore usabilità. La versione nel repo (dev) implementa questo.

Resta un fastidioso problema di interazione quando si voglia ridimensionare.


cell-renderer
=============

Proviamo usando dei cell renderers che passino dele informazioni sulla
larghezza da utilizzare via le funzioni on_get_size.


date
----
L'esempio da cui sono partito è il cell renderer delle date, ho provato a
truccare la larghezza così::

        width  = width * XSCALE + (xpad * 2)
        height = height + (ypad * 2)

ed effettivamente se XSCALE cambia anche  la larghezza della colonna
cambia (nella fattispece la colonna ha expand = False).

.. note::

  se si cambia interattivamente XSCALE (es. con ipython) la largezza della
  colonna non cambia subito ma quando uso::

     t.treeview.column_autosize()

  se però ridimensiono a mano, non le nuove dimensioni vengono mantenute
  (cosa che ci va bene)

varchar
-------

procedi a fare un CellRenderer per i varchar che erediti da CellRendererText
e sovrascriva solo on_get_size, calcolandosi la larghezza da passare. Il
cell Renderer deve avere un campo aggiuntivo length:

  class CellRendererVarchar(gtk.CellRendererText):

      def __init__(self, length, *args, **kwargs)
           self.length = length
      	   return gtk.CellRendererText.__gobject_init__(self, *args, **kwargs)

      def on_get_size(...)

Se questa cosa dimensiona correttamente la colonna (e non vedo perché non
dovrebbe), il gioco è fatto: il resto è qualche algoritmo per decidere che
larghezza massima da dare alla finestra (ma già hai fatto qualcosa) e veder
come farsi passare le informazioni dall cell renderer per dimenzionare il tutto.

===============
Dubbi
===============

metodi virtuali
===============

io credo che si possa usare on_get_size invece che do_get_size, cosa che è
permessa a GenericCellRenderer, ma non sono sicuro. Quello che non capisco è
quando si usa il metodo virtuale do_ e quando si usa l'altro.


esempi
========

io ho un esempio di finestra che sballa i calcoli ma è in un database
differente. Nei prossimi giorni provo a metterlo sul db movies.