#include #include #include #include "projet.h" #include "projetx.m" static HELP_FILE help_create ("projetx","create"); /* S‚lectionne une r‚vision et associe un nouveau nom et r‚vision. On se retrouve avec deux r‚visions qui pointe … la mˆme combinaison de sources. Retourne -1 si abandon. */ PUBLIC int VERSION_DAT::creation ( USERINFO *user) { int ret = -1; DIALOG dia; //page_setuptitre (&page,MSGTIT_CREATION); SSTRING oldrev; FIELD_COMBO *comb = dia.newf_combo (MSG_U(F_OLDREV,"Révision référence") ,oldrev); setcombo (comb); SSTRING revstr; dia.newf_str (MSG_U(F_REVISION,"Nouvelle révision"),revstr); SSTRING nomver; dia.newf_str (MSG_U(F_NOMVER,"Nom symbolique"),nomver); int nof = 0; while (1){ MENU_STATUS code = dia.edit (MSG_U(T_CREATE,"Nouvelle version") ,MSG_U(I_CREATE ,"Vous créez une nouvelle version basé sur une ancienne.\n" "Cette nouvelle version pourra évoluer indépendemment.\n" "Vous devez indiquer la révision de l'ancienne et le\n" "nouveau numéro (x.y) ainsi qu'un nom symbolique.\n" "La nouvelle révision sera en tous points semblable à l'ancienne\n" "initialement.") ,help_create ,nof); if (code == MENU_CANCEL || code == MENU_ESCAPE){ break; }else{ REVISION revnew; if (revnew.set (revstr.get())==-1){ xconf_error (MSG_U(E_IVLDREVISION ,"Révision invalide %s"),revstr.get()); }else if (nomver.is_empty()){ xconf_error (MSG_U(E_VIDEVERSION,"Nom de version requis")); }else if (nomver.strchr(' ')!=NULL){ xconf_error (MSG_U(E_IVLDVERSION ,"Aucun espace toléré\ndans le nom\nde version %s") ,nomver.get()); }else if (get(&revnew)!=NULL){ xconf_error (MSG_U(E_NOTNEWREV ,"La révision %s existe déjà"),revstr.get()); }else{ REVISION revold; if (revold.set (oldrev.get())==-1){ xconf_error (MSG_R(E_IVLDREVISION),oldrev.get()); }else{ int norev; VERSION_ONE *revsrc = get(&revold,norev); if (revsrc == NULL){ xconf_error (MSG_U(E_MISSINGREV ,"La révision %s n'existe pas") ,oldrev.get()); }else{ MAKEFILE mak (NULL,true,revsrc->getrev(),"",user); if (mak.isok()){ if (mak.creation (nomver.get(),&revnew) != -1){ ret = 0; }else{ xconf_error (MSG_U(E_CREATION ,"La nouvelle version n'a pas été\n" "créée correctement")); } } break; } } } } } return ret; }