GB3- A la decouverte des widgets gambas

Rédigé par spheris Aucun commentaire
Classé dans : gambas 3, Widget Mots clés : aucun
Bonsoir,
Au moment où j'écris ces lignes, Gambas dispose d'un nombre impressionnant de widgets (éléments de l'interface) aussi bien en QT4, QT5, gtk2 et gtk3.
Voici un exemple réalisé par valaquarus qui vous montre un aperçu de ces widgets.

Pour pouvoir le compiler, il vous faudra gambas 3.15 minimum ou supérieur.


Télécharger l'exemple ici

GB3- Installation de la dernière version de gambas

Rédigé par spheris Aucun commentaire
Classé dans : apprentisssage, gambas 3, Installation Mots clés : aucun
Petit rappel:
Pour installer la dernière version de gambas sur des machines équipées de linux débian et autres variantes (mint,ubuntu,...) avec le système de paquet dpkg ou apt, il suffit d'écrire ces lignes dans un terminal :

 sudo apt-get remove "gambas3*"
 sudo add-apt-repository remove ppa:gambas-team/gambas-daily
 sudo apt-get update
 sudo apt-get install gambas3
Il est très important pour les utilisateurs ayant une ancienne version de gambas de bien supprimer la version actuelle avant l'installation de la nouvelle car la nouvelle version de gambas ne pourra pas fonctionner.

GB3- Les nombres complexes

Rédigé par spheris 3 commentaires
Classé dans : apprentisssage, gambas 3, mathematique, Tutoriel Mots clés : aucun
Bonjour,

Aujourd'hui nous allons nous intéresser, pour ceux qui se souviennent de nos cours de math, des nombres complexes à utiliser en gambas.

nous voulons faire un simple calcul par exemple de deux complexes e = 4+5i et f = 24 -4i

Nous voulons simplement additionner ces deux nombres.

Voici comment procéder :

A) Ajout du composant gb.complex
Créez un nuoveau projet graphique et cochez dans les propriétés le composant gb.complex

B) Créez deux nombres complexes
Il vous suffit de définir dans une fonction deux nombres comme ceci

 Dim e As New Complex
 Dim f As New Complex

Ensuite définissez les valeurs de chaque nombre par leur propriétés :

e.Real = 4
e.Imag = 5
f.Real = 24
f.Imag = -4

C) Calcul réalisé, addition, soustraction, etc...

Dans une variable de type string, vous pourrez voir le résultat de l'addition par la commande:
Ici j'utilise simplement une messsagebox qui me renvoit un message de type string.

message.info(e+f)


D) Les autres méthodes

e.Abs2 retourne la surface en valeur absolue du complexe
e.Arg retourne l'argument du nombre complexe
e.Conj retourne le conjugué du nombre complexe
e.Copy retourne une copie du nombre complexe
e.Inv Retourne l'inverse du nombre complexe
e.ToString convertit un nombre complexe en chaine de caracteres lisible par l'homme du style 2+4i

Enfin la methode e.Polar() Crée un nouveau nombre complexe à partir de sons modulo et son argument. Si l'argument en deuxième position n'est pas spécifié, il est par défaut  égal à 0.











GB3- Convention de nommage des variables

Rédigé par valaquarus Aucun commentaire
Classé dans : apprentisssage, divers, Tutoriel Mots clés : aucun
Ceci n'est pas vraiment un article mais plutôt une piqûre de rappel d'une évidence que les nouveaux programmeurs ignorent ou dont ils ne tiennent pas compte car inutile pour eux et que certains anciens maltraitent.
Je vous renvoie vers un petit article de Gambix plus que pertinent : Nommage des variables.
Et tant qu'à être dans les rappels : Les variables Globales, Les variables Locales, Conventions de Nommage
 
Voici un bout de code pour suivre le nommage des variables et leur visibilité dans le code général du programme :
' Gambas class file

Inherits TextBox    '<--------------------------------------------------------- Tout l'héritage du composant  TextBox
'<----------------------------------------------------------------------------- (Export) pour créer la class dans l'IDE
Export
'<------------------------------- remarquez les doubles '' pour faire apparaître les commentaires en explication des objets dans l'IDE
Private $value As Float                                                         ''Contient la valeur numérique
Private $regPat As String                                                       ''Pattern des expressions réguliéres
Private $format As String                                                       ''Contient le formatage de la variable
Private $regex As New RegExp                                                    ''Contrôle l'entrée, il faut activer gb.pcre
Private $bFocus As Boolean                                                      ''Boolean du focus
Private $listview1 As ListView                                                  ''Le listview pour afficher et choisir l'expression régulière
Private $TextBox2 As TextBox                                                    ''pour afficher les informations sur les expressions régul.
Private $lab As Label                                                           ''pour afficher le nombre formaté selon l'express. régul.

