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/TODO ADDED
@@ -0,0 +1,24 @@
1
+ Alexandria's TODO list
2
+ ======================
3
+
4
+ For the next release:
5
+
6
+ [X] Drag-and-drop books within libraries
7
+ [X] Infinite Undo/Redo
8
+ [X] Smart libraries
9
+ [X] CueCat userland support
10
+ [ ] Threading of all operations
11
+
12
+ Future releases:
13
+
14
+ [ ] Sort providers meaningfully according to the current locale
15
+ [ ] ONIX import
16
+ [ ] Import/export via GNOME-DB
17
+ [ ] Zoom in the current view, giving more or less details
18
+ [ ] PDA support
19
+ [ ] Win32 MinGW port
20
+ [ ] Show more details about books, like number of pages, price, topic, a
21
+ user defined field
22
+ [ ] Printing
23
+ [ ] Editable views; for icons, renaming their title, for list, editing each
24
+ field
@@ -0,0 +1,35 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require_relative 'lib/alexandria/version'
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'alexandria-book-collection-manager'
6
+ s.version = Alexandria::VERSION
7
+
8
+ s.summary = 'GNOME application for managing collections of books'
9
+ s.required_ruby_version = '>= 1.9.3'
10
+
11
+ s.authors = ['Matijs van Zuijlen']
12
+ s.email = ['matijs@matijs.net']
13
+ s.homepage = 'http://www.github.com/mvz/alexandria-book-collection-manager'
14
+
15
+ s.license = 'GPL-2'
16
+
17
+ s.files = `git ls-files -z`.split("\0") |
18
+ ['lib/alexandria/default_preferences.rb']
19
+
20
+ s.executables = s.files.grep(%r{^bin/}).map { |path| File.basename(path) }
21
+
22
+ s.rdoc_options = ['--main', 'README.md']
23
+
24
+ s.add_runtime_dependency('gettext', ['~> 3.1'])
25
+ s.add_runtime_dependency('hpricot', ['~> 0.8.5'])
26
+ s.add_runtime_dependency('htmlentities', ['~> 4.3'])
27
+ s.add_runtime_dependency('gtk2', ['~> 2.2'])
28
+ s.add_runtime_dependency('gstreamer', ['~> 2.2'])
29
+
30
+ s.add_development_dependency('minitest', ['~> 5.0'])
31
+ s.add_development_dependency('rake', ['~> 10.0'])
32
+ s.add_development_dependency('rspec', ['~> 3.0'])
33
+
34
+ s.require_paths = ['lib']
35
+ end
@@ -0,0 +1,10 @@
1
+ [Desktop Entry]
2
+ Version=1.0
3
+ Type=Application
4
+ _Name=Alexandria Book Collection Manager
5
+ _GenericName=Book Collection Manager
6
+ _Comment=Manage your book collection
7
+ Exec=/usr/bin/alexandria
8
+ Terminal=false
9
+ Categories=GNOME;GTK;Office;Database;
10
+ Icon=alexandria
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Copyright (C) 2004-2006 Laurent Sansonetti
4
+ # Copyright (C) 2007, 2008 Joseph Method
5
+ # Copyright (C) 2007, 2009 Cathal Mc Ginley
6
+ # Copyright (C) 2014 Matijs van Zuijlen
7
+ #
8
+ # Alexandria is free software; you can redistribute it and/or
9
+ # modify it under the terms of the GNU General Public License as
10
+ # published by the Free Software Foundation; either version 2 of the
11
+ # License, or (at your option) any later version.
12
+ #
13
+ # Alexandria is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
+ # General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public
19
+ # License along with Alexandria; see the file COPYING. If not,
20
+ # write to the Free Software Foundation, Inc., 51 Franklin Street,
21
+ # Fifth Floor, Boston, MA 02110-1301 USA.
22
+
23
+ begin
24
+ require 'gettext'
25
+ rescue LoadError
26
+ require 'rubygems'
27
+ require 'gettext'
28
+ end
29
+ require 'alexandria'
30
+ require 'optparse'
31
+ require 'ostruct'
32
+
33
+ # options = OpenStruct.new
34
+ OptionParser.new do |opts|
35
+ opts.banner = 'Usage: alexandria [options]'
36
+ opts.on('-l', '--list', 'List libraries in numbered format') do
37
+ puts Alexandria.list_books_on_console
38
+ exit
39
+ end
40
+ # opts.on("--output FORMAT",
41
+ # "Output library as FORMAT: csv|xml|yaml; use with --library or omit for ALL") do |val|
42
+ # options.format = val
43
+ # exit
44
+ # end
45
+ # opts.on("--library LIBRARY",
46
+ # "Used with --output to pick a library to output") do |val|
47
+ # options.library = val
48
+ # exit
49
+ # end
50
+ opts.on('-d', '--debug', 'Run in debug mode') do
51
+ $DEBUG = true
52
+ end
53
+ opts.on('-h', '--help', 'Show help options') do
54
+ puts opts
55
+ exit
56
+ end
57
+ opts.on('-v', '--version', 'Get version number') do
58
+ puts Alexandria::VERSION
59
+ exit
60
+ end
61
+ end.parse!
62
+
63
+ begin
64
+ Alexandria.main
65
+ rescue => e
66
+ $stderr.puts <<EOS
67
+ -----------------------
68
+ Alexandria just crashed
69
+ -----------------------
70
+ Timestamp: #{Time.now}
71
+ Message: #{e.message}
72
+ Backtrace:
73
+ #{e.backtrace.join("\n")}
74
+ Release: #{Alexandria::VERSION}(#{Alexandria::DISPLAY_VERSION})
75
+ Uname -a: #{`uname -a`.chomp}
76
+ --
77
+ Please report this dump to '#{Alexandria::LIST}' with some additional
78
+ information, such as the description of the crash and the steps to reproduce it
79
+ (if it's possible).
80
+ EOS
81
+ exit 1
82
+ end
@@ -0,0 +1,60 @@
1
+ Maintainer:
2
+ Joseph Method <tristil@gmail.com>
3
+
4
+ Contributors:
5
+ Alexander McCormmach <alexander@tunicate.org>
6
+ Aymeric Nys <aymeric@nnx.com>
7
+ Cathal Mc Ginley <cathal.alexandria@gnostai.org>
8
+ Claudio Belotti <bel8@lilik.it>
9
+ Constantine Evans <cevans@costinet.org>
10
+ Dafydd Harries <daf@muse.19inch.net>
11
+ Javier Fernandez-Sanguino Pena <jfs@debian.org>
12
+ Kevin Schultz <schultkl@ieee.org>
13
+ Laurent Sansonetti <lrz@gnome.org>
14
+ Marco Costantini <costanti@science.unitn.it>
15
+ Mathieu Leduc-Hamel <arrak@arrak.org>
16
+ Owain Evans <o.evans@gmail.com>
17
+ Pascal Terjan <pterjan@linuxfr.org>
18
+ Rene Samselnig <sandman@sdm-net.org>
19
+ Robby Stephenson <robby@periapsis.org>
20
+ Sun Ning <classicning@gmail.com>
21
+ Takayuki Kusano <AE5T-KSN@asahi-net.or.jp>
22
+ Timothy Malone <timothy.malone@gmail.com>
23
+ Zachary P. Landau <kapheine@hypa.net>
24
+
25
+ Documentors:
26
+ Cathal Mc Ginley <cathal.alexandria@gnostai.org>
27
+ Liam Davison <registrations@liamjdavison.info>
28
+
29
+ Artists:
30
+ Andreas Nilsson <nisses.mail@home.se>
31
+ Stefanie Dijoux <stefanie.dijoux@gmail.com>
32
+
33
+ Translators:
34
+ Adrián Chaves Fernández <adriyetichaves@gmail.com> (gl)
35
+ Cathal Mc Ginley <cathal.alexandria@gnostai.org> (ga)
36
+ CHIKAMA Masaki <masaki.chikama@gmail.com> (ja)
37
+ Dafydd Harries <daf@muse.19inch.net> (cy)
38
+ Damjan Dimitrioski <damjandimitrioski@gmail.com> (mk)
39
+ Giacomo Margarito <giacomomargarito@gmail.com> (it)
40
+ Jack Myrseh <jack@enkom.no> (nb)
41
+ Joachim Breitner <mail@joachim-breitner.de> (de)
42
+ José Ling <jlgdot369@gmail.com> (zh_TW)
43
+ Lennart Karssen <lennart@karssen.org> (nl)
44
+ Lígia Moreira <ligia.moreira@netvisao.pt> (fr, pt, pt_BR)
45
+ Martin Karlsson <martinkarlsson81@hotmail.com> (sv)
46
+ Michael Kotsarinis <mkotsari1@pre.forthnet.gr> (el)
47
+ Miguel Ángel García <magmax@ieee.org> (es)
48
+ Peter Kováč <kovac.peter@fotopriestor.sk> (sk)
49
+ Petr Vanek <vanous@penguin.cz> (cs)
50
+ Piotr Drąg <piotrdrag@gmail.com> (pl)
51
+ Serhij Dubyk <dubyk@library.lviv.ua> (uk)
52
+
53
+ Former translators:
54
+ David Weinehall <tao@debian.org> (sv)
55
+ Jiří Pejchal <jiri.pejchal@gmail.com> (cs)
56
+ Laurent Sansonetti <lrz@gnome.org> (fr)
57
+ Lucas Rocha <lucasr@im.ufba.br> (pt_BR)
58
+ Marco Costantini <costanti@science.unitn.it> (it)
59
+ Masao Mutoh <mutoh@highway.ne.jp> (ja)
60
+ Mirko Maischberger <mirko@lilik.it> (it)
@@ -0,0 +1,31 @@
1
+ = Bugs and Shortcomings
2
+
3
+ There are a couple of well known, long-standing issues with
4
+ Alexandria. These issues will, hopefully, be addressed in upcoming
5
+ releases. There are also specific bugs tracked on RubyForge:
6
+ <http://rubyforge.org/tracker/?group_id=205>
7
+
8
+ == Icon Display Spacing
9
+
10
+ While the list view of books is naturally neat, the default icon view
11
+ suffers from problematic icon spacing; often the book covers appear to
12
+ be randomly scattered. They cannot even be adjusted afterwards. This
13
+ is just an aesthetic concern, but a frustrating one.
14
+
15
+ It is probable that this is due to inconsistent use of the GTK+ thread
16
+ dispatcher is at the root of these problems. Hopefully future
17
+ development can clean up the code in this regard.
18
+
19
+ == Multiple Copies of Books
20
+
21
+ The limited expressiveness of Alexandria's domain model means that it
22
+ is not possible to keep a record of more than one copy of a given book
23
+ in a single library.
24
+
25
+ == Large Collections
26
+
27
+ The user-interface becomes slow and unresponsive when dealing with
28
+ libraries over about 100 books. This is quite a low threshold on
29
+ scalability. The simple solution is to make a couple of new libraries
30
+ to hold a hundred books each; a common approach is to split them up
31
+ according to broad subject area.
data/doc/FAQ ADDED
@@ -0,0 +1,369 @@
1
+ Copyright (C) 2007 Marco Costantini
2
+
3
+ ########################################################################
4
+
5
+ Question: I have a ( Bug | Support Request | Patch | Feature Request ).
6
+
7
+ Answer: You are welcome to report it. Please use the tracker at
8
+ http://rubyforge.org/tracker/?group_id=205
9
+
10
+ It may be helpful to read the text "How to Report Bugs Effectively", at
11
+ http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
12
+
13
+ Please, one bug per report, and one report per bug.
14
+
15
+ Please use a meaningful and specific summary.
16
+
17
+ In order to let us investigate the bug and fix it for you, we need a clear
18
+ and specific information about how to replicate it. For instance: report
19
+ the ISBN of the book for which the bug happens; report the book provider
20
+ used if relevant; copy and paste the error message. You may also start
21
+ Alexandria in terminal window, and copy and paste the output on that
22
+ window.
23
+
24
+ In the past we got the bug report [#6767] saying:
25
+ "Entering a valid ISBN number (many different) is rejected by the
26
+ program. Stating to be an invalid ISBN."
27
+ This user didn't report any single non-working ISBN; and didn't explain
28
+ "rejected" enough. Hence, even if further work has been done on this
29
+ topic, we can't know whether this bug was a real one, and whether it has
30
+ been already solved or not.
31
+
32
+ If you report only the backtrace without saying how to replicate the
33
+ bug, it is usually impossible to understand and fix the bug.
34
+
35
+ Please have a look at the already reported bugs or feature request:
36
+ it is useless to report again an already reported one.
37
+ If you have more information, please add it at the already reported bug,
38
+ instead of opening a new one.
39
+
40
+ Your bug could be a bug already solved in the development version of
41
+ Alexandria. You can get the development version at
42
+ http://rubyforge.org/scm/?group_id=205
43
+
44
+
45
+ ########################################################################
46
+
47
+
48
+ Question: Where are the Z39.50 stuff, the providers US Library of
49
+ Congress and British Library, the advanced options, and the window for
50
+ adding new providers? I can't install Ruby/ZOOM.
51
+
52
+ Answer: All these things require that the library Ruby/ZOOM,
53
+ version >= 0.2.0 is installed and working. You can get it at
54
+ http://ruby-zoom.rubyforge.org/ Install it according to its
55
+ documentation.
56
+
57
+ Ruby/ZOOM requires YAZ, http://www.indexdata.dk/yaz/ , compiled with
58
+ passing the --enable-shared option to the configure script:
59
+
60
+ ./configure --enable-shared
61
+
62
+ before building YAZ with make.
63
+
64
+ The following works for me with Ubuntu
65
+
66
+ sudo apt-get -y install libyaz-dev ruby ruby1.8-dev make gcc
67
+ wget http://rubyforge.org/frs/download.php/6940/ruby-zoom-0.2.2.tar.gz
68
+ tar xfz ruby-zoom-0.2.2.tar.gz
69
+ cd ruby-zoom-0.2.2/
70
+ ruby extconf.rb
71
+ make
72
+ sudo make install
73
+
74
+
75
+
76
+ List of Z39.50 server are at
77
+ http://www.webclarity.info/registry/browse
78
+ http://targettest.indexdata.com/
79
+
80
+
81
+ When adding new Z39.50 providers, you must choose the record syntax.
82
+ Currently (March 2007), these are offered: "USMARC", "SUTRS", "UNIMARC".
83
+
84
+ "USMARC" works, "UNIMARC" works very limited, "SUTRS" doesn't work.
85
+ Choose a provider that supports "USMARC", or if none is available, one
86
+ that supports "UNIMARC".
87
+ MARC21 is the same as USMARC (at least for Alexandria).
88
+
89
+ You must choose also the charset encoding. Some are
90
+
91
+ UTF-8
92
+ ISO-8859-1 (also known as Latin-1, Western Europe)
93
+ ISO-8859-15
94
+ ISO_6937-2 (also known as Ala, Ansel)
95
+
96
+ The list of all possible charset encoding could be at
97
+ /usr/lib/gconv/gconv-modules
98
+
99
+
100
+ There is a plan to replace in future the provider British Library with
101
+ Copac, which includes British Library and others; see
102
+ http://copac.ac.uk/libraries/
103
+ http://en.wikipedia.org/wiki/Copac
104
+
105
+
106
+ ########################################################################
107
+
108
+
109
+ Question: A provider is not working, or only partial information it
110
+ retrieved from it, or there are books on the providers for which
111
+ Alexandria fails to retrieve information.
112
+
113
+ Answer: Yes, the provider may have changed the structure of its
114
+ web pages, and hence it is necessary to update the file for that
115
+ provider; this file is in the directory
116
+ /<something>/alexandria/book_providers/
117
+
118
+ It is also possible that the file handles only the "simple" cases, and the
119
+ case of your book is a "complex" one.
120
+
121
+ Try to get the development version at http://rubyforge.org/scm/?group_id=205
122
+ because the problem could be already fixed there.
123
+
124
+ Try to fix by yourself, and thereafter send us a patch.
125
+ Otherwise, report the bug, saying for which ISBN this problem happens.
126
+
127
+
128
+ ########################################################################
129
+
130
+
131
+ Question: I know another book provider
132
+
133
+ Answer: There are many other providers, see
134
+ http://en.wikipedia.org/wiki/Wikipedia:Book_sources
135
+ That page contains also links to the pages for book providers in other
136
+ languages.
137
+ If you now other providers, please add them to that lists.
138
+
139
+
140
+ ########################################################################
141
+
142
+
143
+ Question: Please add a new provider
144
+
145
+ Answer: First, choose wisely which provider(s) to ask. Do a
146
+ search on Internet of the various existing providers for your language
147
+ (see also, but not only, the previous question).
148
+
149
+ You may prefer providers that list also out-of-prints, instead of
150
+ providers that list only available books. It is also preferable a
151
+ provider that lists not only the books of your country, but also the
152
+ books of the neighbor countries.
153
+
154
+ Check whether the provider supports the Z39.50 protocol. This is probable
155
+ for public libraries, and very unlikely for commercial booksellers.
156
+ (If the Z39.50 protocol is supported, just go to "Preferences",
157
+ "Providers", "Advanced Settings", and add the provider there.)
158
+
159
+ It is useful if you choose a provider that allows to specify the ISBN in
160
+ the address, such as
161
+ http://www.internetbookshop.it/ame/ser/serdsp.asp?e=0060748222&shop=1
162
+ or
163
+ http://www.deastore.com/product.asp?isbn=9780060748227
164
+
165
+ It is necessary that the HTML page of each provider is easily parsable,
166
+ that is, that the computer can easily find title, author(s), ISBN,
167
+ publisher, year of publication, binding.
168
+ For instance, the following piece of HTML page is easily parsable.
169
+
170
+ <span class="BDtitoloLibro">The Krusty Book</span>
171
+ <span class="BDauthLibro">by: Matt
172
+ Groening </span><span class="BDformatoLibro"><span
173
+ class="BDEticLibro">Format: </span>paperback</span><span
174
+ class="BDEticLibro">Publication date: </span><span
175
+ class="BDdataPubbLibro">10/23/2006</span><span
176
+ class="BDEticLibro">Publisher: </span><span
177
+ class="BDeditoreLibro">HarperCollins Publishers (Australia) Pty
178
+ Ltd</span><br /><span class="BDEticLibro">ISBN: </span><span
179
+ class="isbn">0-06-074822-2</span><br /><span class="BDEticLibro">ISBN
180
+ 13: </span><span class="isbn">978-0-06-074822-7</span></div>
181
+
182
+ It is not necessary that the provider reports for each book all the
183
+ information: title, author(s), ISBN, publisher, year of publication,
184
+ binding. In case that one of these is missing, Alexandria will not get
185
+ it.
186
+
187
+ It is easier, if the provider doesn't use cookies (however, provider
188
+ Deastore uses cookies and has been implemented).
189
+
190
+ After the choice of the provider, try by yourself to modify the file for
191
+ an already implemented provider. Probably it may be only required that
192
+ you modify some regular expressions. Please send us the patch.
193
+ If you can program already, learning Ruby may require 20 minutes, see
194
+ http://www.ruby-lang.org/en/documentation/quickstart/
195
+
196
+ If you can't implement the new provider by yourself, write a 'feature
197
+ request' at http://rubyforge.org/tracker/?group_id=205
198
+ Please report some ISBNs of books that your provider knows and no other
199
+ provider implemented by Alexandria knows. Report also how are the words
200
+ title, author(s), ISBN, publisher, year of publication, binding in the
201
+ language used by the site. Report any other relevant information.
202
+
203
+
204
+ ########################################################################
205
+
206
+
207
+ Question: What are the ISBN, the ISBN-13, and the EAN?
208
+
209
+ Answer: For more information about ISBN, ISBN-13, EAN, see
210
+ http://en.wikipedia.org/wiki/International_Standard_Book_Number
211
+
212
+
213
+ ########################################################################
214
+
215
+
216
+ Question: Does Alexandria support the ISBN-13? Do I need to enter the
217
+ ISBN with or without dashes?
218
+
219
+ Answer: Alexandria support both the 10-digit and 13-digit ISBN, and the
220
+ dashes entered with the ISBN are ignored. Hence you can enter the book
221
+ in any of these equivalent forms:
222
+
223
+ 88-06-14930-X
224
+ 880614930X
225
+ 88-06-14930-x
226
+ 880614930x
227
+ 978-88-06-14930-7
228
+ 9788806149307
229
+
230
+
231
+ ########################################################################
232
+
233
+
234
+ Question: I entered the ISBN exactly as it shows on the book, and
235
+ Alexandria says that it is invalid.
236
+
237
+ Answer: You can check whether an ISBN is valid with
238
+ http://www.isbn-check.com/
239
+ Sometimes the ISBN reported on the book is wrong. Try to use the
240
+ 13-digit one, or to use the ISBN reported on the back of the title page,
241
+ or to search by title/author on a book provider, in order to find the
242
+ correct ISBN.
243
+
244
+
245
+ ########################################################################
246
+
247
+
248
+ Question: Where is stored the data about the books?
249
+
250
+ Answer: In the files ~/.alexandria/<library_name>/<ISBN>.yaml
251
+ These files are in YAML ( http://www.yaml.org/ ) format, and you can
252
+ edit them manually. The covers are in the files
253
+ ~/.alexandria/<library_name>/<ISBN>.cover
254
+ These files persist if you install or deinstall Alexandria.
255
+
256
+
257
+ ########################################################################
258
+
259
+
260
+ Question: I was enjoying Alexandria a lot and now it doesn't work any
261
+ more, I can't enter other books, or crashes when it starts.
262
+
263
+ Answer: This usually happens when there is some invalid data in one of
264
+ the .yaml files (see the question above). For one or more of the
265
+ latest books that you have entered, a bug happened, and now the data
266
+ stored is invalid and causes trouble. Try to find which book it was,
267
+ (please send also a bug report), and to delete or to move to another
268
+ directory that .yaml file or the whole ~/.alexandria directory.
269
+
270
+ This kind of problem may show only with the manual entered books, and
271
+ not with the books searched by ISBN.
272
+
273
+
274
+ ########################################################################
275
+
276
+
277
+ Question: can I catalog other objects?
278
+
279
+ Answer: Yes. Some kinds of object, such as illustrated calendars, or
280
+ geographical maps, have the ISBN, and can be treated as books.
281
+
282
+ For other objects, insert the EAN or bar-code number as ISBN. Provider
283
+ Thalia knows about music CDs, video DVDs, games and software, and can be
284
+ used to retrieve information about them. Other providers may be added in
285
+ future (possibly by you). Otherwise, the other objects may be added
286
+ manually.
287
+
288
+
289
+ ########################################################################
290
+
291
+
292
+ Question: I prefer to have the field "Author" as "Surname, Name" instead
293
+ of "Name Surname".
294
+
295
+ Answer: Alexandria relies on what the providers say:
296
+ some providers report "Surname, Name": Deastore, Renaud, Mcu,
297
+ some "Surname Name": Webster.it, Ibs.it,
298
+ some "Name Surname": Bn, Thalia, Bol.it, Adlibris, L Siciliano, Worldcat,
299
+ and some without any rule: Amazon, Proxis.
300
+ You can change, in the preferences, the order in which the providers are
301
+ queried.
302
+
303
+ If Alexandria reports "Name Surname" with one provider, and in the HTML
304
+ page of that provider there is also (in a parsable way) "Surname, Name",
305
+ then this is a bug to be reported. In some of these cases, it would be
306
+ possible to get "Surname, Name", but the code would be complicated and
307
+ unreliable.
308
+
309
+ There is no algorithm that can decide, given the Author as a string,
310
+ which part of the string is the name and which part is the surname.
311
+ For instance, the name or the surname can be composed by more than one
312
+ word, or the author may be a collective author, or be a title or a
313
+ pseudonym, or in the author's country they may use that the surname is
314
+ the first word and the name is the second, or there may be the
315
+ patronymic, and so on.
316
+
317
+ For one provider, for books with more that one author, it's non-trivial
318
+ even to split the string of all the authors into strings "Name Surname" for
319
+ each author.
320
+
321
+ The only possibility to convert "Name Surname" to "Surname, Name" is to do
322
+ that by hand.
323
+
324
+ If you still believe that it is possible for a software to convert "Name
325
+ Surname" into "Surname, Name" in a reliable way, here are some cases of
326
+ real authors for you to try. (Some accented letters have been replaced by
327
+ the non accented ones.)
328
+
329
+ "Agente Italiano"
330
+ "Albert Sydney Hornby"
331
+ "Alexandre Dumas fils"
332
+ "Antoine de Saint-Exupery"
333
+ "Boston Women's Health Book Collective"
334
+ "Camilla"
335
+ "Central Intelligence Agency"
336
+ "Christiane F."
337
+ "Dario De Toffoli"
338
+ "Elaine St. James"
339
+ "Ernesto Che Guevara"
340
+ "Francois-Marie Arouet de Voltaire"
341
+ "Gaius Caesar Octavianus Augustus"
342
+ "Geographers A-Z Map Company"
343
+ "Gian Antonio Stella"
344
+ "H G Wells"
345
+ "John Paul II" (the surname is "Wojtyla")
346
+ "Jose Ortega y Gasset"
347
+ "Joseph K. von Eichendorff"
348
+ "Leonardo da Vinci" (he had no surname, "da Vinci" means "from the village
349
+ 'Vinci'")
350
+ "Leone Stella" (this only is fictional, from a comic movie, whose main
351
+ characters are some "Leone Stella" and a "Stella Leone"
352
+ "Levi Strauss"
353
+ "Lewis Carroll" ("Lewis" may be both name and surname, and here the
354
+ surname is "Dodgson")
355
+ "Lorenzo il Magnifico"
356
+ "Lucio Lombado Radice"
357
+ "Luigi Luca Cavalli-Sforza"
358
+ "Malcolm X"
359
+ "Mao Zedong"
360
+ "Martin Luther"
361
+ "Martin Luther King Jr."
362
+ "Mihail Sergeevic Gorbacev"
363
+ "Robert Van der Plas"
364
+ "Saint Augustine"
365
+ "Scuola di Barbiana"
366
+ "Subcomandante Insurgente Marcos"
367
+ "Vladimir Lenin" (the surname is "Ulyanov")
368
+
369
+ ########################################################################