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