clevic 0.6.0 → 0.7.0

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.
data/History.txt CHANGED
@@ -1,3 +1,185 @@
1
+ 2008-07-25 12:04 panic
2
+
3
+ * bin/clevic, lib/clevic/db_options.rb:
4
+ fix username not being overridden by command-line options
5
+
6
+ 2008-07-25 11:55 panic
7
+
8
+ * README.txt, Rakefile, TODO, bin/clevic, config/hoe.rb,
9
+ lib/clevic/browser.rb, lib/clevic/db_options.rb,
10
+ lib/clevic/record.rb, models/accounts_models.rb,
11
+ models/times_models.rb, models/times_sqlite_models.rb:
12
+ Automatically keep track of model definition order, and show
13
+ tabs in that order. Group models under one Rake namespace.
14
+
15
+ 2008-07-25 11:35 panic
16
+
17
+ * website/index.html, website/index.txt,
18
+ website/template.html.erb:
19
+ more documentation
20
+
21
+ 2008-07-25 11:22 panic
22
+
23
+ * TODO:
24
+ rearrange TODO
25
+
26
+ 2008-07-25 11:17 panic
27
+
28
+ * History.txt, Manifest.txt, README.txt, Rakefile, script/console:
29
+ update packaging
30
+
31
+ 2008-07-24 21:09 panic
32
+
33
+ * accounts_models.rb, minimal_models.rb, models,
34
+ models/accounts_models.rb, models/minimal_models.rb,
35
+ models/times_models.rb, models/times_sqlite_models.rb,
36
+ models/values_models.rb, times_models.rb, times_sqlite_model.rb,
37
+ values_models.rb:
38
+ move model definition files to their own directory
39
+
40
+ 2008-07-24 21:07 panic
41
+
42
+ * TODO, accounts_models.rb, times_models.rb, website/index.html:
43
+ notes and comments
44
+
45
+ 2008-07-24 21:03 panic
46
+
47
+ * sql/accounts.sql, sql/times.sql:
48
+ remove panic
49
+
50
+ 2008-07-24 21:00 panic
51
+
52
+ * Rakefile, accounts_models.rb, bin/clevic, lib/clevic.rb,
53
+ lib/clevic/browser.rb, lib/clevic/db_options.rb,
54
+ lib/clevic/item_delegate.rb, lib/clevic/record.rb,
55
+ lib/clevic/table_model.rb, minimal_models.rb, times_models.rb,
56
+ times_sqlite_model.rb, values_models.rb:
57
+ Inherit models from Clevic::Record. Allow for minimal model
58
+ definitions.
59
+
60
+ 2008-07-24 19:03 panic
61
+
62
+ * TODO, accounts_models.rb, bin/clevic, lib/clevic/cache_table.rb,
63
+ lib/clevic/db_options.rb, lib/clevic/item_delegate.rb,
64
+ lib/clevic/table_model.rb, lib/clevic/table_view.rb,
65
+ times_models.rb, times_sqlite_model.rb:
66
+ make sure current record is saved when tab loses focus
67
+
68
+ 2008-07-24 15:59 panic
69
+
70
+ * TODO, lib/clevic/field.rb, lib/clevic/table_view.rb:
71
+ don't allow filtering on virtual fields
72
+
73
+ 2008-07-24 13:54 panic
74
+
75
+ * lib/clevic/extensions.rb, lib/clevic/model_builder.rb,
76
+ lib/clevic/table_model.rb, lib/clevic/ui/browser.ui:
77
+ UI and code tweaks
78
+
79
+ 2008-07-24 13:38 panic
80
+
81
+ * TODO, accounts_models.rb, lib/clevic/field.rb,
82
+ lib/clevic/model_builder.rb, lib/clevic/table_model.rb,
83
+ times_models.rb, times_sqlite_model.rb:
84
+ Allow display of related fields as read-only. New read-only
85
+ attribute for fields. Distinct now default sorts by frequency.
86
+ All field types can now use a Proc for :display.
87
+
88
+ 2008-07-24 11:35 panic
89
+
90
+ * accounts_models.rb, lib/clevic/field.rb,
91
+ lib/clevic/model_builder.rb, times_models.rb,
92
+ times_sqlite_model.rb:
93
+ fix some issue with display of relational fields
94
+
95
+ 2008-07-24 10:50 panic
96
+
97
+ * lib/clevic/delegates.rb:
98
+ check before doing true/false gsub
99
+
100
+ 2008-07-24 10:44 panic
101
+
102
+ * TODO, accounts_models.rb, lib/clevic/cache_table.rb,
103
+ lib/clevic/delegates.rb, lib/clevic/extensions.rb,
104
+ lib/clevic/field.rb, lib/clevic/model_builder.rb,
105
+ lib/clevic/table_model.rb, lib/clevic/version.rb,
106
+ times_models.rb, times_sqlite_model.rb:
107
+ allow for blocks to format relational delegates
108
+
109
+ 2008-07-23 09:46 panic
110
+
111
+ * Rakefile, TODO, accounts_models.rb, lib/clevic/db_options.rb,
112
+ times_models.rb, values_models.rb:
113
+ remove username. Do clobber list.
114
+
115
+ 2008-07-21 18:12 panic
116
+
117
+ * TODO:
118
+ update todo
119
+
120
+ 2008-07-17 18:41 panic
121
+
122
+ * Rakefile, TODO, bin/clevic, config/hoe.rb,
123
+ lib/clevic/cache_table.rb, lib/clevic/db_options.rb,
124
+ lib/clevic/table_model.rb, lib/clevic/version.rb:
125
+ fix search with sqlite
126
+
127
+ 2008-07-17 16:50 panic
128
+
129
+ * TODO, lib/clevic/db_options.rb, lib/clevic/delegates.rb,
130
+ lib/clevic/field.rb, lib/clevic/item_delegate.rb, sql/times.sql,
131
+ sql/times_sqlite.sql, times_models.rb, times_sqlite_model.rb:
132
+ check that it works with sqlite
133
+
134
+ 2008-07-17 11:15 panic
135
+
136
+ * accounts_models.rb:
137
+ really fix use of test database
138
+
139
+ 2008-07-17 10:48 panic
140
+
141
+ * Manifest.txt:
142
+ add necessary generated files to Manifest
143
+
144
+ 2008-07-07 20:42 panic
145
+
146
+ * Manifest.txt, website/javascripts/rounded_corners_lite.inc.js:
147
+ fix manifest
148
+
149
+ 2008-07-07 20:39 panic
150
+
151
+ * INSTALL, Rakefile, accounts_models.rb, bin/clevic,
152
+ config/jamis.rb, lib/clevic.rb, lib/clevic/cache_table.rb,
153
+ lib/clevic/db_options.rb, lib/clevic/version.rb, template,
154
+ times_models.rb, values_models.rb:
155
+ new DbOptions class. Move jamis.rb into config.
156
+
157
+ 2008-07-07 19:39 panic
158
+
159
+ * README.txt, Rakefile, accounts_models.rb, config, config/hoe.rb,
160
+ config/requirements.rb, lib/clevic/version.rb, script,
161
+ script/console, script/destroy, script/generate,
162
+ script/txt2html, tasks, tasks/website.rake, values_models.rb,
163
+ website, website/index.html, website/index.txt,
164
+ website/javascripts,
165
+ website/javascripts/rounded_corners_lite.inc.js,
166
+ website/screenshot.png, website/stylesheets,
167
+ website/stylesheets/screen.css, website/template.html.erb:
168
+ pull in rubigen scripts and things from another project
169
+
170
+ 2008-07-05 20:53 panic
171
+
172
+ * README.txt:
173
+ update README slightly
174
+
175
+ 2008-07-04 20:16 panic
176
+
177
+ * History.txt, Manifest.txt, README.txt, Rakefile, TODO,
178
+ bin/clevic, lib/clevic/db_options.rb,
179
+ lib/clevic/model_builder.rb, lib/clevic/version.rb, template,
180
+ template/jamis.rb:
181
+ improve docs and comments. Do gem dependencies.
182
+
1
183
  2008-06-26 14:56 panic
