summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorFadeMind2015-06-08 13:02:48 +0200
committerFadeMind2015-06-08 13:02:48 +0200
commitcdc1794795069fd0bcbca793e45cc83300155b95 (patch)
treeda991d59b4eecf52c444ba817286861cf04fe587
downloadaur-cdc1794795069fd0bcbca793e45cc83300155b95.tar.gz
20140503-1
-rw-r--r--.SRCINFO16
-rw-r--r--PKGBUILD20
-rwxr-xr-xmktemplate120
-rwxr-xr-xmktemplate.desktop13
4 files changed, 169 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..4ac925abc338
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,16 @@
+pkgbase = kde-servicemenus-mktemplate
+ pkgdesc = Create user templates from existing files.
+ pkgver = 20140503
+ pkgrel = 1
+ url = http://opendesktop.org/content/show.php?content=165089
+ arch = any
+ license = GPL
+ depends = kdebase-dolphin
+ depends = bash
+ source = mktemplate
+ source = mktemplate.desktop
+ sha256sums = 6654f85ae29a8df1916e956f9ff4c157050573087693163c3f36bde4ff26ad86
+ sha256sums = 2687523aa3cb1161e15b82e5087b1f03fba9a81d1c70a64ee030fd73f8bc5066
+
+pkgname = kde-servicemenus-mktemplate
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..52d0951c20ba
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,20 @@
+# Maintainer: FadeMind <fademind@gmail.com>
+
+pkgname=kde-servicemenus-mktemplate
+pkgver=20140503
+pkgrel=1
+pkgdesc="Create user templates from existing files."
+arch=('any')
+url="http://opendesktop.org/content/show.php?content=165089"
+license=('GPL')
+depends=('kdebase-dolphin' 'bash')
+source=('mktemplate' 'mktemplate.desktop')
+sha256sums=('6654f85ae29a8df1916e956f9ff4c157050573087693163c3f36bde4ff26ad86'
+ '2687523aa3cb1161e15b82e5087b1f03fba9a81d1c70a64ee030fd73f8bc5066')
+
+package() {
+ cd ${srcdir}
+ install -D -m755 mktemplate ${pkgdir}/usr/bin/mktemplate
+ install -dm755 ${pkgdir}/usr/share/kde4/services/ServiceMenus/
+ install -D -m644 mktemplate.desktop ${pkgdir}/usr/share/kde4/services/ServiceMenus/
+}
diff --git a/mktemplate b/mktemplate
new file mode 100755
index 000000000000..336f5b8f0f96
--- /dev/null
+++ b/mktemplate
@@ -0,0 +1,120 @@
+#!/bin/bash -
+
+declare -r PROGNAME=${0##*/}
+
+
+function error() {
+ printf "%s: %s\n" ${0##*/} "$@"
+} >&2
+
+
+# -----------------------------------------------------------------------
+# Function to create temporary files
+# optional number of files to create--default is one
+# returns an array ($TEMP_FILE) containing temporary file names
+# -----------------------------------------------------------------------
+function makeTempFiles () {
+
+ declare fnum=${1:-1} # number of temporary files to create
+
+ # Use user's local tmp directory if it exists
+ if [ -d ~/tmp ]; then
+ TEMP_DIR=~/tmp
+ else
+ TEMP_DIR=/tmp
+ fi
+
+ # Temp files for this script, using paranoid method of creation to
+ # ensure that file names are not predictable. This is for security to
+ # avoid "tmp race" attacks.
+ for (( n=0; n<$fnum; n++ )); do
+ TEMP_FILE[$n]=$(mktemp -q "${TEMP_DIR}/${PROGNAME}.$$.XXXXXX")
+ if [ "${TEMP_FILE[$n]}" = '' ]; then
+ error 'cannot create temp file!'
+ exit 1
+ fi
+ done
+}
+
+trap 'rm -f "${TEMP_FILE[*]}" >/dev/null 2>&1; exit' 0 1 2 3 13 15
+
+function usage() {
+cat >&2 << EOF
+Usage: ${0##*/} filename
+ filename: is the file to make into a template.
+EOF
+}
+
+
+# ensure we have a real live file to work with
+if ! [ "1" -eq "$#" ]; then
+ error "required number of arguments is 1... number of arguments given: $#"
+ usage
+ exit 1
+fi
+if ! [ -e "$1" ]; then
+ error "$1 does not exist"
+ exit 1
+fi
+if ! [ -f "$1" ]; then
+ error "$1 is not a regular file"
+ exit 1
+fi
+
+# set base directory for template and .desktop file
+declare -r DIR=$(kde4-config --localprefix)/share/templates # .desktop file directory
+declare -r SOURCE="$DIR/.source" # template file directory
+
+# make sure all required directories exist
+if ! mkdir -p $SOURCE >/dev/null 2>&1 && ! [ -d $SOURCE ]; then
+ error 'required directories cannot be created'
+ exit 1
+fi
+
+# make sure the template and desktop files have sane names
+declare -r FILE="$1" # source file
+declare saneName=$(sed 's/[[:space:]]/_/g' <<< $FILE) # base name for template and desktop files
+saneName=${saneName##*/}
+
+# create .desktop filename
+declare desktop=$DIR/$saneName
+desktop=${desktop%.*}.desktop
+
+# create template filename
+declare template=$SOURCE/$saneName
+
+# prompt for icon and menu entry text
+icon=$(kdialog --title "Choose an Icon" --geticon Small MimeType 2>/dev/null)
+if [ -z "$icon" ]; then
+ error 'no icon selected'
+ exit 1
+fi
+filetype=$(kdialog --title "Menu and Dialog Prompt Text" --inputbox "Document type:" "$(file "$FILE" | awk -F: '{print $2}' | awk -F, '{print $1}')" 2>/dev/null)
+if [ -z "$filetype" ]; then
+ error 'no prompt text entered'
+ exit 1
+fi
+
+# create .desktop file content
+makeTempFiles
+cat > ${TEMP_FILE[0]} << EOF
+[Desktop Entry]
+Name=$filetype...
+Comment=New $filetype...
+Type=Link
+URL=.source/$saneName
+Icon=$icon
+EOF
+
+
+# install template and .desktop file
+cp ${TEMP_FILE[0]} $desktop
+cp "$FILE" $template
+
+# report errors
+if ! [ -e $desktop ]; then
+ kdialog --error "$desktop could not be created"
+fi
+if ! [ -e $template ]; then
+ kdialog --error "$template could not be created"
+fi
diff --git a/mktemplate.desktop b/mktemplate.desktop
new file mode 100755
index 000000000000..9b9892091572
--- /dev/null
+++ b/mktemplate.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Type=Service
+ServiceTypes=KonqPopupMenu/Plugin
+MimeType=all/allfiles;
+Actions=makeTemplate;
+X-KDE-StartupNotify=false
+X-KDE-Priority=TopLevel
+
+[Desktop Action makeTemplate]
+Name=Create template...
+Name[pl]=Stwórz szablon...
+Exec=mktemplate "%u"
+Icon=text-x-generic-template