Référence du fichier Projet.h

Ce graphe montre quels fichiers incluent directement ou indirectement ce fichier:

Aller au code source de ce fichier.

Macros

#define BUFSIZE   4096

Fonctions

void Projet_Nouveau ()
void Projet_Choisir ()
void Projet_Ouvrir (gchar *chem)
void Projet_Enregistrer ()
void Projet_Generate_Makefile ()
void Creer_Pipe (gchar *str)
void Projet_Executer ()
void Projet_CompilExec ()
void Projet_StopExec ()
void Projet_Clean ()


Documentation des macros

#define BUFSIZE   4096
 

Référencé par Creer_Pipe().


Documentation des fonctions

void Creer_Pipe gchar *  str  ) 
 

Définition à la ligne 303 du fichier Projet.h.

Références BUFSIZE, et Liste_Add_Msg().

Référencé par Projet_Compiler(), et Projet_Executer().

00304 {
00305 /*
00306   gint   exit_status;
00307   gchar  *sout = NULL;
00308   gchar  *serr = NULL;
00309   GError *err  = NULL;
00310   gchar **tab;
00311   gint n=1;
00312 //g_print("str: %s", str);
00313   if (g_spawn_command_line_sync ("ls", &sout, &serr, &exit_status, &err))
00314   {
00315    if (exit_status==0)
00316    {
00317 g_print("%s", sout);
00318      tab = g_strsplit (sout, "\n", 0);
00319      while (tab[n-1])
00320      {
00321       Liste_Add_Msg("%s", tab[n-1]);
00322       n++;
00323      }
00324    }
00325    else Liste_Add_Msg("Exit code: %d", exit_status);
00326   }
00327 */
00328 
00329   #define BUFSIZE 4096
00330   FILE * pip;
00331   gchar ligne[BUFSIZE];
00332   gchar   buf[BUFSIZE];
00333   gint n=1, x=0, i;
00334 
00335   //gtk_list_store_clear(GTK_LIST_STORE(model));
00336   pip = popen(str, "r");
00337   if (!pip)
00338      Liste_Add_Msg ("Probleme de pipe");
00339   else
00340   {
00341    while(n)
00342    {
00343      n = fread (buf, 1, BUFSIZE, pip);
00344      for (i=0; i<=n; i++) // Splitte le retour: 1 ligne = 1 entrée.
00345      {
00346       if (buf[i]==0XA || i==n)
00347       {
00348         if (x)
00349         {
00350           Liste_Add_Msg (g_locale_to_utf8 (ligne, x, NULL, NULL, NULL));
00351           x=0;
00352         }
00353       }
00354       else ligne[x++]=buf[i];
00355      }
00356    }
00357 
00358    // ferme le pipe et récupère son code de sortie
00359    i = pclose(pip);
00360    if (i==0)
00361      str = g_strdup("OK");
00362    else
00363      str = g_strdup_printf("Exit code: %d", i);
00364    Liste_Add_Msg(str);
00365    g_free(str);
00366   }
00367 }

Voici le graphe d'appel pour cette fonction:

void Projet_Choisir  ) 
 

Définition à la ligne 16 du fichier Projet.h.

Références DLG_Open(), et Projet_Ouvrir().

Référencé par Creer_Menu(), et Creer_ToolBar().

00017 {
00018   gchar *chem = DLG_Open(TRUE);
00019   if (strlen(chem)) Projet_Ouvrir(chem);
00020   g_free(chem);
00021 }

Voici le graphe d'appel pour cette fonction:

void Projet_Clean  ) 
 

Définition à la ligne 397 du fichier Projet.h.

Références idACTIF, idOngletACTIF, NB, NBfichiersOuverts, ProjetARGS, ProjetCHEMIN, ProjetEXEname, ProjetINCS, ProjetLIBS, ProjetNOM, ProjetNOMssExt, ProjetOPT, et ProjetTYPE.

Référencé par Creer_Menu(), Creer_ToolBar(), Projet_Nouveau(), et Projet_Ouvrir().

