diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-03-01 02:33:35 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2009-03-01 02:33:35 +0300 |
commit | 6cc89b9d4e6ab17bea0631b1be800dd9a022db23 (patch) | |
tree | 356e3649b94ec7f5a144f1fa6304f5646c4b9bf1 /source/blender/editors/space_text/text_intern.h | |
parent | 2469305376856e0f53b4ffdbe2bf2576fa25809c (diff) |
2.5: Text Editor back.
There was very little structure in this code, using many globals
and duplicated code. Now it should be better structured. Most
things should work, the main parts that are not back yet are the
python plugins and markers. Notes:
* Blenfont is used for drawing the text, nicely anti-aliased.
* A monospace truetype font was added, since that is needed for
the text editor. It's Bitstream Vera Sans Mono. This is the
default gnome terminal font, but it doesn't fit entirely well
with the other font I think, can be changed easily of course.
* Clipboard copy/cut/paste now always uses the system clipboard,
the code for the own cut buffer was removed.
* The interface buttons should support copy/cut/paste again now
as well.
* WM_clipboard_text_get/WM_clipboard_text_set were added to the
windowmanager code.
* Find panel is now a kind of second header, instead of a panel.
This needs especially a way to start editing the text field
immediately on open still.
* Operators are independent of the actual space when possible,
was a bit of puzzling but got it solved nice with notifiers,
and some lazy init for syntax highlight in the drawing code.
* RNA was created for the text editor space and used for buttons.
* Operators:
* New, Open, Reload, Save, Save As, Make Internal
* Run Script, Refresh Pyconstraints
* Copy, Cut, Paste
* Convert Whitespace, Uncomment, Comment, Indent, Unindent
* Line Break, Insert
* Next Marker, Previous Marker, Clear All Markers, Mark All
* Select Line, Select All
* Jump, Move, Move Select, Delete, Toggle Overwrite
* Scroll, Scroll Bar, Set Cursor, Line Number
* Find and Replace, Find, Replace, Find Set Selected,
Replace Set Selected
* To 3D Object
* Resolve Conflict
Diffstat (limited to 'source/blender/editors/space_text/text_intern.h')
-rw-r--r-- | source/blender/editors/space_text/text_intern.h | 122 |
1 files changed, 120 insertions, 2 deletions
diff --git a/source/blender/editors/space_text/text_intern.h b/source/blender/editors/space_text/text_intern.h index 9fb2f0e07c3..b7e45501047 100644 --- a/source/blender/editors/space_text/text_intern.h +++ b/source/blender/editors/space_text/text_intern.h @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * The Original Code is Copyright (C) 2008 Blender Foundation. + * The Original Code is Copyright (C) 2009 Blender Foundation. * All rights reserved. * * @@ -30,10 +30,128 @@ /* internal exports only */ +struct ARegion; +struct bContext; +struct BMF_Font; +struct ReportList; +struct ScrArea; +struct SpaceText; +struct Text; +struct TextLine; +struct wmOperatorType; +struct wmWindowManager; /* text_header.c */ -void text_header_buttons(const bContext *C, ARegion *ar); +void text_header_buttons(const struct bContext *C, struct ARegion *ar); +void text_find_buttons(const struct bContext *C, struct ARegion *ar); +/* text_draw.c */ +void draw_text_main(struct SpaceText *st, struct ARegion *ar); + +int text_check_bracket(char ch); +int text_check_delim(char ch); +int text_check_digit(char ch); +int text_check_identifier(char ch); +int text_check_whitespace(char ch); + +int text_font_width_character(struct SpaceText *st); +int text_font_width(struct SpaceText *st, char *str); + +void text_update_line_edited(struct Text *text, struct TextLine *line); +void text_update_edited(struct Text *text); +void text_update_cursor_moved(struct SpaceText *st, struct ARegion *ar); + +#define TEXTXLOC 38 + +#define SUGG_LIST_SIZE 7 +#define SUGG_LIST_WIDTH 20 +#define DOC_WIDTH 40 +#define DOC_HEIGHT 10 + +#define TOOL_SUGG_LIST 0x01 +#define TOOL_DOCUMENT 0x02 + +#define TMARK_GRP_CUSTOM 0x00010000 /* Lower 2 bytes used for Python groups */ +#define TMARK_GRP_FINDALL 0x00020000 + +typedef struct FlattenString { + char fixedbuf[256]; + int fixedaccum[256]; + + char *buf; + int *accum; + int pos, len; +} FlattenString; + +int flatten_string(struct SpaceText *st, FlattenString *fs, char *in); +void flatten_string_free(FlattenString *fs); + +void unlink_text(struct Text *text); + +int wrap_width(struct SpaceText *st, struct ARegion *ar); +void wrap_offset(struct SpaceText *st, struct ARegion *ar, struct TextLine *linein, int cursin, int *offl, int *offc); + +int text_file_modified(struct Text *text); + +int text_do_suggest_select(struct SpaceText *st, struct ARegion *ar); +void text_pop_suggest_list(); + + +/* text_ops.c */ +enum { LINE_BEGIN, LINE_END, FILE_TOP, FILE_BOTTOM, PREV_CHAR, NEXT_CHAR, + PREV_WORD, NEXT_WORD, PREV_LINE, NEXT_LINE, PREV_PAGE, NEXT_PAGE }; +enum { DEL_NEXT_CHAR, DEL_PREV_CHAR, DEL_NEXT_WORD, DEL_PREV_WORD }; + +void TEXT_OT_new(struct wmOperatorType *ot); +void TEXT_OT_open(struct wmOperatorType *ot); +void TEXT_OT_reload(struct wmOperatorType *ot); +void TEXT_OT_save(struct wmOperatorType *ot); +void TEXT_OT_save_as(struct wmOperatorType *ot); +void TEXT_OT_make_internal(struct wmOperatorType *ot); +void TEXT_OT_run_script(struct wmOperatorType *ot); +void TEXT_OT_refresh_pyconstraints(struct wmOperatorType *ot); + +void TEXT_OT_paste(struct wmOperatorType *ot); +void TEXT_OT_copy(struct wmOperatorType *ot); +void TEXT_OT_cut(struct wmOperatorType *ot); + +void TEXT_OT_convert_whitespace(struct wmOperatorType *ot); +void TEXT_OT_uncomment(struct wmOperatorType *ot); +void TEXT_OT_comment(struct wmOperatorType *ot); +void TEXT_OT_unindent(struct wmOperatorType *ot); +void TEXT_OT_indent(struct wmOperatorType *ot); + +void TEXT_OT_line_break(struct wmOperatorType *ot); +void TEXT_OT_insert(struct wmOperatorType *ot); + +void TEXT_OT_clear_all_markers(struct wmOperatorType *ot); +void TEXT_OT_next_marker(struct wmOperatorType *ot); +void TEXT_OT_previous_marker(struct wmOperatorType *ot); + +void TEXT_OT_select_line(struct wmOperatorType *ot); +void TEXT_OT_select_all(struct wmOperatorType *ot); + +void TEXT_OT_jump(struct wmOperatorType *ot); +void TEXT_OT_move(struct wmOperatorType *ot); +void TEXT_OT_move_select(struct wmOperatorType *ot); +void TEXT_OT_delete(struct wmOperatorType *ot); +void TEXT_OT_toggle_overwrite(struct wmOperatorType *ot); + +void TEXT_OT_scroll(struct wmOperatorType *ot); +void TEXT_OT_scroll_bar(struct wmOperatorType *ot); +void TEXT_OT_set_cursor(struct wmOperatorType *ot); +void TEXT_OT_line_number(struct wmOperatorType *ot); + +void TEXT_OT_find_and_replace(struct wmOperatorType *ot); +void TEXT_OT_find(struct wmOperatorType *ot); +void TEXT_OT_find_set_selected(struct wmOperatorType *ot); +void TEXT_OT_replace(struct wmOperatorType *ot); +void TEXT_OT_replace_set_selected(struct wmOperatorType *ot); +void TEXT_OT_mark_all(struct wmOperatorType *ot); + +void TEXT_OT_to_3d_object(struct wmOperatorType *ot); + +void TEXT_OT_resolve_conflict(struct wmOperatorType *ot); #endif /* ED_TEXT_INTERN_H */ |