clevic 0.13.0.b3 → 0.13.0.b5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. data/History.txt +21 -0
  2. data/Manifest.txt +91 -85
  3. data/README.txt +33 -18
  4. data/Rakefile +2 -3
  5. data/TODO +8 -14
  6. data/bin/clevic +18 -20
  7. data/lib/clevic.rb +7 -1
  8. data/lib/clevic/action_builder.rb +4 -1
  9. data/lib/clevic/ar_methods.rb +72 -57
  10. data/lib/clevic/attribute_list.rb +4 -0
  11. data/lib/clevic/cache_table.rb +43 -69
  12. data/lib/clevic/dataset_roller.rb +22 -0
  13. data/lib/clevic/delegate.rb +11 -5
  14. data/lib/clevic/delegates/combo_delegate.rb +156 -0
  15. data/lib/clevic/delegates/distinct_delegate.rb +48 -0
  16. data/lib/clevic/delegates/relational_delegate.rb +59 -0
  17. data/lib/clevic/delegates/set_delegate.rb +31 -0
  18. data/lib/clevic/field.rb +39 -55
  19. data/lib/clevic/field_valuer.rb +23 -10
  20. data/lib/clevic/filter_command.rb +22 -36
  21. data/lib/clevic/framework.rb +37 -0
  22. data/lib/clevic/generic_format.rb +5 -1
  23. data/lib/clevic/many_field.rb +28 -3
  24. data/lib/clevic/model_builder.rb +27 -32
  25. data/lib/clevic/ordered_dataset.rb +45 -0
  26. data/lib/clevic/qt.rb +4 -1
  27. data/lib/clevic/qt/action_builder.rb +9 -1
  28. data/lib/clevic/qt/browser.rb +1 -1
  29. data/lib/clevic/qt/clipboard.rb +3 -3
  30. data/lib/clevic/qt/combo_delegate.rb +25 -89
  31. data/lib/clevic/qt/delegate.rb +25 -0
  32. data/lib/clevic/qt/distinct_delegate.rb +5 -23
  33. data/lib/clevic/qt/extensions.rb +8 -1
  34. data/lib/clevic/qt/qt_combo_box.rb +58 -0
  35. data/lib/clevic/qt/relational_delegate.rb +18 -58
  36. data/lib/clevic/qt/set_delegate.rb +4 -34
  37. data/lib/clevic/qt/simplest_delegate.rb +19 -0
  38. data/lib/clevic/qt/table_model.rb +10 -10
  39. data/lib/clevic/qt/table_view.rb +7 -23
  40. data/lib/clevic/qt/text_delegate.rb +2 -2
  41. data/lib/clevic/qt/ui/browser_ui.rb +1 -1
  42. data/lib/clevic/qt/ui/search_dialog_ui.rb +1 -1
  43. data/lib/clevic/rails_models_loaders.rb +13 -0
  44. data/lib/clevic/record.rb +2 -2
  45. data/lib/clevic/sampler.rb +85 -39
  46. data/lib/clevic/sequel_ar_adapter.rb +1 -28
  47. data/lib/clevic/sequel_clevic.rb +68 -0
  48. data/lib/clevic/sequel_meta.rb +1 -13
  49. data/lib/clevic/subclasses.rb +18 -0
  50. data/lib/clevic/swing.rb +2 -1
  51. data/lib/clevic/swing/action.rb +27 -3
  52. data/lib/clevic/swing/action_builder.rb +0 -2
  53. data/lib/clevic/swing/browser.rb +1 -10
  54. data/lib/clevic/swing/combo_delegate.rb +45 -133
  55. data/lib/clevic/swing/delegate.rb +2 -0
  56. data/lib/clevic/swing/distinct_delegate.rb +2 -14
  57. data/lib/clevic/swing/relational_delegate.rb +2 -20
  58. data/lib/clevic/swing/set_delegate.rb +13 -28
  59. data/lib/clevic/swing/table_view.rb +1 -1
  60. data/lib/clevic/table_model.rb +3 -4
  61. data/lib/clevic/table_searcher.rb +10 -31
  62. data/lib/clevic/table_view.rb +97 -43
  63. data/lib/clevic/ui/browser_ui.rb +133 -0
  64. data/lib/clevic/ui/search_dialog_ui.rb +106 -0
  65. data/lib/clevic/version.rb +2 -2
  66. data/models/accounts_models.rb +24 -21
  67. data/models/times_models.rb +34 -28
  68. data/models/times_psql_models.rb +9 -3
  69. data/models/times_sqlite_models.rb +24 -1
  70. data/sql/times_sqlite.sql +3 -3
  71. data/tasks/clevic.rake +2 -2
  72. data/test/test_cache_table.rb +9 -19
  73. data/test/test_table_searcher.rb +2 -5
  74. metadata +95 -91
  75. data/lib/clevic/order_attribute.rb +0 -63
  76. data/lib/clevic/qt/boolean_delegate.rb +0 -8
  77. data/lib/clevic/qt/delegates.rb +0 -1
  78. data/lib/clevic/qt/item_delegate.rb +0 -66
  79. data/lib/clevic/sql_dialects.rb +0 -33
  80. data/tasks/website.rake +0 -25
  81. data/test/test_order_attribute.rb +0 -62
  82. data/test/test_sql_dialects.rb +0 -77