00398 {
00399   guint i;
00400 
00401   for (i=0; i<NB; i++)
00402   {
00403     g_free(nom[i]);
00404     g_free(chemin[i]);
00405     ext[i]=0;
00406     estModifie[i]=0;
00407     if (IDOnglet[i]>-1)
00408       gtk_notebook_remove_page (GTK_NOTEBOOK(Onglets), 0);
00409     IDOnglet[i]=-1;
00410   }
00411 
00412   if (ProjetNOM)      g_free(ProjetNOM);        ProjetNOM=NULL;
00413   if (ProjetNOMssExt) g_free(ProjetNOMssExt);   ProjetNOMssExt=NULL;
00414   if (ProjetCHEMIN)   g_free(ProjetCHEMIN);     ProjetCHEMIN=NULL;
00415   if (ProjetOPT)      g_free(ProjetOPT);        ProjetOPT=NULL;
00416   if (ProjetARGS)     g_free(ProjetARGS);       ProjetARGS=NULL;
00417   if (ProjetINCS)     g_free(ProjetINCS);       ProjetINCS=NULL;
00418   if (ProjetLIBS)     g_free(ProjetLIBS);       ProjetLIBS=NULL;
00419   if (ProjetEXEname)  g_free(ProjetEXEname);    ProjetEXEname=NULL;
00420 
00421   NB = NBfichiersOuverts = 0;
00422   idACTIF = idOngletACTIF = ProjetTYPE = -1;
00423 
00424   gtk_tree_store_clear(pTreeStore);
00425   gtk_list_store_clear(GTK_LIST_STORE(model));
00426 
00427 //Lister_Tableau();
00428 }

void Projet_CompilExec  ) 
 

Définition à la ligne 382 du fichier Projet.h.

Références Projet_Compiler(), et Projet_Executer().

Référencé par Creer_Menu(), et Creer_ToolBar().

00383 {
00384   Projet_Compiler();
00385   Projet_Executer();
00386 }

Voici le graphe d'appel pour cette fonction:

void Projet_Enregistrer  ) 
 

Définition à la ligne 135 du fichier Projet.h.

Références Fichier_Enregistrer_Tous_Les_Fichier(), Liste_Add_Msg(), NB, ProjetARGS, ProjetEXEname, ProjetICON, ProjetINCS, ProjetLIBS, ProjetNOM, ProjetOPT, et ProjetTYPE.

Référencé par Creer_Menu(), et Creer_ToolBar().

00136 {
00137   Fichier_Enregistrer_Tous_Les_Fichier();
00138 
00139   //Ecraser fichier projet
00140   FILE *pF;
00141   pF = fopen(ProjetNOM,"w");
00142 
00143   fprintf(pF, "TYPE:%d\n", ProjetTYPE);
00144   fprintf(pF, "EXE:%s\n", ProjetEXEname);
00145   if (ProjetICON) fprintf(pF, "ICON:%s\n", ProjetICON);
00146   if (ProjetOPT)  fprintf(pF, "OPT:%s\n" , ProjetOPT);
00147   if (ProjetARGS) fprintf(pF, "ARGS:%s\n", ProjetARGS);
00148   if (ProjetINCS) fprintf(pF, "INCS:%s\n", ProjetINCS);
00149   if (ProjetLIBS) fprintf(pF, "LIBS:%s\n", ProjetLIBS);
00150   fprintf(pF, "\n");
00151 
00152   gshort n;
00153   for (n=1; n<NB; n++)
00154    if (ext[n]==-1) fprintf(pF, "\nDOSSIER:%s\n", chemin[n]);
00155    else            fprintf(pF, "FILE:%s\n"   , chemin[n]);
00156 
00157 /*
00158 FILE:src/EdBx.c
00159 
00160 DOSSIER:Editor
00161 FILE:src/Globals.h
00162 */
00163  fclose(pF);
00164   Liste_Add_Msg ("Projet enregistré.");
00165 }

Voici le graphe d'appel pour cette fonction:

void Projet_Executer  ) 
 

Définition à la ligne 371 du fichier Projet.h.

Références Creer_Pipe(), Liste_Add_Msg(), et ProjetEXEname.

Référencé par Creer_Menu(), Creer_ToolBar(), et Projet_CompilExec().

00372 {
00373   gchar *S=NULL;
00374   if (g_path_is_absolute(ProjetEXEname)) S = g_strdup(ProjetEXEname);
00375   else               S = g_strdup_printf("./%s 2>&1", ProjetEXEname);
00376   Liste_Add_Msg ("Exécution de %s", S);
00377   Creer_Pipe(S);
00378 }

