SlideShare a Scribd company logo
1 of 27
Qt Creator Plugin
Development
Aurindam Jana
Tobias Hunger
●
Qt Creator is based on plugins
●
No generic Rich Client Platform
●
Qt Creator is platform for IDEs
ExtensionSystem
Library using namespace ExtensionSystem in
src/libs/extensionsystem
●
Plugins
– with dependencies
– command line arguments
●
(Q)ObjectPool
– Lifecycle management for Objects
– Retrieve Object(s) based on type or name
●
UI elements to manage plugins
PluginSpec
<plugin name="Something" version="3.0.1" compatVersion="3.0.0">
<vendor>Somebody</vendor>
<copyright>(C) 2013 Somebody</copyright>
<license>License Text</license>
<category>Version Control</category>
<description>Integration of something.</description>
<url>http://www.qt-project.org</url>
<dependencyList>
<dependency name="Core" version="3.0.0"/>
</dependencyList>
<argumentList>
<argument name="-special">Do something special</argument>
</argumentList>
</plugin>
Dependencies
Extension System
1. Read all .pluginspec-files
2. Order Plugins
3. Load Plugins (Core -> Welcome)
4. Initialize(...) (Core -> Welcome)
5. extensionsInitialized()(Welcome ->
Core)
6. DelayedInitialize() (Welcome->Core)
IPlugin
class EXTENSIONSYSTEM_EXPORT IPlugin : public QObject
{
Q_OBJECT
public:
[...]
virtual bool initialize(const QStringList &arguments,
QString *errorString) = 0;
virtual void extensionsInitialized() = 0;
virtual bool delayedInitialize();
[...]
};
Profiling
Profiling of plugin loading and start-up:
qtcreator -profile
Object Pool
class EXTENSIONSYSTEM_EXPORT PluginManager : public QObject
{
[...]
public
// Object pool operations
static void addObject(QObject *obj);
static void removeObject(QObject *obj);
static QList<QObject *> allObjects();
template <typename T> static QList<T *> getObjects()
{ [...] }
template <typename T> static T *getObject()
{ [...] }
static QObject *getObjectByName(const QString &name);
static QObject *getObjectByClassName(const QString &className);
[...]
};
Object Pool II
class EXTENSIONSYSTEM_EXPORT IPlugin
: public QObject
{
public:
[...]
void addObject(QObject *obj);
void addAutoReleasedObject(QObject *obj);
void removeObject(QObject *obj);
[...]
};
Qt Creator Plugins
Qt Creator 3.0 promises:
+ API freeze starting with Beta releases
+ Source and binary compatibility in patch-level
releases
Qt Creator does not promise:
- Compatibility in major or minor releases
Existing Plugins
Core Plugin
● ActionManager
● DocumentManager + EditorManager
● DocumentModel
● HelpManager
● VcsManager
● MainWindow
●
... many more
Core Plugin: ActionManager
● Register QAction based on
– Id
– Context
● Get a Command back
– Proxy QAction to use in UI.
– Triggers (one of) registered QAction based on
current Context
Actions & Commands
Command
QAction
QActionQActionQActionQAction
ID
// Create an action to be triggered by a menu entry
QAction *helloWorldAction
= new QAction(tr("Say "&Hello World!""), this);
connect(helloWorldAction, SIGNAL(triggered()),
SLOT(sayHelloWorld()));
// Register the action with the action manager
Core::Command *command =
Core::ActionManager::registerAction(helloWorldAction,
"HelloWorld.HelloWorldAction", context);
Locator Plugin
● ILocatorFilter
Find Plugin
● IFindSupport
● IFindFilter
TextEditor
● ITextEditor + BaseTextEditor
● ITextMark
● QuickFixOperation + QuickFixFactory
● SyntaxHighLighter
ProjectExplorer
● Project + related classes
– Target, Kit + KitInformation
– Build-/Deploy-/RunConfiguration
● ToolChain + ToolChainManager
● IDevice + DeviceManager
●
ProjectNodes
● Task + TaskHub
Projects in Qt Creator
Target
Project
TargetTargetTargetTargetKit
BCBCBC BCBCDC BCBCRC
BSL BSL BSL
BuildStepBuildStepBuildStep BuildStepBuildStepBuildStep BuildStepBuildStepBuildStep
BC: BuildConfiguration
BSL: BuildStepList
DC: DeployConfiguration
RC: RunConfiguration
QtSupport
● BaseQtVersion + QtVersionManager
CppTools
● CppModelManager
●
Code related to Cpp coding style:
CppCodeStylePreferences, etc.
VcsBase
● VcsBaseClient
● VcsBaseSubmitEditor
Advice for Plugin Writers
●
Do not load unstable plugins into your work
environment
●
Qt Creator plugin wizard: Directory + project name
must match!
● Use Namespaces (check .ui-files!)
●
Keep your Symbols private
●
Check other plugins for inspiration
●
Communicate with us
Documentation
●
Extending Qt Creator Manual:
http://doc-snapshot.qt-project.org/qtcreator-extending/extending-index.html
●
Qt Creator mailing list:
http://lists.qt-project.org/mailman/listinfo/qt-creator
●
IRC:
#qt-creator on freenode.net
Thank you!
aurindam.jana@digia.com
tobias.hunger@digia.com
auri__, hunger on IRC (freenode.net)