data/History.txt CHANGED
@@ -1,3 +1,24 @@
1
+ == 0.13.0.b5
2
+ * Lots of Bug fixes
3
+ * moved all internals to Sequel::Dataset
4
+ * bring Swing combos up to date with Qt combos
5
+ * ActionBuilder fixes for Swing
6
+ * fixes for restricted combos with defined sets, sampling and editing.
7
+
8
+ == 0.13.0.b4
9
+ * Skipped past this release somehow
10
+
11
+ == 0.13.0.b3
12
+ * WARNING most importantly, support for ActiveRecord style calls now requires
13
+ a require of 'clevic/sequel_ar_adapter.rb' in your model files.
14
+ * use Dataset in CacheTable and TableSearcher. Allows for ordering
15
+ to stay correct when filtering views.
16
+ * use of Dataset allows filtering in TableView to keep previous ordering,
17
+ and filter.
18
+
19
+ == 0.13.0.b3
20
+ * Squash various buglets as they're found.
21
+
1
22
  == 0.13.0
2
23
  * Now has Java Swing support with JRuby
3
24
  * new code works with qt4-qtruby-2.0.3
data/Manifest.txt CHANGED
@@ -19,113 +19,119 @@ sql/times.sql
19
19
  sql/times_sqlite.sql
20
20
  tasks/clevic.rake
21
21
  tasks/rdoc.rake
22
- tasks/website.rake
23
22
  test/test_cache_table.rb
24
23
  test/test_helper.rb
25
24
  test/test_model_index_extensions.rb
26
- test/test_order_attribute.rb
27
- test/test_sql_dialects.rb
28
25
  test/test_table_model.rb
29
26
  test/test_table_searcher.rb
30
27
  lib/clevic.rb
31
- lib/clevic/qt/ui/browser.ui
32
- lib/clevic/qt/ui/search_dialog_ui.rb
33
- lib/clevic/qt/ui/search_dialog.ui
34
- lib/clevic/qt/ui/browser_ui.rb
35
- lib/clevic/qt/model_builder.rb
36
- lib/clevic/qt/table_model.rb
37
- lib/clevic/qt/text_area_delegate.rb
38
- lib/clevic/qt/browser.rb
39
- lib/clevic/qt/accept_reject.rb
28
+ lib/clevic/action_builder.rb
29
+ lib/clevic/sequel_naked.rb
30
+ lib/clevic/record.rb
31
+ lib/clevic/icons/icon.png
32
+ lib/clevic/dataset_roller.rb
33
+ lib/clevic/dirty.rb
34
+ lib/clevic/ordered_dataset.rb
35
+ lib/clevic/rails_models_loaders.rb
36
+ lib/clevic/default_view.rb
37
+ lib/clevic/sequel_clevic.rb
38
+ lib/clevic/sequel_ar_adapter.rb
39
+ lib/clevic/sequel_length_validation.rb
40
+ lib/clevic/ar_methods.rb
41
+ lib/clevic/sampler.rb
42
+ lib/clevic/table_index.rb
43
+ lib/clevic/table_view.rb
44
+ lib/clevic/field.rb
45
+ lib/clevic/swing.rb
46
+ lib/clevic/delegates/set_delegate.rb
47
+ lib/clevic/delegates/distinct_delegate.rb
48
+ lib/clevic/delegates/relational_delegate.rb
49
+ lib/clevic/delegates/combo_delegate.rb
50
+ lib/clevic/generic_format.rb
51
+ lib/clevic/sequel_meta.rb
52
+ lib/clevic/filter_command.rb
53
+ lib/clevic/extensions.rb
54
+ lib/clevic/view.rb
55
+ lib/clevic/model_builder.rb
56
+ lib/clevic/table_model.rb
57
+ lib/clevic/delegate.rb
58
+ lib/clevic/qt/qt_combo_box.rb
40
59
  lib/clevic/qt/action_builder.rb
