Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#2301 Le 12/12/2010, à 22:28

Elzen

Re : /* Topic des codeurs couche-tard [2] */

Okay, fonction corrigée. Maintenant, ça me donne ça :

void show_result(GtkWidget *widget, gpointer data) {
    GtkTextIter start, end;
    GtkTextBuffer* buffer;
    GtkWidget* dialog;
    char* result;
    char* text;
    
    buffer = gtk_text_view_get_buffer(screen);
    gtk_text_buffer_get_start_iter(buffer, &start);
    gtk_text_buffer_get_end_iter(buffer, &end);
    text = (char*) gtk_text_buffer_get_text(buffer, &start, &end, 1);
    
    yyout = tmpfile();
    yyin = tmpfile();
    
    fprintf(yyin, "%s", text);
    fseek(yyin, 0, SEEK_SET);
    yyparse();
    fseek(yyout, 0, SEEK_END);
    result = malloc(ftell(yyout)*sizeof(char));
    fseek(yyout, 0, SEEK_SET);
    fscanf(yyout, "%s", result);
    
    dialog = gtk_message_dialog_new(win,
        GTK_DIALOG_DESTROY_WITH_PARENT,
        GTK_MESSAGE_OTHER, GTK_BUTTONS_NONE,
        "%s", result
    );
    gtk_window_set_title((GtkWindow*) dialog, "Résultat");
    gtk_window_set_icon((GtkWindow*) dialog, gtk_icon_theme_load_icon(
        gtk_icon_theme_get_default(), "gcalctool",
        48, GTK_ICON_LOOKUP_USE_BUILTIN, NULL
    ));
    gtk_dialog_run((GtkDialog*) dialog);
    
    g_free(text);
    free(result);
}

Ça ne warne plus à la compil (enfin, sauf le yyunput et le input de flex qui sont définis mais pas utilisés, mais ça ça ne dépend pas de moi), mais par contre, ça me sort
(calc:8178): Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text()
à l'exécution, et ça m'affiche une chaîne de caractères incohérente dans le Dialog.

Bon, y a quand même du progrès big_smile

Dernière modification par ArkSeth (Le 12/12/2010, à 22:30)

Hors ligne

#2302 Le 12/12/2010, à 22:33

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

Regarde ça, je crois que c'est ce qu'il faut utiliser.
Genre

gchar* sUtf8 = g_locale_to_utf8("Texte à afficher", -1, NULL, NULL, NULL);

Et tu passes cette chaîne là où ça pose problème.

Dernière modification par grim7reaper (Le 12/12/2010, à 22:35)

Hors ligne

#2303 Le 12/12/2010, à 22:46

Elzen

Re : /* Topic des codeurs couche-tard [2] */

Ouais, le temps que tu édites, j'avais déduis que ça devait ressembler à ça aussi.

Donc
result = (char*) g_locale_to_utf8(result, -1, NULL, NULL, NULL);
après la lecture de result dans yyout, et pour être sûr,
text = (char*) g_locale_from_utf8(text, -1, NULL, NULL, NULL);
juste avant son écriture dans yyin.

Par contre, le changement de yyout n'a pas l'air d'être pris en compte par flex, en fait :s Il me sort le résultat sur la sortie standard et j'ai (null) qui s'affiche dans le Dialog hmm

Enfin, c'est déjà un début. J'pourrai demander des précisions à mon prof de compil' demain.
Merci beaucoup pour ça wink

Dernière modification par ArkSeth (Le 12/12/2010, à 22:48)

Hors ligne

#2304 Le 12/12/2010, à 22:58

Pylades

Re : /* Topic des codeurs couche-tard [2] */

C'est officiel, les autotools c'est vraiment le mal absolu. Encore un configure qui m'envoie chier parce qu'il ne trouve pas libfm-gtk alors que j'ai libfm-gtk0.

Mais qu'est-il est passé par la tête de RMS lorsqu'il a imaginé ces horreurs ?


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2305 Le 12/12/2010, à 23:41

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

Pylade a écrit :

Mais qu'est-il est passé par la tête de RMS lorsqu'il a imaginé ces horreurs ?

Nul n'est parfait.

D'ailleurs, le Hurd non plus c'est pas vraiment une réussite…

Hors ligne

#2306 Le 12/12/2010, à 23:43

gnuuat

Re : /* Topic des codeurs couche-tard [2] */

No one expects the spanish inquisition!


Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !

Hors ligne

#2307 Le 12/12/2010, à 23:43

helly

Re : /* Topic des codeurs couche-tard [2] */

