00001 #ifndef __AIUser__
00002 #define __AIUser__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef __AIArt__
00031 #include "AIArt.h"
00032 #endif
00033
00034 #ifndef __AITypes__
00035 #include "AITypes.h"
00036 #endif
00037
00038 #ifndef __AIColor__
00039 #include "AIColor.h"
00040 #endif
00041
00042 #ifndef __AIMenu__
00043 #include "AIMenu.h"
00044 #endif
00045
00046 #ifndef __AIFileFormat__
00047 #include "AIFileFormat.h"
00048 #endif
00049
00050 #ifndef __AIDocumentView__
00051 #include "AIDocumentView.h"
00052 #endif
00053
00054 #include "IAIFilePath.hpp"
00055 #include "IAILocale.h"
00056
00057 #include "AIHeaderBegin.h"
00058
00062
00063
00064
00065
00066
00067
00068 #define kAIUserSuite "AI User Suite"
00069 #define kAIUserSuiteVersion18 AIAPI_VERSION(18)
00070 #define kAIUserSuiteVersion kAIUserSuiteVersion18
00071 #define kAIUserVersion kAIUserSuiteVersion
00072
00073 #if Macintosh || MSWindows
00074 #define kAIMacUserSuite "AI Mac User Suite"
00075 #define kAIMacUserSuiteVersion8 AIAPI_VERSION(8)
00076 #define kAIMacUserSuiteVersion kAIMacUserSuiteVersion8
00077 #define kAIMacUserVersion kAIMacUserSuiteVersion
00078 #endif
00079
00081 enum {
00083 kShortUnits,
00085 kLongSingularUnits,
00087 kLongPluralUnits
00088 };
00089
00094 enum AIAnswer {
00095 kAIAnswer_No = 0,
00096 kAIAnswer_Yes,
00097 kAIAnswer_Cancel,
00098 kAIAnswer_Invalid = 0xFFFFFFFF
00099 };
00100
00106 enum AIValidationStage
00107 {
00109 kAIValidationStage_interactive = 0,
00111 kAIValidationStage_onOk = 1
00112 };
00113
00118 enum AIPredefinedCursor
00119 {
00120 kAIIBeamCursorID = -1,
00121 kAICrossCursorID = -2,
00122 kAIWaitCursorID = -3,
00123 kAIArrowCursorID = -4
00124 };
00125
00128 #define kUnknownUnitsErr '?UNT'
00129
00132 #define kApplicationNotFoundErr 'App?'
00133
00136 #define kObjectNotLinkedErr '!Lnk'
00137
00138
00140 typedef ai::uint32 AIUserDateTime;
00141
00143 typedef struct _t_Opaque_AIResourceManagerHandle *AIResourceManagerHandle;
00144
00152 typedef AIBoolean (*IsValidInputProc) (AIValidationStage validationStage, const ai::UnicodeString &input, ai::UnicodeString &errorStr, void *userdata);
00153
00163 typedef AIBoolean (*UpdateProgressProc) (ai::int32 current, ai::int32 max);
00164
00166 #define kAIUniversalLocaleFormat 0x0000
00167
00168 #define kAIResourceLocaleFormat 0x0001
00169
00170 #define kAISystemLocaleFormat 0x0002
00171
00174 #define kAIShortDateFormat 0x0000
00175
00177 #define kAILongDateFormat 0x0100
00178
00181 #define kAIAbbrevDateFormat 0x0200
00182
00184 #define kAIShortTimeFormat 0x0000
00185
00187 #define kAILongTimeFormat 0x0100
00188
00189
00190
00191
00192
00193
00194
00195
00250 struct AIAutoNameGenerator
00251 {
00252
00255 ai::int32 maximumLength;
00256
00258 AIBoolean uniqueNames;
00259
00261 ai::UnicodeString baseName;
00262
00265 ai::int32 nextNewNameIndex;
00266
00277 AIAPI AIErr (*HasName) (AIAutoNameGenerator &self, const ai::UnicodeString &name, AIBoolean &hasit);
00278 };
00279
00280
00281
00282
00286 struct AIFileDialogFilters
00287 {
00292 void AddFilter(const ai::UnicodeString &desc);
00293
00294
00302 void AddFilter(const ai::UnicodeString &desc, const ai::UnicodeString &pattern);
00303
00310 const ai::UnicodeString &GetFilter() const;
00311
00312 private:
00313 ai::UnicodeString filterStr;
00314 };
00315
00319 struct AIExpressionOptions
00320 {
00325 ai::uint32 unit;
00326
00328 AIDouble minValue;
00329
00331 AIDouble maxValue;
00332
00335 AIDouble oldValue;
00336
00338 ai::uint32 precision;
00339
00340 };
00341
00349 struct AIUserSuite {
00350
00357 AIAPI AIBoolean (*Cancel) ( void );
00358
00365 AIAPI void (*UpdateProgress) ( ai::int32 current, ai::int32 max );
00366
00374 AIAPI void(*SetUpdateProgressCallback) (UpdateProgressProc func);
00375
00381 AIAPI void (*SetProgressText) ( const ai::UnicodeString& text );
00382
00386 AIAPI void (*CloseProgress) ( void );
00387
00397 AIAPI void (*AIRealToString) ( AIReal value, ai::int16 precision, ai::UnicodeString& string );
00398
00406 AIAPI void (*StringToAIReal) ( const ai::UnicodeString& string, AIReal *value );
00416 AIAPI void (*IUAIRealToString) ( AIReal value, ai::int16 precision, ai::UnicodeString& string );
00417
00428 AIAPI void (*IUAIRealToStringWithLocale) ( AIReal value, ai::int16 precision, ai::UnicodeString& string, const ai::LocaleID locale );
00429
00440 AIAPI void (*IUAIRealToStringWithLocaleWithoutScale) ( AIReal value, ai::int16 precision, ai::UnicodeString& string, const ai::LocaleID locale );
00441
00449 AIAPI void (*IUStringToAIReal) ( const ai::UnicodeString& string, AIReal *value );
00450
00463 AIAPI AIErr (*IUAIRealToStringUnits) ( AIReal value, ai::int32 precision, ai::UnicodeString& string );
00464
00477 AIAPI AIErr (*IUAIRealToStringUnitsWithoutScale) ( AIReal value, ai::int32 precision, ai::UnicodeString& string );
00478
00490 AIAPI void (*IUStringUnitsToAIReal) ( const ai::UnicodeString& string, AIReal *value );
00491
00503 AIAPI void (*IUStringUnitsToAIRealWithoutScale) ( const ai::UnicodeString& string, AIReal *value );
00504
00514 AIAPI AIErr (*GetUnitsString) ( ai::int16 format, ai::UnicodeString& string );
00515
00522 AIAPI AIErr (*GetGlobalObjectDisplayName)( ai::UnicodeString& name );
00523
00530 AIAPI AIErr (*EditInOriginalApp) ( AIArtHandle art );
00531
00534 AIAPI AIErr (*AppIdle) ( void );
00535
00540 AIAPI AIErr (*BuildDirectoryMenu) ( AIPlatformMenuHandle menu, const ai::FilePath &fileSpec);
00541
00546 AIAPI AIErr (*GetIndexedDirectorySpec) ( ai::FilePath &fileSpec, ai::int32 index);
00547
00551 AIAPI AIErr (*RevealTheFile) ( const ai::FilePath &fileSpec);
00552
00556 AIAPI void (*DisableProgressCancel) ( void );
00557
00566 AIAPI AIBoolean (*OKToAllocateMemory) ( void );
00567
00568
00572 AIAPI AIErr (*GetDateAndTime)(AIUserDateTime *outValue);
00573
00574
00575
00576
00577
00578
00579
00580
00581
00582 AIAPI AIErr (*GetDateString)(const AIUserDateTime *inValue, const ai::int32 formatFlag, ai::UnicodeString& dateStringUS);
00583
00584
00585
00586
00587
00588
00589
00590
00591 AIAPI AIErr (*GetTimeString)(const AIUserDateTime *inValue, const ai::int32 formatFlag, ai::UnicodeString& dateStringUS);
00592
00597 AIAPI AIErr (*GetYear)(const AIUserDateTime *inValue, int *year);
00598
00603 AIAPI AIErr (*GetMonth)(const AIUserDateTime *inValue, int *month);
00604
00609 AIAPI AIErr (*GetDay)(const AIUserDateTime *inValue, int *day);
00610
00615 AIAPI AIErr (*GetHour)(const AIUserDateTime *inValue, int *hour);
00616
00621 AIAPI AIErr (*GetMinute)(const AIUserDateTime *inValue, int *minute);
00622
00627 AIAPI AIErr (*GetSecond)(const AIUserDateTime *inValue, int *second);
00628
00633 AIAPI AIErr (*GetDayOfWeek)(const AIUserDateTime *inValue, int *dayOfWeek);
00634
00639 AIAPI AIErr (*LaunchApp)(const ai::FilePath &spFileSpec, ASBoolean openDoc);
00640
00647 AIAPI AIErr (*NextName) (AIAutoNameGenerator &set, ai::UnicodeString &name);
00648
00656 AIAPI AIErr (*CopyOfName) (AIAutoNameGenerator &set, const ai::UnicodeString &original, ai::UnicodeString ©);
00657
00667 AIAPI AIErr (*SameName) (const ai::UnicodeString &name1, const ai::UnicodeString &name2, AIBoolean &same);
00668
00669
00677 AIAPI AIErr (*PutFileDialog)(const ai::UnicodeString &title, const AIFileDialogFilters*, const ai::UnicodeString &defaultName, ai::FilePath &ioFilePath);
00678
00685 AIAPI AIErr (*GetFileDialog)(const ai::UnicodeString &title, const AIFileDialogFilters*, ai::FilePath &ioFilePath);
00686
00692 AIAPI AIErr (*GetDirectoryDialog)(const ai::UnicodeString &title, ai::FilePath &ioFilePath);
00693
00703 AIAPI AIBoolean (*OKCancelAlert) (const ai::UnicodeString& msg, AIBoolean defaultOk, const char* dontShowKey);
00704
00712 AIAPI void (*WarningAlert) (const ai::UnicodeString& msg, const char* dontShowKey);
00713
00721 AIAPI void (*MessageAlertEx) (const ai::UnicodeString& msg, const char* dontShowKey);
00722
00731 AIAPI AIAnswer (*QuestionAlert)(const ai::UnicodeString &msg);
00732
00741 AIAPI AIAnswer (*YesNoAlert)(const ai::UnicodeString &msg);
00742
00750 AIAPI void (*ErrorAlert)(const ai::UnicodeString &msg);
00751
00759 AIAPI void (*MessageAlert)(const ai::UnicodeString &msg);
00760
00767 AIAPI AIBoolean (*ChooseFromOSColorPicker) (const AIPoint &inLocation,
00768 const AIRGBColor& inColor, AIRGBColor* outColor);
00769
00786 AIAPI AIErr (*EvaluateExpression)(const ai::UnicodeString& expr, const AIExpressionOptions& options, ai::UnicodeString& evaluatedExpr,
00787 AIBoolean & isChanged , AIDouble& numericValue);
00788
00805 AIAPI AIErr (*EvaluateExpressionWithoutScale)(const ai::UnicodeString& expr, const AIExpressionOptions& options, ai::UnicodeString& evaluatedExpr,
00806 AIBoolean & isChanged , AIDouble& numericValue);
00807
00823 AIAPI AIErr (*GetInputFromUser) ( const ai::UnicodeString &title, const ai::UnicodeString* messageText, const ai::UnicodeString &label, ai::UnicodeString& ioField, IsValidInputProc validator, void *userdata, ai::int32 maxInputChars);
00824
00831 AIAPI AIErr (*CreateCursorResourceMgr)(SPPluginRef, AIResourceManagerHandle* inRscMgr);
00832
00839 AIAPI AIErr (*SetCursor)(ai::int32 cursorID, AIResourceManagerHandle inRscMgr);
00840
00846 AIAPI AIErr(*SetSVGCursor)(ai::int32 cursorID, AIResourceManagerHandle inRscMgr);
00847
00852 AIAPI AIErr (*DisposeCursorResourceMgr)(AIResourceManagerHandle);
00853
00857 AIAPI AIErr (*GetAILanguageCode)(ai::UnicodeString& lang);
00858
00864 AIAPI AIReal (*GetMaximumScaleFactorOnSystem)();
00865
00866
00870 AIAPI AIReal(*GetArtToViewScaleFactor)(AIDocumentViewHandle view);
00871
00877 AIAPI AIReal(*GetAppScaleFactor)();
00878
00879
00884 AIAPI AIErr(*LaunchFolder)(ai::FilePath folderPath);
00885 };
00886
00887
00888
00889
00890
00891
00892 inline void AIFileDialogFilters::AddFilter(const ai::UnicodeString &desc)
00893 {
00894 AddFilter(desc, ai::UnicodeString("*"));
00895 }
00896
00897 inline void AIFileDialogFilters::AddFilter(const ai::UnicodeString &desc, const ai::UnicodeString &pattern)
00898 {
00899 if (!desc.empty() && !pattern.empty())
00900 {
00901 const ai::UnicodeString::size_type len = filterStr.length();
00902 if (len)
00903 filterStr.erase(len-1);
00904 filterStr.append(desc);
00905 filterStr.append(1, 0);
00906 filterStr.append(pattern);
00907 filterStr.append(2, 0);
00908 }
00909 }
00910
00911 inline const ai::UnicodeString &AIFileDialogFilters::GetFilter() const
00912 {
00913 return filterStr;
00914 }
00915
00916 #include "AIHeaderEnd.h"
00917
00918
00919 #endif