41
- lib/clevic/qt/field.rb
42
- lib/clevic/qt/set_delegate.rb
43
- lib/clevic/qt/item_delegate.rb
44
- lib/clevic/qt/clipboard.rb
60
+ lib/clevic/qt/accept_reject.rb
61
+ lib/clevic/qt/search_dialog.rb
45
62
  lib/clevic/qt/text_delegate.rb
46
- lib/clevic/qt/distinct_delegate.rb
47
- lib/clevic/qt/boolean_delegate.rb
48
63
  lib/clevic/qt/table_view.rb
49
- lib/clevic/qt/search_dialog.rb
50
- lib/clevic/qt/combo_delegate.rb
64
+ lib/clevic/qt/field.rb
65
+ lib/clevic/qt/set_delegate.rb
51
66
  lib/clevic/qt/extensions.rb
52
- lib/clevic/qt/delegates.rb
67
+ lib/clevic/qt/model_builder.rb
68
+ lib/clevic/qt/table_model.rb
69
+ lib/clevic/qt/simplest_delegate.rb
70
+ lib/clevic/qt/delegate.rb
71
+ lib/clevic/qt/ui/browser.ui
72
+ lib/clevic/qt/ui/browser_ui.rb
73
+ lib/clevic/qt/ui/search_dialog_ui.rb
74
+ lib/clevic/qt/ui/search_dialog.ui
75
+ lib/clevic/qt/distinct_delegate.rb
53
76
  lib/clevic/qt/relational_delegate.rb
54
- lib/clevic/table_view_paste.rb
55
- lib/clevic/sequel_ar_adapter.rb
56
- lib/clevic/model_builder.rb
57
- lib/clevic/rails_models_loaders.rb
58
- lib/clevic/sequel_length_validation.rb
59
- lib/clevic/cache_table.rb
60
- lib/clevic/table_model.rb
61
- lib/clevic/icons/icon.png
77
+ lib/clevic/qt/combo_delegate.rb
78
+ lib/clevic/qt/browser.rb
79
+ lib/clevic/qt/clipboard.rb
80
+ lib/clevic/qt/text_area_delegate.rb
81
+ lib/clevic/ui/browser_ui.rb
82
+ lib/clevic/ui/search_dialog_ui.rb
62
83
  lib/clevic/qt.rb
63
- lib/clevic/swing/ui/src/SearchDialog.form
64
- lib/clevic/swing/ui/src/SearchDialog.java
84
+ lib/clevic/many_field.rb
85
+ lib/clevic/attribute_list.rb
86
+ lib/clevic/framework.rb
87
+ lib/clevic/model_column.rb
88
+ lib/clevic/subclasses.rb
89
+ lib/clevic/swing/cell_renderer.rb
90
+ lib/clevic/swing/action_builder.rb
91
+ lib/clevic/swing/cell_editor.rb
92
+ lib/clevic/swing/search_dialog.rb
93
+ lib/clevic/swing/text_delegate.rb
94
+ lib/clevic/swing/table_view.rb
95
+ lib/clevic/swing/row_header.rb
96
+ lib/clevic/swing/field.rb
97
+ lib/clevic/swing/set_delegate.rb
98
+ lib/clevic/swing/selection_model.rb
99
+ lib/clevic/swing/extensions.rb
100
+ lib/clevic/swing/model_builder.rb
101
+ lib/clevic/swing/table_model.rb
102
+ lib/clevic/swing/table_view_focus.rb
103
+ lib/clevic/swing/tag_editor.rb
104
+ lib/clevic/swing/delegate.rb
105
+ lib/clevic/swing/ui/manifest.mf
106
+ lib/clevic/swing/ui/dist/lib/swing-layout-1.0.3.jar
107
+ lib/clevic/swing/ui/dist/README.TXT
108
+ lib/clevic/swing/ui/build.xml
65
109
  lib/clevic/swing/ui/src/resources/SearchDialog.properties