More Related Content

What's hot

Development with Qt for Windows CE
Development with Qt for Windows CEDevelopment with Qt for Windows CE
Development with Qt for Windows CEaccount inactive
 
Reproducible development to live applications with Red Hat CDK and Red Hat Op...
Reproducible development to live applications with Red Hat CDK and Red Hat Op...Reproducible development to live applications with Red Hat CDK and Red Hat Op...
Reproducible development to live applications with Red Hat CDK and Red Hat Op...Lalatendu Mohanty
 
The State of CI/CD Tooling in 2019
The State of CI/CD Tooling in 2019The State of CI/CD Tooling in 2019
The State of CI/CD Tooling in 2019CloudOps2005
 
Red Hat Container Development Kit
Red Hat Container Development KitRed Hat Container Development Kit
Red Hat Container Development KitLalatendu Mohanty
 
DockerCon 2016 Seattle Recap
DockerCon 2016 Seattle RecapDockerCon 2016 Seattle Recap
DockerCon 2016 Seattle RecapPhilipp Garbe
 
Atomic Developer Bundle
Atomic Developer BundleAtomic Developer Bundle
Atomic Developer BundleDharmit Shah
 
GitBucket: Git Centric Software Development Platform by Scala
GitBucket:  Git Centric Software Development Platform by ScalaGitBucket:  Git Centric Software Development Platform by Scala
GitBucket: Git Centric Software Development Platform by Scalatakezoe
 
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...Igalia
 
Serverless code components azure
Serverless code components azureServerless code components azure
Serverless code components azureShimon Tolts
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1rmitc
 
Introduction to Containers
Introduction to ContainersIntroduction to Containers
Introduction to ContainersDharmit Shah
 
How to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationsHow to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationstakezoe
 
Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)Igalia
 
New Features Webinar-April
New Features Webinar-AprilNew Features Webinar-April
New Features Webinar-AprilCodefresh
 
GitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by ScalaGitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by Scalatakezoe
 

What's hot (20)

Scaling Docker Registry
Scaling Docker RegistryScaling Docker Registry
Scaling Docker Registry
 
Development with Qt for Windows CE
Development with Qt for Windows CEDevelopment with Qt for Windows CE
Development with Qt for Windows CE
 
Reproducible development to live applications with Red Hat CDK and Red Hat Op...
Reproducible development to live applications with Red Hat CDK and Red Hat Op...Reproducible development to live applications with Red Hat CDK and Red Hat Op...
Reproducible development to live applications with Red Hat CDK and Red Hat Op...
 
The State of CI/CD Tooling in 2019
The State of CI/CD Tooling in 2019The State of CI/CD Tooling in 2019
The State of CI/CD Tooling in 2019
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
Red Hat Container Development Kit
Red Hat Container Development KitRed Hat Container Development Kit
Red Hat Container Development Kit
 
DockerCon 2016 Seattle Recap
DockerCon 2016 Seattle RecapDockerCon 2016 Seattle Recap
DockerCon 2016 Seattle Recap
 
Atomic Developer Bundle
Atomic Developer BundleAtomic Developer Bundle
Atomic Developer Bundle
 
Paris.py
Paris.pyParis.py
Paris.py
 
GitBucket: Git Centric Software Development Platform by Scala
GitBucket:  Git Centric Software Development Platform by ScalaGitBucket:  Git Centric Software Development Platform by Scala
GitBucket: Git Centric Software Development Platform by Scala
 
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
 
