iPhoneSoft : forum iPhone, iPad, Apple Watch, Apple TV et Mac

application iSoft pour le forum iPhoneSoft (iPhone, iPod, iPad, Apple Watch, Apple TV, Mac et services Apple

Forum iPhone, iPod et iPad, Apple TV, Apple Watch et Mac en français par iPhoneSoft pour les systèmes iOS, macOS, tvOS et watchOS

Vous n'êtes pas identifié(e).



#1 02-08-2012 16:37:11

iSeven
Membre

[Tuto] Manipulation avec iFile 2#

Salut à tous, me revoilà pour un second tutoriel concernant les différentes manipulations réalisables avec iFile !

Dans ce tuto, je vais vous expliquer comment créer un onglet dans les réglages de votre iPhone (comme Infinidock, Springtomize ect)
Cela peut s'avérer très utile si vous souhaitez ajouter des informations concernant un tweak/thème (comme Crystal), de l'aide ou tout simplement des paramètres de configuration pour vos tweaks (seulement dans le cas où vous savez programmer).
Comme la plupart des membres de ce forum ne programment pas, je vais seulement expliquer comment créer son fichier, le personnaliser ect..

Tout d'abord sachez que je ne connais pas le vocabulaire exact de tout ce qui va suivre donc les noms que j'attribuerai ne seront peut-être pas exacts par rapport au langage Objective-C.

Pré-requis :
- Un appareil jailbreaké
- iFile
- PreferenceLoader (nécessaire pour l'utilisation du fichier)

I) Architecture du fichier

Dans iFile, rendez vous dans : /Library/PreferenceLoader/Preferences
Créez un fichier sans extension, portant le nom de votre tweak/thème.

Copiez-y les les lignes suivantes :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

        <key>title</key>
    <string>Tuto</string>
    <key>entry</key>
    <dict>
        <key>cell</key>
        <string>PSLinkCell</string>
        <key>icon</key>
        <string>Tuto.png</string>
        <key>label</key>
        <string>Tuto</string>
    </dict>
    <key>items</key>
    <array>
    </array>
        <key>title</key>
        <string>Tuto</string>

</dict>
</plist>

Une fois les lignes copiées, ajoutez l'extension .plist à votre fichier. Ouvrez-le pour être sûr qu'il n'y a pas d'erreur.


Bon les explications :
Voici l'architecture de base d'un fichier .plist.
Nous allons nous occuper des lignes qui se situent entre les lignes <dict> et </dict> (la partie en vert).

1) <dict> et </dict>
Ces deux lignes permettent de "déclarer" des items dans votre fichier. Par exemple si je veux mettre une cellule normale, je la déclarerai comme ça :

<dict>

//  Code de la cellule
// Code de la cellule

</dict>

Si vous souhaitez ajouter un objet dans votre fichier, vous devrez obligatoirement le déclarer avec ces deux expressions.

2) <key> et </key>

Les clés (key an anglais) permettent d'identifier l'objet ajouté à votre fichier.

Quelques exemples :

- cell : Création d'une cellule
- icon : Affichage d'une icône
- detail : Précision sur le type de l'objet (par exemple il y a plusieurs types de cellules)
- label : Texte décrivant l'objet, souvent sous forme de titre.
- footerText ou staticTextMessage : Texte sous forme de commentaire.

Donc votre clé se déclare comme ça : <key>votre clé</key>

3) <string> et </string>

Eux font référence à une chaîne de caractères, ils peuvent représenter la valeur d'une chaîne de caractères, le nom d'une clé, nom d'une image..

Exemples :

<key>label</key>
<string>Mon texte</string> // Définit le texte du label
<key>icon</key>
<string>mon image.png</string> // Définit le nom de l'image

Les string sont partout dans un fichier .plist, ils peuvent désigner beaucoup de choses différentes mais ce qu'il faut retenir, c'est qu'ils permettent d'identifier d'autres objets ou d'afficher du texte.

3) <array> et </array>

Dans certaines cellules, vous pouvez afficher une liste de valeurs (par exemple dans Infinidock, lorsque vous choisissez le nombre d'icônes sur le Dock, vous êtes dans une liste de valeurs).
Vous devrez stocker vos données dans un tableau (array en anglais) mais comme la programmation n'est pas incluse dans le tuto, on dira que c'était une petite parenthèse culturelle tongue

4) <real>&</real> et <integer>&</integer>

Ces deux types permettent d'assigner des valeurs à certaines clés.