Public Enum sNumVirgule0, sNumVirgule1, sNumVirgule2, sNumVirgule3, sNumVirgule4, sNumVirgule' ne sert qu'à rendre les valeurs plus explicites dans le code
' Static Public ind As Integer

Private $ListeC As New String[]  '<-------------------------------------------- instanciation de la liste des formats
Private $ListeB As New String[]  '<-------------------------------------------- instanciation de la liste des explications
Private $Liste As New String[]  '<--------------------------------------------- instanciation de la liste des expressions régulières

Private $obs As Observer   '<-------------------------------------------------- les observer peuvent être déclarés en local
Private $lvw1Obs As Observer   '<---------------------------------------------- ou en global

'<------------------- Début propriétés ajoutées à TextBox ---------------------
Property Value As Float                                                         ''Valeur float de la textbox
Property Format As String                                                       ''On passe le format que l'on souhaite voir en sortie
Property TextReg As Integer                                                     ''On passe l'expression régulière

Private Sub Value_Write(Value As Float) '<------------------------------------- la propriété Value de notre TextBox

    $value = Value  '<--------------------------------------------------------- récupération de la valeur et transmision à la variable locale

End

Private Function Value_Read() As Float  '<------------------------------------- la propriété Value de notre TextBox

    Return $value  '<---------------------------------------------------------- renvoi de la propriété

End

Private Sub Format_Write(sFormat As String)   '<------------------------------- la propriété Format de notre TextBox

    $format = sFormat  '<------------------------------------------------------ récupération de la valeur et transmision à la variable locale

End

Private Function Format_Read() As String    '<--------------------------------- la propriété Format de notre TextBox

    Return $format  '<--------------------------------------------------------- renvoi de la propriété

End

Private Function TextReg_Read() As Integer   '<--------------------------------- la propriété TextReg de notre TextBox

    Return $Liste.Find($regPat) '<---------------------------------------------- renvoi de la propriété

End

Private Sub TextReg_Write(Value As Integer)   '<------------------------------- la propriété TextReg de notre TextBox

    $regPat = $Liste[Value]  '<------------------------------------------------ récupération de la valeur et transmision à la variable locale

End
'<-------------------- Fin propriétés ajoutées à TextBox ----------------------

Public Sub _new()   '<--------------------------------------------------------- création et instanciation de tous les objets nécessaires

    ' Dim $obs As Observer   '<--------------------------------------------------- les observer peuvent être déclarés en local
    ' Dim $lvw1Obs As Observer   '<----------------------------------------------- ou en global qui les rend privées

    Dim sCste As String '<----------------------------------------------------- variables locales pour alimenter le listview
    Dim i As Integer '<-------------------------------------------------------- variables locales pour alimenter le listview

    $obs = New Observer(Me) As "obs" '<---------------------------------------- instanciation observer pour récupérer les évènements
    $listview1 = New ListView(Me.Parent)    '<--------------------------------- instanciation listview d'affichage des expressions régulmières
    $lvw1Obs = New Observer($listview1) As "ListView1" '<---------------------- instanciation observer pour suivre l'évènement _Select
    $TextBox2 = New TextBox(Me.Parent)    '<----------------------------------- instanciation textbox d'affichage d'explications
    $lab = New Label(Me.Parent) '<--------------------------------------------- instanciation label d'affichage du format
.../...
Le préfixe du nom d'une variable est donc une ou plusieurs minuscules suivies d'une majuscule, de mémoire je crois que cela s'appelle la notation Pascal mais bon l'important c'est de rendre la lecture de votre propre code facile à lire et intelligible.
 
 

HUMOUR- l'oeuf ou la poule ?

Rédigé par valaquarus Aucun commentaire
Classé dans : divers, humour Mots clés : aucun
En POO, la programmation orientée objet, on cherche à définir tous les objets dont dont va avoir besoin dans son programme.
 
Qui dois je définir en premier :
- la poule qui donnera un oeuf ou l'oeuf qui donnera une poule !
 