66
110
  lib/clevic/swing/ui/src/TagEditor.form
111
+ lib/clevic/swing/ui/src/SearchDialog.form
67
112
  lib/clevic/swing/ui/src/TagEditor.java
68
- lib/clevic/swing/ui/dist/lib/swing-layout-1.0.3.jar
69
- lib/clevic/swing/ui/dist/README.TXT
113
+ lib/clevic/swing/ui/src/SearchDialog.java
114
+ lib/clevic/swing/ui/nbproject/private/private.xml
115
+ lib/clevic/swing/ui/nbproject/private/config.properties
116
+ lib/clevic/swing/ui/nbproject/private/private.properties
117
+ lib/clevic/swing/ui/nbproject/project.properties
70
118
  lib/clevic/swing/ui/nbproject/genfiles.properties
71
119
  lib/clevic/swing/ui/nbproject/build-impl.xml
72
120
  lib/clevic/swing/ui/nbproject/project.xml
73
- lib/clevic/swing/ui/nbproject/project.properties
74
- lib/clevic/swing/ui/nbproject/private/private.properties
75
- lib/clevic/swing/ui/nbproject/private/config.properties
76
- lib/clevic/swing/ui/nbproject/private/private.xml
77
- lib/clevic/swing/ui/build.xml
78
- lib/clevic/swing/ui/manifest.mf
79
- lib/clevic/swing/model_builder.rb
80
- lib/clevic/swing/table_model.rb
81
- lib/clevic/swing/text_area_delegate.rb
82
- lib/clevic/swing/browser.rb
83
- lib/clevic/swing/cell_renderer.rb
84
- lib/clevic/swing/tag_editor.rb
85
- lib/clevic/swing/action_builder.rb
86
- lib/clevic/swing/field.rb
87
- lib/clevic/swing/set_delegate.rb
88
- lib/clevic/swing/clipboard.rb
89
- lib/clevic/swing/text_delegate.rb
90
- lib/clevic/swing/tag_delegate.rb
91
- lib/clevic/swing/selection_model.rb
92
- lib/clevic/swing/distinct_delegate.rb
93
121
  lib/clevic/swing/boolean_delegate.rb
122
+ lib/clevic/swing/swing_table_index.rb
123
+ lib/clevic/swing/distinct_delegate.rb
124
+ lib/clevic/swing/relational_delegate.rb
94
125
  lib/clevic/swing/confirm_dialog.rb
95
- lib/clevic/swing/table_view.rb
96
- lib/clevic/swing/search_dialog.rb
97
126
  lib/clevic/swing/combo_delegate.rb
98
- lib/clevic/swing/swing_table_index.rb
99
- lib/clevic/swing/table_view_focus.rb
100
- lib/clevic/swing/cell_editor.rb
101
- lib/clevic/swing/extensions.rb
102
- lib/clevic/swing/delegate.rb
127
+ lib/clevic/swing/browser.rb
128
+ lib/clevic/swing/clipboard.rb
129
+ lib/clevic/swing/tag_delegate.rb
130
+ lib/clevic/swing/text_area_delegate.rb
103
131
  lib/clevic/swing/action.rb
104
- lib/clevic/swing/relational_delegate.rb
105
- lib/clevic/swing/row_header.rb
106
- lib/clevic/ar_methods.rb
107
- lib/clevic/swing.rb
108
- lib/clevic/action_builder.rb
109
- lib/clevic/order_attribute.rb
110
- lib/clevic/dirty.rb
111
- lib/clevic/field.rb
112
- lib/clevic/attribute_list.rb
113
- lib/clevic/record.rb
114
- lib/clevic/sampler.rb
115
- lib/clevic/model_column.rb
116
132
  lib/clevic/table_searcher.rb
117
- lib/clevic/table_view.rb
133
+ lib/clevic/emitter.rb
134
+ lib/clevic/table_view_paste.rb
135
+ lib/clevic/cache_table.rb
118
136
  lib/clevic/field_valuer.rb
119
- lib/clevic/sequel_naked.rb
120
- lib/clevic/table_index.rb
121
- lib/clevic/view.rb
122
- lib/clevic/sequel_meta.rb
123
- lib/clevic/extensions.rb
124
- lib/clevic/delegate.rb
125
- lib/clevic/sql_dialects.rb
126
- lib/clevic/default_view.rb
127
- lib/clevic/many_field.rb
128
- lib/clevic/filter_command.rb
129
137
  lib/clevic/version.rb
