Page 1 sur 1

Un seul code pour 2 OS possible ???

Publié : mar. 12/août/2014 16:11
par Golfy
Bonjour à tous,

j'ai quelques codes sous Windows que je re-compile sous Linux mais en fait, je suis obligé de ré-écrire de toutes petites parties car

1) Problème sur les chemins : eh oui, Microsoft a déclaré le '\' comme séparateur, là où le reste du monde utilise le '/'...
- puis-je automatiser avec une macro (If CompilerOS alors separateur = '\' etc.) sachant qu'il me faut un exemple car je n'ai jamais utilisé les macros
- par exemple, si je travaille avec GetCurrentDirectory()+"\symbols\" puis idem sous Linux : GetCurrentDirectory()+"/symbols/"

2) Problème de polices : il semble que sous Linux, les utilisateurs aient de très grands écrans ou une petite vue... les polices sont plus grandes que sous Windows
- Quelles polices sont communes ?
- Si je dois embarquer une police avec mon logiciel, un TTF fonctionne partout ? puis-je forcer les polices systèmes ?
- Comment s'assurer que le même code donnera le même aspect ?

3) Problème de "fenêtre" et Gadget : même ordre d'idée que ci-dessus...
- Comment puis-je déterminer la bonne hauteur
- Une macro peut-elle me permettre de remplacer une constante (#Win-High-Offset par exemple) ?

Merci d'avance pour vos aides très précieuses comme toujours :)

Re: Un seul code pour 2 OS possible ???

Publié : mar. 12/août/2014 16:24
par MetalOS
Le développement d'interface sous Linux et très compliqué car chaque utilisateur utilise son propre bureau (Gnome, Kde, Xfce, Window Maker, Mate...) et ca propre police c'est un peut la philosophie de Linux de personnaliser ca distrib. Le texte d'un bouton sous Gnome risque d'être tronqué sous KDE ou décalé sous xfce. Il faut systématiquement appliquer une police avec une taille pour chaque Gadget afin forcer le même résultat sous chaque environnements. C'est la seul solution que j'ai trouvé pour que ca fonctionne au mieux.

Autrement pour les '/' j'utilise la fonction "Rechercher - Remplacer" de PB quand je veut convertir un '\' en '/'.

Re: Un seul code pour 2 OS possible ???

Publié : mar. 12/août/2014 16:35
par falsam
MetalOS a écrit :Autrement pour les '/' j'utilise la fonction "Rechercher - Remplacer" de PB quand je veut convertir un '\' en '/'.
j'ai abandonné le dev sous linux, mais il me semble que "/" fonctionne aussi bien sous windows que sous linux.

Test (sous windows et Linux) si tu as une valeur non nul avec ce code qui cherche à lire le premier exemple de code se trouvant dans le dossier d'installation de Pure Basic

Code : Tout sélectionner

Debug ReadFile(#PB_Any,  #PB_Compiler_Home+"/Examples/Sources/2DDrawing.pb")

Re: Un seul code pour 2 OS possible ???

Publié : mar. 12/août/2014 19:23
par Golfy
Voilà déjà un problème de moins ( \ et / ), merci je n'avais pas eu l'idée d'essayer :D

Re: Un seul code pour 2 OS possible ???

Publié : mar. 12/août/2014 21:22
par poshu
Pour tout ce qui est taille de gadget et police, faut juste pas utiliser de nombre magique, comme un dev web (bon, je vais aussi rappeler que, même sous windows only, les nombres magiques devraient êtres bannis, après tout vous ne connaissez pas la configuration de l'utilisateur final). Tous mes programmes sont osx/linux/windows sans aucun problème :p
Par contre, faut bannir tous les éditeurs de fenêtres qui sont incapable de faire ça.

Re: Un seul code pour 2 OS possible ???

Publié : mar. 12/août/2014 22:14
par Golfy
C'est quoi les nombres magiques (hormis le ratio considéré comme idéal esthétiquement)

Re: Un seul code pour 2 OS possible ???

Publié : mer. 20/août/2014 14:36
par poshu
En gros, quand tu fais une fenêtre, si il y a un nombre fixé arbitrairement à un endroit, ça va déconner un jour ou l'autre, c'est inévitable.
Un exemple que j'ai beaucoup vu dans le coin, c'est avec une scrollarea qui ne doit scroller que dans une direction:

Code : Tout sélectionner

OpenWindow(0,0,0,800,600,"",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_SizeGadget) ;<-- 800 et 600, c'est pas un problème si la fenêtre est resizable puisque l'utilisateur corrigera de lui même.
ScrollAreaGadget(0,0,0,800,600,1000,600-21);<-- -21???? Bah ouais, j'ai mesuré la hauteur des barres de défilement sous windows 8 et ça faisait 21...

Repeat : Until WaitWindowEvent() =#PB_Event_CloseWindow
bon, bah ça, c'est du code digne d'un débutant fini; ça va déconner selon l'utilisateur (c'est un paramètre réglable) et selon l'OS. 21 est donc un nombre magique; et quand je vois ça, je comprends "j'avais la flemme de faire une travail correct"...

Re: Un seul code pour 2 OS possible ???

Publié : sam. 30/août/2014 23:41
par Golfy
ok, je crois avoir compris :mrgreen:
Et comment fait-on pour trouver des nombres pas magiques ? :roll:

A part ça, je commence à comprendre l'intérêt d'une interface PHP, d'un traitement Purebasic et... d'une passerelle GET/POST :D