2
184
 
3
185
  * README.txt:
data/Manifest.txt CHANGED
@@ -3,7 +3,6 @@ Manifest.txt
3
3
  README.txt
4
4
  Rakefile
5
5
  TODO
6
- accounts_models.rb
7
6
  bin/clevic
8
7
  bin/import-times
9
8
  config/hoe.rb
@@ -21,6 +20,7 @@ lib/clevic/field.rb
21
20
  lib/clevic/item_delegate.rb
22
21
  lib/clevic/model_builder.rb
23
22
  lib/clevic/model_column.rb
23
+ lib/clevic/record.rb
24
24
  lib/clevic/search_dialog.rb
25
25
  lib/clevic/table_model.rb
26
26
  lib/clevic/table_view.rb
@@ -30,15 +30,19 @@ lib/clevic/ui/icon.png
30
30
  lib/clevic/ui/search_dialog.ui
31
31
  lib/clevic/ui/search_dialog_ui.rb
32
32
  lib/clevic/version.rb
33
+ models/accounts_models.rb
34
+ models/minimal_models.rb
35
+ models/times_models.rb
36
+ models/times_sqlite_models.rb
37
+ models/values_models.rb
33
38
  script/console
34
39
  script/destroy
35
40
  script/generate
36
41
  script/txt2html