Car si l'oeuf est une poule en devenir l'oeuf ne l'est pas mais il contient un embryon qui lui est une poule en devenir.
Et, voilà de deux objets je me retrouve avec trois.
Et puis tous les embryons ne donne pas des poules et même tous les oeufs de poules ne donnent pas de poules s'ils n'ont pas été fécondés.
Et puis si c'est une poule mâle ça s'appelle un coq et ça ne pond pas d'oeufs.
Et puis tous les oeufs n'ont pas de de coquilles dures.
Et lors de l'instanciation, si je commence par la poule rien ne dit que j'aurais un oeuf, et si je commence par l'oeuf rien ne m'assure que j'aurais bien une poule et pas une chimère quelconque.
 
Et puis, de toutes façons, les rats m'ont bouffé tous les oeufs et tué toutes les poules.

 

GB3- Les Commentaires sont ils indispensables ?

Rédigé par valaquarus 2 commentaires
Classé dans : apprentisssage, divers Mots clés : Commentaires
J'ai commencé à programmer il y a bien longtemps sur des machines qui feraient hurler de rire vos chers téléphones portables.
J'en ai bien, un aujourd'hui mais il ne me sert que de téléphone.
Mon premier programme en assembleur m'a pris un mois d'écriture pour faire défiler un "bonjour, madame" sur la ligne écran de mon Z80, c'était en 19.. (de quoi je me mêle ?).
Ensuite je suis passé à un commodore 64, il avait tellement peu de mémoire que pour faire tourner un programme (en basic 16 bits, si madame ça a existé) il fallait découper le dit programme en morceaux que l'on chargeait un par un, en mémoire après avoir vidé celle-ci, du morceau précédent.
Pourquoi je disais ça, faut dire que si vous n'arrêtez pas de m'interrompre tout le temps, je perds le fil, moi.
En fait en arrivant sur Gambas, mes premiers programmes étaient aussi peu rangés que ma chambre si ma femme ne passait pas, derrière moi.
En lisant des articles et des programmes commentés je me suis aperçu qu'ils étaient faciles à suivre et comprendre parce qu'ils étaient aérés et commentés.
En lisant un code d'un certain Cogier, cherchez ses productions sur la logithèque de Gambas, chaque ligne était commentée et la présentation était soignée, les commentaires tirés au cordeau, toujours à 81 caractères sur la ligne (ce qui correspond à plusieurs tabulations, vous les compterez) ce qui rendait le code attractif, facile à lire et compréhensible.
Depuis je me suis imposé ce travail qui de fastidieux est devenu une autre chose, très intéressante, cela m'oblige à relire mon code, à améliorer celui-ci et surtout les commentaires pour qu'ils soient les plus explicites possibles, en peu de place.
Et, ce faisant vous vous rendrez compte des évolutions de vos propres pensées et de la structuration de celles-ci et donc de l'apport indéniable des commentaires dans vos programmes.
 
Car vos commentaires sont la traduction de vos pensées et non une simple traduction de texte, sans aucune valeur.
 
Alors n'hésitez pas, commentez vos codes, d'abord pour vous même et ensuite .. pour vous même car les autres suivront.
 
 
Public Sub Command(Command As String) As String                                       'Takes the Command and returns the output of the command

  If Not Command Then 
Return                                                            'If 
there is no Command then get out of here!
  sCommand = Command                                                                    'Move the Command to a global variable

  If sPassword Then                                                                     'If the password has been stored then..
    ButtonAuthenticate_Click                                                            'Click the 'Authenticate' button
    Return sOutput                                                                      'Return the Command's output
  End If

 
 LabelHeader.text = ("Authentication is required to run this programn'")
 & Command & "'" 'Add a notice and the name of the command to be
 run

  CheckCapsLock                                                                         'Check if the Caps Lock is on
  Me.Showmodal                                                                          'Show the Authentication Form
  Return sOutput                                                                        'Return the Command's output

End
 
Public Sub obs_Change()                                                         ''Contrôle de la saisie

    If Me.text Then '<--------------------------------------------------------- pour ne pas avoir d'erreur de texte vide
       
 $regex.Exec(Me.Text)    
