AboutDialog.qml 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. // Copyright (c) 2020 Ultimaker B.V.
  2. // Cura is released under the terms of the LGPLv3 or higher.
  3. import QtQuick 2.2
  4. import QtQuick.Controls 1.1
  5. import QtQuick.Window 2.1
  6. import UM 1.1 as UM
  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: 650 * 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. 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. 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. 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. ScrollView
  74. {
  75. id: credits
  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. ListView
  81. {
  82. id: projectsList
  83. width: parent.width
  84. delegate: Row
  85. {
  86. Label
  87. {
  88. text: "<a href='%1' title='%2'>%2</a>".arg(model.url).arg(model.name)
  89. width: (projectsList.width * 0.25) | 0
  90. elide: Text.ElideRight
  91. onLinkActivated: Qt.openUrlExternally(link)
  92. }
  93. Label
  94. {
  95. text: model.description
  96. elide: Text.ElideRight
  97. width: (projectsList.width * 0.6) | 0
  98. }
  99. Label
  100. {
  101. text: model.license
  102. elide: Text.ElideRight
  103. width: (projectsList.width * 0.15) | 0
  104. }
  105. }
  106. model: ListModel
  107. {
  108. id: projectsModel
  109. }
  110. Component.onCompleted:
  111. {
  112. projectsModel.append({ name: "Cura", description: catalog.i18nc("@label", "Graphical user interface"), license: "LGPLv3", url: "https://github.com/Ultimaker/Cura" });
  113. projectsModel.append({ name: "Uranium", description: catalog.i18nc("@label", "Application framework"), license: "LGPLv3", url: "https://github.com/Ultimaker/Uranium" });
  114. projectsModel.append({ name: "CuraEngine", description: catalog.i18nc("@label", "G-code generator"), license: "AGPLv3", url: "https://github.com/Ultimaker/CuraEngine" });
  115. projectsModel.append({ name: "libArcus", description: catalog.i18nc("@label", "Interprocess communication library"), license: "LGPLv3", url: "https://github.com/Ultimaker/libArcus" });
  116. projectsModel.append({ name: "Python", description: catalog.i18nc("@label", "Programming language"), license: "Python", url: "http://python.org/" });
  117. projectsModel.append({ name: "Qt5", description: catalog.i18nc("@label", "GUI framework"), license: "LGPLv3", url: "https://www.qt.io/" });
  118. projectsModel.append({ name: "PyQt", description: catalog.i18nc("@label", "GUI framework bindings"), license: "GPL", url: "https://riverbankcomputing.com/software/pyqt" });
  119. projectsModel.append({ name: "SIP", description: catalog.i18nc("@label", "C/C++ Binding library"), license: "GPL", url: "https://riverbankcomputing.com/software/sip" });
  120. projectsModel.append({ name: "Protobuf", description: catalog.i18nc("@label", "Data interchange format"), license: "BSD", url: "https://developers.google.com/protocol-buffers" });
  121. projectsModel.append({ name: "SciPy", description: catalog.i18nc("@label", "Support library for scientific computing"), license: "BSD-new", url: "https://www.scipy.org/" });
  122. projectsModel.append({ name: "NumPy", description: catalog.i18nc("@label", "Support library for faster math"), license: "BSD", url: "http://www.numpy.org/" });
  123. projectsModel.append({ name: "NumPy-STL", description: catalog.i18nc("@label", "Support library for handling STL files"), license: "BSD", url: "https://github.com/WoLpH/numpy-stl" });
  124. projectsModel.append({ name: "Shapely", description: catalog.i18nc("@label", "Support library for handling planar objects"), license: "BSD", url: "https://github.com/Toblerity/Shapely" });
  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: "mypy", description: catalog.i18nc("@Label", "Static type checker for Python"), license: "MIT", url: "http://mypy-lang.org/" });
  132. projectsModel.append({ name: "certifi", description: catalog.i18nc("@Label", "Root Certificates for validating SSL trustworthiness"), license: "MPL", url: "https://github.com/certifi/python-certifi" });
  133. projectsModel.append({ name: "cryptography", description: catalog.i18nc("@Label", "Root Certificates for validating SSL trustworthiness"), license: "APACHE and BSD", url: "https://cryptography.io/" });
  134. projectsModel.append({ name: "Sentry", description: catalog.i18nc("@Label", "Python Error tracking library"), license: "BSD 2-Clause 'Simplified'", url: "https://sentry.io/for/python/" });
  135. projectsModel.append({ name: "libnest2d", description: catalog.i18nc("@label", "Polygon packing library, developed by Prusa Research"), license: "LGPL", url: "https://github.com/tamasmeszaros/libnest2d" });
  136. projectsModel.append({ name: "pynest2d", description: catalog.i18nc("@label", "Python bindings for libnest2d"), license: "LGPL", url: "https://github.com/Ultimaker/pynest2d" });
  137. projectsModel.append({ name: "Noto Sans", description: catalog.i18nc("@label", "Font"), license: "Apache 2.0", url: "https://www.google.com/get/noto/" });
  138. 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" });
  139. projectsModel.append({ name: "AppImageKit", description: catalog.i18nc("@label", "Linux cross-distribution application deployment"), license: "MIT", url: "https://github.com/AppImage/AppImageKit" });
  140. }
  141. }
  142. }
  143. rightButtons: Button
  144. {
  145. //: Close about dialog button
  146. id: closeButton
  147. text: catalog.i18nc("@action:button","Close");
  148. onClicked: base.visible = false;
  149. }
  150. }