130
- lib/clevic/generic_format.rb
131
- lib/clevic/emitter.rb
data/README.txt CHANGED
@@ -6,12 +6,19 @@ http://clevic.rubyforge.org
6
6
 
7
7
  Database framework and Model/View GUI for data capture and
8
8
  editing of tables in a pre-existing relational DBMS. Works with Qt
9
- and Java Swing.
9
+ and Java Swing. Uses SQL to do sorting and filtering wherever possible.
10
10
 
11
- Using Sequel means Clevic supports Postgresql, Mysql and so on. It's been tested with Postgres and sqlite.
11
+ Based on the idea of a Field, which contains information to display
12
+ a db field in a UI of some kind. This includes display formatting, edit
13
+ formatting, edit parsing, sets of values for eg foreign keys.
14
+ And lots more.
12
15
 
13
- Using Qt and Swing means it runs on Linux, Windows and OSX. Qt is thoroughly tested
14
- in Linux, slightly tested in Windows and OSX. Swing is tested in Linux and OSX.
16
+ Using Sequel means Clevic works with Postgresql, Mysql and so on. It's been
17
+ tested with Postgres and sqlite.
18
+
19
+ Using Qt and Swing means it runs on Linux, Windows and OSX. The Qt
20
+ code is thoroughly tested in Linux, slightly tested in Windows and OSX. Swing
21
+ is tested in Linux and OSX.
15
22
 
16
23
  == FEATURES:
17
24
 
@@ -21,9 +28,9 @@ in Linux, slightly tested in Windows and OSX. Swing is tested in Linux and OSX.
21
28
  * in-place combo boxes for choosing values from related tables (foreign keys)
22
29
  * distinct combo boxes to list previous values for a field
23
30
  * display read-only fields from related tables
24
- * Filter by current field.
25
- * search by field contents.
26
- * cut and paste in CSV format
31
+ * Recursive Filter by current field
32
+ * search by field contents
33
+ * cut and paste in CSV and paste from HTML in the Java framework.
27
34
 
28
35
  === Shortcuts:
29
36
 
@@ -32,8 +39,9 @@ in Linux, slightly tested in Windows and OSX. Swing is tested in Linux and OSX.
32
39
  * Ctrl-] for copy previous record, one field right
33
40
  * Ctrl-[ for copy previous record, one field left
34
41
  * Ctrl-f to find a record
35
- * Ctrl-l to filter by current selection
36
- * cursor keys for movement
42
+ * Ctrl-l to add a filter (by current selection)
43
+ * Ctrl-k to remove a filter
44
+ * cursor keys, PgUp PgDown etc for movement
37
45
 
38
46
  === Model definition:
39
47
 
@@ -43,24 +51,25 @@ that includes the Clevic::Record module will provide a minimally functional UI.
43
51
  Beyond that, the framework provides a DSL for defining more complex and useful behaviour
44
52
  (see Clevic::ModelBuilder).
45
53
 
46
- In the models/ subdirectory, start with minimal_models.rb.
47
- account_models.rb and times_models.rb provide definitions for more real-world examples.
48
- Associated SQL schemas are in the sql subdirectory.
54
+ === Examples
49
55
 
50
- For implementation and more extensive comments, see Clevic::ModelBuilder.
56
+ In the models/ subdirectory, start with minimal_models.rb. account_models.rb
57
+ and times_models.rb provide definitions for real-world examples. Associated
58
+ SQL schemas are in the sql subdirectory. For implementation and more extensive
59
+ comments, see Clevic::ModelBuilder.
51
60
 
52
61
  === Framework
53
62
 
54
- * use blocks to format values for particular fields.
63
+ * uses Sequel for data access.
64
+ * can use blocks to format values for particular fields.
55
65
  * sensible caching to handle large data sets without unnecessary memory and cpu usage
56
66
  * extensions to various Qt classes to make db programming easier.
57
- * uses Sequel for data access.
58
67
  * leverages SQL whenever possible to handle large datasets, sorting, filtering
59
68
  etc. So it's probably not suitable for talking to a remote db across a slow link.
60
69
 
61
70
  == PROBLEMS:
62
71
 
63
- See TODO file.
72
+ There are some tests for algorithmic code, but Clevic needs a comprehensive testing framework.
64
73
 
65
74
  == SYNOPSIS:
66
75
 
@@ -72,7 +81,8 @@ See TODO file.
72
81
  * Sequel
73
82
  * fastercsv
74
83
  * qtext
75
- * hashery
84
+ * hashery (for ruby-1.8.x)
85
+ * qtbindings
76
86
  * gather
77
87
 
78
88
  === Libraries
@@ -83,11 +93,16 @@ See TODO file.
83
93
 
84
94
  == INSTALL:
85
95
 
96
+ Get bsearch from http://0xcc.net/ruby-bsearch
97
+
98
+ Install qt bindings from https://github.com/ryanmelt/qtbindings
99
+
86
100
  sudo gem install
87
101
 
88
102
  == THANKS:
89
103
 
90
- * Michelle Riley for help debugging the windows gem
104
+ * Michelle Riley for help debugging under windows
105
+ * Jacob Buys for pointing out the qtbindings gem
91
106
 
92
107
  == LICENSE:
93
108
 
data/Rakefile CHANGED
@@ -17,9 +17,8 @@ $hoe = Hoe.new('clevic', Clevic::VERSION::STRING) do |p|
17
17
  ['andand', '>= 1.3.0'],
18
18
  ['sequel', '>= 3.8.0'],
19
19
  ['hpricot', '>= 0.8.1'],
20
- ['io-like', '>= 0.3.0']
21
- # This isn't always installed from gems
22
- #~ ['qtruby4', '>=1.4.9']
20
+ ['io-like', '>= 0.3.0'],
21
+ #['qtbindings', '>=4.6.3']
23
22
  # bsearch can't be installed from gems
24
23
  ]
