[packages/cura] - initial from FC
arekm
arekm at pld-linux.org
Thu May 14 22:49:23 CEST 2015
commit 30bab2a9374541144a09796dce2f26df77f906f3
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Thu May 14 22:49:04 2015 +0200
- initial from FC
cura | 15 ++++++
cura-dont-show-nc-stls.patch | 119 +++++++++++++++++++++++++++++++++++++++++++
cura-newlines.patch | 38 ++++++++++++++
cura-no-firmware.patch | 81 +++++++++++++++++++++++++++++
cura-system-paths.patch | 33 ++++++++++++
cura-version.patch | 77 ++++++++++++++++++++++++++++
cura.desktop | 9 ++++
cura.spec | 111 ++++++++++++++++++++++++++++++++++++++++
8 files changed, 483 insertions(+)
---
diff --git a/cura.spec b/cura.spec
new file mode 100644
index 0000000..2b6cb25
--- /dev/null
+++ b/cura.spec
@@ -0,0 +1,111 @@
+Summary: 3D printer control software
+Name: cura
+Version: 15.02.1
+Release: 0.1
+Group: Applications/Engineering
+# Code is AGPLv3
+# Icons AGPLv3 https://github.com/daid/Cura/issues/231#issuecomment-12209683
+# Example models are CC-BY-SA
+# TweakAtZ.py is CC-BY-SA
+License: AGPLv3 and CC-BY-SA
+URL: http://daid.github.com/Cura/
+Source0: https://github.com/daid/Cura/archive/%{version}.tar.gz
+# Source0-md5: f41ba365e5b98907cf55fc70e056c2e8
+Source1: %{name}
+Source2: %{name}.desktop
+# UltimakerPlatforms STLs were stripped from the tarball, don't crash because of that
+Patch0: %{name}-dont-show-nc-stls.patch
+# Use system paths
+Patch1: %{name}-system-paths.patch
+# Rework the logic of determining the version (didn't work)
+Patch2: %{name}-version.patch
+Patch3: %{name}-no-firmware.patch
+Patch4: %{name}-newlines.patch
+BuildRequires: desktop-file-utils
+BuildRequires: dos2unix
+BuildRequires: gettext
+BuildRequires: python-devel
+Requires: CuraEngine >= 14.12.1
+Requires: pypy
+Requires: python-PyOpenGL
+Requires: python-numpy
+Requires: python-power
+Requires: python-serial
+Requires: wxPython
+BuildArch: noarch
+
+%description
+Cura is a project which aims to be an single software solution for 3D
+printing. While it is developed to be used with the Ultimaker 3D
+printer, it can be used with other RepRap based designs.
+
+Cura helps you to setup an Ultimaker, shows your 3D model, allows for
+scaling / positioning, can slice the model to G-Code, with sane
+editable configuration settings and send this G-Code to the 3D printer
+for printing.
+
+%prep
+%setup -qn Cura-%{version}
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+
+# Use free UltimakerHandle.stl instead of UltimakerRobot_support.stl
+FILES=$(grep -Ir "UltimakerRobot_support.stl" . | cut -f1 -d: | sort | uniq | grep -v Attribution.txt | tr '\n' ' ')
+sed -i 's/UltimakerRobot_support.stl/UltimakerHandle.stl/g' $FILES
+
+dos2unix resources/example/Attribution.txt
+
+sed -i 's/REPLACE_THIS_IN_SPEC/%{version}/' Cura/util/version.py
+
+mv resources/locale/{zh,zh_CN}
+rm -rf resources/locale/po
+
+%build
+# rebuild locales
+cd resources/locale
+rm *.in *.pot
+for FILE in *
+ do msgfmt $FILE/LC_MESSAGES/Cura.po -o $FILE/LC_MESSAGES/Cura.mo
+ rm $FILE/LC_MESSAGES/Cura.po
+done
+cd -
+
+%install
+rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT%{py_sitescriptdir}/Cura
+install -d $RPM_BUILD_ROOT%{_datadir}/%{name}/firmware
+install -d $RPM_BUILD_ROOT%{_pixmapsdir}
+install -d $RPM_BUILD_ROOT%{_localedir}
+install -d $RPM_BUILD_ROOT%{_bindir}
+
+cp -apr Cura/* $RPM_BUILD_ROOT%{py_sitescriptdir}/Cura
+rm -rf $RPM_BUILD_ROOT%{py_sitescriptdir}/Cura/LICENSE
+cp -apr resources/* $RPM_BUILD_ROOT%{_datadir}/%{name}
+cp -apr plugins $RPM_BUILD_ROOT%{_datadir}/%{name}
+cp -ap %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}
+ln -s %{_datadir}/%{name} $RPM_BUILD_ROOT%{py_sitescriptdir}/Cura/resources
+ln -s %{_datadir}/%{name}/%{name}.ico $RPM_BUILD_ROOT%{_pixmapsdir}
+
+# locales
+cp -a $RPM_BUILD_ROOT%{_datadir}/%{name}/locale/* $RPM_BUILD_ROOT%{_localedir}
+rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name}/locale
+ln -s -f %{_localedir}/ $RPM_BUILD_ROOT%{_datadir}/%{name}/ # the app expects the locale folder in here
+
+desktop-file-install --dir=$RPM_BUILD_ROOT%{_desktopdir} %{SOURCE2}
+
+%{find_lang} Cura
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files -f Cura.lang
+%defattr(644,root,root,755)
+%doc Cura/LICENSE resources/example/Attribution.txt
+%{py_sitescriptdir}/Cura
+%{_datadir}/%{name}
+%{_pixmapsdir}/%{name}.ico
+%{_desktopdir}/%{name}.desktop
+%attr(755,root,root) %{_bindir}/%{name}
diff --git a/cura b/cura
new file mode 100755
index 0000000..322824e
--- /dev/null
+++ b/cura
@@ -0,0 +1,15 @@
+#!/usr/bin/python
+import os
+import sys
+import Cura.cura as cura
+
+# Make all paths absolute, we are gonna change the pwd
+for i in range(len(sys.argv)):
+ if os.path.exists(sys.argv[i]):
+ sys.argv[i] = os.path.abspath(sys.argv[i])
+
+# change the pwd
+os.chdir("/usr/lib/python2.7/site-packages/")
+
+# start cura
+cura.main()
diff --git a/cura-dont-show-nc-stls.patch b/cura-dont-show-nc-stls.patch
new file mode 100644
index 0000000..d814f1d
--- /dev/null
+++ b/cura-dont-show-nc-stls.patch
@@ -0,0 +1,119 @@
+diff -urN Cura-15.02.1.org/Cura/gui/sceneView.py Cura-15.02.1/Cura/gui/sceneView.py
+--- Cura-15.02.1.org/Cura/gui/sceneView.py 2015-02-18 21:22:48.000000000 +0100
++++ Cura-15.02.1/Cura/gui/sceneView.py 2015-05-14 22:34:56.020409418 +0200
+@@ -1320,105 +1320,16 @@
+
+ size = [profile.getMachineSettingFloat('machine_width'), profile.getMachineSettingFloat('machine_depth'), profile.getMachineSettingFloat('machine_height')]
+
+- machine_type = profile.getMachineSetting('machine_type')
+- if machine_type not in self._platformMesh:
+- self._platformMesh[machine_type] = None
+-
+- filename = None
+- texture_name = None
+- offset = [0,0,0]
+- texture_offset = [0,0,0]
+- texture_scale = 1.0
+- if machine_type == 'ultimaker2' or machine_type == 'ultimaker2extended':
+- filename = resources.getPathForMesh('ultimaker2_platform.stl')
+- offset = [-9,-37,145]
+- texture_name = 'Ultimaker2backplate.png'
+- texture_offset = [9,150,-5]
+- elif machine_type == 'ultimaker2go':
+- filename = resources.getPathForMesh('ultimaker2go_platform.stl')
+- offset = [0,-42,145]
+- texture_offset = [0,105,-5]
+- texture_name = 'Ultimaker2backplate.png'
+- texture_scale = 0.9
+- elif machine_type == 'ultimaker_plus':
+- filename = resources.getPathForMesh('ultimaker2_platform.stl')
+- offset = [0,-37,145]
+- texture_offset = [0,150,-5]
+- texture_name = 'UltimakerPlusbackplate.png'
+- elif machine_type == 'ultimaker':
+- filename = resources.getPathForMesh('ultimaker_platform.stl')
+- offset = [0,0,2.5]
+- elif machine_type == 'Witbox':
+- filename = resources.getPathForMesh('Witbox_platform.stl')
+- offset = [0,-37,145]
+-
+- if filename is not None:
+- meshes = meshLoader.loadMeshes(filename)
+- if len(meshes) > 0:
+- self._platformMesh[machine_type] = meshes[0]
+- self._platformMesh[machine_type]._drawOffset = numpy.array(offset, numpy.float32)
+- self._platformMesh[machine_type].texture = None
+- if texture_name is not None:
+- self._platformMesh[machine_type].texture = openglHelpers.loadGLTexture(texture_name)
+- self._platformMesh[machine_type].texture_offset = texture_offset
+- self._platformMesh[machine_type].texture_scale = texture_scale
+- if self._platformMesh[machine_type] is not None:
+- mesh = self._platformMesh[machine_type]
+- glColor4f(1,1,1,0.5)
+- self._objectShader.bind()
+- self._renderObject(mesh, False, False)
+- self._objectShader.unbind()
+-
+- #For the Ultimaker 2 render the texture on the back plate to show the Ultimaker2 text.
+- if mesh.texture is not None:
+- glBindTexture(GL_TEXTURE_2D, mesh.texture)
+- glEnable(GL_TEXTURE_2D)
+- glPushMatrix()
+- glColor4f(1,1,1,1)
+-
+- glTranslate(mesh.texture_offset[0], mesh.texture_offset[1], mesh.texture_offset[2])
+- glScalef(mesh.texture_scale, mesh.texture_scale, mesh.texture_scale)
+- h = 50
+- d = 8
+- w = 100
+- glEnable(GL_BLEND)
+- glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA)
+- glEnable(GL_ALPHA_TEST)
+- glAlphaFunc(GL_GREATER, 0.0)
+- glBegin(GL_QUADS)
+- glTexCoord2f(1, 0)
+- glVertex3f( w, 0, h)
+- glTexCoord2f(0, 0)
+- glVertex3f(-w, 0, h)
+- glTexCoord2f(0, 1)
+- glVertex3f(-w, 0, 0)
+- glTexCoord2f(1, 1)
+- glVertex3f( w, 0, 0)
+-
+- glTexCoord2f(1, 0)
+- glVertex3f(-w, d, h)
+- glTexCoord2f(0, 0)
+- glVertex3f( w, d, h)
+- glTexCoord2f(0, 1)
+- glVertex3f( w, d, 0)
+- glTexCoord2f(1, 1)
+- glVertex3f(-w, d, 0)
+- glEnd()
+- glDisable(GL_TEXTURE_2D)
+- glDisable(GL_ALPHA_TEST)
+- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
+- glPopMatrix()
+- else:
+- glColor4f(0,0,0,1)
+- glLineWidth(3)
+- glBegin(GL_LINES)
+- glVertex3f(-size[0] / 2, -size[1] / 2, 0)
+- glVertex3f(-size[0] / 2, -size[1] / 2, 10)
+- glVertex3f(-size[0] / 2, -size[1] / 2, 0)
+- glVertex3f(-size[0] / 2+10, -size[1] / 2, 0)
+- glVertex3f(-size[0] / 2, -size[1] / 2, 0)
+- glVertex3f(-size[0] / 2, -size[1] / 2+10, 0)
+- glEnd()
++ glColor4f(0,0,0,1)
++ glLineWidth(3)
++ glBegin(GL_LINES)
++ glVertex3f(-size[0] / 2, -size[1] / 2, 0)
++ glVertex3f(-size[0] / 2, -size[1] / 2, 10)
++ glVertex3f(-size[0] / 2, -size[1] / 2, 0)
++ glVertex3f(-size[0] / 2+10, -size[1] / 2, 0)
++ glVertex3f(-size[0] / 2, -size[1] / 2, 0)
++ glVertex3f(-size[0] / 2, -size[1] / 2+10, 0)
++ glEnd()
+
+ glDepthMask(False)
+
diff --git a/cura-newlines.patch b/cura-newlines.patch
new file mode 100644
index 0000000..1b50441
--- /dev/null
+++ b/cura-newlines.patch
@@ -0,0 +1,38 @@
+--- Cura-15.02.1/resources/locale/zh/LC_MESSAGES/Cura.po~ 2015-05-14 22:40:18.934776079 +0200
++++ Cura-15.02.1/resources/locale/zh/LC_MESSAGES/Cura.po 2015-05-14 22:40:49.762177833 +0200
+@@ -1679,7 +1679,7 @@
+ "支撑结构类型。\n"
+ "通常使用\"Touching buildplate\"建立支撑 \n"
+ "\n"
+-"选择 None 不会建立支撑\n"
++"选择 None 不会建立支撑"
+
+ #: Cura/util/profile.py:192 Cura/util/profile.py:243
+ msgid "Brim"
+@@ -1712,7 +1712,7 @@
+ "(Note that enabling the brim or raft disables the skirt)"
+ msgstr ""
+ "Brim会在模型底边周围增加数圈薄层,推荐使用这个选项\n"
+-"Raft会打印模型前打印一个网状底座\n"
++"Raft会打印模型前打印一个网状底座"
+
+ #: Cura/util/profile.py:193
+ msgid "Both"
+@@ -2565,7 +2565,7 @@
+ "个\n"
+ "选项会打开会则会不理会这些洞.这个选项一般是你所不需要的,除非在出现切片失败"
+ "的\n"
+-"情况下,你可能需要打开它.\n"
++"情况下,你可能需要打开它."
+
+ #: Cura/util/profile.py:258
+ msgid "Extensive stitching"
+@@ -2762,7 +2762,7 @@
+ msgstr ""
+ "GCode生成的风格\n"
+ "RepRap一般是5D GCode,兼容于Marlin/Sprinter固件\n"
+-"UltiGCode是一种GCode派生,把部分配置放到里机器里,而不是切片软件\n"
++"UltiGCode是一种GCode派生,把部分配置放到里机器里,而不是切片软件"
+
+ #: Cura/util/profile.py:533
+ msgid "Extruder count"
diff --git a/cura-no-firmware.patch b/cura-no-firmware.patch
new file mode 100644
index 0000000..39a3873
--- /dev/null
+++ b/cura-no-firmware.patch
@@ -0,0 +1,81 @@
+diff -urN Cura-15.02.1.org/Cura/gui/firmwareInstall.py Cura-15.02.1/Cura/gui/firmwareInstall.py
+--- Cura-15.02.1.org/Cura/gui/firmwareInstall.py 2015-02-18 21:22:48.000000000 +0100
++++ Cura-15.02.1/Cura/gui/firmwareInstall.py 2015-05-14 22:37:20.963865640 +0200
+@@ -17,47 +17,6 @@
+ from Cura.util import resources
+
+ def getDefaultFirmware(machineIndex = None):
+- machine_type = profile.getMachineSetting('machine_type', machineIndex)
+- extruders = profile.getMachineSettingFloat('extruder_amount', machineIndex)
+- heated_bed = profile.getMachineSetting('has_heated_bed', machineIndex) == 'True'
+- baudrate = 250000
+- if sys.platform.startswith('linux'):
+- baudrate = 115200
+- if machine_type == 'ultimaker':
+- name = 'MarlinUltimaker'
+- if extruders > 2:
+- return None
+- if heated_bed:
+- name += '-HBK'
+- name += '-%d' % (baudrate)
+- if extruders > 1:
+- name += '-dual'
+- return resources.getPathForFirmware(name + '.hex')
+-
+- if machine_type == 'ultimaker_plus':
+- name = 'MarlinUltimaker-UMOP-%d' % (baudrate)
+- if extruders > 2:
+- return None
+- if extruders > 1:
+- name += '-dual'
+- return resources.getPathForFirmware(name + '.hex')
+-
+- if machine_type == 'ultimaker2':
+- if extruders > 2:
+- return None
+- if extruders > 1:
+- return resources.getPathForFirmware("MarlinUltimaker2-dual.hex")
+- return resources.getPathForFirmware("MarlinUltimaker2.hex")
+- if machine_type == 'ultimaker2go':
+- return resources.getPathForFirmware("MarlinUltimaker2go.hex")
+- if machine_type == 'ultimaker2extended':
+- if extruders > 2:
+- return None
+- if extruders > 1:
+- return resources.getPathForFirmware("MarlinUltimaker2extended-dual.hex")
+- return resources.getPathForFirmware("MarlinUltimaker2extended.hex")
+- if machine_type == 'Witbox':
+- return resources.getPathForFirmware("MarlinWitbox.hex")
+ return None
+
+ class InstallFirmware(wx.Dialog):
+@@ -68,7 +27,7 @@
+ if filename is None:
+ filename = getDefaultFirmware(machineIndex)
+ if filename is None:
+- wx.MessageBox(_("I am sorry, but Cura does not ship with a default firmware for your machine configuration."), _("Firmware update"), wx.OK | wx.ICON_ERROR)
++ wx.MessageBox(_("I am sorry, but Cura on Fedora does not ship firmware for technical reasons. Please go download it and install it as custom firmware instead."), _("Firmware update"), wx.OK | wx.ICON_ERROR)
+ self.Destroy()
+ return
+ self._machine_type = profile.getMachineSetting('machine_type', machineIndex)
+diff -urN Cura-15.02.1.org/Cura/gui/mainWindow.py Cura-15.02.1/Cura/gui/mainWindow.py
+--- Cura-15.02.1.org/Cura/gui/mainWindow.py 2015-02-18 21:22:48.000000000 +0100
++++ Cura-15.02.1/Cura/gui/mainWindow.py 2015-05-14 22:37:36.827577248 +0200
+@@ -375,7 +375,6 @@
+ self.splitter.SetSashPosition(self.normalSashPos, True)
+ # Enabled sash
+ self.splitter.SetSashSize(4)
+- self.defaultFirmwareInstallMenuItem.Enable(firmwareInstall.getDefaultFirmware() is not None)
+ if profile.getMachineSetting('machine_type').startswith('ultimaker2'):
+ self.bedLevelWizardMenuItem.Enable(False)
+ self.headOffsetWizardMenuItem.Enable(False)
+@@ -483,9 +482,6 @@
+ #Add tools for machines.
+ self.machineMenu.AppendSeparator()
+
+- self.defaultFirmwareInstallMenuItem = self.machineMenu.Append(-1, _("Install default firmware..."))
+- self.Bind(wx.EVT_MENU, self.OnDefaultMarlinFirmware, self.defaultFirmwareInstallMenuItem)
+-
+ i = self.machineMenu.Append(-1, _("Install custom firmware..."))
+ self.Bind(wx.EVT_MENU, self.OnCustomFirmware, i)
+
diff --git a/cura-system-paths.patch b/cura-system-paths.patch
new file mode 100644
index 0000000..d90f40b
--- /dev/null
+++ b/cura-system-paths.patch
@@ -0,0 +1,33 @@
+diff --git a/Cura/util/pluginInfo.py b/Cura/util/pluginInfo.py
+index 7290c8b..52fa14b 100644
+--- a/Cura/util/pluginInfo.py
++++ b/Cura/util/pluginInfo.py
+@@ -80,14 +80,7 @@ def setPostProcessPluginConfig(config):
+ profile.putProfileSetting('plugin_config', pickle.dumps(config))
+
+ def getPluginBasePaths():
+- ret = []
+- if platform.system() != "Windows":
+- ret.append(os.path.expanduser('~/.cura/plugins/'))
+- if platform.system() == "Darwin" and hasattr(sys, 'frozen'):
+- ret.append(os.path.normpath(os.path.join(resources.resourceBasePath, "plugins")))
+- else:
+- ret.append(os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', 'plugins')))
+- return ret
++ return [os.path.expanduser('~/.cura/plugins/'), '/usr/share/cura/plugins']
+
+ def getPluginList(pluginType):
+ global _pluginList
+diff --git a/Cura/util/resources.py b/Cura/util/resources.py
+index e63230b..99bb5ce 100644
+--- a/Cura/util/resources.py
++++ b/Cura/util/resources.py
+@@ -28,7 +28,7 @@ if sys.platform.startswith('darwin'):
+ else:
+ resourceBasePath = os.path.join(os.path.dirname(__file__), "../../resources")
+ else:
+- resourceBasePath = os.path.join(os.path.dirname(__file__), "../../resources")
++ resourceBasePath = "/usr/share/cura"
+
+ def getPathForResource(dir, subdir, resource_name):
+ assert os.path.isdir(dir), "{p} is not a directory".format(p=dir)
diff --git a/cura-version.patch b/cura-version.patch
new file mode 100644
index 0000000..8749999
--- /dev/null
+++ b/cura-version.patch
@@ -0,0 +1,77 @@
+diff --git a/Cura/util/version.py b/Cura/util/version.py
+index 56faeee..add5eb0 100644
+--- a/Cura/util/version.py
++++ b/Cura/util/version.py
+@@ -17,70 +17,12 @@ except:
+ from Cura.util import resources
+
+ def getVersion(getGitVersion = True):
+- gitPath = os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], "../.."))
+- if hasattr(sys, 'frozen'):
+- versionFile = os.path.normpath(os.path.join(resources.resourceBasePath, "version"))
+- else:
+- versionFile = os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], "../version"))
+-
+- if getGitVersion:
+- try:
+- gitProcess = subprocess.Popen(args = "git show -s --pretty=format:%H", shell = True, cwd = gitPath, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
+- (stdoutdata, stderrdata) = gitProcess.communicate()
+-
+- if gitProcess.returncode == 0:
+- return stdoutdata
+- except:
+- pass
+-
+- gitHeadFile = gitPath + "/.git/refs/heads/SteamEngine"
+- if os.path.isfile(gitHeadFile):
+- if not getGitVersion:
+- return "dev"
+- f = open(gitHeadFile, "r")
+- version = f.readline()
+- f.close()
+- return version.strip()
+- if os.path.exists(versionFile):
+- f = open(versionFile, "r")
+- version = f.readline()
+- f.close()
+- return version.strip()
+- versionFile = os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], "../../version"))
+- if os.path.exists(versionFile):
+- f = open(versionFile, "r")
+- version = f.readline()
+- f.close()
+- return version.strip()
+- return "UNKNOWN" #No idea what the version is. TODO:Tell the user.
++ return "REPLACE_THIS_IN_SPEC"
+
+ def isDevVersion():
+- gitPath = os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], "../../.git"))
+- hgPath = os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], "../../.hg"))
+- return os.path.exists(gitPath) or os.path.exists(hgPath)
++ return False
+
+ def checkForNewerVersion():
+- if isDevVersion():
+- return None
+- try:
+- updateBaseURL = 'http://software.ultimaker.com'
+- localVersion = map(int, getVersion(False).split('.'))
+- while len(localVersion) < 3:
+- localVersion += [1]
+- latestFile = urllib2.urlopen("%s/latest.xml" % (updateBaseURL))
+- latestXml = latestFile.read()
+- latestFile.close()
+- xmlTree = ElementTree.fromstring(latestXml)
+- for release in xmlTree.iter('release'):
+- os = str(release.attrib['os'])
+- version = [int(release.attrib['major']), int(release.attrib['minor']), int(release.attrib['revision'])]
+- filename = release.find("filename").text
+- if platform.system() == os:
+- if version > localVersion:
+- return "%s/current/%s" % (updateBaseURL, filename)
+- except:
+- #print sys.exc_info()
+- return None
+ return None
+
+ if __name__ == '__main__':
diff --git a/cura.desktop b/cura.desktop
new file mode 100644
index 0000000..9debbd2
--- /dev/null
+++ b/cura.desktop
@@ -0,0 +1,9 @@
+
+[Desktop Entry]
+Name=Cura
+GenericName=3D Printer Interface
+Exec=cura
+Icon=/usr/share/pixmaps/cura.ico
+Terminal=false
+Type=Application
+Categories=Graphics;
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/cura.git/commitdiff/30bab2a9374541144a09796dce2f26df77f906f3
More information about the pld-cvs-commit
mailing list