了解 Qt
了解 Qt了解 Qt
了解 Qt
 
Mastering the pipeline
Mastering the pipelineMastering the pipeline
Mastering the pipeline
 
Serverless code components azure
Serverless code components azureServerless code components azure
Serverless code components azure
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1
 
Introduction to Containers
Introduction to ContainersIntroduction to Containers
Introduction to Containers
 
How to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationsHow to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applications
 
Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)
 
New Features Webinar-April
New Features Webinar-AprilNew Features Webinar-April
New Features Webinar-April
 
GitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by ScalaGitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by Scala
 

Viewers also liked

Viewers also liked (7)

Qt Kwan-Do
Qt Kwan-DoQt Kwan-Do
Qt Kwan-Do
 
Scripting Your Qt Application
Scripting Your Qt ApplicationScripting Your Qt Application
Scripting Your Qt Application
 
Shipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for SymbianShipping Mobile Applications Using Qt for Symbian
Shipping Mobile Applications Using Qt for Symbian
 
The Future of Qt Widgets
The Future of Qt WidgetsThe Future of Qt Widgets
The Future of Qt Widgets
 
Meet Qt
Meet QtMeet Qt
Meet Qt
 
KDE Plasma for Mobile Phones
KDE Plasma for Mobile PhonesKDE Plasma for Mobile Phones
KDE Plasma for Mobile Phones
 
Qt on Real Time Operating Systems
Qt on Real Time Operating SystemsQt on Real Time Operating Systems
Qt on Real Time Operating Systems
 

Similar to QtDD13 - Qt Creator plugins - Tobias Hunger

Improving the Accumulo User Experience
 Improving the Accumulo User Experience Improving the Accumulo User Experience
Improving the Accumulo User ExperienceAccumulo Summit
 
Let's build Developer Portal with Backstage
Let's build Developer Portal with BackstageLet's build Developer Portal with Backstage
Let's build Developer Portal with BackstageOpsta
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetesRishabh Indoria
 
[NDC 2019] Enterprise-Grade Serverless
[NDC 2019] Enterprise-Grade Serverless[NDC 2019] Enterprise-Grade Serverless
[NDC 2019] Enterprise-Grade ServerlessKatyShimizu
 
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
[NDC 2019] Functions 2.0: Enterprise-Grade ServerlessKatyShimizu
 
20141002 delapsley-socalangularjs-final
20141002 delapsley-socalangularjs-final20141002 delapsley-socalangularjs-final
20141002 delapsley-socalangularjs-finalDavid Lapsley
 
Google Cloud Platform 2014Q1 - Starter Guide
Google Cloud Platform   2014Q1 - Starter GuideGoogle Cloud Platform   2014Q1 - Starter Guide
Google Cloud Platform 2014Q1 - Starter GuideSimon Su
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitIMC Institute
 
Nuxeo - OpenSocial
Nuxeo - OpenSocialNuxeo - OpenSocial
Nuxeo - OpenSocialThomas Roger
 
Django deployment with PaaS
Django deployment with PaaSDjango deployment with PaaS
Django deployment with PaaSAppsembler
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersJavan Rasokat
 
Airflow Best Practises & Roadmap to Airflow 2.0
Airflow Best Practises & Roadmap to Airflow 2.0Airflow Best Practises & Roadmap to Airflow 2.0
Airflow Best Practises & Roadmap to Airflow 2.0Kaxil Naik
 
SharePoint Saturday Atlanta 2015
SharePoint Saturday Atlanta 2015SharePoint Saturday Atlanta 2015
SharePoint Saturday Atlanta 2015Pushkar Chivate
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13Fred Sauer
 
Docker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalDocker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalPatrick Chanezon
 
Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ride on the Fast Track of Web with Ruby on Rails- Part 2Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ride on the Fast Track of Web with Ruby on Rails- Part 2A.K.M. Ahsrafuzzaman
 

Similar to QtDD13 - Qt Creator plugins - Tobias Hunger (20)

Improving the Accumulo User Experience
 Improving the Accumulo User Experience Improving the Accumulo User Experience
Improving the Accumulo User Experience
 
Let's build Developer Portal with Backstage
Let's build Developer Portal with BackstageLet's build Developer Portal with Backstage
Let's build Developer Portal with Backstage
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
 