Le tdcct a un nouvel élan, c'est cool !
Jvous aiderai peut être une fois la période critique passée.
edit :.

Dernière modification par helly (Le 13/12/2010, à 00:04)


Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.

Hors ligne

#2308 Le 12/12/2010, à 23:47

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

helly a écrit :

Le tdcct a un nouvel élan, c'est cool !

Yep, c'est cool.
Heureusement que je suis revenu, vous l'avez presque laissé mourir en mon absence tongue

Jvous aiderai peut être une fois la période critique passée.

Il y a intérêt, on compte sur toi wink.

Hors ligne

#2309 Le 12/12/2010, à 23:51

Elzen

Re : /* Topic des codeurs couche-tard [2] */

grim7reaper a écrit :

Heureusement que je suis revenu, vous l'avez presque laissé mourir en mon absence tongue

Ouais, enfin, c'est toi qui réponds, mais le regain d'activité est surtout dû au fait que j'me suis mis au C et que j'y arrive pas tout seul tongue

Hors ligne

#2310 Le 12/12/2010, à 23:56

Pylades

Re : /* Topic des codeurs couche-tard [2] */

Plop !

#!/usr/bin/env python3

import os, sys

def unknown_mime(fname):
    if os.path.exists(fname):
        print('# unknown mime type of file "' + fname + '"')
    else:
        print('# file "' + fname + '" does not exist')

def open_file(fname):
    ''' not coded yet '''

def choose_action(mime):
    ''' This function chooses which function to invoke according to given
    mime type '''
    if mime == None:
        return unknown_mime
    elif mime == 'inode/directory':
        return os.chdir
    else:
        return open_file

if __name__ == '__main__':

    try:
        while True:
            print('clfb: ' + os.getcwd().split('/')[-1] + '> ', end='')
            try:
                fname = input()
            except EOFError:
                break
            #FIXME!
            #choose_action(get_mime(fname))(fname)
            choose_action(None)(fname)
        del fname
        print()

    except KeyboardInterrupt:
        print()
        sys.exit(130)

En effet, cette journée est exceptionnelle, mais j'attendais les graphiques pour faire la remarque. wink


Édit : bordel de merde de FluxBB 1.4, il a tout cassé mon code, qui plante maintenant à l'exécution… roll
Bon, c'est réparé, mais ça ne me plaît pas trop, comme comportement…

Dernière modification par Pylade (Le 13/12/2010, à 00:01)


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2311 Le 12/12/2010, à 23:56

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

@ArkSeth : Ouais mais si j'étais pas là, qui répondrai ? tongue

Je crois que Pylade a pas trop eu de réponse sur le C en mon absence ^_^


Pylade a écrit :

En effet, cette journée est exceptionnelle, mais j'attendais les graphiques pour faire la remarque. wink

C'est vrai que ça fait longtemps qu'on avait pas fait 5 pages en un jour. On se croirait revenu au TdCCT[0]

Dernière modification par grim7reaper (Le 12/12/2010, à 23:58)

Hors ligne

#2312 Le 13/12/2010, à 00:00

Elzen

Re : /* Topic des codeurs couche-tard [2] */

Ouais mais d'un autre côté, si je posais pas de questions, tu répondrais pas tout seul tongue

M'enfin, voilà, quoi, vive le TdCCT big_smile

(@Pylade : c'est compatible python2 ? J'ai envie de tester, mais j'ai la flemme d'installer python3, surtout à une heure où vue l'heure à laquelle je commence demain, je devrais aller me coucher)

Dernière modification par ArkSeth (Le 13/12/2010, à 00:01)

Hors ligne

#2313 Le 13/12/2010, à 00:03

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

ArkSeth a écrit :

Ouais mais d'un autre côté, si je posais pas de questions, tu répondrais pas tout seul tongue

Ouais, ça se tiens big_smile

M'enfin, voilà, quoi, vive le TdCCT big_smile

+42

Sinon, j'ai une idée (ouais des fois ça m'arrive…). Comme il y avait eu le « concours » d'interpréteur brainfuck (bon c'était pas vraiment un concours, mais tout le monde y allait de sa petite implémentation), on pourrait faire la même chose avec le « Command Line File Browser ».
Nan ?
Bon par contre, faudrait qu'ArkSeth nous ponde des specs un peu plus précise mais ça pourrait être sympa je pense.

Hors ligne

#2314 Le 13/12/2010, à 00:05

Pylades

Re : /* Topic des codeurs couche-tard [2] */

Oui, c'est compatible, sauf peut-être pour print, mais ça tu peux facilement le modifier toi-même.
Et je crois d'ailleurs qu'il va falloir migrer ça en Python 2, vu que python-magic n'est pas disponible pour Python 3… sad