Voici le graphe d'appel pour cette fonction:

void Projet_Generate_Makefile  ) 
 

Définition à la ligne 211 du fichier Projet.h.

Références AppCOMPILER, AppLINKER, EXTs, getNomSansExtension(), Liste_Add_Msg(), NB, ProjetEXEname, ProjetINCS, ProjetLIBS, ProjetOPT, et ProjetTYPE.

Référencé par Creer_Menu(), et Creer_ToolBar().

00212 {
00213  gshort n,b=0;
00214  gchar  *noms[100];
00215  //gchar *chems[100];
00216  FILE *pF;
00217  gint   exit_status;
00218  gchar  *serr = NULL;
00219  GError *err  = NULL;
00220  gchar *INCS = NULL;
00221  gchar *LIBS = NULL;
00222  gchar *EXEname = g_path_get_basename(ProjetEXEname);
00223 
00224  //Identify source files list
00225  for (n=0; n<NB; n++)
00226  {
00227    if (ext[n]==1) noms[b++] = g_strdup(getNomSansExtension(nom[n]));
00228  }
00229 
00230  INCS = g_path_get_dirname (ProjetEXEname);
00231  if (INCS) INCS = g_strdup_printf("%s/makefile", INCS);
00232 
00233  pF = fopen(INCS, "w");
00234  if (!pF) return;
00235 
00236  fprintf(pF, "# Generated by EdBx\n\n");
00237  fprintf(pF, "CC=%s\n", AppCOMPILER);
00238  fprintf(pF, "OPT="); if (ProjetOPT) fprintf(pF, "%s", ProjetOPT);
00239  fprintf(pF, "\nLINKER=%s\n\n",  AppLINKER);
00240 
00241  // INCS ---------------------
00242  fprintf(pF, "INCS=");
00243  if (ProjetINCS) fprintf(pF, "%s", ProjetINCS);
00244 
00245  if (ProjetTYPE==1) // EXE GTK
00246  {
00247 
00248    if (g_spawn_command_line_sync ("pkg-config --cflags gtk+-2.0",
00249                                         &INCS, &serr, &exit_status, &err))
00250    {
00251      if (exit_status!=0)  Liste_Add_Msg(
00252                 "Generate_Makefile: pkg-config Exit code: %d.\n", exit_status);
00253      else if (INCS) fprintf(pF, "%s", INCS);
00254    }
00255    else Liste_Add_Msg("Generate_Makefile: g_spawn_command_line_sync()"
00256                         " retourne FALSE!\n");
00257  }
00258 
00259 
00260  // LIBS ----------------------
00261  fprintf(pF, "\n\nLIBS=");
00262  if (ProjetLIBS) fprintf(pF, "%s", ProjetLIBS);
00263  if (ProjetTYPE==1) // EXE GTK
00264  {
00265    if (g_spawn_command_line_sync ("pkg-config --libs gtk+-2.0",
00266                                         &LIBS, &serr, &exit_status, &err))
00267    {
00268      if (exit_status!=0)  Liste_Add_Msg(
00269                 "Generate_Makefile: pkg-config Exit code: %d.\n", exit_status);
00270      else if (LIBS) fprintf(pF, "%s", LIBS);
00271    }
00272    else Liste_Add_Msg("Generate_Makefile: g_spawn_command_line_sync()"
00273                         " retourne FALSE!\n");
00274  }
00275 
00276 
00277 
00278  fprintf(pF, "\n\n%s:", EXEname);
00279  for (n=0; n<b; n++) fprintf(pF, " %s.o", noms[n]);
00280 
00281  fprintf(pF, "\n\t${LINKER} ${OPT} ${LIBS}");
00282  for (n=0; n<b; n++) fprintf(pF, " %s.o", noms[n]);
00283  fprintf(pF, " -o %s\n\n", EXEname);
00284 
00285  for (n=0; n<b; n++)
00286  {
00287    fprintf(pF, "%s.o: %s.%s\n", noms[n], noms[n], EXTs[1]);
00288 
00289    if (g_strcasecmp(AppCOMPILER,"gcc")==0)
00290      fprintf(pF, "\t${CC} ${OPT} ${INCS} -c %s.c -o %s.o\n\n", noms[n], noms[n]);
00291    else if (g_strcasecmp(AppCOMPILER,"fasm")==0)
00292      fprintf(pF, "\t${CC} ${OPT} ${INCS} %s.%s %s.o\n\n", noms[n], EXTs[1], noms[n]);
00293 
00294    g_free(noms[n]);
00295  }
00296 
00297  fclose(pF);
00298  Liste_Add_Msg("Makefile créé.");
00299 }

