Develop and Download Open Source Software

Browse Subversion Repository

Contents of /trunk/CPlugin.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations) (download) (as text)
Sun Aug 15 01:53:13 2010 UTC (13 years, 9 months ago) by okadu
File MIME type: text/x-chdr
File size: 3353 byte(s)


1 #ifndef CPLUGIN_H_INCLUDED
2 #define CPLUGIN_H_INCLUDED
3
4 class CSynErr;
5 class CTreeDirElement;
6 class CTreeFileElement;
7 class CPluginTree;
8
9 /*
10 * プラグイン基本クラス
11 */
12 class CPlugin{
13 friend class CTreeFileElement;
14 friend class CPluginList;
15 protected:
16 static bool ms_PreviewState; // プレビュー状態
17 char *m_Buffer; // 定義スクリプト (最初から)
18 char *m_Script; // 定義スクリプト (ヘッダ以降)
19 int m_State; // 状態 (0: init, 1: preloaded, 2: loaded)
20 bool m_InsertTreeFlag; // ツリー挿入フラグ
21 float m_Version; // 対応バージョン
22 LPTEX8 m_IconTex; // アイコンテクスチャ
23 float m_IconRect[4]; // アイコン位置
24 string m_ID; // ID
25 string m_Name; // 名称
26 string m_Author; // 作者
27 string m_IconFileName; // 作者
28 string m_Description; // 説明
29 CPlugin *m_Next; // 次ポインタ
30 public:
31 static bool IsPreview(){ return ms_PreviewState; }
32 static void ResetPreview(){ ms_PreviewState = false; }
33 CPlugin(char *);
34 virtual ~CPlugin();
35 virtual char *DirName() = 0;
36 virtual char *TextName(){ return NULL; }
37 virtual char *TextName2() = 0;
38 virtual char *SaveString(){ return GetID(); }
39 char *GetID(){ return (char *)m_ID.c_str(); }
40 char *GetName(){ return (char *)m_Name.c_str(); }
41 char *GetAuthor(){ return (char *)m_Author.c_str(); }
42 bool IsInserted(){ return m_InsertTreeFlag; }
43 int Compare(CPlugin *);
44 bool ChDir();
45 void HandleError(CSynErr *);
46 char *LoadHeader(char *);
47 bool PreLoad(FILE *);
48 bool PreLoadOldForm(FILE *);
49 virtual bool Load() = 0;
50 virtual bool LoadOldForm(){ return false; }
51 CPlugin *LoadAndGet();
52 string GetBasicInfo();
53 string GetDescription(){ return m_Description; }
54 CTreeFileElement *InsertItem(CTreeDirElement *, CPluginTree *);
55 virtual void SetTreeElement(CTreeFileElement *){}
56 virtual bool IsRenamable(){ return false; }
57 virtual bool ConfirmRename(string &){ return false; }
58 virtual bool IsDeletable(){ return false; }
59 void SetIconTexture();
60 LPTEX8 GetIconTexture(){ return m_IconTex; }
61 float *GetIconRect(){ return m_IconRect; }
62 virtual void SetPreview(){}
63 };
64
65 #define CPLUGIN_CASTFUNC(type) \
66 type *Next(){ return (type *)m_Next; }
67
68 /*
69 * プラグインリスト
70 */
71 class CPluginList{
72 protected:
73 int m_PluginNum; // プラグイン数
74 CPlugin *m_List; // リスト先頭
75 public:
76 CPluginList();
77 virtual ~CPluginList();
78 virtual char *DirName() = 0;
79 virtual char *TextName(){ return NULL; }
80 virtual char *TextName2() = 0;
81 virtual char *Default(){ return NULL; }
82 virtual CPlugin *NewEntry(char *) = 0;
83 bool List();
84 bool LoadOne(char *, char *, bool);
85 CPlugin *FindPlugin(const char *, bool load = true);
86 CPlugin *FindAvailable();
87 void BuildTree(CPluginTree *);
88 };
89
90 // キャスト関数
91 #define CPLUGINLIST_CASTFUNC(type) \
92 type *Root(){ return (type *)m_List; } \
93 type *FindPlugin(const char *id, bool load = true){ \
94 CPlugin *pi = CPluginList::FindPlugin(id, load); \
95 return pi ? (type *)pi : NULL; \
96 } \
97 type *FindAvailable(){ \
98 CPlugin *pi = CPluginList::FindAvailable(); \
99 return pi ? (type *)pi : NULL; \
100 }
101
102 /*
103 * NULL でなければプラグイン ID、NULL なら空文字列を返す
104 */
105 inline char *CheckPluginID(CPlugin *pi){ return (char *)(pi ? pi->GetID() : ""); }
106
107 // 関数宣言
108 char *LoadBinaryText(FILE *, int maxbyte = -1);
109 char *LoadBinaryText(char *, int maxbyte = -1);
110
111 #endif

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26