Dernière modification par Pylade (Le 13/12/2010, à 00:14)


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2315 Le 13/12/2010, à 00:05

Sir Na Kraïou

Re : /* Topic des codeurs couche-tard [2] */

mad


Descendant de Charlemagne et de LUCA.
Bleu, en l'hommage d'un truc bleu. :'(
C'est pas du bleu.
C'est pas le lac de Genève, c'est le Lac Léman.

Hors ligne

#2316 Le 13/12/2010, à 00:06

helly

Re : /* Topic des codeurs couche-tard [2] */

@grim :
Ouais bonne idée !
C'est juste un niveau un peu au dessus du brainfuckeur quand même…

Dernière modification par helly (Le 13/12/2010, à 00:06)


Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.

Hors ligne

#2317 Le 13/12/2010, à 00:07

Pylades

Re : /* Topic des codeurs couche-tard [2] */

Р☢w ! a écrit :

mad

Tiens, on a même rameuté Р☢w !, du coup… ^^


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2318 Le 13/12/2010, à 00:09

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

Pylade a écrit :

Et je crois qu'il va d'ailleurs migrer ça en Python 2, vu que python-magic n'est pas disponible pour Python 3… sad

Quoi !? Toi, utiliser Python 2 !
On aura tout vu lol
Tu ne préfères pas changer de langage ^_^  ?

helly a écrit :

@grim :
Ouais bonne idée !
C'est juste un niveau un peu au dessus du brainfuckeur quand même…

Oui c'est vrai, mais faut bien essayer d'évoluer. Ça fait un peu plus « challenge » comme ça smile.
Plus on aura du mal, plus ça fera d'activité sur le TdCCT en plus big_smile

Dernière modification par grim7reaper (Le 13/12/2010, à 00:12)

Hors ligne

#2319 Le 13/12/2010, à 00:16

Pylades

Re : /* Topic des codeurs couche-tard [2] */

grim7reaper a écrit :
Pylade a écrit :

Et je crois qu'il va d'ailleurs migrer ça en Python 2, vu que python-magic n'est pas disponible pour Python 3… sad

Quoi !? Toi, utiliser Python 2 !
On aura tout vu lol
Tu ne préfères pas changer de langage ^_^  ?

Je pense, oui : je viens de voir que cette bibliothèque est disponible en C. big_smile


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2320 Le 13/12/2010, à 00:20

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

@Pylade : tout (ou presque) est dispo en C cool.
Beaucoup de modules Python ne sont que des bindings sur des bibliothèques C.

Hors ligne

#2321 Le 13/12/2010, à 00:22

Elzen

Re : /* Topic des codeurs couche-tard [2] */

grim7reaper a écrit :

Bon par contre, faudrait qu'ArkSeth nous ponde des specs un peu plus précise mais ça pourrait être sympa je pense.

C'est envisageable ^^

Niveau spec, je crois que j'ai à peu près mis tout ce que j'imagine sans trop y avoir réfléchis dans l'exemple d'utilisation que j'avais fait plus haut… pour résumer en français et avec quelques petites idées de plus :

– fonctionne en ligne de commande de façon interactive, à la manière d'un shell (pas de ncurse, pas de graphique, juste un prompt et le résultat de ce que l'utilisateur demande)
– toute « ligne de commande » valide commence par un nom de fichier. L'auto-complétion permet de retrouver les fichiers existants.
– lorsque la « commande » ne contient que le nom du fichier :
    → si ce fichier correspond au répertoire de travail actuel, son contenu est listé.
    → si c'est un autre répertoire, il devient le nouveau répertoire de travail.
    → sinon, le fichier est ouvert avec le logiciel par défaut (défini dans la configuration pour son type mime)
– si un second nom de fichier est donné après le premier, on renomme le fichier de départ en celui d'arrivée.
– si un second nom de fichier est donné, suivi du caractère "+", on copie le fichier de départ en celui d'arrivée.
– si la chaîne donnée après le nom correspond à un motif de lecture de droits ("u?", "ugo?"…), les droits correspondants sont affichés.
– si la chaîne donnée après le nom correspond à un motif de modification de droits ("u+x"…), les droits correspondants sont modifiés.
– si l'une de ces opérations, quelle qu'elle soit, doit écraser ou supprimer un fichier existant, une confirmation est demandée.