[NDC 2019] Enterprise-Grade Serverless
[NDC 2019] Enterprise-Grade Serverless[NDC 2019] Enterprise-Grade Serverless
[NDC 2019] Enterprise-Grade Serverless
 
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
 
Droidcon Paris 2015
Droidcon Paris 2015Droidcon Paris 2015
Droidcon Paris 2015
 
GradleFX
GradleFXGradleFX
GradleFX
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
20141002 delapsley-socalangularjs-final
20141002 delapsley-socalangularjs-final20141002 delapsley-socalangularjs-final
20141002 delapsley-socalangularjs-final
 
Google Cloud Platform 2014Q1 - Starter Guide
Google Cloud Platform   2014Q1 - Starter GuideGoogle Cloud Platform   2014Q1 - Starter Guide
Google Cloud Platform 2014Q1 - Starter Guide
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
 
YaJUG: What's new in GWT2
YaJUG: What's new in GWT2YaJUG: What's new in GWT2
YaJUG: What's new in GWT2
 
Nuxeo - OpenSocial
Nuxeo - OpenSocialNuxeo - OpenSocial
Nuxeo - OpenSocial
 
Django deployment with PaaS
Django deployment with PaaSDjango deployment with PaaS
Django deployment with PaaS
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA Testers
 
Airflow Best Practises & Roadmap to Airflow 2.0
Airflow Best Practises & Roadmap to Airflow 2.0Airflow Best Practises & Roadmap to Airflow 2.0
Airflow Best Practises & Roadmap to Airflow 2.0
 
SharePoint Saturday Atlanta 2015
SharePoint Saturday Atlanta 2015SharePoint Saturday Atlanta 2015
SharePoint Saturday Atlanta 2015
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
 
Docker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalDocker Enterprise Workshop - Technical
Docker Enterprise Workshop - Technical
 
Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ride on the Fast Track of Web with Ruby on Rails- Part 2Ride on the Fast Track of Web with Ruby on Rails- Part 2
Ride on the Fast Track of Web with Ruby on Rails- Part 2
 

More from Robert-Emmanuel Mayssat

CSS alarm Handler (BEAST) at the EPICS Collaboration meeting 2010
CSS alarm Handler (BEAST) at the EPICS Collaboration meeting 2010CSS alarm Handler (BEAST) at the EPICS Collaboration meeting 2010
CSS alarm Handler (BEAST) at the EPICS Collaboration meeting 2010Robert-Emmanuel Mayssat
 
Honeywell - Alarm management standards taken seriously
Honeywell - Alarm management standards taken seriouslyHoneywell - Alarm management standards taken seriously
Honeywell - Alarm management standards taken seriouslyRobert-Emmanuel Mayssat
 
Sample Beamline Scientist Job Description
Sample Beamline Scientist Job DescriptionSample Beamline Scientist Job Description
Sample Beamline Scientist Job DescriptionRobert-Emmanuel Mayssat
 
The New Soft-IOC Based alarm handler at the SNS
The New Soft-IOC Based alarm handler at the SNSThe New Soft-IOC Based alarm handler at the SNS
The New Soft-IOC Based alarm handler at the SNSRobert-Emmanuel Mayssat
 
BEST, the CSS Alarm Handler - Performance Testing
BEST, the CSS Alarm Handler - Performance TestingBEST, the CSS Alarm Handler - Performance Testing
BEST, the CSS Alarm Handler - Performance TestingRobert-Emmanuel Mayssat
 
BEAST - CSS Alarm Handler Performance Tests
BEAST - CSS Alarm Handler Performance TestsBEAST - CSS Alarm Handler Performance Tests
BEAST - CSS Alarm Handler Performance TestsRobert-Emmanuel Mayssat
 

More from Robert-Emmanuel Mayssat (20)

Alarm management at DeltaV
Alarm management at DeltaVAlarm management at DeltaV
Alarm management at DeltaV
 
Beast alarm guideline_2013
Beast alarm guideline_2013Beast alarm guideline_2013
Beast alarm guideline_2013
 
CSS alarm Handler (BEAST) at the EPICS Collaboration meeting 2010
CSS alarm Handler (BEAST) at the EPICS Collaboration meeting 2010CSS alarm Handler (BEAST) at the EPICS Collaboration meeting 2010
CSS alarm Handler (BEAST) at the EPICS Collaboration meeting 2010
 