25
24
  p.extra_dev_deps = [
data/TODO CHANGED
@@ -1,5 +1,8 @@
1
- use Sequel::Dataset for filtering instead of find options
2
- can't use find on certain fields, ie code in adjustments
1
+ override_next_index broken again, on ditto
2
+ Sort out the whole /bin/clevic vs gem 'clevic', '~> 0.12.0' thing.
3
+ Meta should be related to ModelColumn somehow. Which is pretty messy itself.
4
+
5
+ can't use find on certain fields, ie code in adjustments. Partially fixed.
3
6
 
4
7
  export to CSV
5
8
  Accounts not landing after Ditto with auto-fill-in
@@ -10,8 +13,6 @@ use rubigen for creating model definition files?
10
13
  undoable_command signal for delegates
11
14
 
12
15
  need a map field (For ie -1 = short, 1 = long). Already in restricted, but it's kinda clunky.
13
- :records missing in define_ui causes a crash
14
- :records must take a NamedScope
15
16
 
16
17
  Add additional :filter record sets that can be selected from menus?
17
18
 
@@ -49,17 +50,15 @@ search with acts_as_searchable and hyperestraier
49
50
 
50
51
  moving of columns
51
52
  /-style keyboard search by selected column, or everything if no column selected
52
- /-style filtering?
53
53
 
54
54
  for dates, add year if not specified, with 6 months on either side range. Configurable?
55
- value parsing not in model
56
55
  copy a field from a mouse-selection (ctrl-b maybe)
57
56
  hiding of fields
58
57
 
59
58
  save context menu settings, filter settings, etc
60
59
  filtering by various things. http://doc.trolltech.com/4.3/qsortfilterproxymodel.html
61
60
  highlighting by various things
62
- cut and paste (in model format)
61
+ cut and paste (in model format. Could use indirect format ie table/row/column. Kinda pointless though since references would essentially do the same thing.)
63
62
 
64
63
  drop cached model objects from CacheTable when they're not in use. WeakRef?
65
64
 
@@ -101,22 +100,19 @@ numeric months
101
100
 
102
101
  Combos
103
102
  ------
104
- shortlist combos by prefix. See Qt Examples.
103
+ shortlist combos by prefix. See Qt Examples, and Swing code.
105
104
  turn on/off smart filters for relational delegates. Like selecting only distincts in the last year.
106
105
  context menu for delegates, ie sort order, last used, etc
107
106
 
108
107
  shortcut sets, depending on which OS you're used. use QKeyEvent::matches ( QKeySequence::StandardKey key )
109
108
 
110
109
  Doing data capture, sort by id, but unfilter reverts to date/id rather than entry order
111
- optional warnings for back-dated entries. Highlighting
110
+ optional warnings for back-dated entries. Highlighting.
112
111
  make bsearch easier to install
113
112
 
114
113
  handle db errors
115
114
  easier way to run models, search LOAD_PATH
116
115
 
117
- cache belongs_to associations, during loading, but don't affect ability to pick up
118
- changes more or less instantly.
119
-
120
116
  preferences
121
117
  -----------
122
118
  store previous searches, by model & app
@@ -126,7 +122,6 @@ maybe
126
122
  -----
127
123
  acts_as_shellable looks nice
128
124
  consolidate read-only-ness checks
129
- Look at DataMapper. Not suitable - need to declare properties.
130
125
  ActiveMDB for migrating?
131
126
  allow moving of rows
132
127
  discontiguous copying of entities/csv
@@ -135,7 +130,6 @@ pasting of csv, into rectangular regions
135
130
  collect a set of data requests to the model, and do them in one SQL query. See EntryTableView#moveCursor
136
131
  Use SQL cursors for find & find_next?
137
132
  Use roo to parse spreadsheets?
138
- Criteria for SQL statement building http://criteria.rubyforge.org/
139
133
  SqlCache
140
134
  SqlStatement
141
135
  Csv2Sql
data/bin/clevic CHANGED
@@ -22,8 +22,13 @@ oparser.on( '-P', '--profile PROFILE', String ) { |o| $options[:profile] = o }
22
22
  oparser.on( '-t', '--table TABLE', 'Table to display', String ) { |o| $options[:table] = o }
23
23
  oparser.on( '-d', '--database DATABASE', 'Database name', String ) { |o| $options[:database] = o }
24
24
 
25
- oparser.on( '-s', '--swing', 'Use JRuby Swing' ) { |o| require 'clevic/swing.rb' }
26
- oparser.on( '-q', '--qt', 'Use Qt-Ruby' ) { |o| require 'clevic/qt.rb' }
25
+ oparser.on( '-s', '--swing', 'Use JRuby Swing' ) do |o|
26
+ require 'clevic/swing.rb'
27
+ end
28
+
29
+ oparser.on( '-q', '--qt', 'Use Qt-Ruby' ) do |o|
30
+ require 'clevic/qt.rb'
31
+ end
27
32
 
28
33
  oparser.on( '-D', '--debug' ) { |o| $options[:debug] = true }
29
34
  oparser.on( '-v', '--verbose' ) { |o| $options[:verbose] = true }
@@ -39,6 +44,12 @@ end
39
44
 
40
45
  args = oparser.parse( ARGV )
41
46
 
47
+ if RUBY_PLATFORM == 'java'
48
+ require 'clevic/swing'
49
+ else
50
+ require 'clevic/qt'
51
+ end
52
+
42
53
  if $options[:debug]
43
54
  require 'pp'
44
55
  pp $options
@@ -60,23 +71,6 @@ class Pathname
60
71
  alias_method :/, :+
61
72
  end
62
73
 
63
- def subclasses( base )
64
- classes = []
65
- ObjectSpace.each_object( Class ) do |x|
66
- if x.ancestors.include?( base )
67
- case
68
- when x == Clevic.base_entity_class; # don't include this
69
- else; classes << x
70
- end
71
- end
72
- end
73
- classes.sort{|a,b| a.name <=> b.name}
74
- end
75
-
76
- # do nothing ...
77
- def maybe_load_rails_models
78
- end
79
-
80
74
  # ... unless this is included
81
75
  # require 'clevic/rails_models_loader.rb'
82
76
 
@@ -89,7 +83,10 @@ end
89
83
 
90
84
  def load_models( pathname )
91
85
  if pathname.directory?
92
- maybe_load_rails_models
86
+ # load all children
87
+ pathname.children.grep( /.rb$/ ).each do |child|
88
+ require child.to_s
89
+ end
93
90
  else
94
91
  # assume we have a single file, and try some variations
95
92
  load_single_model_file( pathname )
@@ -97,6 +94,7 @@ def load_models( pathname )
97
94
  end
98
95
 
99
96
  begin
97
+ # pulled in by the clevic/qt or clevic/swing files
100
98
  Clevic::Browser.run( args )
101
99
  rescue Exception => e
102
100
  puts e.message