37
42
  sql/accounts.sql
38
43
  sql/times.sql
44
+ sql/times_sqlite.sql
39
45
  tasks/website.rake
40
- times_models.rb
41
- values_models.rb
42
46
  website/index.html
43
47
  website/index.txt
44
48
  website/screenshot.png
data/README.txt CHANGED
@@ -1,35 +1,27 @@
1
1
  = clevic
2
2
 
3
- http://clevic.rubyforge.org/
3
+ http://clevic.rubyforge.org
4
4
 
5
5
  == DESCRIPTION:
6
6
 
7
7
  Database framework and Qt Model/View GUI for data capture and
8
- editing of tables in a pre-existing relational DBMS. Thanks to ActiveRecord,
9
- Postgresql, Mysql and so on are supported. Has only been tested with Postgres.
8
+ editing of tables in a pre-existing relational DBMS.
10
9
 
11
- There is a mild focus on reducing keystrokes for repetitive data capture,
12
- so it provides
13
- nice keyboard shortcuts for all sorts of things. Model (table) objects
14
- are extensible to allow for model (table) specific cleverness, like
15
- auto-filling-in of fields.
10
+ Using ActiveRecord means Clevic supports Postgresql, Mysql and so on. It's been tested with Postgres and sqlite.
16
11
 
17
- Start with Clevic::Browser
12
+ Using Qt means it runs on Linux, Windows and OSX.
18
13
 
19
14
  == FEATURES:
20
15
 
16
+ === User Interface
17
+
18
+ * edit data in a table
19
+ * in-place combo boxes for choosing values from related tables (foreign keys)
20
+ * distinct combo boxes to list previous values for a field
21
+ * display read-only fields from related tables
21
22
  * Filter by current field.
22
23
  * search by field contents.
23
- * uses ActiveRecord for data access. Does *not* use the Qt SQL models.
24
- * sensible caching to handle large data sets without unnecessary memory and cpu usage
25
- * in-place Combo boxes for related table and foreign keys
26
- * distinct combo boxes to list previous values for a field
27
24
  * cut and paste in CSV format
