/* * Copyright 1995, 2000 Perforce Software. All rights reserved. * * This file is part of Perforce - the FAST SCM System. */ /* * ClientUser - user interface primitives * * Public classes: * * ClientUser - user interface for client services * * Note that not all methods are always used. Here's a guideline: * * Used by almost all Perforce commands: * * Finished * HandleError * OutputBinary * OutputError * OutputInfo * OutputText * File * * Used only by commands that read the client's stdin: * * InputData * * Used only by 'p4 fstat' and some other commands when the * protocol variable 'tag' is set: * * OutputStat * * Used only by interactive commands that can generally be avoided: * * Diff * Edit * ErrorPause * Prompt * * Used only by the default ClientUser implementation: * * Help * Merge * * Public methods: * * ClientUser::InputData() - provide data to 'p4 spec-command -i'; * spec-command is branch, change, client, job, label, protect, * user, etc. * * ClientUser::HandleError() - process error data, the result of a failed * command. Default is to format output and call OutputError(). * * ClientUser::Message() - output error or tabular data. This is the * 2002.1 replacement for OutputInfo/Error: earlier servers * will invoke still HandleError() and OutputInfo(). * * ClinetUser::OutputError() - output error data, the result of a failed * command. * * ClientUser::OutputInfo() - output tabular data, the result of most * commands that report metadata. * * ClientUser::OutputBinary() - output binary data, generally the result * of 'p4 print binary_file'. * * ClientUser::OutputText() - output text data, generally the result * of 'p4 print text_file'. * * ClientUser::OutputStat() - output results of 'p4 fstat'; requires * calling StrDict::GetVar() to get the actual variable results. * * ClientUser::Prompt() - prompt the user, and wait for a response. * Optionally takes a noOutput flag to suppress the prompt and * just collect the response. * * ClientUser::ErrorPause() - print an error message and wait for the * user before continuing. * * ClientUser::Edit() - bring the user's editor up on a file; generally * part of 'p4 spec-command'. * * ClientUser::Diff() - diff two files, and display the results; the * result of 'p4 diff'. Optionally takes a FileSys object to * direct output to a target file instead of stdout. * * ClientUser::Merge() - merge three files and save the results; the * result of saying 'm' to the resolve dialog of 'p4 resolve'. * * ClientUser::Help() - dump out a block of help text to the user; * used by the resolve dialogs. * * ClientUser::File() - produce a FileSys object for reading * and writing files in client workspace. * * ClientUser::Finished() - called when tagged client call is finished. */ class Enviro; class ClientMerge; class ClientResolveA; class ClientProgress; class ClientUser { public: ClientUser() { binaryStdout = 0; outputCharset = 0; quiet = 0; } virtual ~ClientUser(); virtual void InputData( StrBuf *strbuf, Error *e ); virtual void HandleError( Error *err ); virtual void Message( Error *err ); virtual void OutputError( const char *errBuf ); virtual void OutputInfo( char level, const char *data ); virtual void OutputBinary( const char *data, int length ); virtual void OutputText( const char *data, int length ); virtual void OutputStat( StrDict *varList ); virtual void Prompt( const StrPtr &msg, StrBuf &rsp, int noEcho, Error *e ); virtual void Prompt( const StrPtr &msg, StrBuf &rsp, int noEcho, int noOutput, Error *e ); virtual void ErrorPause( char *errBuf, Error *e ); virtual void Edit( FileSys *f1, Error *e ); virtual void Diff( FileSys *f1, FileSys *f2, int doPage, char *diffFlags, Error *e ); virtual void Diff( FileSys *f1, FileSys *f2, FileSys *fout, int doPage, char *diffFlags, Error *e ); virtual void Merge( FileSys *base, FileSys *leg1, FileSys *leg2, FileSys *result, Error *e ); virtual int Resolve( ClientMerge *m, Error *e ); virtual int Resolve( ClientResolveA *r, int preview, Error *e ); virtual void Help( const char *const *help ); virtual FileSys *File( FileSysType type ); virtual ClientProgress *CreateProgress( int ); virtual int ProgressIndicator(); virtual void Finished() {} StrDict *varList; // (cheesy) access to RPC buffer Enviro *enviro; // (cheesy) access to Client's env static void Edit( FileSys *f1, Enviro * env, Error *e ); static void RunCmd( const char *command, const char *arg1, const char *arg2, const char *arg3, const char *arg4, const char *arg5, const char *pager, Error *e ); virtual void SetOutputCharset( int ); virtual void DisableTmpCleanup(); virtual void SetQuiet(); // Output... and Help must use 'const char' instead of 'char' // The following will cause compile time errors for using 'char' virtual int OutputError( char *errBuf ) { OutputError( (const char *)errBuf ); return 0; }; virtual int OutputInfo( char level, char *data ) { OutputInfo( level, (const char *)data ); return 0; }; virtual int OutputBinary( char *data, int length ) { OutputBinary( (const char *)data, length ); return 0; }; virtual int OutputText( char *data, int length ) { OutputText( (const char *)data, length ); return 0; }; virtual int Help( char *const *help ) { Help( (const char * const *)help ); return 0; }; private: int binaryStdout; // stdout is in binary mode int quiet; // OutputInfo does nothing. protected: int outputCharset; // P4CHARSET for output StrBuf editFile; } ; class ClientUserProgress : public ClientUser { public: virtual ClientProgress *CreateProgress( int ); virtual int ProgressIndicator(); } ; /* * StrDict now provides the GetVar() interface for OutputStat(); * ClientVarList defined for backward compatability. */ typedef StrDict ClientVarList;
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 16129 | tjuricek |
Rename/move files again... this time to the hyphenated-approach. |
||
//guest/tjuricek/file_system_client/main/vendor/p4api-15.1/macosx105x86_64/include/p4/clientuser.h | |||||
#1 | 16119 | tjuricek | Rename/move to meet workshop project conventions. | ||
//guest/tjuricek/fsclient/vendor/p4api-15.1/macosx105x86_64/include/p4/clientuser.h | |||||
#1 | 16118 | tjuricek |
FSClient initial version: handles add, edit This is a proof-of-concept app that mirrors an existing Perforce workspace to handle running commands like "p4 add" and "p4 edit" automatically when your apps add and write files. See the readme for more information. |