clevic 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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)