summaryrefslogtreecommitdiffstats
path: root/examples/registerfileextension
diff options
context:
space:
mode:
authorTim Jenssen <tim.jenssen@digia.com>2013-03-12 11:03:53 +0100
committerTim Jenssen <tim.jenssen@digia.com>2013-03-12 16:36:22 +0100
commit368b00f3fc3e4b9635e68bdca8d5f17d7c881d72 (patch)
treebfde45c55ea641c212e5436786c9713682d4bf75 /examples/registerfileextension
parent9e4194a90026cfc9fce2d59256813193e54859d6 (diff)
added a registerfileextension example
Change-Id: I3d0f686a676af7ff6bf365629377df34fce33075 Reviewed-by: Niels Weber <niels.weber@digia.com> Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
Diffstat (limited to 'examples/registerfileextension')
-rw-r--r--examples/registerfileextension/README6
-rw-r--r--examples/registerfileextension/config/config.xml9
-rw-r--r--examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/data/registeredfile1
-rw-r--r--examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/installscript.qs81
-rw-r--r--examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/openfilecheckboxesform.ui31
-rw-r--r--examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/package.xml12
-rw-r--r--examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/registerfilecheckboxesform.ui31
7 files changed, 171 insertions, 0 deletions
diff --git a/examples/registerfileextension/README b/examples/registerfileextension/README
new file mode 100644
index 000000000..5e6558677
--- /dev/null
+++ b/examples/registerfileextension/README
@@ -0,0 +1,6 @@
+Shows how to register a special file suffix on Windows.
+
+Generate installer with
+
+binarycreator --offline-only -c config/config.xml -p packages installer
+
diff --git a/examples/registerfileextension/config/config.xml b/examples/registerfileextension/config/config.xml
new file mode 100644
index 000000000..6e6db7843
--- /dev/null
+++ b/examples/registerfileextension/config/config.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Installer>
+ <Name>Register File Extension Example</Name>
+ <Version>1.0.0</Version>
+ <Title>Register File Extension Example</Title>
+ <Publisher>Qt-Project</Publisher>
+ <StartMenuDir>Register File Extension Example</StartMenuDir>
+ <TargetDir>@homeDir@/IFWRegisterFileExtensionExample</TargetDir>
+</Installer>
diff --git a/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/data/registeredfile b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/data/registeredfile
new file mode 100644
index 000000000..0004962b2
--- /dev/null
+++ b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/data/registeredfile
@@ -0,0 +1 @@
+This file should open with notepad.exe if double clicked. \ No newline at end of file
diff --git a/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/installscript.qs b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/installscript.qs
new file mode 100644
index 000000000..3adc2083b
--- /dev/null
+++ b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/installscript.qs
@@ -0,0 +1,81 @@
+function Component()
+{
+ component.loaded.connect(this, my_componentLoaded);
+ installer.finishButtonClicked.connect(this, my_installationFinished);
+ installer.installationFinished.connect(this, my_installationFinishedPageIsShown);
+ component.unusalFileType = generateUnusualFileType(5)
+}
+
+generateUnusualFileType = function(length)
+{
+ var randomString = "";
+ var possible = "abcdefghijklmnopqrstuvwxyz0123456789";
+
+ for (var i = 0; i < length; i++)
+ randomString += possible.charAt(Math.floor(Math.random() * possible.length));
+ return randomString;
+}
+
+// called as soon as the component was loaded
+my_componentLoaded = function()
+{
+ // don't show when updating / de-installing
+ if (installer.isInstaller()) {
+ installer.addWizardPageItem(component, "RegisterFileCheckBoxesForm", QInstaller.TargetDirectory);
+ component.userInterface("RegisterFileCheckBoxesForm").RegisterFileCheckBox.text =
+ component.userInterface("RegisterFileCheckBoxesForm").RegisterFileCheckBox.text + component.unusalFileType;
+ }
+}
+
+// called after everything is set up, but before any fie is written
+Component.prototype.beginInstallation = function()
+{
+ // call default implementation which is necessary for most hooks
+ // in beginInstallation case it makes nothing
+ component.beginInstallation();
+
+ component.registeredFile = installer.value("TargetDir") + "/registeredfile." + component.unusalFileType;
+}
+
+// here we are creating the operation chain which will be processed at the real installation part later
+Component.prototype.createOperations = function()
+{
+ // call default implementation to actually install the registeredfile
+ component.createOperations();
+ var iconId = 0;
+ var notepadPath = installer.environmentVariable("SystemRoot") + "\\notepad.exe";
+
+ var isRegisterFileChecked = component.userInterface("RegisterFileCheckBoxesForm").RegisterFileCheckBox.checked;
+ if (installer.value("os") === "win") {
+ component.addOperation("RegisterFileType",
+ component.unusalFileType,
+ notepadPath + " '%1'",
+ "QInstaller Framework example file type",
+ "text/plain",
+ notepadPath + "," + iconId,
+ "ProgId=QtProject.QtInstallerFramework." + component.unusalFileType);
+ }
+ component.addOperation("Move", "@TargetDir@/registeredfile", component.registeredFile);
+}
+
+my_installationFinished = function()
+{
+ if (!component.installed)
+ return;
+
+ if (installer.value("os") == "win" && installer.isInstaller() && installer.status == QInstaller.Success) {
+ var isOpenRegisteredFileChecked = component.userInterface("OpenFileCheckBoxesForm").OpenRegisteredFileCheckBox.checked;
+ if (isOpenRegisteredFileChecked) {
+ QDesktopServices.openUrl("file:///" + component.registeredFile);
+ }
+ }
+}
+
+my_installationFinishedPageIsShown = function()
+{
+ if (installer.isInstaller() && installer.status == QInstaller.Success) {
+ installer.addWizardPageItem(component, "OpenFileCheckBoxesForm", QInstaller.InstallationFinished);
+ component.userInterface("OpenFileCheckBoxesForm").OpenRegisteredFileCheckBox.text =
+ component.userInterface("OpenFileCheckBoxesForm").OpenRegisteredFileCheckBox.text + component.unusalFileType;
+ }
+}
diff --git a/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/openfilecheckboxesform.ui b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/openfilecheckboxesform.ui
new file mode 100644
index 000000000..b9bcd24da
--- /dev/null
+++ b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/openfilecheckboxesform.ui
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>OpenFileCheckBoxesForm</class>
+ <widget class="QWidget" name="OpenFileCheckBoxesForm">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QCheckBox" name="OpenRegisteredFileCheckBox">
+ <property name="text">
+ <string>Open registered example file based on suffix: </string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/package.xml b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/package.xml
new file mode 100644
index 000000000..f29292d5a
--- /dev/null
+++ b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/package.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Package>
+ <DisplayName>register a file extension</DisplayName>
+ <Description>Register a random generated file extension to open with notepad.exe</Description>
+ <ReleaseDate>2013-01-01</ReleaseDate>
+ <Version>1.0.0-1</Version>
+ <Script>installscript.qs</Script>
+ <UserInterfaces>
+ <UserInterface>registerfilecheckboxesform.ui</UserInterface>
+ <UserInterface>openfilecheckboxesform.ui</UserInterface>
+ </UserInterfaces>
+</Package>
diff --git a/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/registerfilecheckboxesform.ui b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/registerfilecheckboxesform.ui
new file mode 100644
index 000000000..ccddacda2
--- /dev/null
+++ b/examples/registerfileextension/packages/org.qtproject.ifw.example.registerfileextension/meta/registerfilecheckboxesform.ui
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>RegisterFileCheckBoxesForm</class>
+ <widget class="QWidget" name="RegisterFileCheckBoxesForm">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QCheckBox" name="RegisterFileCheckBox">
+ <property name="text">
+ <string>Register example file extension: </string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>