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