CSS - Alarm Management System (AMS)
CSS - Alarm Management System (AMS)CSS - Alarm Management System (AMS)
CSS - Alarm Management System (AMS)
 
Honeywell - Alarm management standards taken seriously
Honeywell - Alarm management standards taken seriouslyHoneywell - Alarm management standards taken seriously
Honeywell - Alarm management standards taken seriously
 
Sample Beamline Scientist Job Description
Sample Beamline Scientist Job DescriptionSample Beamline Scientist Job Description
Sample Beamline Scientist Job Description
 
Sample GUI Style Guide
Sample GUI Style Guide Sample GUI Style Guide
Sample GUI Style Guide
 
ALH user guide 1.2.33 (May 2013)
ALH user guide 1.2.33 (May 2013)ALH user guide 1.2.33 (May 2013)
ALH user guide 1.2.33 (May 2013)
 
CSS Alarm Handler (BEAST) 2009
CSS Alarm Handler (BEAST) 2009CSS Alarm Handler (BEAST) 2009
CSS Alarm Handler (BEAST) 2009
 
Storytelling for startups
Storytelling for startupsStorytelling for startups
Storytelling for startups
 
The New Soft-IOC Based alarm handler at the SNS
The New Soft-IOC Based alarm handler at the SNSThe New Soft-IOC Based alarm handler at the SNS
The New Soft-IOC Based alarm handler at the SNS
 
Manual of the CSS Alarm Handler (Beast)
Manual of the CSS Alarm Handler (Beast)Manual of the CSS Alarm Handler (Beast)
Manual of the CSS Alarm Handler (Beast)
 
BEST, the CSS Alarm Handler - Performance Testing
BEST, the CSS Alarm Handler - Performance TestingBEST, the CSS Alarm Handler - Performance Testing
BEST, the CSS Alarm Handler - Performance Testing
 
CSS Alarm Handling
CSS Alarm HandlingCSS Alarm Handling
CSS Alarm Handling
 
BEAST - CSS Alarm Handler Performance Tests
BEAST - CSS Alarm Handler Performance TestsBEAST - CSS Alarm Handler Performance Tests
BEAST - CSS Alarm Handler Performance Tests
 
Web browser design template
Web browser design templateWeb browser design template
Web browser design template
 
Ipad design template
Ipad design templateIpad design template
Ipad design template
 
Iphone 5 design template
Iphone 5 design templateIphone 5 design template
Iphone 5 design template
 
Epics Qt design specification
Epics Qt design specificationEpics Qt design specification
Epics Qt design specification
 
Epics Qt requirements specification
Epics Qt requirements specificationEpics Qt requirements specification
Epics Qt requirements specification
 

Recently uploaded

High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations120cr0395
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingrakeshbaidya232001
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINESIVASHANKAR N
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxJoão Esperancinha
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)Suman Mia
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Analog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAnalog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAbhinavSharma374939
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxwendy cai
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxpurnimasatapathy1234
 
chaitra-1.pptx fake news detection using machine learning
chaitra-1.pptx  fake news detection using machine learningchaitra-1.pptx  fake news detection using machine learning
chaitra-1.pptx fake news detection using machine learningmisbanausheenparvam
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
main PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidmain PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidNikhilNagaraju
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxAsutosh Ranjan
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSSIVASHANKAR N
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )Tsuyoshi Horigome
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 

Recently uploaded (20)

High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
 
Roadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and RoutesRoadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and Routes
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writing
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Analog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAnalog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog Converter
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptx
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptx
 
chaitra-1.pptx fake news detection using machine learning
chaitra-1.pptx  fake news detection using machine learningchaitra-1.pptx  fake news detection using machine learning
chaitra-1.pptx fake news detection using machine learning
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
 
main PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidmain PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfid
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptx
 
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
 