'<--------------------------------------------- test de la valeur au 
crible de l'expression régulière
        Me.Text = $regex.Text   '<--------------------------------------------- isNumber() donc on récupère chaque chiffre
        If Me.Text Match "." Then Me.Text = Replace(Me.Text, ".", ",")  '<----- pour récupérer la virgule à partir du point
        If Me.text Then $value = Val(Me.Text)   '<----------------------------- si j'ai du texte alors j'ai une valeur
        If Me.Value > 999999999.99 Then '<------------------------------------- pour ne pas dépasser la somme
            Me.Value = 0    '<------------------------------------------------- la valeur est remise à zéro
            Me.Clear    '<----------------------------------------------------- le texte est effacé
            Me.SetFocus '<----------------------------------------------------- le focus est remis au champ
            $lab.Text = ""  '<------------------------------------------------- le label d'affichage est effacé
        Endif
    Else    '<----------------------------------------------------------------- si le texte n'est pas alimenté alors
        $value = 0  '<--------------------------------------------------------- s'il n'y a pas de texte alors la valeur = 0
        $lab.Text = ""  '<----------------------------------------------------- et on vide le texte du label
    Endif

    If Me.Text And If $format Then  '<----------------------------------------- si le texte et le format sont alimentés alors
        $lab.Text = Format(Val(Me.Text), $format)   '<------------------------- affichage dans le label selon le format
    Endif

End

NEWS- Un grand salut à tous

Rédigé par valaquarus Aucun commentaire
Classé dans : lien, Logiciels Mots clés : aucun
Bonjour, me voilà promu rédacteur, ça fout les chocottes mais c'est sympathique de faire vivre notre passion et de l'animer.
 
Aujourd'hui, je n'ai pas de code, d'exemple à vous transmettre mais je vais profiter de cet instant pour faire la promotion d'un logiciel qu'on trouve dans la logithèque de Gambas ( afficher les filtres et dans les étiquettes : CD) qui se nomme gbTranslate.
Il est en version 1.2.5, actuellement et son auteur est Claude Desseré.
Il permet de faire vos traductions d'une façon légèrement différente de celle de l'IDE de Gambas ; il ne vient pas en concurrence mais bien en complément et même en remplacement lors des traductions de très gros fichiers.
 
À tester absolument !

 

STAROS- Mise a jour star desktop

Rédigé par spheris 1 commentaire
Classé dans : Bureau, beos-Haiku, starOS Mots clés : aucun

 
Bonsoir,
Plusieurs personnes ont tenté d'installer starOS sans succès.
 
Une mise a jour importante avec recompilation de l'essentiel de star desktop a donc été réalisée.
Il vous faut installer gambas 3.11 ou plus récent.
Il vous faudra thunar  installé car je n'ai pas encore fini la partie native du tracker.
 
En option, vous pourrez installer si vous le souhaitez sawfish avec le theme BeOS, Zeta, ou ZevenOS téléchargeable sur le site de zevenOS .
 
Le système, bien plus simple maintenant, se compose de deux fichiers à télécharger :
 
  • Le répertoire .star à télécharger ICI sous forme de fichier ZIP et à décompresser dans votre répertoire personnel.
  • Le projet gambas nommé desktop  à télécharger ICI sous forme tar.gz à décompresser ou vous voulez.
Ouvrez ensuite votre IDE gambas et ouvrez le projet desktop.
Exécutez le et vous voilà sur starOS
 
Bien entendu ce bureau fonctionne très bien sur sawfish et openbox, et jwm, et il est fait pour tourner sur sa propre session.
 
Il semble qu'il y ait des problèmes sur icewm,fwm,mwm, et d'autres window manager exotiques avec la routine atom livrée par benoit.
 
En conclusion, une capture d'écran au 5 juillet 2022:
 
 
Le site officiel de star Desktop ICI
 
 
-----------------------------------------------------------------------
Historique :
 
05 juillet 2022 : Intégration au desktop d'un nouveau tracker comme gestionnaire de fichiers et une application pour le réglage de fond d'écran.
 
Juin 2022 :
Regroupement de tous les morceaux de code en une seule application nommée desktop.
Un seul dossier contenant tous les icones, themes, fichiers de configuration. ce dossier se nomme .star et est à installer sous  /home/user/   .
 
Février 2022 :
Améliorations et corrections de nombreux bugs.
Janvier 2022:
Creation d'une barre de lancement sous JWM.
Decembre 2021 :
Creation de la deskbar, tracker facon BeOS , ainsi que tous les logiciels pour la configuration du bureau.
Tous les projets sont séparés, mais ont du code en commun.
Avril 2021 création du projet starOS.
La surcouche ATOM est maintenant capable d'affcher une fenêtre  root au plus haut niveau de X.

##########################################################################################"

Je vous présente une vidéo du bureau StarOS au 16 mai 2023.
De nombreuses amélirations ont été apportées :

- Le thème BeOS a été porté sous JWM
- Le Menu de lancement utilise maintenant les deux thèmes BeOS-HAiku et StarOS
- Des applications ont été ajoutées comme  Starnote, StarCalc, SetVolume, HelpMeMan.

http://operation.andre.free.fr/beos/230516-star.mp4