À voir ensuite comment spécifier les autres opérations utiles, comme supprimer un fichier, créer un lien (symbolique ou non), afficher la taille ou la date de dernière modif d'un fichier…
(On peut même envisager de définir deux logiciels dans la conf' pour un type mime donné : un visualiser et un éditeur. Auquel cas il faudrait aussi prévoir une indication pour dire avec lequel des deux doit s'ouvrir le fichier)

Deux fonctionnalités non-indispensables, mais pouvant s'avérer agréables :
– afficher sur la sortie standard, avant le résultat éventuel, la ligne shell correspondant à la commande demandée (précédée éventuellement d'un "#" ou autre caractère indicateur)
– faire en sorte que dans le shell parent, lancer clfb avec une ligne de commande clfb valide en paramètre ne démarre pas le mode interactif, mais effectue simplement cette commande.

Qu'en pensez-vous ? Des avis ? Des idées ?

Dernière modification par ArkSeth (Le 13/12/2010, à 00:24)

Hors ligne

#2322 Le 13/12/2010, à 00:23

Pylades

Re : /* Topic des codeurs couche-tard [2] */

Et puis maintenant qu'ArkSeth apprend le C, ce n'est plus un problème de faire ça en C.


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2323 Le 13/12/2010, à 00:27

Pylades

Re : /* Topic des codeurs couche-tard [2] */

@ArkSeth : c'est OK, et j'implémente déjà quelques trucs.


Pour supprimer un fichier :

~> filename -

?


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2324 Le 13/12/2010, à 00:33

Elzen

Re : /* Topic des codeurs couche-tard [2] */

Si quelqu'un m'en sort une version en Python qui me convienne, je l'intègre à Touhy ^^

(Touhy est entièrement en python, puisque l'un des objectifs est de pouvoir fonctionner sur n'importe quel environnement GNU/Linux sans avoir à recompiler des trucs (et aussi parce que quand j'ai commencé à coder ça, c'était le seul langage dans lequel je pouvais faire quelque chose d'à peu près correct))

Mais sinon, le C ne me dérange effectivement pas (ça me fait penser que je voulais installer un dépôt deb sur fadrienn, aussi… j'essayerai peut-être de voir ça, un de ces jours, quand j'aurai des trucs à mettre dedans), et c'est même plus pratique pour certains trucs (genre pour killer l'appli quand elle reste coincée parce qu'elle essaye de lire un truc sur du sshfs et que le réseau est en carton, par exemple, tu peux utiliser killall directement au lieu de devoir chercher le numéro du processus).

Et sur ce, rédiger le début de la spec a pris plus de temps que ce que je pensais, donc vu que je bosse demain, je vais filer dormir.

Edit :

Pylade a écrit :

Pour supprimer un fichier :

~> filename -

?

Ça a l'air d'être le plus simple, ouais.

Dernière modification par ArkSeth (Le 13/12/2010, à 00:34)

Hors ligne

#2325 Le 13/12/2010, à 00:39

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

ArkSeth a écrit :

    → si ce fichier correspond au répertoire de travail actuel, son contenu est listé.

./ ça compte ?

→ si c'est un autre répertoire, il devient le nouveau répertoire de travail.

Même question mais pour ../ ?

→ sinon, le fichier est ouvert avec le logiciel par défaut (défini dans la configuration pour son type mime)

Fichier de conf de clfb ou on se base sur la norme xdg de Freedesktop ?
Si c'est un fichier de conf, on pourrai fixer sa forme pour être un peu homogène (ou pas, à vous de voir).

(On peut même envisager de définir deux logiciels dans la conf' pour un type mime donné : un visualiser et un éditeur. Auquel cas il faudrait aussi prévoir une indication pour dire avec lequel des deux doit s'ouvrir le fichier)

Je ne sais pas si c'est très utile.
À voir…

– afficher sur la sortie standard, avant le résultat éventuel, la ligne shell correspondant à la commande demandée (précédée éventuellement d'un "#" ou autre caractère indicateur)

Ça risque d'être lourd, faut au moins que ça soit désactivable via une option quand on lance clfb.
Par contre, ça risque d'être utile en mode debug.

– faire en sorte que dans le shell parent, lancer clfb avec une ligne de commande clfb valide en paramètre ne démarre pas le mode interactif, mais effectue simplement cette commande.

Oui, ça me paraît important comme fonctionnalité.

Qu'en pensez-vous ? Des avis ? Des idées ?

Ça me semble être une bonne base smile

Je plussoie le

filename -

Bon, je ne sais pas encore dans quelle langage je le tente (C, C++, Perl ou Haskell) hmm

Dernière modification par grim7reaper (Le 13/12/2010, à 00:40)

Hors ligne