28
- * sortable by row headers (not yet)
29
- * color highlighting of fields and records on definable criteria (not yet).
30
- * extensions to various Qt classes to make db programming easier.
31
- * leverages SQL whenever possible to handle large datasets, sorting, filtering
32
- etc. So it's probably not suitable for talking to a remote db across a slow link.
33
25
 
34
26
  === Shortcuts:
35
27
 
@@ -43,12 +35,33 @@ Start with Clevic::Browser
43
35
 
44
36
  === Model definition:
45
37
 
46
- Right now, models must be defined in Ruby. The framework provides
47
- an easy Rails-migrations-like syntax for that.
48
- Start with account_models.rb and times_models.rb, with associated SQL
49
- schemas in the sql subdirectory. For implementation and more extensive
38
+ Models and their UI representation must be defined in Ruby. A class that
39
+ inherits from Clevic::Record (which itself inherits from ActiveRecord::Base) will provide
40
+ a minimally functional UI.
41
+ Beyond that, the framework provides
42
+ an easy Rails-migrations-like syntax for defining more complex and useful behaviour.
43
+
44
+ In the models/ subdirectory, start with minimal_models.rb.
45
+ account_models.rb and times_models.rb provide definitions for more real-world examples.
46
+ Associated SQL schemas are in the sql subdirectory.
47
+
48
+ For implementation and more extensive
50
49
  comments, see Clevic::Browser and Clevic::ModelBuilder.
51
50
 
51
+ === Framework
52
+
53
+ * use blocks to format values for particular fields.
54
+ * sensible caching to handle large data sets without unnecessary memory and cpu usage
55
+ * extensions to various Qt classes to make db programming easier.
56
+ * uses ActiveRecord for data access. Does *not* use the Qt SQL models.
57
+ * leverages SQL whenever possible to handle large datasets, sorting, filtering
58
+ etc. So it's probably not suitable for talking to a remote db across a slow link.
59
+
60
+ === Plans
61
+
62
+ * sortable by row headers
63
+ * color highlighting of fields and records on definable criteria
64
+
52
65
  == PROBLEMS:
53
66
 
54
67
  See TODO file.
@@ -62,7 +75,7 @@ See TODO file.
62
75
  === Gems
63
76
  * fastercsv
64
77
  * ruby-qt4