Voici le graphe d'appel pour cette fonction:

void Projet_Nouveau  ) 
 

Définition à la ligne 4 du fichier Projet.h.

Références Ajouter_TreeviewItem(), AppICONs, Projet_Clean(), ProjetARGS, ProjetNOMssExt, et ProjetTYPE.

Référencé par Creer_Menu(), et Creer_ToolBar().

00005 {
00006   Projet_Clean();
00007 
00008   ProjetTYPE = 0;
00009   ProjetNOMssExt = g_strdup("Projet");
00010   ProjetARGS     = g_strdup("-Wall -s");
00011   iterProj = Ajouter_TreeviewItem(NULL,ProjetNOMssExt,NULL,AppICONs[1]);
00012 }

Voici le graphe d'appel pour cette fonction:

void Projet_Ouvrir gchar *  chem  ) 
 

Définition à la ligne 25 du fichier Projet.h.

Références Ajouter_ELEMENT(), Ajouter_TreeviewItem(), App_Lister_Tableau(), AppICONs, AppUNDOLEVELS, DLG_error(), getNomSansExtension(), NB, Projet_Clean(), ProjetARGS, ProjetCHEMIN, ProjetEXEname, ProjetICON, ProjetINCS, ProjetLIBS, ProjetNOM, ProjetNOMssExt, ProjetOPT, ProjetTYPE, et ProjetUseMAKEFILE.

Référencé par main(), et Projet_Choisir().

