ibridgesgui 2.1.2__tar.gz → 2.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/.github/workflows/linter.yml +2 -0
  2. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/.github/workflows/tests.yml +12 -0
  3. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/.gitignore +4 -0
  4. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/PKG-INFO +2 -2
  5. ibridgesgui-2.1.3/_quarto.yml +41 -0
  6. ibridgesgui-2.1.3/_styles/callouts.css +39 -0
  7. ibridgesgui-2.1.3/_styles/code.css +6 -0
  8. ibridgesgui-2.1.3/_styles/hyperlinks.css +24 -0
  9. ibridgesgui-2.1.3/_styles/ibridges.css +127 -0
  10. ibridgesgui-2.1.3/_styles/navbar.css +13 -0
  11. ibridgesgui-2.1.3/_styles/search_icon.css +13 -0
  12. ibridgesgui-2.1.3/_styles/toc.css +44 -0
  13. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/coverage.svg +1 -1
  14. ibridgesgui-2.1.3/docs/developers.qmd +127 -0
  15. ibridgesgui-2.1.3/docs/faq.qmd +64 -0
  16. ibridgesgui-2.1.3/docs/getting-started.qmd +176 -0
  17. ibridgesgui-2.1.3/docs/info.qmd +92 -0
  18. ibridgesgui-2.1.3/docs/userdoc.qmd +157 -0
  19. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/_version.py +3 -3
  20. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/browsertab/irods_browser_service.py +8 -0
  21. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/gui_utils.py +7 -1
  22. ibridgesgui-2.1.3/ibridgesgui/icons/logo.png +0 -0
  23. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/rescTree.ui +3 -3
  24. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui.egg-info/PKG-INFO +2 -2
  25. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui.egg-info/SOURCES.txt +8 -0
  26. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui.egg-info/requires.txt +1 -1
  27. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui.egg-info/scm_file_list.json +124 -116
  28. ibridgesgui-2.1.3/ibridgesgui.egg-info/scm_version.json +8 -0
  29. ibridgesgui-2.1.3/index.qmd +54 -0
  30. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/pyproject.toml +1 -1
  31. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/unit/test_gui_utils.py +14 -0
  32. ibridgesgui-2.1.2/_quarto.yml +0 -25
  33. ibridgesgui-2.1.2/docs/developers.qmd +0 -12
  34. ibridgesgui-2.1.2/docs/faq.qmd +0 -36
  35. ibridgesgui-2.1.2/docs/getting-started.qmd +0 -101
  36. ibridgesgui-2.1.2/docs/info.qmd +0 -68
  37. ibridgesgui-2.1.2/docs/userdoc.qmd +0 -148
  38. ibridgesgui-2.1.2/ibridgesgui.egg-info/scm_version.json +0 -8
  39. ibridgesgui-2.1.2/index.qmd +0 -14
  40. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/.flake8 +0 -0
  41. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  42. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  43. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/.github/dependabot.yml +0 -0
  44. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/.github/workflows/nuitka_release.yml +0 -0
  45. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/.github/workflows/publish.yml +0 -0
  46. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/.github/workflows/pypi_release.yml +0 -0
  47. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/LICENSE +0 -0
  48. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/README.md +0 -0
  49. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/build_tools/build_script.py +0 -0
  50. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/build_tools/ui_to_py.py +0 -0
  51. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/docs/screenshots/add_check_config.png +0 -0
  52. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/docs/screenshots/add_new_config.png +0 -0
  53. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/docs/screenshots/browser.png +0 -0
  54. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/docs/screenshots/login.png +0 -0
  55. {ibridgesgui-2.1.2/ibridgesgui/icons → ibridgesgui-2.1.3/docs/screenshots}/logo.png +0 -0
  56. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/docs/screenshots/metadata.png +0 -0
  57. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/docs/screenshots/permissions.png +0 -0
  58. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/docs/screenshots/replicas.png +0 -0
  59. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/docs/screenshots/search.png +0 -0
  60. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/docs/screenshots/start_ibridges.png +0 -0
  61. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/docs/screenshots/sync.png +0 -0
  62. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/__init__.py +0 -0
  63. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/__main__.py +0 -0
  64. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/browsertab/__init__.py +0 -0
  65. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/browsertab/browser.py +0 -0
  66. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/browsertab/browser_controller.py +0 -0
  67. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/browsertab/browser_model.py +0 -0
  68. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/config.py +0 -0
  69. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/icons/arrow-left.png +0 -0
  70. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/icons/arrow-right.png +0 -0
  71. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/icons/arrow-up.png +0 -0
  72. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/icons/christmas-logo.png +0 -0
  73. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/icons/home.png +0 -0
  74. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/icons/iBridges.ico +0 -0
  75. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/icons/loading_circle.gif +0 -0
  76. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/icons/nosync.png +0 -0
  77. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/icons/refresh.png +0 -0
  78. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/icons/syncing.png +0 -0
  79. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/info.py +0 -0
  80. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/irods_tree_model.py +0 -0
  81. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/login.py +0 -0
  82. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/logviewer.py +0 -0
  83. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/mainmenu/__init__.py +0 -0
  84. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/mainmenu/config_manager.py +0 -0
  85. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/mainmenu/main_window.py +0 -0
  86. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/mainmenu/plugin_manager.py +0 -0
  87. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/mainmenu/session_manager.py +0 -0
  88. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/mainmenu/tab_manager.py +0 -0
  89. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/md_schemas/ibridges_metadata_schema.json +0 -0
  90. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/popup_widgets/__init__.py +0 -0
  91. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/popup_widgets/base.py +0 -0
  92. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/popup_widgets/check_config.py +0 -0
  93. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/popup_widgets/create_collection.py +0 -0
  94. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/popup_widgets/create_directory.py +0 -0
  95. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/popup_widgets/download_data.py +0 -0
  96. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/popup_widgets/rename_item.py +0 -0
  97. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/popup_widgets/resc_tree.py +0 -0
  98. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/popup_widgets/upload_data.py +0 -0
  99. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/searchtab/__init__.py +0 -0
  100. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/searchtab/search.py +0 -0
  101. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/searchtab/search_controller.py +0 -0
  102. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/searchtab/search_model.py +0 -0
  103. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/synctab/__init__.py +0 -0
  104. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/synctab/sync.py +0 -0
  105. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/synctab/sync_controller.py +0 -0
  106. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/synctab/sync_model.py +0 -0
  107. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/threads.py +0 -0
  108. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/MainMenu.py +0 -0
  109. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/MainMenu.ui +0 -0
  110. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/__init__.py +0 -0
  111. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/configCheck.py +0 -0
  112. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/configCheck.ui +0 -0
  113. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/createCollection.py +0 -0
  114. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/createCollection.ui +0 -0
  115. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/downloadData.py +0 -0
  116. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/downloadData.ui +0 -0
  117. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/irodsLogin.py +0 -0
  118. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/irodsLogin.ui +0 -0
  119. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/renameItem.py +0 -0
  120. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/renameItem.ui +0 -0
  121. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/rescTree.py +0 -0
  122. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/tabBrowser.py +0 -0
  123. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/tabBrowser.ui +0 -0
  124. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/tabInfo.py +0 -0
  125. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/tabInfo.ui +0 -0
  126. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/tabLogging.py +0 -0
  127. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/tabLogging.ui +0 -0
  128. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/tabSearch.py +0 -0
  129. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/tabSearch.ui +0 -0
  130. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/tabSync.py +0 -0
  131. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/tabSync.ui +0 -0
  132. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/transferData.py +0 -0
  133. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/transferData.ui +0 -0
  134. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/uploadData.py +0 -0
  135. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/uploadData.ui +0 -0
  136. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/welcome.py +0 -0
  137. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/ui_files/welcome.ui +0 -0
  138. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui/welcome.py +0 -0
  139. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui.egg-info/dependency_links.txt +0 -0
  140. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/ibridgesgui.egg-info/top_level.txt +0 -0
  141. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/setup.cfg +0 -0
  142. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/browser/conftest.py +0 -0
  143. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/browser/test_browser_controller.py +0 -0
  144. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/browser/test_browser_model.py +0 -0
  145. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/browser/test_irods_browser_service.py +0 -0
  146. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/conftest.py +0 -0
  147. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/gui/test_info_tab.py +0 -0
  148. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/gui/test_login.py +0 -0
  149. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/gui/test_main.py +0 -0
  150. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/main_window/conftest.py +0 -0
  151. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/main_window/test_config_manager.py +0 -0
  152. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/main_window/test_main_window.py +0 -0
  153. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/main_window/test_session_manager.py +0 -0
  154. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/main_window/test_tab_manager.py +0 -0
  155. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/popup/conftest.py +0 -0
  156. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/popup/test_check_config.py +0 -0
  157. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/popup/test_download_data.py +0 -0
  158. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/popup/test_simple_dialogs.py +0 -0
  159. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/popup/test_transfer_dialog_base.py +0 -0
  160. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/popup/test_upload_data.py +0 -0
  161. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/search/conftest.py +0 -0
  162. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/search/test_search_controller.py +0 -0
  163. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/search/test_search_model.py +0 -0
  164. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/sync/conftest.py +0 -0
  165. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/sync/test_sync_controller.py +0 -0
  166. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/sync/test_sync_model.py +0 -0
  167. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/threads/conftest.py +0 -0
  168. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/threads/test_search_thread.py +0 -0
  169. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/threads/test_sync_thread.py +0 -0
  170. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/threads/test_transfer_thread.py +0 -0
  171. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/unit/test_config.py +0 -0
  172. {ibridgesgui-2.1.2 → ibridgesgui-2.1.3}/tests/unit/test_irods_tree_model.py +0 -0