65
- * qtext (not available on rubyforge yet. Download from http://www.semiosix.com/qtext-0.2.0.gem)
78
+ * qtext
66
79
  * ActiveRecord
67
80
 
68
81
  === Other
data/Rakefile CHANGED
@@ -15,7 +15,8 @@ end
15
15
 
16
16
  # list of .ui files
17
17
  UI_FILES = FileList.new( 'lib/clevic/ui/*.ui' )
18
- CLEAN.include( 'ChangeLog', 'lib/clevic/ui/*.rb' )
18
+ CLEAN.include( 'ChangeLog' )
19
+ CLOBBER.include( 'ChangeLog', 'pkg', 'lib/clevic/ui/*_ui.rb' )
19
20
 
20
21
  UI_FILES.each do |ui_file|
21
22
  # make tasks to generate _ui.rb files
@@ -50,10 +51,16 @@ namespace :ui do
50
51
  end
51
52
  end
52
53
 
53
- desc "Runs Clevic in warning mode, with test databases and debug flag on"
54
+ desc "Runs Clevic in normal mode, with live database."
54
55
  task :run => :ui do |t|
55
56
  ARGV.shift()
56
- exec "ruby -w -Ilib bin/clevic -D #{ARGV.join(' ')}"
57
+ exec "ruby -Ilib bin/clevic #{ARGV.join(' ')}"
58
+ end
59
+
60
+ desc "Runs Clevic in warning mode, with test databases and debug flag on"
61
+ task :sqlite => :ui do |t|
62
+ ARGV.shift()
63
+ exec "ruby -Ilib bin/clevic #{ARGV.join(' ')} times_sqlite_model.rb"
57
64
  end
58
65
 
59
66
  desc "Runs Clevic in debug mode, with test databases"
@@ -89,10 +96,12 @@ MODELS_LIST.each do |model_file|
89
96
  end
90
97
 
91
98
  # generate runs
92
- desc "run clevic with #{model_file}"
93
- task short_model( model_file ) => :ui do |t|
94
- ARGV.shift()
95
- exec "ruby -w -Ilib bin/clevic -D #{model_file} #{ARGV.join(' ')}"
99
+ namespace :run do
100
+ desc "run clevic with #{model_file}"
101
+ task short_model( model_file ) => :ui do |t|
102
+ ARGV.shift()
103
+ exec "ruby -w -Ilib bin/clevic -D #{model_file} #{ARGV.join(' ')}"
104
+ end
96
105
  end
97
106
  end
98
107
 
@@ -114,3 +123,9 @@ Rake::RDocTask.new(:docs) do |rd|
114
123
 
115
124
  rd.options << "-t #{title}"
116
125
  end
126
+
127
+ desc "Update History.txt from the SVN log"
128
+ task :history do |t|
129
+ ARGV.shift
130
+ exec "svn2cl --break-before-msg -o History.txt #{ARGV.join(' ')}"
131
+ end
data/TODO CHANGED
@@ -1,12 +1,55 @@
1
- Times Ctrl-Shift-" should not copy date if it already exists, and should not copy time if it's a different date.
2
- Times Ctrl-Shift-" after it's done, tab doesn't change fields
3
- Times look up invoice for project leaves the wrong fields highlighted, and focus in the wrong field.
1
+ Make sure shortcuts don't edit a read-only field
2
+ generate models - DrySQL
3
+ Ctrl-PgDn to last row in this column. Also extend selection
4
+ sorting by header. See void QAbstractItemModel::sort ( int column, Qt::SortOrder order = Qt::AscendingOrder )
5
+ - layoutChanged
6
+
7
+ search with acts_as_searchable and hyperestraier
8
+
9
+ undo
10
+ - acts_as_trashable to undo deletes
11
+ - other commands. Possibly via ActiveRecord callbacks?
12
+ - Keep a history of changes, ie xy, new. xy, changed. x,y copied etc.
4
13
 
5
14
  Using F4 to open list, and then selecting from the combo and exiting using Return (or tab?) doesn't set the correct value
6
15
  wrap description, and allow Access-style zooming
7
- Undo deletes and other commands. Possibly via ActiveRecord callbacks?
8
16
 
9
- Keep a history of changes, ie xy, new. xy, changed. x,y copied etc.
17
+ search in relational fields doesn't work because the search value is compared to the id of the related record
18
+ Use Webrick as a way to export CSV reports?
19
+ See Ruport and Documatic for reports
20
+
21
+ generate models - DrySQL
22
+ Ctrl-PgDn to last row in this column. Also extend selection
23
+ sorting by header. See void QAbstractItemModel::sort ( int column, Qt::SortOrder order = Qt::AscendingOrder )
24
+ - layoutChanged
25
+
26
+ search with acts_as_searchable and hyperestraier
27
+ acts_as_trashable to undo deletes
28
+ implement undo of field changes
29
+
30
+ moving of columns
31
+ /-style keyboard search by selected column, or everything if no column selected
32
+ /-style filtering?
33
+
34
+ for dates, add year if not specified, with 6 months on either side range. Configurable?
35
+ value formatting not in model
36
+ copy a field from a mouse-selection (ctrl-b maybe)
37
+ hiding of fields
38
+
39
+ save context menu settings, filter settings, etc
40
+ filtering by various things. http://doc.trolltech.com/4.3/qsortfilterproxymodel.html
41
+ highlighting by various things
42
+ cut and paste (in model format)
43
+
44
+ drop cached model objects from CacheTable when they're not in use
45
+
46
+ allow scroll viewport to centre when at end of dataset
47
+ QAbstractItemView::ScrollHint
48
+
49
+ \value EnsureVisible Scroll to ensure that the item is visible.
50
+ \value PositionAtTop Scroll to position the item at the top of the viewport.
51
+ \value PositionAtBottom Scroll to position the item at the bottom of the viewport.
52
+ \value PositionAtCenter Scroll to position the item at the center of the viewport.
10
53
 
11
54
  OSX
12
55
  ---
@@ -24,7 +67,6 @@ editing
24
67
  -------
25
68
  F2 for standard edit, F4 for calendar edit
26
69
  Only move for data_changed if field was exited with tab, not enter.
27
- make sure record is saved when changing tabs
28
70
  tooltips for tabs
29
71
  Help in general for new data capture people
30
72
  Help to right of tabs
@@ -43,54 +85,19 @@ Doing data capture, sort by id, but unfilter reverts to date/id rather than entr
43
85
  optional warnings for back-dated entries. Highlighting
44
86
  make sure bsearch easier to install
45
87
 
46
- ORDER BY allow functions, ie lower(project)
47
88
  handle db errors
48
- test with sqlite
49
89
  easier way to run models, search LOAD_PATH
50
90
 
51
- generate models - DrySQL
52
- Ctrl-PgDn to last row in this column. Also extend selection
53
- sorting by header. See void QAbstractItemModel::sort ( int column, Qt::SortOrder order = Qt::AscendingOrder )
54
- - layoutChanged
55
-
56
- search with acts_as_searchable and hyperestraier
57
- acts_as_trashable to undo deletes
58
- implement undo of field changes
59
-
60
- cache belongs_to associations, during loading, ie don't affect ability to pick up
91
+ cache belongs_to associations, during loading, but don't affect ability to pick up
61
92
  changes more or less instantly.
62
93
 
63
- moving of columns
64
- /-style keyboard search by selected column, or everything if no column selected
65
- /-style filtering?
66
-
67
- for dates, add year if not specified, with 6 months on either side range. Configurable?
68
- value formatting not in model
69
- copy a field from a mouse-selection (ctrl-b maybe)
70
- hiding of fields
71
-
72
- save context menu settings, filter settings, etc
73
- filtering by various things. http://doc.trolltech.com/4.3/qsortfilterproxymodel.html
74
- highlighting by various things
75
- cut and paste (in model and csv format)
76
-
77
- drop cached model objects from CacheTable when they're not in use
78
-
79
- allow scroll viewport to centre when at end of dataset
80
- QAbstractItemView::ScrollHint
81
-
82
- \value EnsureVisible Scroll to ensure that the item is visible.
83
- \value PositionAtTop Scroll to position the item at the top of the viewport.
84
- \value PositionAtBottom Scroll to position the item at the bottom of the viewport.
85
- \value PositionAtCenter Scroll to position the item at the center of the viewport.
86
-
87
-
88
94
  preferences
89
95
  -----------
90
96
  store previous searches, by model & app
91
97
 
92
98
  maybe
93
99
  -----
100
+ Look at DataMapper. Not suitable - need to declare properties.
94
101
  use rubigen for creating model definition files
95
102
  allow moving of rows
96
103
  discontiguous copying of entities/csv
@@ -108,5 +115,8 @@ restricted type for Account Type record
108
115
  Times
109
116
  -----
110
117
 
111
- warnings on overlap times (in status bar)
112
- warnings on large intervals (in status bar)
118
+ Ctrl-Shift-" should not copy date if it already exists, and should not copy time if it's a different date.
119
+ Ctrl-Shift-" after it's done, tab doesn't change fields
120
+ look up invoice for project leaves the wrong fields highlighted, and focus in the wrong field.
121
+ warnings on overlap times (in status bar, or highlight)
122
+ warnings on large intervals (in status bar, or highlight)