diff options
author | Tim Jenssen <tim.jenssen@digia.com> | 2013-03-12 11:03:53 +0100 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@digia.com> | 2013-03-12 16:36:22 +0100 |
commit | 368b00f3fc3e4b9635e68bdca8d5f17d7c881d72 (patch) | |
tree | bfde45c55ea641c212e5436786c9713682d4bf75 /examples/registerfileextension | |
parent | 9e4194a90026cfc9fce2d59256813193e54859d6 (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')
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> |