Fonction SccGetProjPath

Cette fonction invite l’utilisateur à entrer un chemin d’accès au projet, qui est une chaîne qui est significative uniquement pour le plug-in de contrôle de code source. Elle est appelée lorsque l’utilisateur est :

  • Création d’un projet

  • Ajout d’un projet existant au contrôle de version

  • Tentative de recherche d’un projet de contrôle de version existant

Syntaxe

SCCRTN SccGetProjPath (
   LPVOID pvContext,
   HWND   hWnd,
   LPSTR  lpUser,
   LPSTR  lpProjName,
   LPSTR  lpLocalPath,
   LPSTR  lpAuxProjPath,
   BOOL   bAllowChangePath,
   LPBOOL pbNew
);

Paramètres

pvContext

[in] Structure de contexte du plug-in de contrôle de code source.

hWnd

[in] Handle vers la fenêtre IDE que le plug-in de contrôle de code source peut utiliser comme parent pour toutes les boîtes de dialogue qu’il fournit.

lpUser

[in, out] Nom d’utilisateur (ne pas dépasser SCC_USER_SIZE, y compris le terminateur NULL)

lpProjName

[in, out] Nom du projet IDE, de l’espace de travail du projet ou du makefile (pour ne pas dépasser SCC_PRJPATH_SIZE, y compris le terminateur NULL).

lpLocalPath

[in, out] Chemin de travail du projet. Si bAllowChangePath c’est TRUEle cas, le plug-in de contrôle de code source peut modifier cette chaîne (pour ne pas dépasser _MAX_PATH, y compris le point de terminaison Null).

lpAuxProjPath

[in, out] Mémoire tampon pour le chemin d’accès du projet retourné (pas dépasser SCC_PRJPATH_SIZE, y compris la marque de fin NULL).

bAllowChangePath

[in] Si c’est TRUEle cas, le plug-in de contrôle de code source peut demander et modifier la lpLocalPath chaîne.

pbNew

[in, out] La valeur entrante indique s’il faut créer un projet. La valeur retournée indique la réussite de la création d’un projet :

Entrant Interprétation
VRAI L’utilisateur peut créer un projet.
false L’utilisateur peut ne pas créer de projet.
Sortant Interprétation
VRAI Un nouveau projet a été créé.
false Un projet existant a été sélectionné.

Valeur retournée

L’implémentation du plug-in de contrôle de code source de cette fonction est censée retourner l’une des valeurs suivantes :

Valeur Description
SCC_OK Le projet a été créé ou récupéré avec succès.
SCC_I_OPERATIONCANCELED L’opération a été annulée.
SCC_E_ACCESSFAILURE Il y a eu un problème d’accès au système de contrôle de code source, probablement en raison de problèmes de réseau ou de contention.
SCC_E_CONNECTIONFAILURE Il y a eu un problème lors de la tentative de connexion au système de contrôle de code source.
SCC_E_NONSPECIFICERROR Une erreur non spécifiée s'est produite.

Notes

L’objectif de cette fonction est que l’IDE acquiert les paramètres lpProjName et lpAuxProjPath. Une fois que le plug-in de contrôle de code source invite l’utilisateur à entrer ces informations, il transmet ces deux chaînes à l’IDE. L’IDE conserve ces chaînes dans son fichier solution et les transmet au SccOpenProject chaque fois que l’utilisateur ouvre ce projet. Ces chaînes permettent au plug-in de suivre les informations associées à un projet.

Lorsque la fonction est appelée pour la première fois, lpAuxProjPath est définie sur une chaîne vide. lProjName peut également être vide ou contenir le nom du projet IDE, que le plug-in de contrôle de code source peut utiliser ou ignorer. Lorsque la fonction retourne correctement, le plug-in retourne les deux chaînes correspondantes. L’IDE ne fait aucune hypothèse sur ces chaînes, ne les utilise pas et n’autorise pas l’utilisateur à les modifier. Si l’utilisateur souhaite modifier les paramètres, l’IDE appelle SccGetProjPath à nouveau, en passant les mêmes valeurs qu’il avait reçues l’heure précédente. Cela permet au plug-in de contrôler complètement ces deux chaînes.

Pour lpUsercela, l’IDE peut passer un nom d’utilisateur ou simplement passer un pointeur vers une chaîne vide. S’il existe un nom d’utilisateur, le plug-in de contrôle de code source doit l’utiliser comme valeur par défaut. Toutefois, si aucun nom n’a été passé ou si la connexion a échoué avec le nom donné, le plug-in doit inviter l’utilisateur à entrer une connexion et lui transmettre le nom lpUser lorsqu’il reçoit une connexion valide. Étant donné que le plug-in peut modifier cette chaîne, l’IDE alloue toujours une mémoire tampon de taille (SCC_USER_LEN+1).

Remarque

La première action effectuée par l’IDE peut être un appel à la SccOpenProject fonction ou à la SccGetProjPath fonction. Par conséquent, les deux ont un paramètre identique lpUser , qui permet au plug-in de contrôle de code source de connecter l’utilisateur à chaque fois. Même si le retour de la fonction indique un échec, le plug-in doit remplir cette chaîne avec un nom de connexion valide.

lpLocalPath est le répertoire dans lequel l’utilisateur conserve le projet. Il peut s’agir d’une chaîne vide. S’il n’existe aucun répertoire actuellement défini (comme dans le cas d’un utilisateur qui tente de télécharger un projet à partir du système de contrôle de code source) et, le bAllowChangePath cas échéant TRUE, le plug-in de contrôle de code source peut inviter l’utilisateur à entrer ou utiliser une autre méthode pour placer sa propre chaîne dans lpLocalPath. Si bAllowChangePath c’est FALSEle cas, le plug-in ne doit pas modifier la chaîne, car l’utilisateur travaille déjà dans le répertoire spécifié.

Si l’utilisateur crée un projet à placer sous contrôle de code source, le plug-in de contrôle de code source peut ne pas réellement le créer dans le système de contrôle de code source au moment SccGetProjPath de l’appel. Au lieu de cela, il transmet la chaîne avec une valeur différente de zéro pour pbNew, indiquant que le projet sera créé dans le système de contrôle de code source.

Par exemple, si un utilisateur de l’Assistant Nouveau projet dans Visual Studio ajoute son projet au contrôle de code source, Visual Studio appelle cette fonction et le plug-in détermine s’il est acceptable de créer un projet dans le système de contrôle de code source pour contenir le projet Visual Studio. Si l’utilisateur clique sur Annuler avant de terminer l’Assistant, le projet n’est jamais créé. Si l’utilisateur clique sur OK, Visual Studio appelle SccOpenProject, passe, SCC_OPT_CREATEIFNEWet le projet contrôlé par la source est créé à ce moment-là.

Voir aussi