batch remove .'s used with RNA_def_struct_ui_text
[blender.git] / source / blender / editors / space_text / text_header.c
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. 
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19  *
20  * The Original Code is Copyright (C) 2008 Blender Foundation.
21  * All rights reserved.
22  *
23  * 
24  * Contributor(s): Blender Foundation
25  *
26  * ***** END GPL LICENSE BLOCK *****
27  */
28
29 #include <stdlib.h>
30 #include <string.h>
31 #include <stdio.h>
32
33 /* file time checking */
34 #include <ctype.h>
35 #include <sys/types.h>
36 #include <sys/stat.h>
37
38 #ifndef _WIN32
39 #include <unistd.h>
40 #else
41 #include <io.h>
42 #include "BLI_winstuff.h"
43 #endif
44
45 #include "DNA_space_types.h"
46 #include "DNA_scene_types.h"
47 #include "DNA_screen_types.h"
48 #include "DNA_text_types.h"
49 #include "DNA_windowmanager_types.h"
50
51 #include "MEM_guardedalloc.h"
52
53 #include "BLI_blenlib.h"
54
55 #include "BKE_context.h"
56 #include "BKE_global.h"
57 #include "BKE_library.h"
58 #include "BKE_main.h"
59 #include "BKE_scene.h"
60 #include "BKE_screen.h"
61 #include "BKE_text.h"
62
63 #include "ED_screen.h"
64 #include "ED_types.h"
65 #include "ED_util.h"
66
67 #include "WM_api.h"
68 #include "WM_types.h"
69
70 #include "BIF_gl.h"
71 #include "BIF_glutil.h"
72
73 #include "UI_interface.h"
74 #include "UI_resources.h"
75 #include "UI_view2d.h"
76
77 #include "RNA_access.h"
78
79 #ifndef DISABLE_PYTHON
80 #include "BPY_extern.h"
81 // XXX #include "BPY_menus.h"
82 #endif
83
84 #include "text_intern.h"
85
86 #define HEADER_PATH_MAX 260
87
88 /* ************************ header area region *********************** */
89
90 /************************** properties ******************************/
91
92 ARegion *text_has_properties_region(ScrArea *sa)
93 {
94         ARegion *ar, *arnew;
95         
96         for(ar= sa->regionbase.first; ar; ar= ar->next)
97                 if(ar->regiontype==RGN_TYPE_UI)
98                         return ar;
99         
100         /* add subdiv level; after header */
101         for(ar= sa->regionbase.first; ar; ar= ar->next)
102                 if(ar->regiontype==RGN_TYPE_HEADER)
103                         break;
104         
105         /* is error! */
106         if(ar==NULL) return NULL;
107         
108         arnew= MEM_callocN(sizeof(ARegion), "properties region");
109         
110         BLI_insertlinkafter(&sa->regionbase, ar, arnew);
111         arnew->regiontype= RGN_TYPE_UI;
112         arnew->alignment= RGN_ALIGN_LEFT;
113         
114         arnew->flag = RGN_FLAG_HIDDEN;
115         
116         return arnew;
117 }
118
119 static int properties_poll(bContext *C)
120 {
121         return (CTX_wm_space_text(C) != NULL);
122 }
123
124 static int properties_exec(bContext *C, wmOperator *op)
125 {
126         ScrArea *sa= CTX_wm_area(C);
127         ARegion *ar= text_has_properties_region(sa);
128         
129         if(ar)
130                 ED_region_toggle_hidden(C, ar);
131
132         return OPERATOR_FINISHED;
133 }
134
135 void TEXT_OT_properties(wmOperatorType *ot)
136 {
137         /* identifiers */
138         ot->name= "Properties";
139     ot->description= "Toggle text properties panel";
140         ot->idname= "TEXT_OT_properties";
141         
142         /* api callbacks */
143         ot->exec= properties_exec;
144         ot->poll= properties_poll;
145 }
146
147 /******************** XXX popup menus *******************/
148
149 #if 0
150 {
151         // RMB
152
153         uiPopupMenu *pup;
154
155         if(text) {
156                 pup= uiPupMenuBegin(C, "Text", 0);
157                 if(txt_has_sel(text)) {
158                         uiItemO(layout, NULL, 0, "TEXT_OT_cut");
159                         uiItemO(layout, NULL, 0, "TEXT_OT_copy");
160                 }
161                 uiItemO(layout, NULL, 0, "TEXT_OT_paste");
162                 uiItemO(layout, NULL, 0, "TEXT_OT_new");
163                 uiItemO(layout, NULL, 0, "TEXT_OT_open");
164                 uiItemO(layout, NULL, 0, "TEXT_OT_save");
165                 uiItemO(layout, NULL, 0, "TEXT_OT_save_as");
166                 uiItemO(layout, NULL, 0, "TEXT_OT_run_script");
167                 uiPupMenuEnd(C, pup);
168         }
169         else {
170                 pup= uiPupMenuBegin(C, "File", 0);
171                 uiItemO(layout, NULL, 0, "TEXT_OT_new");
172                 uiItemO(layout, NULL, 0, "TEXT_OT_open");
173                 uiPupMenuEnd(C, pup);
174         }
175 }
176
177 {
178         // Alt+Shift+E
179
180         uiPopupMenu *pup;
181
182         pup= uiPupMenuBegin(C, "Edit", 0);
183         uiItemO(layout, NULL, 0, "TEXT_OT_cut");
184         uiItemO(layout, NULL, 0, "TEXT_OT_copy");
185         uiItemO(layout, NULL, 0, "TEXT_OT_paste");
186         uiPupMenuEnd(C, pup);
187 }
188
189 {
190         // Alt+Shift+F
191
192         uiPopupMenu *pup;
193
194         if(text) {
195                 pup= uiPupMenuBegin(C, "Text", 0);
196                 uiItemO(layout, NULL, 0, "TEXT_OT_new");
197                 uiItemO(layout, NULL, 0, "TEXT_OT_open");
198                 uiItemO(layout, NULL, 0, "TEXT_OT_save");
199                 uiItemO(layout, NULL, 0, "TEXT_OT_save_as");
200                 uiItemO(layout, NULL, 0, "TEXT_OT_run_script");
201                 uiPupMenuEnd(C, pup);
202         }
203         else {
204                 pup= uiPupMenuBegin(C, "File", 0);
205                 uiItemO(layout, NULL, 0, "TEXT_OT_new");
206                 uiItemO(layout, NULL, 0, "TEXT_OT_open");
207                 uiPupMenuEnd(C, pup);
208         }
209 }
210
211 {
212         // Alt+Shift+V
213
214         uiPopupMenu *pup;
215
216         pup= uiPupMenuBegin(C, "Text", 0);
217         uiItemEnumO(layout, "Top of File", 0, "TEXT_OT_move", "type", FILE_TOP);
218         uiItemEnumO(layout, "Bottom of File", 0, "TEXT_OT_move", "type", FILE_BOTTOM);
219         uiItemEnumO(layout, "Page Up", 0, "TEXT_OT_move", "type", PREV_PAGE);
220         uiItemEnumO(layout,  "Page Down", 0, "TEXT_OT_move", "type", NEXT_PAGE);
221         uiPupMenuEnd(C, pup);
222 }
223 #endif
224