00026 {
00027   FILE          *pF=NULL;
00028   gchar         c, mot[200], *tmp=NULL;
00029   guchar        flag=0, b=0;
00030   GtkTreeIter   pere;
00031 
00032   g_print("Ouverture projet : %s\n", chem);
00033   if ( !(pF = fopen (chem,"r")) )
00034   {
00035      DLG_error (NULL, "Impossible d'ouvrir %s", chem);
00036      return;
00037   }
00038 
00039   // cleanup de tous les onglets
00040   Projet_Clean();
00041   memset(mot,0,200);
00042 
00043   // récupère le nom du projet ouvert
00044   ProjetNOM = g_locale_to_utf8 (g_path_get_basename(chem), -1, NULL, NULL, NULL);
00045   // en déduit nom sans extension
00046   ProjetNOMssExt = getNomSansExtension(ProjetNOM);
00047   // récupère le chemin complet du projet
00048   ProjetCHEMIN = g_locale_to_utf8 (chem, -1, NULL, NULL, NULL);
00049   if (chem) g_free(chem);
00050 
00051   //(1) Insérer nouvelle entrée dans le tableau
00052   Ajouter_ELEMENT(ProjetNOM, ProjetCHEMIN, -1);
00053   //(2) Insérer nouvelle entrée dans le treeview
00054   iterProj = Ajouter_TreeviewItem(NULL, ProjetNOMssExt, ProjetCHEMIN, AppICONs[1]);
00055   pere = iterProj; // Pour projet sans sous-dossier :)
00056 
00057   // parcourt le fichier pour insérer les autres entrées au TreeView
00058   while ((c = fgetc (pF)) != EOF)
00059   {
00060    if (c == ':')
00061    {
00062      if      (g_strcasecmp(mot, "TYPE"      )==0) flag=1;
00063      else if (g_strcasecmp(mot, "OPT"       )==0) flag=2;
00064      else if (g_strcasecmp(mot, "DOSSIER"   )==0) flag=3;
00065      else if (g_strcasecmp(mot, "FILE"      )==0) flag=4;
00066      else if (g_strcasecmp(mot, "EXE"       )==0) flag=5;
00067      else if (g_strcasecmp(mot, "ARGS"      )==0) flag=6;
00068      else if (g_strcasecmp(mot, "INCS"      )==0) flag=7;
00069      else if (g_strcasecmp(mot, "LIBS"      )==0) flag=8;
00070      else if (g_strcasecmp(mot, "MAKEFILE"  )==0) flag=9;
00071      else if (g_strcasecmp(mot, "UNDOLEVELS")==0) flag=10;
00072      else if (g_strcasecmp(mot, "ICON"      )==0) flag=11;
00073      else flag=0;
00074      memset(mot,0,b);  b=0;
00075    }
00076    else if (c ==0XA)
00077    {
00078      if      (flag==1) // TYPE PROJET ////////////////////////////////////////
00079      {
00080        tmp = g_locale_to_utf8 (mot, -1, NULL, NULL, NULL);
00081        ProjetTYPE = g_ascii_strtod(tmp,NULL);
00082      }
00083      else if (flag==2) // OPTIONS ////////////////////////////////////////////
00084        ProjetOPT = g_locale_to_utf8 (mot, -1, NULL, NULL, NULL);
00085      else if (flag==3) // DOSSIER ////////////////////////////////////////////
00086      {
00087        tmp = g_locale_to_utf8 (mot, -1, NULL, NULL, NULL);
00088        //(1) Insérer nouvelle entrée dans le tableau
00089        Ajouter_ELEMENT(tmp, tmp, -1);
00090        //(2) Insérer nouvelle entrée dans le treeview
00091        pere = Ajouter_TreeviewItem(&iterProj, tmp, tmp, AppICONs[1]);
00092      }
00093      else if (flag==4) // FICHIER ////////////////////////////////////////////
00094      {
00095        tmp = g_locale_to_utf8 (mot, -1, NULL, NULL, NULL);
00096        //(1) Insérer nouvelle entrée dans le tableau
00097        Ajouter_ELEMENT(g_path_get_basename(tmp), tmp, -1);
00098        //(2) Insérer nouvelle entrée dans le treeview
00099        Ajouter_TreeviewItem(&pere, nom[NB], tmp, NULL);
00100        //Ouvrir_Fichier_Ou_Le_Passer_Au_Premier_Plan(NB-1);
00101      }
00102      else if (flag==5) // NOM EXE ////////////////////////////////////////////
00103        ProjetEXEname = g_locale_to_utf8 (mot, -1, NULL, NULL, NULL);
00104      else if (flag==6) // EXEC ARGS //////////////////////////////////////////
00105        ProjetARGS = g_locale_to_utf8 (mot, -1, NULL, NULL, NULL);
00106      else if (flag==7) // INCLUDES ///////////////////////////////////////////
00107        ProjetINCS = g_locale_to_utf8 (mot, -1, NULL, NULL, NULL);
00108      else if (flag==8) // LIBS ///////////////////////////////////////////////
00109        ProjetLIBS = g_locale_to_utf8 (mot, -1, NULL, NULL, NULL);
00110      else if (flag==9) // USE MAKEFILE ///////////////////////////////////////
00111      {
00112        tmp = g_locale_to_utf8 (mot, -1, NULL, NULL, NULL);
00113        ProjetUseMAKEFILE = (g_ascii_strtod(tmp,NULL))?TRUE:FALSE;
00114      }
00115      else if (flag==10) // UNDO LEVELS ///////////////////////////////////////
00116      {
00117        tmp = g_locale_to_utf8 (mot, -1, NULL, NULL, NULL);
00118        AppUNDOLEVELS = (g_ascii_strtod(tmp,NULL))?TRUE:FALSE;
00119      }
00120      else if (flag==11) // ICON //////////////////////////////////////////////
00121        ProjetICON = g_locale_to_utf8 (mot, -1, NULL, NULL, NULL);
00122 
00123      memset(mot,0,b);  b=flag=0;
00124    }
00125    else if (c !=0XD) mot[b++] = c;
00126   } //while (c = fgetc)
00127 
00128   fclose (pF);
00129   if (tmp) g_free(tmp);
00130 App_Lister_Tableau();
00131 }

Voici le graphe d'appel pour cette fonction:

void Projet_StopExec  ) 
 

Définition à la ligne 390 du fichier Projet.h.

00391 {
00392 
00393 }


Généré le Sat Jan 13 02:55:24 2007 pour EdBX:IDELangageC,Python,FASMécritavecGTK+ par  doxygen 1.4.2