@@ -12,6 +12,7 @@ on:
12
12
  - 'docs/**'
13
13
  - 'README.md'
14
14
  - '_quarto.yml'
15
+ - '_styles/**'
15
16
  - 'index.qmd'
16
17
 
17
18
  pull_request:
@@ -19,6 +20,7 @@ on:
19
20
  - 'docs/**'
20
21
  - 'README.md'
21
22
  - '_quarto.yml'
23
+ - '_styles/**'
22
24
  - 'index.qmd'
23
25
 
24
26
  jobs:
@@ -3,7 +3,19 @@ name: Tests
3
3
  on:
4
4
  push:
5
5
  branches: [main, develop]
6
+ paths-ignore:
7
+ - 'docs/**'
8
+ - 'README.md'
9
+ - '_quarto.yml'
10
+ - '_styles/**'
11
+ - 'index.qmd'
6
12
  pull_request:
13
+ paths-ignore:
14
+ - 'docs/**'
15
+ - 'README.md'
16
+ - '_quarto.yml'
17
+ - '_styles/**'
18
+ - 'index.qmd'
7
19
 
8
20
  permissions:
9
21
  contents: write
@@ -141,3 +141,7 @@ dmypy.json
141
141
  .pyre/
142
142
 
143
143
  /.quarto/
