alexandria-book-collection-manager 0.6.9.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (293) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rubocop.yml +68 -0
  4. data/.rubocop_todo.yml +200 -0
  5. data/CHANGELOG.md +23 -0
  6. data/COPYING +339 -0
  7. data/ChangeLog.0 +3598 -0
  8. data/Gemfile +9 -0
  9. data/INSTALL.rdoc +156 -0
  10. data/PACKAGING +36 -0
  11. data/README.md +88 -0
  12. data/RELEASE_CHECKLIST +18 -0
  13. data/Rakefile +264 -0
  14. data/TODO +24 -0
  15. data/alexandria-book-collection-manager.gemspec +35 -0
  16. data/alexandria.desktop.in +10 -0
  17. data/bin/alexandria +82 -0
  18. data/doc/AUTHORS +60 -0
  19. data/doc/BUGS +31 -0
  20. data/doc/FAQ +369 -0
  21. data/doc/HACKING +19 -0
  22. data/doc/NEWS +341 -0
  23. data/doc/alexandria.1 +120 -0
  24. data/doc/cuecat_support.rdoc +67 -0
  25. data/lib/alexandria.rb +85 -0
  26. data/lib/alexandria/about.rb +82 -0
  27. data/lib/alexandria/book_providers.rb +411 -0
  28. data/lib/alexandria/book_providers/adlibris.rb +235 -0
  29. data/lib/alexandria/book_providers/amazon_aws.rb +261 -0
  30. data/lib/alexandria/book_providers/amazon_ecs_util.rb +405 -0
  31. data/lib/alexandria/book_providers/barnes_and_noble.rb +229 -0
  32. data/lib/alexandria/book_providers/bol_it.rb +162 -0
  33. data/lib/alexandria/book_providers/deastore.rb +277 -0
  34. data/lib/alexandria/book_providers/douban.rb +135 -0
  35. data/lib/alexandria/book_providers/ibs_it.rb +149 -0
  36. data/lib/alexandria/book_providers/mcu.rb +177 -0
  37. data/lib/alexandria/book_providers/proxis.rb +205 -0
  38. data/lib/alexandria/book_providers/pseudomarc.rb +185 -0
  39. data/lib/alexandria/book_providers/renaud.rb +142 -0
  40. data/lib/alexandria/book_providers/siciliano.rb +271 -0
  41. data/lib/alexandria/book_providers/thalia.rb +197 -0
  42. data/lib/alexandria/book_providers/web.rb +59 -0
  43. data/lib/alexandria/book_providers/webster_it.rb +173 -0
  44. data/lib/alexandria/book_providers/worldcat.rb +251 -0
  45. data/lib/alexandria/book_providers/z3950.rb +422 -0
  46. data/lib/alexandria/config.rb +8 -0
  47. data/lib/alexandria/console.rb +31 -0
  48. data/lib/alexandria/execution_queue.rb +96 -0
  49. data/lib/alexandria/export_library.rb +536 -0
  50. data/lib/alexandria/import_library.rb +316 -0
  51. data/lib/alexandria/import_library_csv.rb +270 -0
  52. data/lib/alexandria/logging.rb +159 -0
  53. data/lib/alexandria/models/book.rb +72 -0
  54. data/lib/alexandria/models/library.rb +714 -0
  55. data/lib/alexandria/net.rb +53 -0
  56. data/lib/alexandria/preferences.rb +324 -0
  57. data/lib/alexandria/scanners.rb +42 -0
  58. data/lib/alexandria/scanners/cuecat.rb +118 -0
  59. data/lib/alexandria/scanners/keyboard.rb +57 -0
  60. data/lib/alexandria/smart_library.rb +525 -0
  61. data/lib/alexandria/ui.rb +53 -0
  62. data/lib/alexandria/ui/builder_base.rb +43 -0
  63. data/lib/alexandria/ui/callbacks.rb +389 -0
  64. data/lib/alexandria/ui/completion_models.rb +228 -0
  65. data/lib/alexandria/ui/dialogs/about_dialog.rb +59 -0
  66. data/lib/alexandria/ui/dialogs/acquire_dialog.rb +640 -0
  67. data/lib/alexandria/ui/dialogs/alert_dialog.rb +68 -0
  68. data/lib/alexandria/ui/dialogs/bad_isbns_dialog.rb +43 -0
  69. data/lib/alexandria/ui/dialogs/barcode_animation.rb +159 -0
  70. data/lib/alexandria/ui/dialogs/book_properties_dialog.rb +210 -0
  71. data/lib/alexandria/ui/dialogs/book_properties_dialog_base.rb +432 -0
  72. data/lib/alexandria/ui/dialogs/export_dialog.rb +172 -0
  73. data/lib/alexandria/ui/dialogs/import_dialog.rb +205 -0
  74. data/lib/alexandria/ui/dialogs/misc_dialogs.rb +85 -0
  75. data/lib/alexandria/ui/dialogs/new_book_dialog.rb +639 -0
  76. data/lib/alexandria/ui/dialogs/new_book_dialog_manual.rb +153 -0
  77. data/lib/alexandria/ui/dialogs/new_smart_library_dialog.rb +67 -0
  78. data/lib/alexandria/ui/dialogs/preferences_dialog.rb +587 -0
  79. data/lib/alexandria/ui/dialogs/smart_library_properties_dialog.rb +56 -0
  80. data/lib/alexandria/ui/dialogs/smart_library_properties_dialog_base.rb +432 -0
  81. data/lib/alexandria/ui/dndable.rb +81 -0
  82. data/lib/alexandria/ui/gtk_thread_help.rb +88 -0
  83. data/lib/alexandria/ui/icons.rb +100 -0
  84. data/lib/alexandria/ui/iconview.rb +91 -0
  85. data/lib/alexandria/ui/iconview_tooltips.rb +162 -0
  86. data/lib/alexandria/ui/init.rb +93 -0
  87. data/lib/alexandria/ui/libraries_combo.rb +75 -0
  88. data/lib/alexandria/ui/listview.rb +310 -0
  89. data/lib/alexandria/ui/main_app.rb +67 -0
  90. data/lib/alexandria/ui/multi_drag_treeview.rb +150 -0
  91. data/lib/alexandria/ui/sidepane.rb +194 -0
  92. data/lib/alexandria/ui/sound.rb +107 -0
  93. data/lib/alexandria/ui/ui_manager.rb +1308 -0
  94. data/lib/alexandria/undo_manager.rb +78 -0
  95. data/lib/alexandria/utils.rb +30 -0
  96. data/lib/alexandria/version.rb +24 -0
  97. data/lib/alexandria/web_themes.rb +75 -0
  98. data/misc/sounds/README +15 -0
  99. data/misc/sounds/bad_scan.csd +62 -0
  100. data/misc/sounds/good_scan.csd +61 -0
  101. data/misc/sounds/scanning.csd +46 -0
  102. data/po/ChangeLog +488 -0
  103. data/po/Makefile +44 -0
  104. data/po/README +29 -0
  105. data/po/commit-po +72 -0
  106. data/po/cs.po +1437 -0
  107. data/po/cy.po +1521 -0
  108. data/po/de.po +1400 -0
  109. data/po/el.po +1379 -0
  110. data/po/es.po +1376 -0
  111. data/po/fr.po +1420 -0
  112. data/po/ga.po +1359 -0
  113. data/po/gl.po +1397 -0
  114. data/po/it.po +1406 -0
  115. data/po/ja.po +1355 -0
  116. data/po/mk.po +1373 -0
  117. data/po/nb.po +1386 -0
  118. data/po/nl.po +1405 -0
  119. data/po/pl.po +1373 -0
  120. data/po/pt.po +1398 -0
  121. data/po/pt_BR.po +1409 -0
  122. data/po/ru.po +1372 -0
  123. data/po/sk.po +1380 -0
  124. data/po/sv.po +1402 -0
  125. data/po/uk.po +1423 -0
  126. data/po/zh_TW.po +1394 -0
  127. data/schemas/alexandria.schemas +300 -0
  128. data/share/alexandria/glade/acquire_dialog__builder.glade +201 -0
  129. data/share/alexandria/glade/book_properties_dialog__builder.glade +910 -0
  130. data/share/alexandria/glade/main_app__builder.glade +229 -0
  131. data/share/alexandria/glade/new_book_dialog__builder.glade +379 -0
  132. data/share/alexandria/glade/preferences_dialog__builder.glade +733 -0
  133. data/share/alexandria/icons/alexandria.png +0 -0
  134. data/share/alexandria/icons/alexandria_small.png +0 -0
  135. data/share/alexandria/icons/book.png +0 -0
  136. data/share/alexandria/icons/book_icon.png +0 -0
  137. data/share/alexandria/icons/book_small.png +0 -0
  138. data/share/alexandria/icons/cuecat.png +0 -0
  139. data/share/alexandria/icons/cuecat_inactive.png +0 -0
  140. data/share/alexandria/icons/favorite_tag.png +0 -0
  141. data/share/alexandria/icons/less.png +0 -0
  142. data/share/alexandria/icons/library.png +0 -0
  143. data/share/alexandria/icons/library_small.png +0 -0
  144. data/share/alexandria/icons/lookup.png +0 -0
  145. data/share/alexandria/icons/more.png +0 -0
  146. data/share/alexandria/icons/no_cover.png +0 -0
  147. data/share/alexandria/icons/smart_library.png +0 -0
  148. data/share/alexandria/icons/smart_library_small.png +0 -0
  149. data/share/alexandria/icons/star_set.png +0 -0
  150. data/share/alexandria/icons/star_unset.png +0 -0
  151. data/share/alexandria/icons/view_as_icons.png +0 -0
  152. data/share/alexandria/icons/view_as_list.png +0 -0
  153. data/share/alexandria/ui/menus.xml +91 -0
  154. data/share/alexandria/ui/popups.xml +91 -0
  155. data/share/alexandria/web-themes/clean/clean.css +85 -0
  156. data/share/alexandria/web-themes/clean/preview.jpg +0 -0
  157. data/share/alexandria/web-themes/list/list.css +105 -0
  158. data/share/alexandria/web-themes/list/preview.jpg +0 -0
  159. data/share/app-icon/16x16/alexandria.png +0 -0
  160. data/share/app-icon/16x16/alexandria.svg +263 -0
  161. data/share/app-icon/22x22/alexandria.png +0 -0
  162. data/share/app-icon/22x22/alexandria.svg +465 -0
  163. data/share/app-icon/24x24/alexandria.png +0 -0
  164. data/share/app-icon/32x32/alexandria.png +0 -0
  165. data/share/app-icon/32x32/alexandria.svg +813 -0
  166. data/share/app-icon/32x32/alexandria.xpm +241 -0
  167. data/share/app-icon/48x48/alexandria.png +0 -0
  168. data/share/app-icon/scalable/alexandria.svg +700 -0
  169. data/share/gnome/help/alexandria/C/about.xml +44 -0
  170. data/share/gnome/help/alexandria/C/adding-books.xml +339 -0
  171. data/share/gnome/help/alexandria/C/alexandria.xml +185 -0
  172. data/share/gnome/help/alexandria/C/bugs.xml +18 -0
  173. data/share/gnome/help/alexandria/C/editing-book-properties.xml +124 -0
  174. data/share/gnome/help/alexandria/C/exporting.xml +81 -0
  175. data/share/gnome/help/alexandria/C/figures/adding_books_acquire_from_scanner_process.png +0 -0
  176. data/share/gnome/help/alexandria/C/figures/adding_books_add_by_isbn.png +0 -0
  177. data/share/gnome/help/alexandria/C/figures/adding_books_isbn_import.png +0 -0
  178. data/share/gnome/help/alexandria/C/figures/adding_books_manual_details.png +0 -0
  179. data/share/gnome/help/alexandria/C/figures/adding_books_rename_library_after_import.png +0 -0
  180. data/share/gnome/help/alexandria/C/figures/adding_books_search_results.png +0 -0
  181. data/share/gnome/help/alexandria/C/figures/editing_book_properties_info.png +0 -0
  182. data/share/gnome/help/alexandria/C/figures/editing_book_properties_loaning.png +0 -0
  183. data/share/gnome/help/alexandria/C/figures/exporting_information_html.png +0 -0
  184. data/share/gnome/help/alexandria/C/figures/getting_started_first_launched.png +0 -0
  185. data/share/gnome/help/alexandria/C/figures/searching_filtering_views_list_view.png +0 -0
  186. data/share/gnome/help/alexandria/C/figures/searching_filtering_views_list_view_search.png +0 -0
  187. data/share/gnome/help/alexandria/C/figures/settings_providers_new_z3950.png +0 -0
  188. data/share/gnome/help/alexandria/C/figures/smart_libraries_new_smart_library.png +0 -0
  189. data/share/gnome/help/alexandria/C/figures/working_with_libraries_library_pane.png +0 -0
  190. data/share/gnome/help/alexandria/C/getting-started.xml +154 -0
  191. data/share/gnome/help/alexandria/C/gnu-fdl-1.2.xml +543 -0
  192. data/share/gnome/help/alexandria/C/introduction.xml +142 -0
  193. data/share/gnome/help/alexandria/C/searching.xml +90 -0
  194. data/share/gnome/help/alexandria/C/settings.xml +140 -0
  195. data/share/gnome/help/alexandria/C/smart-libraries.xml +160 -0
  196. data/share/gnome/help/alexandria/C/working-with-libraries.xml +76 -0
  197. data/share/gnome/help/alexandria/ChangeLog +99 -0
  198. data/share/gnome/help/alexandria/fr/alexandria.xml +2292 -0
  199. data/share/gnome/help/alexandria/fr/figures/alexandria_add_button.png +0 -0
  200. data/share/gnome/help/alexandria/fr/figures/alexandria_add_by_isbn_1.png +0 -0
  201. data/share/gnome/help/alexandria/fr/figures/alexandria_add_by_search_1.png +0 -0
  202. data/share/gnome/help/alexandria/fr/figures/alexandria_add_manually.png +0 -0
  203. data/share/gnome/help/alexandria/fr/figures/alexandria_add_z3950.png +0 -0
  204. data/share/gnome/help/alexandria/fr/figures/alexandria_close_button.png +0 -0
  205. data/share/gnome/help/alexandria/fr/figures/alexandria_edit_info.png +0 -0
  206. data/share/gnome/help/alexandria/fr/figures/alexandria_export_web_page.png +0 -0
  207. data/share/gnome/help/alexandria/fr/figures/alexandria_importing.png +0 -0
  208. data/share/gnome/help/alexandria/fr/figures/alexandria_library_pane.png +0 -0
  209. data/share/gnome/help/alexandria/fr/figures/alexandria_list_view.png +0 -0
  210. data/share/gnome/help/alexandria/fr/figures/alexandria_list_view_search.png +0 -0
  211. data/share/gnome/help/alexandria/fr/figures/alexandria_loaning.png +0 -0
  212. data/share/gnome/help/alexandria/fr/figures/alexandria_main_window.png +0 -0
  213. data/share/gnome/help/alexandria/fr/figures/alexandria_remove_button.png +0 -0
  214. data/share/gnome/help/alexandria/ja/about.xml +33 -0
  215. data/share/gnome/help/alexandria/ja/adding-books.xml +314 -0
  216. data/share/gnome/help/alexandria/ja/alexandria.xml +172 -0
  217. data/share/gnome/help/alexandria/ja/bugs.xml +11 -0
  218. data/share/gnome/help/alexandria/ja/editing-book-properties.xml +100 -0
  219. data/share/gnome/help/alexandria/ja/exporting.xml +98 -0
  220. data/share/gnome/help/alexandria/ja/figures/adding_books_acquire_from_scanner_process.png +0 -0
  221. data/share/gnome/help/alexandria/ja/figures/adding_books_add_by_isbn.png +0 -0
  222. data/share/gnome/help/alexandria/ja/figures/adding_books_isbn_import.png +0 -0
  223. data/share/gnome/help/alexandria/ja/figures/adding_books_manual_details.png +0 -0
  224. data/share/gnome/help/alexandria/ja/figures/adding_books_rename_library_after_import.png +0 -0
  225. data/share/gnome/help/alexandria/ja/figures/adding_books_search_results.png +0 -0
  226. data/share/gnome/help/alexandria/ja/figures/editing_book_properties_info.png +0 -0
  227. data/share/gnome/help/alexandria/ja/figures/editing_book_properties_loaning.png +0 -0
  228. data/share/gnome/help/alexandria/ja/figures/exporting_information_html.png +0 -0
  229. data/share/gnome/help/alexandria/ja/figures/getting_started_first_launched.png +0 -0
  230. data/share/gnome/help/alexandria/ja/figures/searching_filtering_views_list_view.png +0 -0
  231. data/share/gnome/help/alexandria/ja/figures/searching_filtering_views_list_view_search.png +0 -0
  232. data/share/gnome/help/alexandria/ja/figures/settings_providers_new_z3950.png +0 -0
  233. data/share/gnome/help/alexandria/ja/figures/smart_libraries_new_smart_library.png +0 -0
  234. data/share/gnome/help/alexandria/ja/figures/working_with_libraries_library_pane.png +0 -0
  235. data/share/gnome/help/alexandria/ja/getting-started.xml +144 -0
  236. data/share/gnome/help/alexandria/ja/gnu-fdl-1.2.xml +541 -0
  237. data/share/gnome/help/alexandria/ja/introduction.xml +134 -0
  238. data/share/gnome/help/alexandria/ja/searching.xml +104 -0
  239. data/share/gnome/help/alexandria/ja/settings.xml +129 -0
  240. data/share/gnome/help/alexandria/ja/smart-libraries.xml +140 -0
  241. data/share/gnome/help/alexandria/ja/working-with-libraries.xml +88 -0
  242. data/share/menu/alexandria +7 -0
  243. data/share/omf/alexandria/alexandria-C.omf.in +27 -0
  244. data/share/omf/alexandria/alexandria-fr.omf.in +30 -0
  245. data/share/sounds/alexandria/bad_scan.ogg +0 -0
  246. data/share/sounds/alexandria/bad_scan.wav +0 -0
  247. data/share/sounds/alexandria/good_scan.ogg +0 -0
  248. data/share/sounds/alexandria/good_scan.wav +0 -0
  249. data/share/sounds/alexandria/scanning.ogg +0 -0
  250. data/share/sounds/alexandria/scanning.wav +0 -0
  251. data/spec/alexandria/library_spec.rb +205 -0
  252. data/spec/alexandria/preferences_spec.rb +22 -0
  253. data/spec/alexandria/scanners/cuecat_spec.rb +68 -0
  254. data/spec/alexandria/smart_library_spec.rb +22 -0
  255. data/spec/alexandria/ui/dialogs_spec.rb +90 -0
  256. data/spec/alexandria/ui/iconview_spec.rb +27 -0
  257. data/spec/alexandria/ui/listview_spec.rb +28 -0
  258. data/spec/alexandria/ui/main_app_spec.rb +48 -0
  259. data/spec/alexandria/ui/sidepane_spec.rb +27 -0
  260. data/spec/alexandria/ui/ui_manager_spec.rb +26 -0
  261. data/spec/alexandria/ui/ui_utilities_spec.rb +60 -0
  262. data/spec/alexandria/utilities_spec.rb +50 -0
  263. data/spec/data/libraries/0.6.1-noisbn/My Library/0201398257.yaml +10 -0
  264. data/spec/data/libraries/0.6.1-noisbn/My Library/1565920007.yaml +10 -0
  265. data/spec/data/libraries/0.6.1/My Library/0192812173.yaml +9 -0
  266. data/spec/data/libraries/0.6.1/My Library/0201398257.cover +0 -0
  267. data/spec/data/libraries/0.6.1/My Library/0201398257.yaml +10 -0
  268. data/spec/data/libraries/0.6.1/My Library/1565920007.yaml +10 -0
  269. data/spec/data/libraries/0.6.2/My Library/9780140266146.cover +0 -0
  270. data/spec/data/libraries/0.6.2/My Library/9780140266146.yaml +16 -0
  271. data/spec/data/libraries/0.6.2/My Library/9780140278781.cover +0 -0
  272. data/spec/data/libraries/0.6.2/My Library/9780140278781.yaml +21 -0
  273. data/spec/data/libraries/0.6.2/My Library/9780571147168.cover +0 -0
  274. data/spec/data/libraries/0.6.2/My Library/9780571147168.yaml +20 -0
  275. data/spec/data/libraries/0.6.2/My Library/9780575079038.cover +0 -0
  276. data/spec/data/libraries/0.6.2/My Library/9780575079038.yaml +20 -0
  277. data/spec/data/libraries/0.6.2/My Library/9780755322800.cover +0 -0
  278. data/spec/data/libraries/0.6.2/My Library/9780755322800.yaml +20 -0
  279. data/spec/spec_helper.rb +46 -0
  280. data/tasks/rdoc.rake +6 -0
  281. data/tasks/setup.rb +30 -0
  282. data/tasks/spec.rake +29 -0
  283. data/tasks/test.rake +38 -0
  284. data/test/application_test.rb +39 -0
  285. data/test/book_test.rb +34 -0
  286. data/test/data/isbns.txt +3 -0
  287. data/test/isbn_test.rb +68 -0
  288. data/test/providers_test.rb +254 -0
  289. data/test/test_helper.rb +42 -0
  290. data/util/rake/fileinstall.rb +313 -0
  291. data/util/rake/gettextgenerate.rb +158 -0
  292. data/util/rake/omfgenerate.rb +79 -0
  293. metadata +452 -0
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # The gem's dependencies are specified in the gemspec
4
+ gemspec
5
+
6
+ group :development, :test do
7
+ gem 'rdoc', '~> 4.0'
8
+ gem 'pry'
9
+ end
@@ -0,0 +1,156 @@
1
+ = Installing Alexandria
2
+
3
+ Alexandria is written in Ruby with a GTK+2/GNOME user-interface. It
4
+ currently only runs on UNIX-style systems, such as GNU/Linux.
5
+
6
+ Alexandria is not an easy project to build from scratch. Apart from
7
+ Ruby and GNOME, it has a lot of dependencies; however, many of these
8
+ are now optional as detailed below. Once the dependencies have been
9
+ installed, building and installing Alexandria is relatively
10
+ straightforward.
11
+
12
+ [Also note that there are pre-built packages for some distros, such as
13
+ Fedora and Ubuntu.]
14
+
15
+ == Dependencies
16
+
17
+ The {Ruby-GNOME2}[http://ruby-gnome2.sourceforge.jp/] user-interface
18
+ involves a number of packages:
19
+
20
+ * <tt>ruby-gtk2</tt>
21
+ * <tt>ruby-goocanvas</tt>
22
+ * <tt>ruby-gst</tt>
23
+ * <tt>ruby-pango</tt>
24
+
25
+ You should have GTK+ >= 2.22.0, and use Ruby-GNOME2 >= 0.16.0.
26
+
27
+ <tt>ruby-gettext</tt>[http://ponx.s5.xrea.com/hiki/ruby-gettext.html]
28
+ is required for the internationalisation of the user interface.
29
+ Requires version 1.7.0 or higher.
30
+
31
+ === Hpricot
32
+
33
+ Alexandria uses +hpricot+[http://code.whytheluckystiff.net/hpricot] to
34
+ parse the HTML from web pages for providers such as DeaStore and
35
+ Siciliano. It is also used to parse the XML for the Amazon web
36
+ service. You can install the +hpricot+ package natively or as a
37
+ ruby gem.
38
+
39
+ == HTMLEntities
40
+
41
+ This is used by all website-based providers except MCU.
42
+ +htmlentities+[http://htmlentities.rubyforge.org/] is used to
43
+ provide more flexible HTML parsing.
44
+
45
+ == Build Dependencies
46
+
47
+ === Ruby Dependencies
48
+
49
+ +rake+[http://rake.rubyforge.org] is required to build Alexandria from
50
+ the project +Rakefile+.
51
+
52
+ You also need +rubygems+[http://www.rubygems.org/] and
53
+ +rspec+[http://rspec.rubyforge.org/] to run the RSpec test suite.
54
+
55
+ === Native Dependencies
56
+
57
+ The +gettext+[http://www.gnu.org/software/gettext] package is needed
58
+ to generate the binary +mo+ files used by <tt>ruby-gettext</tt> at
59
+ runtime. You also need the
60
+ +intltool+[http://www.freedesktop.org/wiki/Software/intltool] package
61
+ to merge translations into generated files (and to extract
62
+ translatable string from xml files during development).
63
+
64
+ Note that these files are pre-generated in tar.gz releases, so you'll
65
+ only need them if you're building from the SVN version, or want to
66
+ change the translations.
67
+
68
+ == Optional Dependencies
69
+
70
+ === Ruby/ZOOM and Yaz
71
+
72
+ For Z39.50 support and and the <b>Library of Congress</b> and
73
+ <b>British Library</b> book providers you will need
74
+ <tt>ruby-zoom</tt>[http://ruby-zoom.rubyforge.org], which in turn
75
+ requires the non-Ruby package +yaz+[http://www.indexdata.dk/yaz].
76
+
77
+ Note that if you install the recent Ruby/ZOOM as the +zoom+ gem, you
78
+ will also need to install the +marc+ gem. (Older implementations of
79
+ ruby-zoom contained their own implementation of MARC.)
80
+
81
+ The Z39.50 Object-Orientation Model (ZOOM) is an international
82
+ standard for communication between computer systems, particularly
83
+ libraries and information-related systems.
84
+
85
+ === image_size
86
+
87
+ You will need
88
+ <tt>image_size</tt>[http://rubyforge.org/projects/imagesize/] for
89
+ optimizing the cover images in exported libraries.
90
+
91
+ === Revolution
92
+
93
+ If you want to auto-complete the names of people you loan books to
94
+ from your Evolution contacts database, you can install
95
+ +revolution+[ http://revolution.rubyforge.org/].
96
+
97
+ == Build and Install
98
+
99
+ To build Alexandria from a subversion checkout, go to the base project
100
+ directory (where the Rakefile and this INSTALL file are located) and
101
+ issue the command
102
+ rake build
103
+ If you have downloaded a source package, this step will not usually be
104
+ necessary.
105
+
106
+ You must have root priveledges to install, so use +su+
107
+ su -c 'rake install'
108
+ or +sudo+
109
+ sudo rake install
110
+
111
+ Now you can check the version of the installed Alexandria
112
+ alexandria --version
113
+
114
+ To launch Alexandria, simply use
115
+ alexandria
116
+
117
+ If you wish to see more output on the console, you can use
118
+ alexandria --debug
119
+
120
+ === Staged installation for making packages
121
+
122
+ When building a binary package (such as a deb or rpm) you will want to
123
+ "install" Alexandria into a specified directory instead of the root
124
+ filesystem. You should specify this as the DESTDIR environment variable
125
+ and use the +install_package_staging+ task instead of +install+
126
+
127
+ DESTDIR=debian/alexandria rake install_package_staging
128
+
129
+ If your distribution uses a specific directory to install Ruby
130
+ packages, you should also set the RUBYLIBDIR.
131
+
132
+ === Installing in the home directory
133
+
134
+ If you want to install Alexandria in your home directory, you should
135
+ specify the PREFIX, SHARE and RUBYLIBDIR envrionment variables, and
136
+ use the +install_package+ task instead of +install+.
137
+
138
+ PREFIX=$HOME SHARE=$HOME/.share RUBYLIBDIR=$HOME/.rubylib rake install_package
139
+
140
+ This will install the +alexandria+ program into +$HOME/bin+ (which you
141
+ should add to your +PATH+), and the ruby files to your
142
+ +$HOME/.rubylib+ which you should add to your +RUBYLIBDIR+ environment
143
+ variable.
144
+
145
+ === Uninstalling
146
+
147
+ To uninstall, simply run
148
+
149
+ sudo rake uninstall
150
+
151
+ (or +rake uninstall_package+ if you installed in your home directory).
152
+
153
+ If you specified any of the environment variables PREFIX, SHARE,
154
+ RUBYLIBDIR and DESTDIR during the installation, you should use the
155
+ same variables during uninstallation (or rake won't know where to look
156
+ for the files it has to remove).
@@ -0,0 +1,36 @@
1
+ #!/bin/sh
2
+ # This is just to provide clues for packaging. Not ready to be run as a script.
3
+
4
+ cd alexandria
5
+ rake package
6
+ # sometimes I have to run 'rake docs' before this works properly.
7
+ # this creates tarball in pkg/ (doesn't contain everything yet)
8
+
9
+ mkdir /tmp/build-alexandria-deb
10
+ mv pkg/alexandria-0.6.4.tar.gz /tmp/build-alexandria-deb/alexandria-0.6.4.orig.tar.gz
11
+ cd /tmp/build-alexandria-deb
12
+ tar zxf alexandria-0.6.4.orig.tar.gz
13
+ cd alexandria-0.6.4
14
+
15
+ # this is where we build the deb packages from a pristine source tree
16
+ # (Note: as a first step 'rake clobber' is automaticallly run, making
17
+ # the source tree even more pristine...)
18
+
19
+
20
+ cp -a ~/software/projects/alexandria/svn/trunk/debian-gnusense/ ./debian
21
+ # NOW edit the files in debian/ as needed
22
+
23
+ dpkg-buildpackage -d -rfakeroot
24
+ # you will be prompted for your GnuPG passphrase twice (it takes your
25
+ # key id from the e-mail address of the most recent change in
26
+ # debian/changelog)
27
+
28
+ cd ..
29
+ ls -l
30
+
31
+ # this should give you:
32
+ # a source tarball: alexandria_0.6.4-1.tar.gz
33
+ # a source code description: alexandria_0.6.4-1.dsc
34
+ # a binary deb: alexandria_0.6.4-1_all.deb
35
+ # a changes file: alexandria_0.6.4-1_i386.changes
36
+ #
@@ -0,0 +1,88 @@
1
+ # Alexandria
2
+
3
+ Alexandria is a GNOME application for managing collections of books.
4
+
5
+ Alexandria is written in Ruby, and is free software, distributed under
6
+ the terms of the GNU General Public License, version 2 or later. See
7
+ the file COPYING for more information.
8
+
9
+ What is Alexandria?
10
+ ===================
11
+
12
+ Alexandria is an application for managing a personal book library.
13
+ Its main recommending feature is its clean, intuitive interface.
14
+ Alexandria is able to retrieve book information and cover images from
15
+ a wide variety of online data sources. It also features extensive
16
+ import and export options, a loan interface, and smart libraries.
17
+ Alexandria is written in Ruby using ruby-gnome2.
18
+
19
+ Where can I get it?
20
+ ===================
21
+
22
+ An experimental gem release can be installed by running
23
+
24
+ gem install alexandria-book-collection-manager
25
+
26
+ Alternatively, download the source from the github repository at
27
+ http://www.github.com/mvz/alexandria-book-collection-manager and follow the
28
+ installation instructions.
29
+
30
+ Where can I find out more?
31
+ ==========================
32
+
33
+ For source code and bug reporting, see the repository on github at
34
+ http://www.github.com/mvz/alexandria-book-collection-manager.
35
+
36
+ ## Features
37
+
38
+ Alexandria is a simple program designed to allow individuals to keep a
39
+ catalogue of their book collection. In addition, it enables users to
40
+ keep track of books which are on loan.
41
+
42
+ * retrieves and displays book information (sometimes with cover
43
+ pictures) from several online libraries and bookshops, such as
44
+ o Amazon
45
+ o Proxis
46
+ o DeaStore
47
+ o AdLibris
48
+ o Spanish Ministry of Culture
49
+ o Livraria Siciliano
50
+ o WorldCat
51
+ o US Library of Congress
52
+ o British Library
53
+ * allows books to be added and updated by hand
54
+ * enables searches either by ISBN, title, author or keyword
55
+ * supports the Z39.50 standard and allow you to manage your own
56
+ sources (e.g. university libraries)
57
+ * saves data using the plain-text YAML format
58
+ * can import and export data into ONIX, Tellico, ISBN-list
59
+ and GoodReads CSV formats
60
+ * can export XHTML web pages of your libraries, themable with CSS
61
+ * allows marking your books as loaned, each with the loan-date and
62
+ the name of the person who has borrowed them
63
+ * features a HIG-compliant user interface
64
+ * shows books in different views (standard list or icons list),
65
+ that can be filtered and/or sorted
66
+ * handles book rating and notes
67
+ * supports CueCat and standard "keyboard wedge" barcode readers
68
+ * includes translations for several languages
69
+ * is documented in a complete manual (at the moment only in
70
+ English and Japanese)
71
+
72
+ Alexandria is not without problems. See doc/BUGS for a summary of issues.
73
+
74
+ ## Installation
75
+
76
+ There are full instructions for installing Alexandria from source in the
77
+ file INSTALL, including information about all the dependencies.
78
+
79
+ If you are installing on a Debian-based system, things should be
80
+ easier as the dependencies can be handled automatically.
81
+
82
+ To run the program, just type
83
+ alexandria
84
+ or, to get verbose debugging information,
85
+ alexandria --debug
86
+
87
+ If you are running GNOME, Alexandria should appear under the
88
+ 'Applications > Office' menu.
@@ -0,0 +1,18 @@
1
+ String-freeze (1 week before the release)
2
+ - Mail translators (see AUTHORS for e-mail addresses) with the latest .pot
3
+ file merged with their latest translation work.
4
+
5
+ Release
6
+ - Update NEWS with the announcement and commit ;
7
+ - Update README with the list of features) ;
8
+ - Tag the ChangeLog (=== Alexandria X.Y.Z ===) and commit ;
9
+ - Create the tarball release (make_release.sh "X.Y.Z") ;
10
+ - Check if the tarball is OK ;
11
+ - Upload the tarball in rubyforge.org ;
12
+ - Update the web site (features list, download link, eventually
13
+ screenshots..) ;
14
+ - Wait for Debian and Mandrake packages ;
15
+ - Mail the announcement to alexandria-list@rubyforge.org,
16
+ ruby-talk@ruby-lang.org and gnome-announce-list@gnome.org ;
17
+ - Update related pages at RAA, Freshmeat and GnomeFiles ;
18
+ - Open a beer.
@@ -0,0 +1,264 @@
1
+ # -*- ruby -*-
2
+ #--
3
+ # Copyright (C) 2009 Cathal Mc Ginley
4
+ # Copyright (C) 2011, 2014 Matijs van Zuijlen
5
+ #
6
+ # This file is part of the Alexandria build system.
7
+ #
8
+ # Permission is hereby granted, free of charge, to any person obtaining
9
+ # a copy of this software and associated documentation files (the
10
+ # "Software"), to deal in the Software without restriction, including
11
+ # without limitation the rights to use, copy, modify, merge, publish,
12
+ # distribute, sublicense, and/or sell copies of the Software, and to
13
+ # permit persons to whom the Software is furnished to do so, subject to
14
+ # the following conditions:
15
+ #
16
+ # The above copyright notice and this permission notice shall be
17
+ # included in all copies or substantial portions of the Software.
18
+ #
19
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
23
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
24
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
25
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26
+ #++
27
+
28
+ load 'tasks/setup.rb'
29
+
30
+ require 'rake/packagetask'
31
+
32
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'util/rake'))
33
+ require 'fileinstall'
34
+ require 'gettextgenerate'
35
+ require 'omfgenerate'
36
+
37
+ require_relative 'lib/alexandria/version'
38
+
39
+ stage_dir = ENV['DESTDIR'] || 'tmp'
40
+ prefix_dir = ENV['PREFIX'] || '/usr'
41
+
42
+ PROJECT = 'alexandria'
43
+ PREFIX = prefix_dir
44
+ share_dir = ENV['SHARE'] || "#{PREFIX}/share"
45
+ SHARE = share_dir
46
+
47
+ GettextGenerateTask.new(PROJECT) do |g|
48
+ g.generate_po_files('po', 'po/*.po', 'share/locale')
49
+ g.generate_desktop('alexandria.desktop.in', 'alexandria.desktop')
50
+ end
51
+
52
+ OmfGenerateTask.new(PROJECT) do |o|
53
+ o.gnome_helpfiles_dir = "#{SHARE}/gnome/help"
54
+ o.generate_omf('data/omf/alexandria', 'share/omf/alexandria/*.in')
55
+ end
56
+
57
+ SHARE_FILE_GLOBS = ['data/alexandria/**/*', 'data/gnome/**/*.*',
58
+ 'data/locale/**/*.mo', 'data/omf/**/*.omf',
59
+ 'data/sounds/**/*.ogg'] # , 'data/menu/*']
60
+
61
+ ICON_FILE_GLOBS = ['data/app-icon/**/*.png',
62
+ 'data/app-icon/scalable/*.svg']
63
+
64
+ PIXMAP_GLOBS = 'data/app-icon/32x32/*.xpm'
65
+
66
+ def install_common(install_task)
67
+ install_task.install_exe('bin', 'bin/*', "#{PREFIX}/bin")
68
+ install_task.install('lib', 'lib/**/*.rb', install_task.rubylib)
69
+
70
+ install_task.install('data', SHARE_FILE_GLOBS, SHARE)
71
+ install_task.install_icons(ICON_FILE_GLOBS, "#{SHARE}/icons")
72
+ install_task.install('data/app-icon/32x32', PIXMAP_GLOBS, "#{SHARE}/pixmaps")
73
+
74
+ install_task.install('', 'schemas/alexandria.schemas', "#{SHARE}/gconf")
75
+ install_task.install('', 'alexandria.desktop', "#{SHARE}/applications")
76
+ install_task.install('doc', 'doc/alexandria.1', "#{SHARE}/man/man1")
77
+ end
78
+
79
+ FileInstallTask.new(:package_staging, stage_dir, true) do |i|
80
+ install_common(i)
81
+ end
82
+
83
+ task debian_install: :install_package_staging
84
+
85
+ FileInstallTask.new(:package) do |j|
86
+ install_common(j)
87
+
88
+ docs = %w(README.rdoc NEWS INSTALL.rdoc COPYING TODO)
89
+ devel_docs = ['doc/AUTHORS', 'doc/BUGS', 'doc/FAQ',
90
+ 'doc/cuecat_support.rdoc']
91
+ j.install('', docs, "#{SHARE}/doc/#{PROJECT}")
92
+ j.install('doc', devel_docs, "#{SHARE}/doc/#{PROJECT}")
93
+
94
+ j.uninstall_empty_dirs(["#{SHARE}/**/#{PROJECT}/",
95
+ "#{j.rubylib}/#{PROJECT}/"
96
+ ])
97
+ end
98
+
99
+ task :clobberp do
100
+ puts CLOBBER
101
+ end
102
+
103
+ ## autogenerated files
104
+
105
+ def autogen_comment
106
+ lines = [
107
+ "This file is automatically generated by the #{PROJECT} installer.",
108
+ 'Do not edit it directly.'
109
+ ]
110
+ result = lines.map { |line| "# #{line}" }
111
+ result.join("\n") + "\n\n"
112
+ end
113
+
114
+ def generate(filename)
115
+ File.open(filename, 'w') do |file|
116
+ puts "Generating #{filename}"
117
+ file.print autogen_comment
118
+ file_contents = yield
119
+ file.print file_contents.to_s
120
+ end
121
+ end
122
+
123
+ # generate default_preferences.rb
124
+ def convert_with_type(value, type)
125
+ case type
126
+ when 'int'
127
+ value.to_i
128
+ when 'float'
129
+ value.to_f
130
+ when 'bool'
131
+ value == 'true'
132
+ else
133
+ value.strip
134
+ end
135
+ end
136
+
137
+ SCHEMA_PATH = 'schemas/alexandria.schemas'
138
+
139
+ # This generates default_preferences.rb by copying over values from
140
+ # providers_priority key in alexandria.schemas (necessary?)
141
+
142
+ file 'lib/alexandria/default_preferences.rb' => [SCHEMA_PATH] do |f|
143
+ require 'rexml/document'
144
+ generated_lines = []
145
+
146
+ doc = REXML::Document.new(IO.read(SCHEMA_PATH))
147
+ doc.elements.each('gconfschemafile/schemalist/schema') do |element|
148
+ default = element.elements['default'].text
149
+ next unless default
150
+ varname = File.basename(element.elements['key'].text)
151
+ type = element.elements['type'].text
152
+
153
+ if type == 'list' or type == 'pair'
154
+ ary = default[1..-2].split(',')
155
+ next if ary.empty?
156
+ if type == 'list'
157
+ list_type = element.elements['list_type'].text
158
+ ary.map! { |x| convert_with_type(x, list_type) }
159
+ elsif type == 'pair'
160
+ next if ary.length != 2
161
+ ary[0] = convert_with_type(ary[0],
162
+ element.elements['car_type'].text)
163
+ ary[1] = convert_with_type(ary[1],
164
+ element.elements['cdr_type'].text)
165
+ end
166
+ default = ary.inspect
167
+ else
168
+ default = convert_with_type(default, type).inspect.to_s
169
+ end
170
+
171
+ generated_lines << varname.inspect + ' => ' + default
172
+ end
173
+
174
+ generate(f.name) do
175
+ <<EOS
176
+ module Alexandria
177
+ class Preferences
178
+ DEFAULT_VALUES = {#{generated_lines.join(",\n ")}}
179
+ end
180
+ end
181
+ EOS
182
+ end
183
+ end
184
+
185
+ autogenerated_files = ['lib/alexandria/config.rb',
186
+ 'lib/alexandria/default_preferences.rb']
187
+
188
+ desc 'Generate ruby files needed for the installation'
189
+ task autogen: autogenerated_files
190
+
191
+ task :autogen_clobber do |_t|
192
+ autogenerated_files.each do |file|
193
+ FileUtils.rm_f(file)
194
+ end
195
+ end
196
+ task clobber: [:autogen_clobber]
197
+
198
+ ## # # # default task # # # ##
199
+
200
+ task build: [:autogen, :gettext, :omf]
201
+
202
+ task default: [:build]
203
+
204
+ # pre-release tasks
205
+
206
+ ULTRA_CLOBBER = []
207
+ task ultra_clobber: :clobber do
208
+ ULTRA_CLOBBER.each do |file|
209
+ FileUtils::Verbose.rm_f(file)
210
+ end
211
+ end
212
+
213
+ ## # # # package task # # # ##
214
+
215
+ Rake::PackageTask.new(PROJECT, Alexandria::DISPLAY_VERSION) do |p|
216
+ p.need_tar_gz = true
217
+ p.package_files.include('README*', 'COPYING', 'CHANGELOG.md', 'INSTALL.rdoc',
218
+ 'NEWS', 'Rakefile', 'util/**/*',
219
+ 'TODO', 'alexandria.desktop',
220
+ 'alexandria.desktop.in',
221
+ 'bin/**/*', 'data/**/*', 'misc/**/*',
222
+ 'doc/**/*', 'lib/**/*', 'po/**/*',
223
+ 'schemas/**/*', 'spec/**/*', 'tests/**/*')
224
+ end
225
+
226
+ task tgz: [:build] do
227
+ `rake package`
228
+ end
229
+
230
+ ## # # # system installation # # # ##
231
+
232
+ task pre_install: [:build]
233
+ task :scrollkeeper do
234
+ unless system('which scrollkeeper-update')
235
+ raise 'scrollkeeper-update cannot be found, is Scrollkeeper correctly installed?'
236
+ end
237
+ system('scrollkeeper-update -q') or raise 'Scrollkeeper update failed'
238
+ end
239
+
240
+ task :gconf do
241
+ return if ENV['GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL']
242
+
243
+ unless system('which gconftool-2')
244
+ raise 'gconftool-2 cannot be found, is GConf2 correctly installed?'
245
+ end
246
+
247
+ ENV['GCONF_CONFIG_SOURCE'] = `gconftool-2 --get-default-source`.chomp
248
+ Dir['schemas/*.schemas'].each do |schema|
249
+ system("gconftool-2 --makefile-install-rule '#{schema}'")
250
+ end
251
+ # system("killall -HUP gconfd-2")
252
+ end
253
+
254
+ task :update_icon_cache do
255
+ system('gtk-update-icon-cache -f -t /usr/share/icons/hicolor') # HACK
256
+ end
257
+
258
+ task post_install: [:scrollkeeper, :gconf, :update_icon_cache]
259
+
260
+ desc 'Install Alexandria'
261
+ task install: [:pre_install, :install_package, :post_install]
262
+
263
+ desc 'Uninstall Alexandria'
264
+ task uninstall: [:uninstall_package] # TODO: gconf etc...