AboutDialog.qml 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. // Copyright (c) 2022 Ultimaker B.V.
  2. // Cura is released under the terms of the LGPLv3 or higher.
  3. import QtQuick 2.2
  4. import QtQuick.Controls 2.9
  5. import UM 1.5 as UM
  6. import Cura 1.5 as Cura
  7. UM.Dialog
  8. {
  9. id: base
  10. //: About dialog title
  11. title: catalog.i18nc("@title:window The argument is the application name.", "About %1").arg(CuraApplication.applicationDisplayName)
  12. minimumWidth: 500 * screenScaleFactor
  13. minimumHeight: 700 * screenScaleFactor
  14. width: minimumWidth
  15. height: minimumHeight
  16. Rectangle
  17. {
  18. id: header
  19. width: parent.width + 2 * margin // margin from Dialog.qml
  20. height: childrenRect.height + topPadding
  21. anchors.top: parent.top
  22. anchors.topMargin: -margin
  23. anchors.horizontalCenter: parent.horizontalCenter
  24. property real topPadding: UM.Theme.getSize("wide_margin").height
  25. color: UM.Theme.getColor("main_window_header_background")
  26. Image
  27. {
  28. id: logo
  29. width: (base.minimumWidth * 0.85) | 0
  30. height: (width * (UM.Theme.getSize("logo").height / UM.Theme.getSize("logo").width)) | 0
  31. source: UM.Theme.getImage("logo")
  32. sourceSize.width: width
  33. sourceSize.height: height
  34. fillMode: Image.PreserveAspectFit
  35. anchors.top: parent.top
  36. anchors.topMargin: parent.topPadding
  37. anchors.horizontalCenter: parent.horizontalCenter
  38. UM.I18nCatalog{id: catalog; name: "cura"}
  39. }
  40. UM.Label
  41. {
  42. id: version
  43. text: catalog.i18nc("@label","version: %1").arg(UM.Application.version)
  44. font: UM.Theme.getFont("large_bold")
  45. color: UM.Theme.getColor("button_text")
  46. anchors.right : logo.right
  47. anchors.top: logo.bottom
  48. anchors.topMargin: (UM.Theme.getSize("default_margin").height / 2) | 0
  49. }
  50. }
  51. UM.Label
  52. {
  53. id: description
  54. width: parent.width
  55. //: About dialog application description
  56. text: catalog.i18nc("@label","End-to-end solution for fused filament 3D printing.")
  57. font: UM.Theme.getFont("system")
  58. wrapMode: Text.WordWrap
  59. anchors.top: header.bottom
  60. anchors.topMargin: UM.Theme.getSize("default_margin").height
  61. }
  62. UM.Label
  63. {
  64. id: creditsNotes
  65. width: parent.width
  66. //: About dialog application author note
  67. text: catalog.i18nc("@info:credit","Cura is developed by Ultimaker B.V. in cooperation with the community.\nCura proudly uses the following open source projects:")
  68. font: UM.Theme.getFont("system")
  69. wrapMode: Text.WordWrap
  70. anchors.top: description.bottom
  71. anchors.topMargin: UM.Theme.getSize("default_margin").height
  72. }
  73. ListView
  74. {
  75. id: projectsList
  76. anchors.top: creditsNotes.bottom
  77. anchors.topMargin: UM.Theme.getSize("default_margin").height
  78. width: parent.width
  79. height: base.height - y - (2 * UM.Theme.getSize("default_margin").height + closeButton.height)
  80. ScrollBar.vertical: UM.ScrollBar
  81. {
  82. id: projectsListScrollBar
  83. }
  84. delegate: Row
  85. {
  86. spacing: UM.Theme.getSize("narrow_margin").width
  87. UM.Label
  88. {
  89. text: "<a href='%1' title='%2'>%2</a>".arg(model.url).arg(model.name)
  90. width: (projectsList.width * 0.25) | 0
  91. elide: Text.ElideRight
  92. onLinkActivated: Qt.openUrlExternally(link)
  93. }
  94. UM.Label
  95. {
  96. text: model.description
  97. elide: Text.ElideRight
  98. width: ((projectsList.width * 0.6) | 0) - parent.spacing * 2 - projectsListScrollBar.width
  99. }
  100. UM.Label
  101. {
  102. text: model.license
  103. elide: Text.ElideRight
  104. width: (projectsList.width * 0.15) | 0
  105. }
  106. }
  107. model: ListModel
  108. {
  109. id: projectsModel
  110. }
  111. Component.onCompleted:
  112. {
  113. projectsModel.append({ name: "Cura", description: catalog.i18nc("@label", "Graphical user interface"), license: "LGPLv3", url: "https://github.com/Ultimaker/Cura" });
  114. projectsModel.append({ name: "Uranium", description: catalog.i18nc("@label", "Application framework"), license: "LGPLv3", url: "https://github.com/Ultimaker/Uranium" });
  115. projectsModel.append({ name: "CuraEngine", description: catalog.i18nc("@label", "G-code generator"), license: "AGPLv3", url: "https://github.com/Ultimaker/CuraEngine" });
  116. projectsModel.append({ name: "libArcus", description: catalog.i18nc("@label", "Interprocess communication library"), license: "LGPLv3", url: "https://github.com/Ultimaker/libArcus" });
  117. projectsModel.append({ name: "Python", description: catalog.i18nc("@label", "Programming language"), license: "Python", url: "http://python.org/" });
  118. projectsModel.append({ name: "Qt6", description: catalog.i18nc("@label", "GUI framework"), license: "LGPLv3", url: "https://www.qt.io/" });
  119. projectsModel.append({ name: "PyQt", description: catalog.i18nc("@label", "GUI framework bindings"), license: "GPL", url: "https://riverbankcomputing.com/software/pyqt" });
  120. projectsModel.append({ name: "SIP", description: catalog.i18nc("@label", "C/C++ Binding library"), license: "GPL", url: "https://riverbankcomputing.com/software/sip" });
  121. projectsModel.append({ name: "Protobuf", description: catalog.i18nc("@label", "Data interchange format"), license: "BSD", url: "https://developers.google.com/protocol-buffers" });
  122. projectsModel.append({ name: "SciPy", description: catalog.i18nc("@label", "Support library for scientific computing"), license: "BSD-new", url: "https://www.scipy.org/" });
  123. projectsModel.append({ name: "NumPy", description: catalog.i18nc("@label", "Support library for faster math"), license: "BSD", url: "http://www.numpy.org/" });
  124. projectsModel.append({ name: "NumPy-STL", description: catalog.i18nc("@label", "Support library for handling STL files"), license: "BSD", url: "https://github.com/WoLpH/numpy-stl" });
  125. projectsModel.append({ name: "Trimesh", description: catalog.i18nc("@label", "Support library for handling triangular meshes"), license: "MIT", url: "https://trimsh.org" });
  126. projectsModel.append({ name: "libSavitar", description: catalog.i18nc("@label", "Support library for handling 3MF files"), license: "LGPLv3", url: "https://github.com/ultimaker/libsavitar" });
  127. projectsModel.append({ name: "libCharon", description: catalog.i18nc("@label", "Support library for file metadata and streaming"), license: "LGPLv3", url: "https://github.com/ultimaker/libcharon" });
  128. projectsModel.append({ name: "PySerial", description: catalog.i18nc("@label", "Serial communication library"), license: "Python", url: "http://pyserial.sourceforge.net/" });
  129. projectsModel.append({ name: "python-zeroconf", description: catalog.i18nc("@label", "ZeroConf discovery library"), license: "LGPL", url: "https://github.com/jstasiak/python-zeroconf" });
  130. projectsModel.append({ name: "Clipper", description: catalog.i18nc("@label", "Polygon clipping library"), license: "Boost", url: "http://www.angusj.com/delphi/clipper.php" });
  131. projectsModel.append({ name: "Pyclipper", description: catalog.i18nc("@label", "Python bindings for Clipper"), license: "MIT", url: "https://github.com/fonttools/pyclipper" });
  132. projectsModel.append({ name: "mypy", description: catalog.i18nc("@Label", "Static type checker for Python"), license: "MIT", url: "http://mypy-lang.org/" });
  133. projectsModel.append({ name: "certifi", description: catalog.i18nc("@Label", "Root Certificates for validating SSL trustworthiness"), license: "MPL", url: "https://github.com/certifi/python-certifi" });
  134. projectsModel.append({ name: "cryptography", description: catalog.i18nc("@Label", "Root Certificates for validating SSL trustworthiness"), license: "APACHE and BSD", url: "https://cryptography.io/" });
  135. projectsModel.append({ name: "Sentry", description: catalog.i18nc("@Label", "Python Error tracking library"), license: "BSD 2-Clause 'Simplified'", url: "https://sentry.io/for/python/" });
  136. projectsModel.append({ name: "libnest2d", description: catalog.i18nc("@label", "Polygon packing library, developed by Prusa Research"), license: "LGPL", url: "https://github.com/tamasmeszaros/libnest2d" });
  137. projectsModel.append({ name: "pynest2d", description: catalog.i18nc("@label", "Python bindings for libnest2d"), license: "LGPL", url: "https://github.com/Ultimaker/pynest2d" });
  138. projectsModel.append({ name: "keyring", description: catalog.i18nc("@label", "Support library for system keyring access"), license: "MIT", url: "https://github.com/jaraco/keyring" });
  139. projectsModel.append({ name: "pywin32", description: catalog.i18nc("@label", "Python extensions for Microsoft Windows"), license: "PSF", url: "https://github.com/mhammond/pywin32" });
  140. projectsModel.append({ name: "Noto Sans", description: catalog.i18nc("@label", "Font"), license: "Apache 2.0", url: "https://www.google.com/get/noto/" });
  141. projectsModel.append({ name: "Font-Awesome-SVG-PNG", description: catalog.i18nc("@label", "SVG icons"), license: "SIL OFL 1.1", url: "https://github.com/encharm/Font-Awesome-SVG-PNG" });
  142. projectsModel.append({ name: "AppImageKit", description: catalog.i18nc("@label", "Linux cross-distribution application deployment"), license: "MIT", url: "https://github.com/AppImage/AppImageKit" });
  143. }
  144. }
  145. rightButtons: Cura.TertiaryButton
  146. {
  147. //: Close about dialog button
  148. id: closeButton
  149. text: catalog.i18nc("@action:button", "Close")
  150. onClicked: reject()
  151. }
  152. }