QtDD13 - Qt Creator plugins - Tobias Hunger

  • 2. ● Qt Creator is based on plugins ● No generic Rich Client Platform
  • 3. ● Qt Creator is platform for IDEs
  • 4. ExtensionSystem Library using namespace ExtensionSystem in src/libs/extensionsystem ● Plugins – with dependencies – command line arguments ● (Q)ObjectPool – Lifecycle management for Objects – Retrieve Object(s) based on type or name ● UI elements to manage plugins
  • 5. PluginSpec <plugin name="Something" version="3.0.1" compatVersion="3.0.0"> <vendor>Somebody</vendor> <copyright>(C) 2013 Somebody</copyright> <license>License Text</license> <category>Version Control</category> <description>Integration of something.</description> <url>http://www.qt-project.org</url> <dependencyList> <dependency name="Core" version="3.0.0"/> </dependencyList> <argumentList> <argument name="-special">Do something special</argument> </argumentList> </plugin>
  • 7. Extension System 1. Read all .pluginspec-files 2. Order Plugins 3. Load Plugins (Core -> Welcome) 4. Initialize(...) (Core -> Welcome) 5. extensionsInitialized()(Welcome -> Core) 6. DelayedInitialize() (Welcome->Core)
  • 8. IPlugin class EXTENSIONSYSTEM_EXPORT IPlugin : public QObject { Q_OBJECT public: [...] virtual bool initialize(const QStringList &arguments, QString *errorString) = 0; virtual void extensionsInitialized() = 0; virtual bool delayedInitialize(); [...] };
  • 9. Profiling Profiling of plugin loading and start-up: qtcreator -profile
  • 10. Object Pool class EXTENSIONSYSTEM_EXPORT PluginManager : public QObject { [...] public // Object pool operations static void addObject(QObject *obj); static void removeObject(QObject *obj); static QList<QObject *> allObjects(); template <typename T> static QList<T *> getObjects() { [...] } template <typename T> static T *getObject() { [...] } static QObject *getObjectByName(const QString &name); static QObject *getObjectByClassName(const QString &className); [...] };
  • 11. Object Pool II class EXTENSIONSYSTEM_EXPORT IPlugin : public QObject { public: [...] void addObject(QObject *obj); void addAutoReleasedObject(QObject *obj); void removeObject(QObject *obj); [...] };
  • 12. Qt Creator Plugins Qt Creator 3.0 promises: + API freeze starting with Beta releases + Source and binary compatibility in patch-level releases Qt Creator does not promise: - Compatibility in major or minor releases
  • 14. Core Plugin ● ActionManager ● DocumentManager + EditorManager ● DocumentModel ● HelpManager ● VcsManager ● MainWindow ● ... many more
  • 15. Core Plugin: ActionManager ● Register QAction based on – Id – Context ● Get a Command back – Proxy QAction to use in UI. – Triggers (one of) registered QAction based on current Context
  • 16. Actions & Commands Command QAction QActionQActionQActionQAction ID // Create an action to be triggered by a menu entry QAction *helloWorldAction = new QAction(tr("Say "&Hello World!""), this); connect(helloWorldAction, SIGNAL(triggered()), SLOT(sayHelloWorld())); // Register the action with the action manager Core::Command *command = Core::ActionManager::registerAction(helloWorldAction, "HelloWorld.HelloWorldAction", context);
  • 19. TextEditor ● ITextEditor + BaseTextEditor ● ITextMark ● QuickFixOperation + QuickFixFactory ● SyntaxHighLighter
  • 20. ProjectExplorer ● Project + related classes – Target, Kit + KitInformation – Build-/Deploy-/RunConfiguration ● ToolChain + ToolChainManager ● IDevice + DeviceManager ● ProjectNodes ● Task + TaskHub
  • 21. Projects in Qt Creator Target Project TargetTargetTargetTargetKit BCBCBC BCBCDC BCBCRC BSL BSL BSL BuildStepBuildStepBuildStep BuildStepBuildStepBuildStep BuildStepBuildStepBuildStep BC: BuildConfiguration BSL: BuildStepList DC: DeployConfiguration RC: RunConfiguration
  • 22. QtSupport ● BaseQtVersion + QtVersionManager
  • 23. CppTools ● CppModelManager ● Code related to Cpp coding style: CppCodeStylePreferences, etc.
  • 25. Advice for Plugin Writers ● Do not load unstable plugins into your work environment ● Qt Creator plugin wizard: Directory + project name must match! ● Use Namespaces (check .ui-files!) ● Keep your Symbols private ● Check other plugins for inspiration ● Communicate with us
  • 26. Documentation ● Extending Qt Creator Manual: http://doc-snapshot.qt-project.org/qtcreator-extending/extending-index.html ● Qt Creator mailing list: http://lists.qt-project.org/mailman/listinfo/qt-creator ● IRC: #qt-creator on freenode.net