Académique Documents
Professionnel Documents
Culture Documents
PLATEFORME D’
APPLICATION DESKTOP
Ces applications représentent n'importe quel programme tant qu'il s'exécute sur un
ordinateur et fournit une interface utilisateur pour les entrées et les sorties.
Ces applications sont généralement stockées dans un seul endroit, mais peuvent
avoir une icône qui reste visible à l'écran.
3
QU'EST-CE QUE UNE APPLICATION
DESKTOP ?
Certaines applications telles que Microsoft Word (le traitement de texte) et les lecteurs
multimédias (lecture son) permettent d'effectuer différentes tâches, tandis que d'autres, telles
que les applications de jeu, sont développées pour le divertissement.
Voici quelques exemples d'applications de desktop :
•Photoshop
•Skype
•Navigateurs comme Chrome, edge et Firefox
•Word press
•Microsoft Word, Excel
4
AVANTAGES DE L'APPLICATION
DESKTOP
1. LA FLEXIBILITÉ : Il est très facile d'écrire des applications de bureau qui tirent
parti du matériel de l'utilisateur (tels que : scanners, caméras, WiFi, ports série, ports
réseau, etc.)
2. PORTABILITÉ : Les applications desktop peuvent être portables, mais certaines
entre eux ne sont pas portables et nécessitent une installation manuelle de la part de
l'utilisateur.
3. MAINTENANCE: Les applications de bureau peuvent généralement être mises à
jour manuellement (installation des mises à jour).
6
DÉVELOPPEMENT NATIF VS
DEVELOPPEMENT CROSS-PLATFORM
Le développement informatique consiste à concevoir et maintenir le
fonctionnement des logiciels informatiques.
7
8
DÉVELOPPEMENT NATIF
9
AVANTAGES DU DÉVELOPPEMENT NATIF
10
AVANTAGES DU DÉVELOPPEMENT NATIF
11
INCONVÉNIENT DU DÉVELOPPEMENT
NATIF
Pas la même application sur les différentes plateformes : Si le développeur cible
Le coût du développement de ces applications est élevé: aucun code ne peut être
12
INCONVÉNIENT DU DÉVELOPPEMENT
NATIF
13
DEVELOPPEMENT CROSS-PLATFORM
14
AVANTAGES DE DEVELOPEMENT D’ UNE
APPLICATION CROSS PLATEFORME
Les applications cross-platforme produisent un même code source compilé, qui
produit deux applications natives. Cela induit une meilleure performance et une
expérience utilisateur plus proche du natif.
Le code peut être partagé entre différentes versions des applications à travers des
périphériques ou systèmes d'exploitation.: Permet de développer sur deux
plateformes avec un seul code
15
AVANTAGES DE DEVELOPEMENT D’ UNE
APPLICATION CROSS PLATEFORME
La prise en charge des applications futures est plus facile, car les mises à jour
peuvent être poussées simultanément pour toutes les plateformes.
16
LES TECHNOLOGIES POUR LE DÉVELOPPEMENT
DESKTOP CROSS-PLATEFORME
17
CHAPITRE 1I
LES BASES
D’ELECTRON
QU'EST-UN ELECTRON?
Electron est une librairie open source développée par GitHub et permet de réaliser
très rapidement des applications
19
QU'EST-UN ELECTRON?
20
QU'EST-UN ELECTRON?
21
LA STRUCTURE D’UNE APPLICATION
ELECTRON
• Electron embarque trois piliers principaux
1.Chromium : c’est le navigateur open source qui sert de base au célèbre Chrome
de Google. Il va assurer le rendu visuel de l’application( la partie front-end)
22
LE PROCESSUS PRINCIPAL ET LE
PROCESSUS DE RENDU
Processus principal (Main process):
C’est le processus principal qui va contrôler l'état de l'application. Vous aurez tout les
accès depuis ce processus, via les API native ou de NodeJS. Il peut aussi créer de nouveau
processus de rendu, ainsi que de démarrer et de quitter l’application. Ce processus est
unique
Processus de rendu(Render process)
Il va être responsable de la vue de votre application, par le biais d’affichage de vos
pages HTML/CSS(contrôle l'interface utilisateur) . Vous aurez accès au javascript pour gérer
les contrôleurs et interactions. Mais attention, pas d’accès direct au système.
Chacun des processus de rendu sont indépendant les uns des autres. Si un crash, il
n’affecte pas ses voisins. Il peut être caché, permettant d’exécuter du code en arrière plan.
Ce processus peut être multiple.
• 23
COMMUNICATION ENTRE LE PROCESSUS
PRINCIPAL ET LE PROCESSUS DE RENDU
24
25
COMMUNICATION ENTRE LE
PROCESSUS PRINCIPAL ET LE
PROCESSUS DE RENDU
1 2 3
Main RENDER
Main .js PROCESS PROCESS
Package.json Main.js Index.html
4
IPC
26
CRÉATION D’UNE APPLICATION
ÉLÉMENTAIRE
Prérequis:
1) Installation du Node.js (utilisation de la dernière version LTS )
3) Créer l’application
créer un dossier et initialiser un package npm (package.json)
27
CRÉATION D’UNE APPLICATION
ÉLÉMENTAIRE
Prérequis:
installez le package electron dans les devDependencies de votre
application
Exécution de l’application
28
29
Package.json
30
Main.js
31
Index.html
32
Exécution de l’application
33
DISTRIBUTION DE
L'APPLICATION
Pour distribuer votre application avec Electron, vous devez
l’empaqueter , vous pouvez utiliser des outils spécialisés ou une
approche manuelle.
1. Les outils spécialisés: Ces outils se chargeront des
différentes opérations nécessaires à l'obtention d'une application
Electron distribuable telles que l'empaquetage, le renommage de
l'exécutable et l'initialisation des icones.
34
DISTRIBUTION DE L'APPLICATION
Electron-forge:
Un outil complet pour créer, publier et installer des applications Electron. Il fournit
un environnement de développement pratique et tout les configuration nécessaire
pour créer une application pour plusieurs plates-formes.
Electron-builder:
Un outil CLI qui aide à créer des distributions multiplateformes pour les applications
Electron. Il prend en charge les cibles macOS, Windows et Linux prêtes à l'emploi. Il
prend en charge les formats de fichiers multiples pour chacune de ces plates - formes
telles que dmg, pkg, maset, mas-devpour Mac OS.
35
DISTRIBUTION DE L'APPLICATION
• Electron-packager
36
DISTRIBUTION DE L'APPLICATION
2. Distribution manuelle
La distribution manuelle est basée sur le téléchargement des binaires
précompilés d'Electron.
37
LES BOILERPLATES ET CLIS
38
SIGNATURE DE CODE
39
CHAPITRE 1II
BROWSER WINDOW
CRÉATION DE BROWSER WINDOW
41
CRÉATION DE BROWSER WINDOW
42
Exemple:
43
LES PROPRIÉTÉS DE BROWSER WINDOW
• movable (Boolean): définit si la fenêtre peut être déplacée par l’utilisateur. Cette propriété
n'a aucun effet sous Linux
41
Exemple:
46
AUTRES PROPRIÉTÉS DE BROWSER
• x (Integer): décalage à gauche de la fenêtre par rapport à l'écran. La valeur par défaut
est center.
• y (Integer): décalage à droite de la fenêtre par rapport à l'écran. La valeur par défaut est center.
• title (String): titre de la fenêtre. La valeur par défaut est "Electron". Si la balise <title> est
• comme #66CD00.
• fullscreen (Boolean): quand explicitement mit à true, le bouton de plein écran sera caché.
41
AUTRES PROPRIÉTÉS DE BROWSER
• images(Boolean): active la prise en charge des images. La valeur par défaut est true.
• webaudio(Boolean): active la prise en charge de WebAudio. La valeur par défaut est true.
• skipTaskbar (Boolean): affiche la fenêtre dans la barre des tâches. La valeur par défaut
• est false.
41
TYPES DE BROWSER WINDOW
1. Fenêtre sans cadre (Frameless window)
• C’est une fenêtre affichée sans bordures et sans barres d'outils, elle n’affiche
que le contenu HTML fourni.
• Ce type de window peut être créées en utilisant l'option frame et en la
définissant à false.
49
TYPES DE BROWSER WINDOW
2. Fenêtre transparente
• Pour rendre la fenêtre transparente, il suffit de définir l'option transparente à
true.
50
TYPES DE BROWSER WINDOW
3. Fenêtre non cliquable
• Pour créer une fenêtre non cliquable, c'est-à-dire la fenêtre ignore tous les
événements de la souris, vous utilisez la méthode
setIgnoreMouseEvents(ignore)
51
TYPES DE BROWSER WINDOW
4. Fenêtre parent et enfant
• En utilisant l'option parent, vous pouvez créer une fenêtre enfant.
• La fenêtre child sera toujours au-dessus de la fenêtre top.
52
TYPES DE BROWSER WINDOW
5. Fenêtre modale
• C’est une fenêtre enfant qui désactive la fenêtre parent.
53
WINDOW STATE
mainWindowState =windowStateKeeper({options});
54
WINDOW STATE
55
LES OPTIONS WINDOW STATE
x (Number): x est enregistrée de l’état chargé. indéfini si l'état n'a pas encore été enregistré.
y (Number): y est enregistrée de l’état chargé. indéfini si l'état n'a pas encore été enregistré.
width (Number): la largeur enregistrée de l’état chargé. defaultWidth si l'état n'a pas encore
été enregistré.
height (Number): la hauteur enregistrée de l’état chargé. defaultHeight si l'état n'a pas
encore été enregistré.
56
LES MÉTHODES DE WINDOW STATE
57
Exemple :
58
LES MÉTHODES DE BROWSER WINDOW
• Une fois la fenêtre est créée, vous pouvez la redimensionner en utilisant les méthodes de
BrowserWindow comme setBounds (limites) et setSize (width, height) pour changer la taille de votre
fenêtre.
• getBounds() : retourne une fenêtre, les limites de la fenêtre comme Objet. Les limites de la fenêtre {x, y,
width,height}.
• getSize() :retourne un entier qui décrit la largeur et la hauteur de la fenêtre [width, height].
59
LES MÉTHODES DE BROWSER
WINDOW
• setBounds (limites) et setSize (width, height) : changer la taille de votre fenêtre.
• getBounds() : retourne une fenêtre, les limites de la fenêtre comme Objet.
• getSize() : retourne un entier qui décrit la largeur et la hauteur de la fenêtre
• setMinimumSize (width, height) : définir la taille minimale de votre fenêtre
• setMaximumSize(width, height) : définir la taille maximale de votre fenêtre
• getMaximumSize() : retourne un entier qui contient la largeur et la hauteur maximales de la
fenêtre.
• getMinimumSize() : retourne un entier qui contient la largeur et la hauteur minimales de la
fenêtre.
win.close(): fermer la fenêtre. Cela a le même effet qu'un utilisateur cliquant manuellement sur
le bouton de fermeture de la fenêtre.
60
61
LES MÉTHODES DE BROWSER WINDOW
win.isDestroyed(): retourne boolean - si la fenêtre est détruite.
win.isModal(): retourne boolean - si la fenêtre actuelle est une fenêtre modale ou non.
62
LES MÉTHODES DE BROWSER WINDOW
63
LES ÉVÈNEMENTS DE BROWSER WINDOW
64
Exemple:
65
CHAPITRE 1V
APP, WEBCONTENTS,
SHELL...
APP
Rôle : Contrôler le cycle de vie de votre application
L’objet “app” émets notamment les évènements qui se déclenchent
au moment de l’ouverture/fermeture de l’application,
67
APP
68
APP
69
70
71
WEB CONTENTS
72
LES MÉTHODES DE WEB
CONTENTS
Ces méthodes sont accessibles depuis le module webContents :
const{ webContents }=require('electron')console.log(webContents)
73
LES MÉTHODES DE WEB
CONTENTS
webcontent.isDestroyed(): retourne Boolean - si la page web est détruite.
74
LES MÉTHODES DE WEB
CONTENTS
webcontent.openDevTools([options]): ouvre les outils de développement qui
font partie de Chromium
75
LES MÉTHODES DE WEB
CONTENTS
76
LES ÉVÈNEMENTS DE WEB CONTENTS
• webContents émet les événements suivants:
• 'did-start-loading': correspond au moment où le loader de l'onglet commence à
tourner.
• 'did-finish-load': émis lorsque la navigation est terminée, c'est-à-dire que
l'événement onload a été émis.
• did-stop-loading: correspond au moment où le loader de l'onglet arrête de
tourner.
• 'did-fail-load': émis lorsque le chargement a échoué. il retourne: event
(évènements), errorCode (Integer), errorDescription (String), validatedURL
(String).
77
LES ÉVÈNEMENTS DE WEB CONTENTS
78
LES ÉVÈNEMENTS DE WEB CONTENTS
79
MODULE SHELL
• Le module shell aide les développeurs à trouver des moyens utiles d’interagir
avec l’environnement de bureau, il fournit des fonctions liées à l'intégration
bureau.
• Les méthodes de shell sont conçues comme des raccourcis pour nous aider à
identifier et ouvrir ces fichiers.
• shell permet de gérer des fichiers et URLs à l'aide de leurs applications par
défaut.
• Cette syntaxe, vous donne accès au package shell d'Electron et vous pouvez
maintenant ajouter les méthodes en référençant la variable shell
80
LES MÉTHODES DE SHELL
• shell.beep : pour lire le son natif du système d’exploitation
81
CHAPITRE V
LES MENUS
INTRODUCTION
83
LA CRÉATION DE MENU
84
LA CRÉATION DE MENU
85
LE MODÈLE DE MENU (MENU
TEMPLATE)
• Commençons par créer le modèle de menu (template)
86
LE MODÈLE DE MENU (MENU
TEMPLATE)
• Le constructeur Menu est simple, il prend un objet d'options. Parmi ces options, on peut noter en
particulier:
87
AUTRES PROPRIÉTÉS DE MENU
• Si vous ne souhaitez pas utiliser l'un des rôles prédéfinis, vous pouvez
définir la propriété click pour appeler une fonction:
88
AUTRES PROPRIÉTÉS DE MENU
• Souvent, vous voudrez peut-être indiquer que la fonction d'un élément de
menu est active. En règle générale, cela est indiqué en utilisant une coche à
côté du nom du menu.
89
DÉFINITION DES RÔLES DES ÉLÉMENTS
DE MENU
accelerator : Définir les raccourcis clavier.
• Les accélérateurs sont des chaînes qui peuvent contenir plusieurs modificateurs
et un seul code de touche, combinés par le caractère + , et sont utilisés pour
définir des raccourcis clavier dans toute votre application.
90
91
92
LA CRÉATION DE MENU
93
DÉFINITION DES RÔLES DES
ÉLÉMENTS DE MENU
minimize: minimise la fenêtre courante.
close : ferme la fenêtre courante.
forceReload : recharge la fenêtre courante ignorant le cache.
toggleDevTools: bascule les outils de développement dans la fenêtre actuelle.
togglefullscreen: basculer en mode plein écran dans la fenêtre actuelle.
resetZoom: réinitialise le niveau de zoom de la page ciblée à la taille d'origine.
zoomIn: zoom sur la page ciblée par 10%.
zoomOut: zoom arrière de la page ciblée de 10%
94
DÉFINITION DES RÔLES DES ÉLÉMENTS
DE MENU
fileMenu : menu par défaut "File" (Exit / Quitter)
editMenu : tout le menu "Edit" par défaut (Annuler, Copier, etc.).
viewMenu : menu "View" par défaut (Recharger, Activer/désactiver les outils
de développement, etc.)
windowMenu : menu "<Window" par défaut entier (Minimize, Zoom, etc.).
si vous ne souhaitez pas utiliser l'un des rôles prédéfinis, vous pouvez définir
la propriété click pour appeler une fonction:
95
LES MENU CONTEXTUEL
(CONTEXT-MENU)
• Electron peut également créer un menu contextuel, avec le module Menu.
Contrairement au menu de l'application, où un menu par défaut est inclus,
il n'y a pas de menu contextuel par défaut intégré. Cette fonctionnalité
doit être entièrement écrite par nous.
• Vous pouvez personnaliser le menu contextuel lorsque vous êtes dans le
processus principal.
96
LE FONCTIONNEMENT DU MENU
CONTEXTUEL
97
LES MENU CONTEXTUEL
(CONTEXT-MENU)
98
Fin
99
100
101
DÉFINITION DES RÔLES DES ÉLÉMENTS
DE MENU
• Le modèle de menu est un tableau d'objets. Chaque objet définira un menu
individuel qui sera affiché dans la barre de menus de l’application. Pour
définir le texte qui sera affiché, nous attribuons cette valeur à sa propriété
label.
• Dans l’exemple précédent de code, nous définissons deux menus: Menu 1 et
Menu 2.
• Pour définir les éléments de menu, les éléments qui s'affichent lorsqu'un
utilisateur sélectionne ce menu, nous définissons la propriété submenu sur un
tableau d'objets de menu.
102
INTRODUCTION
•Les menus sont également quelque chose auquel les applications Web
traditionnelles n'ont jamais eu accès.
• Les menus de l'application ont toujours été ceux des navigateurs. Si
l'utilisateur accède à un menu contextuel sur la page, le menu
contextuel du navigateur par défaut apparaît. Les applications Web
n'avaient pas la possibilité de changer l'un ou l'autre.
103
WEB CONTENTS
104
105
GTK+ est un toolkit permettant de créer des interfaces utilisateur graphiques. GTK + est
multiplateforme et dispose d'une API facile à utiliser, ce qui permet d'accélérer le temps de
développement. Il est écrit en C, mais a été conçu de manière à supporter un large éventail de
langages, pas seulement C/C ++.
Son choix est toutefois JavaFX qui avec la JVM, selon lui, est parfait pour développer des
applications de bureau rapides et responsives.
106
• Rentabilité accrue sur votre marché
• Des taux d'engagement plus élevés
• Une meilleure visibilité dans les moteurs de recherche, et
• Coûts de construction beaucoup plus bas
107
108
111
112
114
115
• Renderer Process
• ● Gère l’affichage des pages
• ● Gère les interactions utilisateurs
• ● Un renderer process par fenêtre
LES MÉTHODES DE SHELL
116
117
• Main Process
• ● Gère les instances des fenêtres
• ● Accède aux fonctionnalités du système
• ● Réalise les opérations coûteuses
118
Lorsque la fenêtre est fermée, on la définit à null, pour cela, il faut utiliser l
évènement closed de la fenêtre principale.
119
120