home *** CD-ROM | disk | FTP | other *** search
- /*
- * DataPage.c
- *
- * Purpose:
- * --------
- * DatPage = "Fichier" virtuel ds ramdisque virtuel!
- *
- * History:
- * --------
- * 1993: fplanque: Created
- * 08.08.94: fplanque: removed set_datastate(): obsolete
- * 09.08.94: removed update_datastate(): obsolete
- */
-
-
- #include "!OPTIONS.H" /* Options de compilation */
- #define THIS_FILE "DATAPAGE.C v1.00 - 03.95"
-
-
- /*
- * System headers:
- */
- #include <stdio.h> /* header standard */
- #include <stdlib.h> /* header librairie de fnct std */
- #include <string.h> /* Strlen... */
- #include <ext.h> /* MAXPATH... */
- #include <assert.h>
-
- /*
- * Custom headers:
- */
- #include "SPEC_PU.H"
- #include "S_MALLOC.H"
- #include "DESK_PU.H" /* Pour connaitre offset des icones de datas */
- #include "STUT_ONE.RSC\STUT_3.H"
- #include "AESDEF.H"
- #include "DEBUG_PU.H"
- #include "DATPG_PU.H"
- #include "DTDIR_PU.H"
- #include "DATAGRPS.H"
- #include "ARBPG_PU.H"
- #include "ARPAR_PU.H"
- #include "LISTS_PU.H"
- #include "FILES_PU.H"
- #include "OBJCT_PU.H"
- #include "WIN_PU.H"
- #include "ATREE_PU.H"
- #include "ARBKEYPU.H"
-
- /*
- * ------------------------ PROTOTYPES -------------------------
- */
-
- /*
- * EXTernal prototypes:
- */
- /*
- * Extended form_do:
- */
- extern int ext_form_do( OBJECT *tree, int *startfield );
- /*
- * Gnral:
- */
- extern void no_selection( void );
- extern void erreur_rsrc( void );
- /*
- * dossiers:
- */
- extern SSTATE dataDir_getSavState( /* Out: Satut sauvegarde */
- DATADIR * pDataDir ); /* In: Datadir concern */
- extern void dataDir_setSavState(
- DATADIR * pDataDir, /* In: DATADIR concern */
- SSTATE sstate, /* In: Etat */
- BOOL b_GrafUpdate ); /* In: S'il faut faut rafficher les icne correspondantes... */
-
-
- /*
- * ------------------------ VARIABLES -------------------------
- */
-
-
- /*
- * External variables:
- */
- /*
- * Icnes:
- */
- extern OBJECT *G_desktop_adr; /* Ptr sur arbre bureau */
- extern WIPARAMS *G_desk_params_adr; /* Paramtres de la "fentre bureau" */
- /*
- * Fentres
- */
- extern WIPARAMS *G_wi_list_adr; /* Adresse de l'arbre de paramtres */
- /*
- * Fichiers:
- */
- extern char G_filename[ 13 ]; /* Nom du fichier
charger ex:TEST.TXT */
- extern char G_filepath[ MAXPATH ]; /* Chemin du fichier
charger ex:D\EXEMPLE */
- /*
- * Desktop:
- */
- extern DATAGROUP * G_datagroups; /* Pointeur sur tableau de G_datagroups */
- extern WIPARAMS * G_selection_adr; /* Slection courante */
-
- /*
- * Private variables:
- */
- static OBJECT *M_pForm_Rename; /* Ptr sur boite "renommer" */
- static OBJECT *M_edit_comment; /* Boite d'dition du commentaire */
- static void init_vars_datagroup( DATAGROUP *datagroup );
-
-
- /*
- * ------------------------ FUNCTIONS -------------------------
- */
-
- /*
- * init_datas(-)
- *
- * Purpose:
- * --------
- * Initialise le prsent module
- *
- * Notes:
- * ------
- * Procedure a appeller depuis le programme principal
- *
- * History:
- * --------
- * 1993: fplanque: Created
- * 20.09.94: fplanque: Ajout form RENAME; corrig bug pour COMMENT
- */
- void init_datas( void )
- {
- if (rsrc_gaddr( R_TREE, NAMES, &M_pForm_Rename ) == 0)
- erreur_rsrc();
- rsrc_color( M_pForm_Rename ); /* Fixe couleurs */
-
- if (rsrc_gaddr( R_TREE, COMMENT, &M_edit_comment ) == 0)
- erreur_rsrc();
- rsrc_color( M_edit_comment ); /* Fixe couleurs */
-
- }
-
-
-
- /*
- * create_stdDataBlock(-)
- *
- * Purpose:
- * --------
- * Cre une nouveau datablock vide
- *
- * History:
- * --------
- * 19.06.94: Created base on create_std_datapage()
- */
- DATABLOCK * create_stdDataBlock( void ) /* Out: Nouveau Databloc */
- {
- /*
- * Cre une zone de stockage:
- */
- DATABLOCK * pDataBlock = (DATABLOCK *) MALLOC( sizeof(DATABLOCK) );
-
- /*
- * Initialisation:
- */
- pDataBlock -> p_block = NULL;
- pDataBlock -> ul_length = 0;
-
- return pDataBlock;
-
- }
-
- /*
- * free_DataBlock(-)
- *
- * Purpose:
- * --------
- * Dtruit un datablock
- * et libre la mmoire qu'il occupait
- *
- * History:
- * --------
- * 15.07.94: fplanque: Created
- */
- void free_DataBlock(
- DATABLOCK * pDataBlock ) /* In: Ptr sur Databloc
dtruire */
- {
- /*
- * Dtruit les donnes contenues ds datablock:
- */
- if( pDataBlock -> p_block != NULL )
- {
- FREE( pDataBlock -> p_block );
- }
-
- /*
- * Dtruit le datablock lui-mme:
- */
- FREE( pDataBlock );
-
- }
-
-
-
- /*
- * create_std_datapage(-)
- *
- * Purpose:
- * --------
- * Cre une nlle datapage (Vide!)
- * avec zone d'info standard (vide)
- * Cette page n'est PAS rattache
un DataDir
- *
- * History:
- * --------
- * 1993: fplanque: Created
- * 11.07.94: Initialisation du nouveau membre: DATATYPE
- * 11.07.94: La datapage cre est retourne sous forme de ptr en rsultat de la fonction
- * 15.12.94: init des pts se rapportant au DATADIR
- */
- DATAPAGE * create_std_datapage( /* Out: Adresse de la nlle DATAPAGE */
- DATATYPE DataType, /* In: Type de donnes que contiendra la datapage */
- const char * filename ) /* In: Nom de la nlle DATAPAGE */
- {
- /*
- * Cre une zone de stockage:
- */
- DATAPAGE * pDataPage = (DATAPAGE *) MALLOC( sizeof(DATAPAGE) );
- DATASTATE DataState;
-
- /*
- * Pas intgre
un DATADIR pour l'instant:
- */
- pDataPage -> next = NULL;
- pDataPage -> prev = NULL;
- pDataPage -> pDataDir = NULL;
-
- /*
- * Fixe type de donnes contenues dans la datapage:
- */
- pDataPage -> DataType = DataType;
-
- /*
- * Fixe nom (Copie le nom du fichier):
- */
- strcpy( pDataPage -> nom, filename );
-
- /*
- * pas de donnes associes:
- */
- pDataPage -> data.x = NULL;
-
- /*
- * Fixe commentaire:
- * NULL: les appellants font cette assomption!
- */
- pDataPage -> comment = NULL;
-
- /*
- * Statut:
- */
- DataState .b_open = FALSE0;
- DataState .sstate = SSTATE_EMPTY;
- pDataPage -> DataState = DataState;
-
-
- return pDataPage;
- }
-
-
-
- /*
- * dataPage_IsOpen(-)
- *
- * Purpose:
- * --------
- * Dit si une fentre est ouverte sur la DATAPAGE en question
- *
- * History:
- * --------
- * 06.08.94: fplanque: Created
- */
- BOOL dataPage_IsOpen( /* Out: !=0 si fen ouverte */
- DATAPAGE * pDataPage) /* In: Datapage concerne */
- {
- return pDataPage -> DataState .b_open;
- }
-
-
-
- /*
- * dataPage_setOpenBit(-)
- *
- * Purpose:
- * --------
- * Mmorise le fait qu'il y ait une fentre ouverte ou non
- * sur cette DATAPAGE
- *
- * History:
- * --------
- * 06.08.94: fplanque: Created
- */
- void dataPage_setOpenBit(
- DATAPAGE * pDataPage, /* In: Datapage concerne */
- BOOL b_open ) /* In: !=0 si fen ouverte */
- {
- pDataPage -> DataState .b_open = b_open;
- }
-
-
-
- /*
- * dataPage_getSavState(-)
- *
- * Purpose:
- * --------
- * Indique si la page ait t sauve ou non
- *
- * History:
- * --------
- * 06.08.94: fplanque: Created
- */
- SSTATE dataPage_getSavState( /* Out: Satut sauvegarde */
- DATAPAGE * pDataPage ) /* In: Datapage concerne */
- {
- return pDataPage -> DataState .sstate;
- }
-
-
-
- /*
- * dataPage_setSavState(-)
- *
- * Purpose:
- * --------
- * Mmorise le fait que la page ait t sauve ou non
- * Pas d'update graphique ni de recursion, pour a, il faut appeller dataPage_setSavState()
- *
- * History:
- * --------
- * 06.08.94: fplanque: Created
- * 11.08.94: simplified and moved complex stuff to dataPage_setSavState()
- */
- void dataPage_setSavState(
- DATAPAGE * pDataPage, /* In: Datapage concerne */
- SSTATE sstate ) /* In: Etat */
- {
- /*
- * Modifie tat de la page:
- */
- pDataPage -> DataState .sstate = sstate;
- }
-
-
-
- /*
- * dataPage_chgSavState(-)
- *
- * Purpose:
- * --------
- * Change l'tat de sauvegarde d'une page.
- * Rpercute les changement sur la hierachie de dossiers.
- * Peut galement donner lieu
un redraw des icnes concernes/
- *
- * History:
- * --------
- * 11.08.94: fplanque: Transfered from dataPage_setSavState()
- * 15.12.94: utilise le pDataDir interne de la Datapage
- */
- void dataPage_chgSavState(
- DATAPAGE * pDataPage, /* In: Datapage concerne */
- SSTATE sstate, /* In: Etat */
- BOOL b_GrafUpdateP, /* In: S'il faut faut rafficher les icnes correspondantes... */
- BOOL b_GrafUpdateD) /* In: S'il faut faut rafficher les icne des DATADIRS contenant la DATAPAGE */
- {
- /*
- * datadir pour les updates d'icones
- */
- DATADIR * pDataDir = pDataPage -> pDataDir;
- assert( pDataDir != NULL );
-
- if( dataPage_getSavState( pDataPage ) == sstate )
- { /*
- * Il n'y a rien
changer!
- */
- return; /* On ne fera bien sur pas d'Update graphique.. (Time is Money :) */
- }
-
- /*
- * Modifie tat de la page:
- */
- dataPage_setSavState( pDataPage, sstate );
-
- /*
- * Update graphique:
- */
- if( b_GrafUpdateP )
- {
- dataDir_UpdatePageIcon( pDataDir, pDataPage );
- }
-
- /*
- * Set State des datadirs...
- */
- if( sstate == SSTATE_MODIFIED && pDataDir != NULL)
- { /*
- * Si on a modifi une page:
- * C'est tout le DATAGROUP qui a t modifi
- * Pour commencer, Transmet la ncessit de mise
jour au DATADIR:
- * qui communiquera rcursivement
ses parents jusqu'au datagroup
- */
- dataDir_setSavState( pDataDir, sstate, b_GrafUpdateD );
- }
- }
-
-
-
-
- /*
- * query_newname(-)
- *
- * Purpose:
- * --------
- * Demande nom d'une nouvelle "page"
- * par un formulaire AES
- * lorsqu'on la crée
- *
- * History:
- * --------
- * 1993: fplanque: Created
- * 22.11.94: compltement refait avec form de renommage
- * 14.01.95: gre commentaire
- * 19.01.95: retorune NULL si pas de commentaire
- */
- char * query_newname( /* Out: Nom entr par l'utilisateur, NULL si annulé */
- GRECT * pGRect_start, /* In: Dbut de l'effet graphique d'ouverture */
- const char * cpsz_Title, /* In: Titre de la boite de demande */
- const char * cpsz_OldName, /* In: Ancien nom */
- const char * cpsz_OldComment, /* In: Ancien Commentaire */
- char ** ppsz_NewComment, /* Out: Nouveau commentaire */
- int take_ctrl ) /* In: TAKE_CTRL s'il faut passer en modal */
- {
- GRECT GRect_Form; /* Boite formulaire */
- int n_EditObj = NAME_NEW;
- int n_ExitObj;
- char * psz_NewName; /* Nom du new object: */
-
- /*
- * Pour l'instant, on a pas de commentaire
renvoyer:
- */
- *ppsz_NewComment = NULL;
-
- /*
- * Initialisations:
- */
- dlink_teptext( &M_pForm_Rename[ RENTITLE ], cpsz_Title );
-
- if( cpsz_OldName == NULL )
- {
- cpsz_OldName = "";
- }
- M_pForm_Rename[ NAME_OLD ] .ob_spec.free_string = (char *) cpsz_OldName;
-
- if( cpsz_OldComment == NULL )
- {
- cpsz_OldComment = "";
- }
- M_pForm_Rename[ RNOLDCMT ] .ob_spec.free_string = (char *) cpsz_OldComment;
-
- fix_fmtFtext( M_pForm_Rename, NAME_NEW, cpsz_OldName );
-
- fix_ftext( M_pForm_Rename, RNNEWCMT, cpsz_OldComment );
-
- /*
- * Ouvre bote:
- */
- if ( take_ctrl == TAKE_CTRL )
- { /*
- * App prend en charge souris
- */
- WIND_UPDATE_BEG_MCTRL
- }
-
- open_dialog( M_pForm_Rename, pGRect_start, &GRect_Form );
-
- /*
- * Gestion de la bote:
- */
- do
- {
- n_ExitObj = ext_form_do( M_pForm_Rename, &n_EditObj );
-
- if( n_ExitObj == NAMEVAL )
- { /*
- * On a valid:
- * Extrait nom du fichier:
- */
- psz_NewName = extract_fmtFtext( M_pForm_Rename, NAME_NEW );
- *ppsz_NewComment = extract_ftext( M_pForm_Rename, RNNEWCMT);
-
- if( psz_NewName[0] == '\0' )
- { /*
- * On ne peut confirmer un nom vide!
- */
- form_alert(1,"[1][|Vous n'avez pas|"
- "indiqu de nom!]"
- "[Recommencer]");
- objc_dsel( M_pForm_Rename, NAMEVAL ); /* Dslectionne bouton */
- free_String( psz_NewName );
- free_String( *ppsz_NewComment );
- n_ExitObj = NIL;
- }
- else if( strcmp( psz_NewName, cpsz_OldName ) == 0
- && strcmp( *ppsz_NewComment, cpsz_OldComment ) == 0 )
- { /*
- * Noms identiques:
- */
- form_alert(1,"[1][|Ancien et nouveau|"
- "noms sont identiques!]"
- "[Recommencer]");
- objc_dsel( M_pForm_Rename, NAMEVAL ); /* Dslectionne bouton */
- free_String( psz_NewName );
- free_String( *ppsz_NewComment );
- n_ExitObj = NIL;
- }
-
- }
- } while ( n_ExitObj != NAMEVAL && n_ExitObj != NAMEANN );
-
-
- /*
- * Referme boite:
- */
- close_dialog( M_pForm_Rename, n_ExitObj, pGRect_start, &GRect_Form );
-
- if ( take_ctrl == TAKE_CTRL )
- {
- /* App prend en charge souris */
- WIND_UPDATE_END_MCTRL
- }
-
- if ( n_ExitObj == NAMEVAL )
- { /*
- * On a valid:
- */
- if( strlen( *ppsz_NewComment ) == 0 )
- { /*
- * Pas de commentaire:
- */
- FREE( *ppsz_NewComment );
- *ppsz_NewComment = NULL;
- }
-
- return psz_NewName; /* Retourne adr du nouveau nom */
- }
-
- /*
- * On a annul
- */
- free_String( *ppsz_NewComment );
- *ppsz_NewComment = NULL;
-
- return NULL;
-
- }
-
-
-
- /*
- * renommer_selection(-)
- *
- * Purpose:
- * --------
- * Renommer le fichier slectionn
- *
- * History:
- * --------
- * 20.09.94: fplanque: cr dialog
- * 21.09.94: implment actions
- * 22.11.94: appelle Query_newname
- * 14.01.95: gre commentaire
- */
- void renommer_selection(
- GRECT * pGRect_start ) /* In: dbut effet graphique d'ouverture */
- {
- char * psz_DataName;
- char * psz_NewName;
- char * psz_NewComment;
- DATADIR * pDataDir;
- DATAPAGE * pDataPage;
-
- /*
- * Vrifie que la slection est ok:
- */
- if( G_selection_adr == NULL
- || ( G_selection_adr -> type != TYP_TREE && G_selection_adr -> type != TYP_DIR ) )
- {
- return;
- }
-
- /*
- * Cherche ptr sur page slectionne:
- * d'aprs nom de l'icne slectionne
- */
- pDataDir = G_selection_adr -> datadir;
- psz_DataName = ((G_selection_adr -> draw_ptr.tree)[G_selection_adr -> selected_icon] .ob_spec.iconblk) -> ib_ptext;
- pDataPage = page_adr_byname( pDataDir, psz_DataName );
-
- if( pDataPage == NULL )
- {
- ping();
- return;
- }
-
-
- /*
- * Demande le nouveau nom:
- */
- psz_NewName = query_newname( pGRect_start, "RENOMMER UN OBJET", pDataPage -> nom, pDataPage -> comment, &psz_NewComment, TAKE_CTRL );
-
-
- /*
- * Changement du nom:
- */
- if( psz_NewName != NULL )
- {
- /*
- * Change nom dans la page:
- */
- strcpy( pDataPage -> nom, psz_NewName );
- FREE( psz_NewName );
-
- /*
- * Change commentaire de la page:
- */
- free_String( pDataPage -> comment );
- pDataPage -> comment = psz_NewComment;
-
- /*
- * Mise
jour status sauvegarde:
- */
- dataPage_chgSavState( pDataPage, SSTATE_MODIFIED, FALSE0, TRUE_1 );
-
- /*
- * Le texte des icnes d'une fentre
l'cran
- * pointe directement dans les DATAPAGES.
- * Un simple REDRAW suffit donc
actualiser les icnes impliques
- */
- dataDir_UpdatePageIcon( pDataDir, pDataPage );
-
- }
- }
-
-
-
-
- /*
- * create_newDataPage(-)
- *
- * Purpose:
- * --------
- * Crer une nouvelle DATAPAGE dans le DATAGROUP spcifi
- * en demandant le nom
l'utilisateur
- *
- * History:
- * --------
- * 18.06.94: fplanque: Created based on creer_rubrique()
- * 06.07.94: utilise maintenant dataGrp_CreatEmptyDataPg();
- * 09.08.94: appel
update_datagroup_info() remplac par dataPage_setSavState()
- * 11.08.94: chgt des updates SSTATE
- * 22.11.94: efface newname obtenu par query_newname()
- * 14.01.95: gre commentaires
- */
- DATAPAGE * create_newDataPage(
- char * pS_title, /* In: Titre de la demande */
- DATAGROUP * datagroup, /* In: Datagroup ds lequel on veut crer */
- GRECT * start_box ) /* In: dbut effet graphique d'ouverture */
- {
- /*
- * Demande nouveau nom:
- */
- char * pMsz_NewComment;
- char * newname = query_newname( start_box, pS_title, NULL, NULL, &pMsz_NewComment, TAKE_CTRL );
-
- if( newname == NULL )
- {
- return NULL;
- }
- else
- { /*
- * Si on a donn un nom valide:
- * Variables:
- */
- DATADIR * datadir = datagroup -> root_dir;
-
- /*
- * Cre zone d'info DATAPAGE standard VIDE:INVALIDE
- *
remplir ds le retour de la fonction
- */
- DATAPAGE * datapage = dataDir_InsertStdDataPg( newname, datadir );
- FREE( newname );
-
- datapage -> comment = pMsz_NewComment;
-
- /*
- * Mise
jour des fentres et des infos de la zone de donnes:
- */
- dataPage_chgSavState( datapage, SSTATE_MODIFIED, FALSE0, TRUE_1 );
- remplace_dir( datadir );
-
- return datapage;
- }
-
- }
-
-
-
- /*
- * sauve_DataPage(-)
- *
- * Purpose:
- * --------
- * Front end
appeller pour
- * sauver une DataPage dans un fichier indpendant sur disque
- *
- * Notes:
- * ------
- * La sauvegarde des pages arbo n'est pas encore implmente
- *
- * History:
- * --------
- * 29.07.94: fplanque: Created
- */
- void sauve_DataPage(
- DATADIR * pDataDir, /* In: Directory dans lequel se trouve la page */
- DATAPAGE * pDataPage ) /* In: Page cran
sauver */
- {
- int save_ok; /* Sauvegarde OK ? */
- FTA fta; /* File Transfer Area */
-
- /*
- * Fixe FTA sur DATAPAGE
sauver:
- */
- fta .pDataPage = pDataPage;
-
- /*
- * Fixe le chemin de slection du prochain fichier sur disque:
- */
- set_DtPgFilePathToFS( pDataPage );
-
- /*
- * Sauvegarde des donnes:
- */
- switch( pDataPage -> DataType )
- {
- case DTYP_ARBO:
- /*
- * Sauver une page Arbo:
- */
- save_ok = save_file( "Sauver une page Arbo *.ARB", FS_ARB, &fta );
- break;
-
- case DTYP_PAGES:
- /*
- * Sauver une page Ecran:
- */
- save_ok = save_file( "Sauver une page Ecran *.VDT", F_VDT, &fta );
- break;
-
- case DTYP_DATAS:
- /*
- * Sauver une base de donnes:
- */
- save_ok = save_file( "Sauver une base de donnes *.DXF", FS_DXF, &fta );
- break;
-
- case DTYP_TEXTS:
- /*
- * Sauver un Texte:
- */
- save_ok = save_file( "Sauver un Texte *.TXT", F_TEXTE, &fta );
- break;
-
- case DTYP_PICS:
- /*
- * Sauver une Image:
- */
- save_ok = save_file( "Sauver une Image *.PI3", F_IMAGE, &fta );
- break;
-
- default:
- signale("Sauvegarde impossible!");
- }
-
- FAKE_USE( pDataDir );
- FAKE_USE( save_ok );
-
- }
-
-
-
-
-
- /*
- * dataPg_resetdata(-)
- *
- * Purpose:
- * --------
- * Initialise les donnes contenues dans une datapage
- *
- * Suggest:
- * --------
- * Mettre a ds les mthodes s'appliquant
DATAPAGE
- * traiter l'init d'un DTYP_DATAS
- *
- * History:
- * --------
- * 06.07.94: fplanque: Created based on efface_page()
- * 06.07.94: aprs effacement, le reset laisse la page ds un etat rutilisable (si on y met de nouvelles donnes)
- * 17.07.94: paramtre type rcupr directement DANS la datapage
- */
- void dataPg_resetdata(
- DATAPAGE * datapage ) /* In: DATAPAGE a effacer */
- {
- /* printf( "Datapage: %lu type:%d\n", datapage, datapage -> DataType ); */
-
- /*
- * Selon type de page:
- */
- switch( datapage -> DataType )
- {
- case DTYP_ARBO:
- { /*
- * EFFACE Page arbo:
- */
- PAGEARBO *pagearbo = datapage -> data.pagearbo;
-
- /*
- * Libre chemin d'accs:
- */
- FREE( pagearbo -> chemin );
-
- /*
- * Libre pages-cran:
- */
- Delete_TextParList( pagearbo -> pages_ecran );
-
- /*
- * Libre les champ de sortie:
- */
- Delete_SingleLinkList( pagearbo -> output_fields );
-
- /*
- * Libre les params de liste:
- */
- if( pagearbo -> pArboListPars != NULL )
- {
- FREE( pagearbo -> pArboListPars );
- }
-
- /*
- * Libre les champ de saisie:
- */
- Delete_SingleLinkList( pagearbo -> input_fields );
-
- /*
- * Libre liens-arbo:
- */
- free_KeyWordList( pagearbo -> p_Events );
-
- /*
- * Libre les paramtres spciaux:
- */
- free_specialpar( pagearbo -> fnct_no, &(pagearbo -> special_par) );
-
- /*
- * Libre paramtres de la page arbo:
- */
- FREE( pagearbo );
-
- break;
- }
-
- case DTYP_PAGES:
- { /*
- * Efface donnes page cran:
- */
- free_DataBlock( datapage -> data.dataBlock );
- break;
- }
-
- /* case DTYP_DATAS: */
- /*
faire */
-
- case DTYP_TEXTS:
- { /*
- * Efface un texte (compact):
- */
- free_DataBlock( datapage -> data.dataBlock );
- break;
- }
-
- case DTYP_PICS:
- /*
- * EFFACE une image:
- */
- if ( datapage -> data.degaspix != NULL ) /* Si page a des donnes */
- {
- FREE( datapage -> data.degaspix ); /* Efface donnes page */
- }
- break;
-
- default:
- signale( "Ne peut effectuer reset-datapage()" );
- }
-
- /*
- * Procdures communes aux deux types:
- * Initialisation:
- */
- datapage -> data.x = NULL; /* Pas de donnes pour l'instant */
-
- /*
- * Reset commentaire:
- */
- if ( datapage -> comment != NULL ) /* S'il y a un commentaire */
- FREE( datapage -> comment ); /* Efface commentaire */
- datapage -> comment = NULL;
-
- }
-
-
- /*
- * efface_page(-)
- *
- * Purpose:
- * --------
- * Efface une page arbo, cran, image, texte...
- *
- * Suggest:
- * --------
- * Mettre a ds les mthodes s'appliquant
DATAPAGE
- *
- * History:
- * --------
- * 1993: fplanque: Created
- * 10.05.94: fplanque: Ajout ttmt Paramtres Spcifiques Page Arbo
- * 06.07.94: extraction de dataPg_resetdata();
- * 15.07.94: ne prend plus de paramtre 'type'
- */
- void efface_page(
- DATAPAGE *datapage ) /* In: DATAPAGE a effacer */
- {
- /*
- * Efface donnes contenues dans la page:
- */
- dataPg_resetdata( datapage );
-
- /*
- * efface la page elle-mme
- */
- FREE( datapage ); /* Efface infos/rf page */
-
- }
-
-
-
-
-
-
- /*
- * edit_datapage_comment(-)
- *
- * Purpose:
- * --------
- * Edition du commentaire associé à une 'page'
- *
- * Algorythm:
- * ----------
- * Dialogue
- *
- * History:
- * --------
- * 1993: fplanque: Created
- */
- int edit_datapage_comment( /* Out: TRUE si modifié, FALSE sinon */
- DATAPAGE * datapage, /* In/Out: Page dont on veut éditer le commentaire */
- GRECT * start_box ) /* In: Début effet graphique */
- {
- /*
- * Variables:
- */
- GRECT form_box;
- int edit = CMTETEXT;
- int exit_obj;
-
- /*
- * Fixe nom de la page:
- */
- dlink_teptext ( &M_edit_comment[ CMTPAGE ], datapage -> nom );
- /*
- * Fixe texte d'dition:
- */
- fix_ftext( M_edit_comment, CMTETEXT, datapage -> comment );
-
- /*vvvvvvvvvvvvvvvvvvvvvvvvvvvv*/
- /* App prend en charge souris */
- WIND_UPDATE_BEG_MCTRL
- /*** Entre dans un MODE: ***/
-
- open_dialog( M_edit_comment, start_box, &form_box );
-
- exit_obj = ext_form_do( M_edit_comment, &edit); /* Gestion de la bote */
-
- close_dialog( M_edit_comment, exit_obj, start_box, &form_box );
-
- /*** Sortie du MODE: ***/
- /* AES peut reprendre la souris */
- WIND_UPDATE_END_MCTRL
- /*^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
-
- /*
- * Sauvegarde des modifs:
- */
- if ( exit_obj == CMTVALID )
- { /*
- * Si on a valid:
- */
- char *new_comment = M_edit_comment[ CMTETEXT ] .ob_spec.tedinfo -> te_ptext;
-
- if ( datapage -> comment != NULL )
- { /*
- * S'il existait dj
un commentaire:
- */
- FREE ( datapage -> comment ); /* Efface ce commentaire */
- }
-
- /*
- * Mmorise nouveau commentaire:
- */
- if ( new_comment[ 0 ] != '\0' )
- { /*
- * Si le commentaire n'est pas vide:
- */
- datapage -> comment = STRDUP( new_comment );
- }
- else
- {
- datapage -> comment = NULL;
- }
-
- return TRUE_1;
- }
-
- return FALSE0;
- }
-