144
+ _html/
145
+ _site/
146
+
147
+ **/*.quarto_ipynb
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ibridgesgui
3
- Version: 2.1.2
3
+ Version: 2.1.3
4
4
  Summary: Graphical user interface for accessing data and metadata on iRODS servers.
5
5
  Author-email: Christine Staiger <c.staiger@uu.nl>
6
6
  License: GNU LESSER GENERAL PUBLIC LICENSE
@@ -522,7 +522,7 @@ Description-Content-Type: text/markdown
522
522
  License-File: LICENSE
523
523
  Requires-Dist: PySide6>=6.8.1
524
524
  Requires-Dist: ibridges<2.2,>=2.1.0
525
- Requires-Dist: setproctitle==1.3.7
525
+ Requires-Dist: setproctitle==1.3.8
526
526
  Requires-Dist: importlib-resources; python_version <= "3.10"
527
527
  Requires-Dist: jsonschema
528
528
  Provides-Extra: test
@@ -0,0 +1,41 @@
1
+ project:
2
+ type: website
3
+ output-dir: ./_html
4
+
5
+ website:
6
+ title: "iBridges GUI"
7
+ navbar:
8
+ title: false
9
+ logo: docs/screenshots/logo.png
10
+ left:
11
+ - href: index.qmd
12
+ text: Home
13
+ - href: docs/info.qmd
14
+ text: What is iBridges-Gui?
15
+ - href: docs/getting-started.qmd
16
+ text: Getting started
17
+ - href: docs/userdoc.qmd
18
+ text: Documentation
19
+ - href: docs/developers.qmd
20
+ text: Contributing to iBridges
21
+ - href: docs/faq.qmd
22
+ text: FAQ
23
+ tools:
24
+ - icon: github
25
+ menu:
26
+ - text: Source Code
27
+ url: https://github.com/iBridges-for-iRODS/iBridges-GUI
28
+ - text: Report and Issue
29
+ url: https://github.com/iBridges-for-iRODS/iBridges-GUI/issues
30
+ format:
31
+ html:
32
+ theme: flatly
33
+ css:
34
+ - _styles/ibridges.css
35
+ - _styles/hyperlinks.css
36
+ - _styles/toc.css
37
+ - _styles/callouts.css
38
+ - _styles/code.css
39
+ - _styles/navbar.css
40
+ - _styles/search_icon.css
41
+ toc: true
@@ -0,0 +1,39 @@
1
+ /* Base header override */
2
+ .callout-header {
3
+ background-color: #a8e3d7 !important;
4
+ }
5
+
6
+ /* Note callout */
7
+ .callout.callout-note {
8
+ border-left-color: #548641 !important;
9
+ }
10
+
11
+ /* Warning callout */
12
+ .callout.callout-warning {
13
+ border-left-color: #E67E22 !important;
14
+ }
15
+
16
+ /* ----------------------------------------------------------
17
+ TIP CALLOUT — iBridges style
18
+ ---------------------------------------------------------- */
19
+
20
+ /* Main accent colour */
21
+ .callout.callout-tip {
22
+ border-left-color: #15a589 !important;
23
+ }
24
+
25
+ /* Lighter background (15a589 → lighten by ~35%) */
26
+ .callout.callout-tip .callout-header {
27
+ background-color: #c8efe6 !important; /* soft mint */
28
+ color: #0f7f68 !important; /* darker accent for text */
29
+ }
30
+
31
+ /* Icon in main accent colour */
32
+ .callout.callout-tip .callout-icon svg {
33
+ fill: #15a589 !important;
34
+ }
35
+
36
+ /* Body text in accent colour */
37
+ .callout.callout-tip .callout-body {
38
+ color: #0f7f68 !important;
39
+ }
@@ -0,0 +1,6 @@
1
+ /* Code text color override */
2
+ code,
3
+ pre code,
4
+ .reveal pre code {
5
+ color: #15a589 !important;
6
+ }
@@ -0,0 +1,24 @@
1
+ /* Default link color (brand green) */
2
+ #quarto-content a {
3
+ color: #58585a !important;
4
+ font-weight: normal;
5
+ text-decoration: none;
6
+ }
7
+
8
+ /* Hover: bold + darker green */
9
+ #quarto-content a:hover {
10
+ color: #58585a !important; /* darker shade derived from #528641 */
11
+ font-weight: bold;
12
+ text-decoration: underline; /* remove if you prefer no underline */
13
+ }
14
+
15
+ /* Active (clicked) */
16
+ #quarto-content a:active {
17
+ color: #58585a !important;
18
+ font-weight: bold;
19
+ }
20
+
21
+ /* Visited links (keep consistent) */
22
+ #quarto-content a:visited {
23
+ color: #58585a !important;
24
+ }
@@ -0,0 +1,127 @@
1
+ /*-- scss:defaults --*/
2
+
3
+ /* Fonts */
4
+ @import url('https://fonts.googleapis.com/css?family=Merriweather:wght@300&family=Open+Sans&display=swap');
5
+ @import url('https://fonts.googleapis.com/css2?family=Nunito:wght@300;800&display=swap');
6
+
7
+ $font-family-sans-serif: 'Nunito', Tahoma, sans-serif !default;
8
+
9
+ /* Headings */
10
+ $presentation-heading-font: 'Merriweather', Tahoma, sans-serif !default;
11
+ $presentation-heading-color: #000000 !default;
12
+ $h1-font-size: 3.0em !default;
13
+ $h2-font-size: 2.7em !default;
14
+ $h3-font-size: 2.15em !default;
15
+
16
+ /*-- scss:rules --*/
17
+
18
+ /* Title slide h1 */
19
+ section.slide h1 {
20
+ margin-left: 5vw;
21
+ }
22
+
23
+ /* Section headings */
24
+ section.slide h2 {
25
+ color: black !important;
26
+ background-color: #d3d3d3 !important;
27
+ width: 100%;
28
+ position: relative;
29
+ left: -30vw;
30
+
31
+ padding-left: 20vw;
32
+ padding-right: 20vw;
33
+ padding-top: 5px;
34
+ padding-bottom: 10px;
35
+ margin-left: 5vw;
36
+
37
+ display: flex;
38
+ justify-content: space-between;
39
+ align-items: center;
40
+ }
41
+
42
+ /* Theme section blocks */
43
+ .theme-section {
44
+ text-align: left;
45
+ margin-top: 1.2em;
46
+ margin-left: 5vw;
47
+ }
48
+
49
+ /* Code blocks */
50
+ .reveal pre code {
51
+ background-color: #FFFFFF;
52
+ font-size: 0.8em;
53
+ padding: 0.4em;
54
+ margin: 0.2em;
55
+ }
56
+
57
+ .cell {
58
+ margin: 1em;
59
+ }
60
+
61
+ /* Subtitle + author */
62
+ .subtitle,
63
+ .author {
64
+ color: #000000;
65
+ font-size: $h2-font-size;
66
+ font-family: $presentation-heading-font;
67
+ }
68
+
69
+ /* Footer */
70
+ .reveal .footer {
71
+ color: #000000;
72
+ font-family: $presentation-heading-font;
73
+ }
74
+
75
+ /* Slide numbers */
76
+ .reveal .slide-number {
77
+ font-family: $presentation-heading-font;
78
+ }
79
+
80
+ .slide-number {
81
+ bottom: 10px !important;
82
+ right: 10px !important;
83
+ top: unset !important;
84
+ color: #000000 !important;
85
+ }
86
+
87
+ /* Lists */
88
+ .reveal li {
89
+ padding: 10px;
90
+ }
91
+
92
+ /* Center helper */
93
+ .center-x {
94
+ text-align: center;
95
+ }
96
+
97
+ /* Dark background links */
98
+ section.has-dark-background a,
99
+ section.has-dark-background a:hover {
100
+ color: #d3d3d3;
101
+ }
102
+
103
+ .reveal .controls {
104
+ color: #15a588 !important;
105
+ }
106
+
107
+ .reveal .controls button {
108
+ color: #15a588 !important;
109
+ opacity: 1 !important; /* ensures they don’t fade */
110
+ }
111
+
112
+ .reveal .progress span {
113
+ background-color: #15a588 !important;
114
+ }
115
+
116
+ a,
117
+ a:visited {
118
+ color: #15a588 !important;
119
+ }
120
+
121
+ a:hover,
122
+ a:focus {
123
+ color: #0f7f68 !important; /* slightly darker hover */
124
+ }
125
+ .navbar {
126
+ background-color: #c8efe6 !important;
127
+ }
@@ -0,0 +1,13 @@
1
+ .navbar {
2
+ background-color: #c8efe6 !important;
3
+ }
4
+ /* Move tools to the left side */
5
+ .quarto-navbar-tools {
6
+ order: -1 !important;
7
+ margin-right: 1rem !important;
8
+ }
9
+
10
+ .navbar-nav.ms-auto {
11
+ margin-left: auto !important; /* keep right menu spacing intact */
12
+ }
13
+
@@ -0,0 +1,13 @@
1
+ /* Ultimate override for Quarto search icon */
2
+ .navbar button.quarto-search-button svg,
3
+ .navbar button.quarto-search-button svg *,
4
+ .navbar .quarto-search-icon,
5
+ .navbar .quarto-search-icon *,
6
+ .navbar svg[role="img"],
7
+ .navbar svg[role="img"] *,
8
+ .navbar svg,
9
+ .navbar svg * {
10
+ fill: #15a589 !important;
11
+ stroke: #15a589 !important;
12
+ color: #15a589 !important;
13
+ }
@@ -0,0 +1,44 @@
1
+ /* Default TOC text (black) */
2
+ #quarto-margin-sidebar #TOC .nav-link {
3
+ color: #000000 !important;
4
+ }
5
+
6
+ /* Hover state (your green) */
7
+ #quarto-margin-sidebar #TOC .nav-link:hover {
8
+ color: #15a588 !important;
9
+ }
10
+
11
+ /* Active section (your green) */
12
+ #quarto-margin-sidebar #TOC .nav-link.active {
13
+ color: #15a588 !important;
14
+ font-weight: 600;
15
+ }
16
+
17
+ /* Override Bootstrap link variables inside this TOC only */
18
+ #quarto-margin-sidebar #TOC {
19
+ --bs-link-color: #000000;
20
+ --bs-link-hover-color: #15a588;
21
+ --bs-link-active-color: #15a588;
22
+ }
23
+
24
+ /* 1. Restore the original light gray left border for ALL TOC items */
25
+ #quarto-margin-sidebar #TOC .nav-link {
26
+ border-left: 1px solid #dee2e6 !important; /* original Quarto/Cosmo gray */
27
+ box-shadow: none !important; /* remove Cosmo's blue shadow */
28
+ }
29
+
30
+ /* 2. Hover: green bar */
31
+ #quarto-margin-sidebar #TOC .nav-link:hover {
32
+ border-left: 2px solid #15a588 !important;
33
+ }
34
+
35
+ /* 3. Active (but NOT the first item): green bar */
36
+ #quarto-margin-sidebar #TOC ul > li:not(:first-child) > .nav-link.active {
37
+ border-left: 2px solid #15a588 !important;
38
+ }
39
+
40
+ /* 4. First item active: keep the light gray line, no green, no blue */
41
+ #quarto-margin-sidebar #TOC ul > li:first-child > .nav-link.active {
42
+ border-left: 1px solid #dee2e6 !important; /* restore gray */
43
+ box-shadow: none !important; /* kill Cosmo's blue shadow */
44
+ }
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="coverage: 83.18%"><title>coverage: 83.18%</title><filter id="blur"><feGaussianBlur stdDeviation="16"/></filter><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="114" height="20" rx="3"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="53" height="20" fill="#67ac09"/><rect width="114" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="315" y="150" fill-opacity=".8" filter="url(#blur)" textLength="510">coverage</text><text x="315" y="150" fill-opacity=".3" textLength="510">coverage</text></g><text x="315" y="140" textLength="510">coverage</text></g><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="865" y="150" fill-opacity=".8" filter="url(#blur)" textLength="430">83.18%</text><text x="865" y="150" fill-opacity=".3" textLength="430">83.18%</text></g><text x="865" y="140" textLength="430">83.18%</text></g></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="coverage: 83.05%"><title>coverage: 83.05%</title><filter id="blur"><feGaussianBlur stdDeviation="16"/></filter><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="114" height="20" rx="3"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="53" height="20" fill="#67ac09"/><rect width="114" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="315" y="150" fill-opacity=".8" filter="url(#blur)" textLength="510">coverage</text><text x="315" y="150" fill-opacity=".3" textLength="510">coverage</text></g><text x="315" y="140" textLength="510">coverage</text></g><g transform="scale(.1)"><g aria-hidden="true" fill="#010101"><text x="865" y="150" fill-opacity=".8" filter="url(#blur)" textLength="430">83.05%</text><text x="865" y="150" fill-opacity=".3" textLength="430">83.05%</text></g><text x="865" y="140" textLength="430">83.05%</text></g></g></svg>
@@ -0,0 +1,127 @@
1
+ ---
2
+ title: "Developer Guide"
3
+ format:
4
+ html:
5
+ toc: true
6
+ toc-location: right
7
+ ---
8
+
9
+ ## Extending iBridges‑GUI {#extending-ibridges-gui}
10
+
11
+ iBridges‑GUI supports a modular plugin system that allows developers to add new functionality through custom tabs.
12
+ Your plugin is automatically detected and integrated into the main application at runtime.
13
+
14
+ A minimal example and template structure are available in the
15
+ **[plugin example repository](https://github.com/iBridges-for-iRODS/ibridges-gui-tab-example)**.
16
+
17
+ ## Contributing {#contributing}
18
+
19
+ iBridges‑GUI is an open‑source project, and we welcome contributions of all kinds — from bug reports and feature ideas to full pull requests.
20
+
21
+ Main repository:
22
+ **[iBridges‑GUI on GitHub](https://github.com/iBridges-for-iRODS/iBridges-GUI)**
23
+
24
+ ### Contribution workflow
25
+
26
+ 1. Fork the repository
27
+ 2. Create a feature branch from `develop`
28
+ 3. Implement your changes
29
+ 4. Submit a pull request back to `develop`
30
+
31
+ This workflow helps us review changes efficiently and maintain a clean development history.
32
+
33
+ ## Code structure overview {#code-structure-overview}
34
+
35
+ The core application lives in the
36
+ **[`ibridgesgui`](https://github.com/iBridges-for-iRODS/iBridges-GUI/tree/develop/ibridgesgui)**
37
+ package. Its architecture is modular, separating UI, logic, and iRODS operations into clear components.
38
+
39
+
40
+ ### Top-level modules {#top-level-modules}
41
+
42
+ These modules provide the core functionality used across the application:
43
+
44
+ - `__main__.py` — application entry point
45
+ - `config.py` — configuration handling
46
+ - `gui_utils.py` — shared GUI helpers
47
+ - `threads.py` — background worker threads
48
+ - `info.py` — application metadata
49
+ - `irods_tree_model.py` — iRODS tree model
50
+ - `login.py` — authentication
51
+ - `logviewer.py` — log viewer tab
52
+ - `welcome.py` — startup screen
53
+ - `md_schemas/` — metadata schema definitions
54
+
55
+
56
+ ### mainmenu/ {#mainmenu}
57
+
58
+ The orchestration layer of the application:
59
+
60
+ - `main_window.py` — main Qt window hosting all tabs
61
+ - `tab_manager.py` — loads and organizes built‑in tabs
62
+ - `plugin_manager.py` — discovers and loads plugin tabs
63
+ - `session_manager.py` — manages user session state
64
+ - `config_manager.py` — handles configuration files and user-defined settings
65
+
66
+ This directory is the best starting point for understanding how the application is assembled.
67
+
68
+
69
+ ### browsertab/ {#browsertab}
70
+
71
+ Implements the iRODS browser tab using a model–controller–view structure:
72
+
73
+ - `browser_model.py` — data model
74
+ - `browser_controller.py` — navigation and logic
75
+ - `browser.py` — UI
76
+ - `irods_browser_service.py` — iRODS operations
77
+
78
+
79
+ ### searchtab/ {#searchtab}
80
+
81
+ Implements the search interface:
82
+
83
+ - `search_model.py` — query state and results
84
+ - `search_controller.py` — executes searches and handles filters
85
+ - `search.py` — UI for building queries and viewing results
86
+
87
+
88
+ ### synctab/ {#synctab}
89
+
90
+ Implements synchronization:
91
+
92
+ - `sync_model.py` — sync state and configuration
93
+ - `sync_controller.py` — sync logic and background tasks
94
+ - `sync.py` — UI for managing sync jobs
95
+
96
+
97
+ ### popup_widgets/ {#popup-widgets}
98
+
99
+ Reusable dialogs for:
100
+
101
+ - creating collections
102
+ - creating directories
103
+ - uploading/downloading
104
+ - renaming
105
+ - metadata editing
106
+ - configuration checks
107
+ - resource tree dialogs
108
+
109
+ Each dialog has its own file, making them easy to reuse or extend.
110
+
111
+
112
+ ### ui_files/ {#ui-files}
113
+
114
+ Contains:
115
+
116
+ - Qt Designer `.ui` files
117
+ - auto‑generated Python wrappers
118
+ - matching controller/view logic
119
+
120
+ This keeps UI layout editable without touching logic.
121
+
122
+
123
+ ### icons/ {#icons}
124
+
125
+ Contains all icons used in the GUI, including navigation arrows, sync indicators, loading animations, and the application logo.
126
+
127
+
@@ -0,0 +1,64 @@
1
+ ---
2
+ title: "Frequently asked Questions"
3
+ format:
4
+ html:
5
+ toc: false
6
+ ---
7
+
8
+ If your question isn’t listed here, you may also find answers in the [**API and CLI FAQ**](https://ibridges.readthedocs.io/en/latest/faq.html).
9
+
10
+ ::: {.callout-tip collapse="true" title="I found a bug or have a feature request — where should I go?"}
11
+ All development happens on **GitHub**.
12
+
13
+ Check the *Issues* section to see whether your bug or idea has already been reported.
14
+ If not, feel free to open a new issue — we actively monitor the tracker and usually respond within a few days.
15
+ :::
16
+
17
+ ::: {.callout-tip collapse="true" title="I’m getting a “NetworkError” when transferring large files"}
18
+ This error usually appears when the **checksum calculation** exceeds the default iBridges timeout of **25,000 seconds** (~7 hours).
19
+ The transfer itself typically succeeds, but if the server is busy or the file is extremely large, the checksum step may run longer than the timeout.
20
+
21
+ You can increase the timeout by adding this entry to your `irods_environment.json`:
22
+
23
+ ```
24
+ "connection_timeout": <time in seconds>
25
+ ```
26
+
27
+ The maximum allowed value is:
28
+
29
+ ```
30
+ "connection_timeout": 9208512000
31
+ ```
32
+
33
+ which corresponds to roughly **292 years**.
34
+ :::
35
+
36
+ ::: {.callout-tip collapse="true" title="My metadata keys starting with `org_` don’t appear in iBridges"}
37
+ iBridges hides metadata keys beginning with `org_` by default.
38
+ This behaviour is intentional on Yoda systems for data‑security reasons.
39
+
40
+ If you need to access these keys, you can do so via the
41
+ [**iBridges API**](https://ibridges.readthedocs.io/en/latest/faq.html#my-metadata-with-keys-starting-with-org-do-not-show-up-in-the-ibridges-metadata).
42
+ :::
43
+
44
+ ::: {.callout-tip collapse="true" title="How can I download files that match a pattern but aren’t in the same collection?"}
45
+ Use the **Search** tab.
46
+ The search interface lets you filter for files regardless of their location.
47
+ Once the results appear, select the items you want to download.
48
+ :::
49
+
50
+
51
+ ::: {.callout-tip collapse="true" title="How do I find all the data I have access to?"}
52
+ Shared data in iRODS doesn’t always appear in your home or project collection.
53
+
54
+ However, shared objects must always reside in a collection you can access — that’s an iRODS rule.
55
+
56
+ To list all accessible collections:
57
+
58
+ 1. Open **Search**
59
+ 2. Set the search path to `/yourZone/home`
60
+ 3. Use `Obj/Coll name: %`
61
+ 4. Select **Collections** and unselect **Data Objects**
62
+
63
+ The results will show every collection you have permission to access.
64
+ :::