This repository has been archived on 2023-10-09. You can view files and clone it, but cannot push or open issues or pull requests.
Files
blender-archive/source/blender/blenkernel/BKE_text.h

176 lines
6.3 KiB
C++
Raw Normal View History

/*
* ***** BEGIN GPL LICENSE BLOCK *****
2002-10-12 11:37:38 +00:00
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
2002-10-12 11:37:38 +00:00
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
2010-02-12 13:34:04 +00:00
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
2002-10-12 11:37:38 +00:00
*
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
* All rights reserved.
*
* The Original Code is: all of this file.
*
* Contributor(s): none yet.
*
* ***** END GPL LICENSE BLOCK *****
2002-10-12 11:37:38 +00:00
*/
#ifndef __BKE_TEXT_H__
#define __BKE_TEXT_H__
2002-10-12 11:37:38 +00:00
/** \file BKE_text.h
* \ingroup bke
* \since March 2001
* \author nzc
*/
2002-10-12 11:37:38 +00:00
#ifdef __cplusplus
extern "C" {
#endif
struct Main;
2002-10-12 11:37:38 +00:00
struct Text;
struct TextLine;
2003-10-25 12:27:16 +00:00
struct SpaceText;
2002-10-12 11:37:38 +00:00
void BKE_text_free (struct Text *text);
2002-10-12 11:37:38 +00:00
void txt_set_undostate (int u);
int txt_get_undostate (void);
2013-03-14 05:52:30 +00:00
struct Text *BKE_text_add (struct Main *bmain, const char *name);
int txt_extended_ascii_as_utf8(char **str);
int BKE_text_reload (struct Text *text);
struct Text *BKE_text_load_ex(struct Main *bmain, const char *file, const char *relpath,
const bool is_internal);
2013-03-14 05:52:30 +00:00
struct Text *BKE_text_load (struct Main *bmain, const char *file, const char *relpath);
struct Text *BKE_text_copy (struct Text *ta);
void BKE_text_unlink (struct Main *bmain, struct Text *text);
void BKE_text_clear (struct Text *text);
void BKE_text_write (struct Text *text, const char *str);
2002-10-12 11:37:38 +00:00
2013-03-14 05:52:30 +00:00
char *txt_to_buf (struct Text *text);
2002-10-12 11:37:38 +00:00
void txt_clean_text (struct Text *text);
void txt_order_cursors (struct Text *text, const bool reverse);
int txt_find_string (struct Text *text, const char *findstr, int wrap, int match_case);
2002-10-12 11:37:38 +00:00
int txt_has_sel (struct Text *text);
int txt_get_span (struct TextLine *from, struct TextLine *to);
int txt_utf8_offset_to_index(const char *str, int offset);
int txt_utf8_index_to_offset(const char *str, int index);
int txt_utf8_offset_to_column(const char *str, int offset);
int txt_utf8_column_to_offset(const char *str, int column);
void txt_move_up (struct Text *text, const bool sel);
void txt_move_down (struct Text *text, const bool sel);
void txt_move_left (struct Text *text, const bool sel);
void txt_move_right (struct Text *text, const bool sel);
void txt_jump_left (struct Text *text, const bool sel, const bool use_init_step);
void txt_jump_right (struct Text *text, const bool sel, const bool use_init_step);
void txt_move_bof (struct Text *text, const bool sel);
void txt_move_eof (struct Text *text, const bool sel);
void txt_move_bol (struct Text *text, const bool sel);
void txt_move_eol (struct Text *text, const bool sel);
void txt_move_toline (struct Text *text, unsigned int line, const bool sel);
void txt_move_to (struct Text *text, unsigned int line, unsigned int ch, const bool sel);
2002-10-12 11:37:38 +00:00
void txt_pop_sel (struct Text *text);
void txt_delete_char (struct Text *text);
void txt_delete_word (struct Text *text);
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
2009-02-28 23:33:35 +00:00
void txt_delete_selected (struct Text *text);
2002-10-12 11:37:38 +00:00
void txt_sel_all (struct Text *text);
void txt_sel_line (struct Text *text);
2013-03-14 05:52:30 +00:00
char *txt_sel_to_buf (struct Text *text);
void txt_insert_buf (struct Text *text, const char *in_buffer);
void txt_undo_add_op (struct Text *text, int op);
2002-10-12 11:37:38 +00:00
void txt_do_undo (struct Text *text);
void txt_do_redo (struct Text *text);
void txt_split_curline (struct Text *text);
void txt_backspace_char (struct Text *text);
void txt_backspace_word (struct Text *text);
int txt_add_char (struct Text *text, unsigned int add);
int txt_add_raw_char (struct Text *text, unsigned int add);
int txt_replace_char (struct Text *text, unsigned int add);
void txt_unindent (struct Text *text);
void txt_comment (struct Text *text);
void txt_indent (struct Text *text);
void txt_uncomment (struct Text *text);
void txt_move_lines (struct Text *text, const int direction);
void txt_duplicate_line (struct Text *text);
2013-03-14 05:52:30 +00:00
int txt_setcurr_tab_spaces(struct Text *text, int space);
bool txt_cursor_is_line_start(struct Text *text);
bool txt_cursor_is_line_end(struct Text *text);
#if 0
void txt_print_undo (struct Text *text);
#endif
/* utility functions, could be moved somewhere more generic but are python/text related */
int text_check_bracket(const char ch);
int text_check_delim(const char ch);
int text_check_digit(const char ch);
int text_check_identifier(const char ch);
int text_check_identifier_nodigit(const char ch);
int text_check_whitespace(const char ch);
int text_find_identifier_start(const char *str, int i);
/* defined in bpy_interface.c */
extern int text_check_identifier_unicode(const unsigned int ch);
extern int text_check_identifier_nodigit_unicode(const unsigned int ch);
enum {
TXT_MOVE_LINE_UP = -1,
TXT_MOVE_LINE_DOWN = 1
};
2002-10-12 11:37:38 +00:00
/* Undo opcodes */
/* Complex editing */
/* 1 - opcode is followed by 1 byte for ascii character and opcode (repeat)) */
/* 2 - opcode is followed by 2 bytes for utf-8 character and opcode (repeat)) */
/* 3 - opcode is followed by 3 bytes for utf-8 character and opcode (repeat)) */
/* 4 - opcode is followed by 4 bytes for unicode character and opcode (repeat)) */
#define UNDO_INSERT_1 013
#define UNDO_INSERT_2 014
#define UNDO_INSERT_3 015
#define UNDO_INSERT_4 016
#define UNDO_BS_1 017
#define UNDO_BS_2 020
#define UNDO_BS_3 021
#define UNDO_BS_4 022
#define UNDO_DEL_1 023
#define UNDO_DEL_2 024
#define UNDO_DEL_3 025
#define UNDO_DEL_4 026
2002-10-12 11:37:38 +00:00
/* Text block (opcode is followed
* by 4 character length ID + the text
* block itself + the 4 character length
* ID (repeat) and opcode (repeat)) */
#define UNDO_DBLOCK 027 /* Delete block */
#define UNDO_IBLOCK 030 /* Insert block */
2002-10-12 11:37:38 +00:00
/* Misc */
#define UNDO_INDENT 032
#define UNDO_UNINDENT 033
#define UNDO_COMMENT 034
#define UNDO_UNCOMMENT 035
#define UNDO_MOVE_LINES_UP 036
#define UNDO_MOVE_LINES_DOWN 037
#define UNDO_DUPLICATE 040
2002-10-12 11:37:38 +00:00
#ifdef __cplusplus
}
#endif
#endif