<real> prend en charge les nombres décimaux.
<integer> ne prend en charge que les nombres entiers.

Par exemple, je créé une cellule et je souhaite modifier sa hauteur, j'utiliserai un real ou un integer !


Voilà globalement ce qu'il faut retenir de l'architecture d'un fichier .plist, pour le reste c'est juste des précisions !

Remarque : la balise "title" (en bas du fichier) vous permet de définir le titre du fichier plist.

Voici un petit exemple d'objet qui reprend tout ce qui a été expliqué plus haut, (ça évoquera peut-être quelque chose pour certains smile) :

<dict>                                                                         // Déclaration d'un objet
            <key>cell</key>                                  // Déclaration de la clé permettant de préciser le type d'objet (ici une cellule)
            <string>PSLinkListCell</string>             // Nom du type d'objet
            <key>defaultBackgroundColor</key>       // Déclaration d'une clé qui définit la couleur du fond de la cellule par défaut
            <string>white</string>                       // Couleur attribuée
            <key>detail</key>                               // Clé qui précise un "sous-type" d'objet (bouton, cellule toute simple...)
            <string>PSListItemsController</string>  // Nom du sous-type de l'objet (ici une liste contenant valeurs ou texte)
            <key>icon</key>                                // Déclaration d'une clé qui affiche une icône dans l'objet
            <string>Crystal_it.png</string>           // Nom de l'icône
            <key>label</key>                               // Déclaration d'une clé qui définit le titre de l'objet
            <string>Italian</string>                     // Titre de l'objet
            <key>staticTextMessage</key>            // Déclaration d'une clé qui permet d'afficher du texte en commentaire
            <string>ActionList v1.1                               
AllMail v1.4-1
Anicons v0.8-2
Infiniboard v1.8.2-1
Infinidock v1.8.4-1
Infinifolders v1.4.2-1

</string>
                                                                             // Texte affiché pour la clé staticTextMessage
            <key>validTitles</key>    // Clé (non utilisée ici) qui permet de stocker des noms dans un tableau
            <array/>                                                                     
            <key>validValues</key>  // Clé (non utilisée ici) qui permet de stocker les valeurs correspondantes
            <array/>
</dict>                                                 // Fin de la déclaration de l'objet

Les clés sont en bleu.
Les string (chaînes de caractère) sont en vert.
Les lignes permettant la déclaration de l'objet sont en rouge.


Retournez dans votre fichier .plist et copiez ce code entre les balises <array> et </array> (regardez dans la partie verte en haut si vous avez un doute) et sauvegardez votre fichier. Faites un respring et allez voir dans les réglages vers le bas, vous devriez normalement voir votre onglet (sans icône c'est normal) avec une cellule qui affiche une liste contenant un texte !

N'hésitez pas à poser des questions sur cette première partie car c'est pas évident à comprendre !


II) Quelques clés sympas

Déclarez ces clés avec les balises <key> et </key>

1) cell

Elle définit une cellule à fond blanc (par défaut).
Pour que vous visualisiez globalement à quoi ça ressemble, ouvrez vos réglages.
Tous les onglets (Wi-Fi, Général, Téléphone ect) sont des cellules.

Seulement après avoir déclaré cette cellule, il faut indiquer son type via des balises string, en voici certains :

- PSGroupCell : Définit une chaîne de caractères qui se placera au-dessus de la cellule qu'elle précède.
Par exemple : Dans l'onglet Wi-Fi, l'expression "Choisissez un réseau..." est un PSGroupCell.
Vous indiquerez la chaîne de caractères via un label, ce qui donne :

<dict>
     <key>cell</cell>
     <string>PSGroupCell</string>
     <key>label</key>
     <string>Votre texte</string>
</dict>

Vous pouvez également utiliser cette clé pour séparer des cellules, pour cela vous pouvez laisser la case label vide ou simplement retirer les lignes 4 et 5.

- PSLinkListCell : Définit une liste d'items et leurs valeurs correspondantes.
Par exemple, dans les réglages d'Infinidock, lorsque vous souhaitez choisir le nombre d'icônes par page.

Pour que cela fonctionne, vous devrez ajouter la clé suivante :

<key>detail</key>
<string>PSListItemsController</string>

Comme la plupart d'entre vous ne programment pas (encore) en Objective-C, cette cellule peut se révéler utile dans le cas où vous avez un texte (pour de l'aide, information concernant un paquet) à écrire, pour cela recopiez le code suivant :

