AboutDialog.qml 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. // Copyright (c) 2018 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","About Cura")
  12. minimumWidth: 500 * screenScaleFactor
  13. minimumHeight: 650 * screenScaleFactor
  14. width: minimumWidth
  15. height: minimumHeight
  16. Rectangle
  17. {
  18. width: parent.width + 2 * margin // margin from Dialog.qml
  19. height: version.y + version.height + margin
  20. anchors.top: parent.top
  21. anchors.topMargin: - margin
  22. anchors.horizontalCenter: parent.horizontalCenter
  23. color: UM.Theme.getColor("viewport_background")
  24. }
  25. Image
  26. {
  27. id: logo
  28. width: (base.minimumWidth * 0.85) | 0
  29. height: (width * (UM.Theme.getSize("logo").height / UM.Theme.getSize("logo").width)) | 0
  30. source: UM.Theme.getImage("logo_about")
  31. anchors.top: parent.top
  32. anchors.topMargin: ((base.minimumWidth - width) / 2) | 0
  33. anchors.horizontalCenter: parent.horizontalCenter
  34. UM.I18nCatalog{id: catalog; name: "cura"}
  35. }
  36. Label
  37. {
  38. id: version
  39. text: catalog.i18nc("@label","version: %1").arg(UM.Application.version)
  40. font: UM.Theme.getFont("large_bold")
  41. color: UM.Theme.getColor("text")
  42. anchors.right : logo.right
  43. anchors.top: logo.bottom
  44. anchors.topMargin: (UM.Theme.getSize("default_margin").height / 2) | 0
  45. }
  46. Label
  47. {
  48. id: description
  49. width: parent.width
  50. //: About dialog application description
  51. text: catalog.i18nc("@label","End-to-end solution for fused filament 3D printing.")
  52. font: UM.Theme.getFont("system")
  53. wrapMode: Text.WordWrap
  54. anchors.top: version.bottom
  55. anchors.topMargin: UM.Theme.getSize("default_margin").height
  56. }
  57. Label
  58. {
  59. id: creditsNotes
  60. width: parent.width
  61. //: About dialog application author note
  62. 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:")
  63. font: UM.Theme.getFont("system")
  64. wrapMode: Text.WordWrap
  65. anchors.top: description.bottom
  66. anchors.topMargin: UM.Theme.getSize("default_margin").height
  67. }
  68. ScrollView
  69. {
  70. id: credits
  71. anchors.top: creditsNotes.bottom
  72. anchors.topMargin: UM.Theme.getSize("default_margin").height
  73. width: parent.width
  74. height: base.height - y - (2 * UM.Theme.getSize("default_margin").height + closeButton.height)
  75. ListView
  76. {
  77. id: projectsList
  78. width: parent.width
  79. delegate: Row
  80. {
  81. Label
  82. {
  83. text: "<a href='%1' title='%2'>%2</a>".arg(model.url).arg(model.name)
  84. width: (projectsList.width * 0.25) | 0
  85. elide: Text.ElideRight
  86. onLinkActivated: Qt.openUrlExternally(link)
  87. }
  88. Label
  89. {
  90. text: model.description
  91. elide: Text.ElideRight
  92. width: (projectsList.width * 0.6) | 0
  93. }
  94. Label
  95. {
  96. text: model.license
  97. elide: Text.ElideRight
  98. width: (projectsList.width * 0.15) | 0
  99. }
  100. }
  101. model: ListModel
  102. {
  103. id: projectsModel
  104. }
  105. Component.onCompleted:
  106. {
  107. projectsModel.append({ name: "Cura", description: catalog.i18nc("@label", "Graphical user interface"), license: "LGPLv3", url: "https://github.com/Ultimaker/Cura" });
  108. projectsModel.append({ name: "Uranium", description: catalog.i18nc("@label", "Application framework"), license: "LGPLv3", url: "https://github.com/Ultimaker/Uranium" });
  109. projectsModel.append({ name: "CuraEngine", description: catalog.i18nc("@label", "G-code generator"), license: "AGPLv3", url: "https://github.com/Ultimaker/CuraEngine" });
  110. projectsModel.append({ name: "libArcus", description: catalog.i18nc("@label", "Interprocess communication library"), license: "LGPLv3", url: "https://github.com/Ultimaker/libArcus" });
  111. projectsModel.append({ name: "Python", description: catalog.i18nc("@label", "Programming language"), license: "Python", url: "http://python.org/" });
  112. projectsModel.append({ name: "Qt5", description: catalog.i18nc("@label", "GUI framework"), license: "LGPLv3", url: "https://www.qt.io/" });
  113. projectsModel.append({ name: "PyQt", description: catalog.i18nc("@label", "GUI framework bindings"), license: "GPL", url: "https://riverbankcomputing.com/software/pyqt" });
  114. projectsModel.append({ name: "SIP", description: catalog.i18nc("@label", "C/C++ Binding library"), license: "GPL", url: "https://riverbankcomputing.com/software/sip" });
  115. projectsModel.append({ name: "Protobuf", description: catalog.i18nc("@label", "Data interchange format"), license: "BSD", url: "https://developers.google.com/protocol-buffers" });
  116. projectsModel.append({ name: "SciPy", description: catalog.i18nc("@label", "Support library for scientific computing"), license: "BSD-new", url: "https://www.scipy.org/" });
  117. projectsModel.append({ name: "NumPy", description: catalog.i18nc("@label", "Support library for faster math"), license: "BSD", url: "http://www.numpy.org/" });
  118. projectsModel.append({ name: "NumPy-STL", description: catalog.i18nc("@label", "Support library for handling STL files"), license: "BSD", url: "https://github.com/WoLpH/numpy-stl" });
  119. projectsModel.append({ name: "Shapely", description: catalog.i18nc("@label", "Support library for handling planar objects"), license: "BSD", url: "https://github.com/Toblerity/Shapely" });
  120. projectsModel.append({ name: "Trimesh", description: catalog.i18nc("@label", "Support library for handling triangular meshes"), license: "MIT", url: "https://trimsh.org" });
  121. projectsModel.append({ name: "NetworkX", description: catalog.i18nc("@label", "Support library for analysis of complex networks"), license: "3-clause BSD", url: "https://networkx.github.io/" });
  122. projectsModel.append({ name: "libSavitar", description: catalog.i18nc("@label", "Support library for handling 3MF files"), license: "LGPLv3", url: "https://github.com/ultimaker/libsavitar" });
  123. projectsModel.append({ name: "libCharon", description: catalog.i18nc("@label", "Support library for file metadata and streaming"), license: "LGPLv3", url: "https://github.com/ultimaker/libcharon" });
  124. projectsModel.append({ name: "PySerial", description: catalog.i18nc("@label", "Serial communication library"), license: "Python", url: "http://pyserial.sourceforge.net/" });
  125. projectsModel.append({ name: "python-zeroconf", description: catalog.i18nc("@label", "ZeroConf discovery library"), license: "LGPL", url: "https://github.com/jstasiak/python-zeroconf" });
  126. projectsModel.append({ name: "Clipper", description: catalog.i18nc("@label", "Polygon clipping library"), license: "Boost", url: "http://www.angusj.com/delphi/clipper.php" });
  127. projectsModel.append({ name: "Requests", description: catalog.i18nc("@Label", "Python HTTP library"), license: "GPL", url: "http://docs.python-requests.org" });
  128. projectsModel.append({ name: "Noto Sans", description: catalog.i18nc("@label", "Font"), license: "Apache 2.0", url: "https://www.google.com/get/noto/" });
  129. 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" });
  130. projectsModel.append({ name: "AppImageKit", description: catalog.i18nc("@label", "Linux cross-distribution application deployment"), license: "MIT", url: "https://github.com/AppImage/AppImageKit" });
  131. }
  132. }
  133. }
  134. rightButtons: Button
  135. {
  136. //: Close about dialog button
  137. id: closeButton
  138. text: catalog.i18nc("@action:button","Close");
  139. onClicked: base.visible = false;
  140. }
  141. }