OROCHI
 
Loading...
Searching...
No Matches
GxToolResourceEditBase.h
Go to the documentation of this file.
1//===========================================================================
10//===========================================================================
11#pragma once
12
13#if GX_DEVELOP
14
15GX_CORE_NAMESPACE_BEGIN()
16
17//===========================================================================
21//===========================================================================
22class GxToolResourceEditBase : public GxToolResourceViewBase
23{
24 //-------------------------------------------------------------
26 //-------------------------------------------------------------
28public:
29 // RTTI定義
30 GX_RTTI_ABSTRACT_CLASS_NAME_ICON( GxToolResourceEditBase, GxToolResourceViewBase, "リソース編集ツール", GxRtti::ICON_TYPE::TOOL_EDITOR )
31 // ClassBaseReference継承クラス用禁止宣言
32 GX_PROHIBIT_CLASS_BASE_REFERENCE( GxToolResourceEditBase )
33
34
35 static constexpr u32 MENU_ATTRIBUTE_NONE = (0UL);
37 //static constexpr u32 MENU_ATTRIBUTE_OPEN = (1UL << 0);
39 static constexpr u32 MENU_ATTRIBUTE_SAVE = (1UL << 1);
41 //static constexpr u32 MENU_ATTRIBUTE_SAVEAS = (1UL << 2);
43 //static constexpr u32 MENU_ATTRIBUTE_CREATE = (1UL << 4);
45 static constexpr u32 MENU_ATTRIBUTE_RECORD = (1UL << 5);
47 static constexpr u32 MENU_ATTRIBUTE_ALL = (0xffffffff);
48
50 static constexpr u32 IO_ATTRIBUTE_NONE = (0UL);
52 static constexpr u32 IO_ATTRIBUTE_OPEN_DIALOG = (1UL << 0);
54 static constexpr u32 IO_ATTRIBUTE_CHECK_MODIFY = (1UL << 1);
56 static constexpr u32 IO_ATTRIBUTE_DEFAULT = IO_ATTRIBUTE_OPEN_DIALOG | IO_ATTRIBUTE_CHECK_MODIFY;
57
59 //-------------------------------------------------------------
61 //-------------------------------------------------------------
63
65 GxToolResourceEditBase( const GxRttiResource* pResRtti, const u32 attribute = 0 );
67 b32 initialize( void ) override;
68
69private:
71 GxToolResourceEditBase( void ) {}
72
74 //-------------------------------------------------------------
76 //-------------------------------------------------------------
78public:
80 b32 close(void) override;
82 GX_FORCE_INLINE void forceSave(void) { save(); }
84 void forceClose(void);
85
87 GX_FORCE_INLINE b32 isAutoCreateEnable(void) const override { return false; }
88
90 //-------------------------------------------------------------
92 //-------------------------------------------------------------
94public:
96 constexpr void setMenuAttribute(u32 attribute) { _menuAttribute = attribute; }
98 constexpr void onMenuAttribute(u32 attribute) { _menuAttribute |= attribute; }
100 constexpr void offMenuAttribute(u32 attribute) { _menuAttribute &= ~(attribute); }
102 GX_FORCE_INLINE b32 isMenuAttributeOn(u32 attribute) const { return (_menuAttribute & attribute) ? true : false; }
103
105 GX_FORCE_INLINE b32 isForceClose(void){ return _isForceClose; }
106
107protected:
109 GX_FORCE_INLINE void setForceClose(b32 isForceClose) { _isForceClose = isForceClose; }
111 GX_FORCE_INLINE const GxString& getDefaultNewFilePath(void) const { return _defaultFilePath; }
113 GX_FORCE_INLINE void setDefaultNewFilePath( GX_CSTR path ) { _defaultFilePath = path; }
115 GX_FORCE_INLINE const GxString& getDefaultNewFileName(void) const { return _defaultFileName; }
117 GX_FORCE_INLINE void setDefaultNewFileName( GX_CSTR name ) { _defaultFileName = name; }
119 GX_FORCE_INLINE const GxString& getDialogPath(void) { return _dialogPath; }
120
122 constexpr void setRttiResource( const GxRttiResource* pResRtti ) { _pRttiResource = pResRtti; }
123
124private:
126 void setDialogEvent( const GxProperty& dialogEvent );
127
129 //-------------------------------------------------------------
131 //-------------------------------------------------------------
133public:
135 void eventDialogYes(void);
137 void eventDialogNo(void);
139 void eventDialogCancel(void);
140protected:
145 void onCreate(void) override;
147 void onKeyDown(GxKeyboard::KEY key) override;
148
150 void addMenuFilePropertyExtra(GxPropertyTable& table) override;
151
153 void createNew(u32 attribute);
155 void createAndLoadNewResource(void);
158 GX_FORCE_INLINE virtual b32 initializeNewResource(GxResBase* /*pResource*/) { return true; }
160 virtual void load(u32 attribute);
162 virtual void saveAs(u32 attribute);
164 virtual void save(void);
166 virtual void convertAs(u32 attribute);
168 virtual void convert(void);
170 void openRecordFile(void* pRecord);
172 GX_FORCE_INLINE virtual void preCreateResource(void) { GX_SAFE_RELEASE(_pResource); }
173
175 void createNewFileName(GxString& name, const GxRttiResource& resRtti, GX_CSTR baseName = nullptr) const;
176
178 b32 createModifyDialog(const GxProperty& propertyEvent);
179
180private:
182 GX_FORCE_INLINE void cancelDialogEvent( void ) { _needsDialogEvent = false; }
184 void executeDialogEvent( void );
185
187 //-------------------------------------------------------------
189 //-------------------------------------------------------------
191protected:
192 GxString _defaultFilePath;
193 GxString _defaultFileName;
194 GxString _dialogPath;
195
196private:
197 b32 _isForceClose;
198 u32 _menuAttribute;
199 GxProperty _dialogEvent;
200 b32 _needsDialogEvent;
201
203};
204
205GX_CORE_NAMESPACE_END()
206
207#endif // GX_DEVELOP
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
#define GX_SAFE_RELEASE(__POINTER__)
解放(参照カウンタを使用する場合)
Definition GxBase.h:316
プロパティクラス
Definition GxProperty.h:48
プロパティテーブルクラス
Definition GxProperty.h:1641
リソース基底クラス
Definition GxResBase.h:23
@ TOOL_EDITOR
エディター
リソース実行時型情報クラス
Definition GxRttiResource.h:188
文字列型クラス
Definition GxString.h:18
32bitブーリアン
Definition GxDefine.h:173