<dict>
     <key>cell</cell>
     <string>PSLinkListCell</string>
     <key>defaultBackgroundColor</cell>
     <string>white</string>
     <key>detail</key>
     <string>PSListItemsController</string>
     <key>label</key>
     <string>Nom de votre cellule</string>
     <key>staticTextMessage</key>
     <string>Votre texte</string>
     <key>validTitles</key>
     <array/>
     <key>validValues</key>
     <array/>
</dict>

Par exemple : dans les réglages du tweak Crystal, les tweaks compatibles avec chaque langue sont affichés avec un texte définit de cette façon.

- PSTitleValueCell : Définit une cellule n'ayant aucune action particulière (à ma connaissance), à part afficher un court message important.
Par exemple : Dans Crystal (oui encore, mais c'est un très bon exemple car il utilise tout ce qu'il y a dans ce tutoriel), la dernière cellule qui contient une icône ainsi que mon pseudo est une cellule de ce type.

Donc avec un label ça ressemble à ça :

<dict>
     <key>cell</cell>
     <string>PSTitleValueCell</string>
     <key>label</key>
     <string>Votre texte</string>
</dict>


Voilà globalement les cellules qui pourraient vous être utiles.

2) Les autres (plus ou moins utiles)

Ces clés sont plus dédiées à l'esthétique de vos réglages tongue

- icon : Définit une icône qui se placera à gauche de votre cellule.

Les dimensions conseillées pour les icônes sont de 29x29 pour les écrans SD et 58x58 pour les écrans rétina.
Leur format doit être PNG.

Déclarez la clé puis indiquez le nom de l'icône (ou son chemin) avec des balises string.

Par exemple :

<dict>
     <key>cell</cell>
     <string>PSTitleValueCell</string>
     <key>icon</key>
     <string>mail.png</string>
     <key>label</key>
     <string>Contactez-moi</string>
</dict>

- alignment : Permet de centrer un texte.

Ajoutez-la de cette façon :

<key>alignment</key>
<integer>1</integer>

- height et width : Définissent respectivement la hauteur et la largeur de la cellule.

Utilisez les balises <real> et </real> pour les valeurs (comptées en pixels)

Par exemple :

<key>height</key>
<real>245</real>
<key>width</key>
<real>345</real>

Les valeurs sont prises au hasard, ne les mettez pas ! tongue

C'est tout ce que j'ai en tête pour le moment, mais ne vous en faites pas, si des choses me reviennent je les ajouterai wink

En espérant que ce tutoriel vous ai aidé !

A+

Dernière modification par iSeven (05-08-2012 17:54:18)



iPhone 5 - Gris sidéral 32GB - iOS 7.0.4 - Jailbreaké
iPhone 6 - Gris sidéral 64GB - iOS 8.1 - Jailbreaké
MacBook Pro Rétina 15" 2013

Auteur de Crystal, Emerald et Sapphire (Cydia) smile
N'hésitez pas à me poser des questions : https://twitter.com/iSeven

Hors ligne

#2 04-08-2012 14:17:28

MagikAlex
Membre

Re : [Tuto] Manipulation avec iFile 2#

Super début de tuto,j'attends la suite avec impatience.Au fait je change de sujet,les fichiers strings des tweaks avec Crystal,on peut aussi créer des fichiers strings pour traduire des apps.


iPod Touch 4 Noir 8 Go IOS 6.1  Evasi0nné smile

Hors ligne

#3 05-08-2012 10:07:48

iSeven
Membre

Re : [Tuto] Manipulation avec iFile 2#

Salut,

Merci, je vais terminer ça tout à l'heure, mais il ne reste pas grand chose smile

Oui tu peux traduire des applications si le développeur a activé les traductions dans son projet Xcode.

Dernière modification par iSeven (05-08-2012 11:04:04)


iPhone 5 - Gris sidéral 32GB - iOS 7.0.4 - Jailbreaké
iPhone 6 - Gris sidéral 64GB - iOS 8.1 - Jailbreaké
MacBook Pro Rétina 15" 2013

Auteur de Crystal, Emerald et Sapphire (Cydia) smile
N'hésitez pas à me poser des questions : https://twitter.com/iSeven

Hors ligne

#4 05-08-2012 10:50:52

MagikAlex
Membre

Re : [Tuto] Manipulation avec iFile 2#

Ok merci beaucoup,A+


iPod Touch 4 Noir 8 Go IOS 6.1  Evasi0nné smile

Hors ligne

Pied de page des forums