Top |
gboolean | auto-indent | Read / Write |
GtkSourceBackgroundPatternType | background-pattern | Read / Write |
GtkSourceCompletion * | completion | Read |
gboolean | highlight-current-line | Read / Write |
gboolean | indent-on-tab | Read / Write |
int | indent-width | Read / Write |
gboolean | insert-spaces-instead-of-tabs | Read / Write |
guint | right-margin-position | Read / Write |
gboolean | show-line-marks | Read / Write |
gboolean | show-line-numbers | Read / Write |
gboolean | show-right-margin | Read / Write |
gboolean | smart-backspace | Read / Write |
GtkSourceSmartHomeEndType | smart-home-end | Read / Write |
GtkSourceSpaceDrawer * | space-drawer | Read |
guint | tab-width | Read / Write |
void | change-case | Action |
void | change-number | Action |
void | join-lines | Action |
void | line-mark-activated | Run Last |
void | move-lines | Action |
void | move-to-matching-bracket | Action |
void | move-words | Action |
void | redo | Action |
void | show-completion | Action |
void | smart-home-end | Run Last |
void | undo | Action |
GEnum ├── GtkSourceBackgroundPatternType ├── GtkSourceSmartHomeEndType ╰── GtkSourceViewGutterPosition GObject ╰── GInitiallyUnowned ╰── GtkWidget ╰── GtkContainer ╰── GtkTextView ╰── GtkSourceView ╰── GtkSourceMap
GtkSourceView implements AtkImplementorIface, GtkBuildable and GtkScrollable.
GtkSourceView is the main class of the GtkSourceView library. Use a GtkSourceBuffer to display text with a GtkSourceView.
This class provides:
Show the line numbers;
Show a right margin;
Highlight the current line;
Indentation settings;
Configuration for the Home and End keyboard keys;
Configure and show line marks;
And a few other things.
An easy way to test all these features is to use the test-widget mini-program provided in the GtkSourceView repository, in the tests/ directory.
The GtkSourceView implementation of the GtkBuildable interface exposes the “completion” object with the internal-child "completion".
An example of a UI definition fragment with GtkSourceView:
1 2 3 4 5 6 7 8 9 |
<object class="GtkSourceView" id="source_view"> <property name="tab_width">4</property> <property name="auto_indent">True</property> <child internal-child="completion"> <object class="GtkSourceCompletion"> <property name="select_on_show">False</property> </object> </child> </object> |
Gtk CSS provides the best way to change the font for a GtkSourceView in a manner that allows for components like GtkSourceMap to scale the desired font.
1 2 3 4 5 6 7 8 9 |
GtkCssProvider *provider = gtk_css_provider_new (); gtk_css_provider_load_from_data (provider, "textview { font-family: Monospace; font-size: 8pt; }", -1, NULL); gtk_style_context_add_provider (gtk_widget_get_style_context (view), GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); g_object_unref (provider); |
If you need to adjust the font or size of font within a portion of the document only, you should use a GtkTextTag with the “family” or “scale” set so that the font size may be scaled relative to the default font set in CSS.
GtkWidget *
gtk_source_view_new (void
);
Creates a new GtkSourceView.
By default, an empty GtkSourceBuffer will be lazily created and can be
retrieved with gtk_text_view_get_buffer()
.
If you want to specify your own buffer, either override the
GtkTextViewClass create_buffer factory method, or use
gtk_source_view_new_with_buffer()
.
GtkWidget *
gtk_source_view_new_with_buffer (GtkSourceBuffer *buffer
);
Creates a new GtkSourceView widget displaying the buffer
buffer
. One buffer can be shared among many widgets.
GtkSourceCompletion *
gtk_source_view_get_completion (GtkSourceView *view
);
Gets the GtkSourceCompletion associated with view
. The returned object is
guaranteed to be the same for the lifetime of view
. Each GtkSourceView
object has a different GtkSourceCompletion.
GtkSourceGutter * gtk_source_view_get_gutter (GtkSourceView *view
,GtkTextWindowType window_type
);
Returns the GtkSourceGutter object associated with window_type
for view
.
Only GTK_TEXT_WINDOW_LEFT and GTK_TEXT_WINDOW_RIGHT are supported,
respectively corresponding to the left and right gutter. The line numbers
and mark category icons are rendered in the left gutter.
Since: 2.8
GtkSourceSpaceDrawer *
gtk_source_view_get_space_drawer (GtkSourceView *view
);
Gets the GtkSourceSpaceDrawer associated with view
. The returned object is
guaranteed to be the same for the lifetime of view
. Each GtkSourceView
object has a different GtkSourceSpaceDrawer.
Since: 3.24
void gtk_source_view_set_show_line_numbers (GtkSourceView *view
,gboolean show
);
If TRUE
line numbers will be displayed beside the text.
gboolean
gtk_source_view_get_show_line_numbers (GtkSourceView *view
);
Returns whether line numbers are displayed beside the text.
void gtk_source_view_set_show_right_margin (GtkSourceView *view
,gboolean show
);
If TRUE
a right margin is displayed.
gboolean
gtk_source_view_get_show_right_margin (GtkSourceView *view
);
Returns whether a right margin is displayed.
void gtk_source_view_set_right_margin_position (GtkSourceView *view
,guint pos
);
Sets the position of the right margin in the given view
.
guint
gtk_source_view_get_right_margin_position
(GtkSourceView *view
);
Gets the position of the right margin in the given view
.
void gtk_source_view_set_highlight_current_line (GtkSourceView *view
,gboolean highlight
);
If highlight
is TRUE
the current line will be highlighted.
gboolean
gtk_source_view_get_highlight_current_line
(GtkSourceView *view
);
Returns whether the current line is highlighted.
void gtk_source_view_set_auto_indent (GtkSourceView *view
,gboolean enable
);
If TRUE
auto-indentation of text is enabled.
When Enter is pressed to create a new line, the auto-indentation inserts the same indentation as the previous line. This is not a "smart indentation" where an indentation level is added or removed depending on the context.
gboolean
gtk_source_view_get_auto_indent (GtkSourceView *view
);
Returns whether auto-indentation of text is enabled.
void gtk_source_view_set_indent_on_tab (GtkSourceView *view
,gboolean enable
);
If TRUE
, when the tab key is pressed when several lines are selected, the
selected lines are indented of one level instead of being replaced with a \t
character. Shift+Tab unindents the selection.
If the first or last line is not selected completely, it is also indented or unindented.
When the selection doesn't span several lines, the tab key always replaces the selection with a normal \t character.
gboolean
gtk_source_view_get_indent_on_tab (GtkSourceView *view
);
Returns whether when the tab key is pressed the current selection should get indented instead of replaced with the \t character.
void gtk_source_view_set_tab_width (GtkSourceView *view
,guint width
);
Sets the width of tabulation in characters. The GtkTextBuffer still contains \t characters, but they can take a different visual width in a GtkSourceView widget.
guint
gtk_source_view_get_tab_width (GtkSourceView *view
);
Returns the width of tabulation in characters.
void gtk_source_view_set_indent_width (GtkSourceView *view
,gint width
);
Sets the number of spaces to use for each step of indent when the tab key is
pressed. If width
is -1, the value of the “tab-width” property
will be used.
The “indent-width” interacts with the
“insert-spaces-instead-of-tabs” property and
“tab-width”. An example will be clearer: if the
“indent-width” is 4 and
“tab-width” is 8 and
“insert-spaces-instead-of-tabs” is FALSE
, then pressing the tab
key at the beginning of a line will insert 4 spaces. So far so good. Pressing
the tab key a second time will remove the 4 spaces and insert a \t character
instead (since “tab-width” is 8). On the other hand, if
“insert-spaces-instead-of-tabs” is TRUE
, the second tab key
pressed will insert 4 more spaces for a total of 8 spaces in the
GtkTextBuffer.
The test-widget program (available in the GtkSourceView repository) may be useful to better understand the indentation settings (enable the space drawing!).
gint
gtk_source_view_get_indent_width (GtkSourceView *view
);
Returns the number of spaces to use for each step of indent.
See gtk_source_view_set_indent_width()
for details.
void gtk_source_view_set_insert_spaces_instead_of_tabs (GtkSourceView *view
,gboolean enable
);
If TRUE
a tab key pressed is replaced by a group of space characters. Of
course it is still possible to insert a real \t programmatically with the
GtkTextBuffer API.
gboolean
gtk_source_view_get_insert_spaces_instead_of_tabs
(GtkSourceView *view
);
Returns whether when inserting a tabulator character it should be replaced by a group of space characters.
void gtk_source_view_indent_lines (GtkSourceView *view
,GtkTextIter *start
,GtkTextIter *end
);
Inserts one indentation level at the beginning of the specified lines. The empty lines are not indented.
view |
||
start |
GtkTextIter of the first line to indent |
|
end |
GtkTextIter of the last line to indent |
Since: 3.16
void gtk_source_view_unindent_lines (GtkSourceView *view
,GtkTextIter *start
,GtkTextIter *end
);
Removes one indentation level at the beginning of the specified lines.
view |
||
start |
GtkTextIter of the first line to indent |
|
end |
GtkTextIter of the last line to indent |
Since: 3.16
guint gtk_source_view_get_visual_column (GtkSourceView *view
,const GtkTextIter *iter
);
Determines the visual column at iter
taking into consideration the
“tab-width” of view
.
void gtk_source_view_set_smart_backspace (GtkSourceView *view
,gboolean smart_backspace
);
When set to TRUE
, pressing the Backspace key will try to delete spaces
up to the previous tab stop.
Since: 3.18
gboolean
gtk_source_view_get_smart_backspace (GtkSourceView *view
);
Returns TRUE
if pressing the Backspace key will try to delete spaces
up to the previous tab stop.
Since: 3.18
void gtk_source_view_set_smart_home_end (GtkSourceView *view
,GtkSourceSmartHomeEndType smart_home_end
);
Set the desired movement of the cursor when HOME and END keys are pressed.
GtkSourceSmartHomeEndType
gtk_source_view_get_smart_home_end (GtkSourceView *view
);
Returns a GtkSourceSmartHomeEndType end value specifying how the cursor will move when HOME and END keys are pressed.
void gtk_source_view_set_mark_attributes (GtkSourceView *view
,const gchar *category
,GtkSourceMarkAttributes *attributes
,gint priority
);
Sets attributes and priority for the category
.
GtkSourceMarkAttributes * gtk_source_view_get_mark_attributes (GtkSourceView *view
,const gchar *category
,gint *priority
);
Gets attributes and priority for the category
.
view |
||
category |
the category. |
|
priority |
place where priority of the category will be stored. |
GtkSourceMarkAttributes for the category
.
The object belongs to view
, so it must not be unreffed.
[transfer none]
void gtk_source_view_set_show_line_marks (GtkSourceView *view
,gboolean show
);
If TRUE
line marks will be displayed beside the text.
Since: 2.2
gboolean
gtk_source_view_get_show_line_marks (GtkSourceView *view
);
Returns whether line marks are displayed beside the text.
Since: 2.2
void gtk_source_view_set_background_pattern (GtkSourceView *view
,GtkSourceBackgroundPatternType background_pattern
);
Set if and how the background pattern should be displayed.
Since: 3.16
GtkSourceBackgroundPatternType
gtk_source_view_get_background_pattern
(GtkSourceView *view
);
Returns the GtkSourceBackgroundPatternType specifying if and how
the background pattern should be displayed for this view
.
Since: 3.16
smart-home-end disabled. |
||
move to the first/last non-whitespace character on the first press of the HOME/END keys and to the beginning/end of the line on the second press. |
||
move to the beginning/end of the line on the first press of the HOME/END keys and to the first/last non-whitespace character on the second press. |
||
always move to the first/last non-whitespace character when the HOME/END keys are pressed. |
“auto-indent”
property“auto-indent” gboolean
Whether to enable auto indentation.
Owner: GtkSourceView
Flags: Read / Write
Default value: FALSE
“background-pattern”
property“background-pattern” GtkSourceBackgroundPatternType
Draw a specific background pattern on the view.
Owner: GtkSourceView
Flags: Read / Write
Default value: GTK_SOURCE_BACKGROUND_PATTERN_TYPE_NONE
Since: 3.16
“completion”
property“completion” GtkSourceCompletion *
The completion object associated with the view
Owner: GtkSourceView
Flags: Read
“highlight-current-line”
property“highlight-current-line” gboolean
Whether to highlight the current line.
Owner: GtkSourceView
Flags: Read / Write
Default value: FALSE
“indent-on-tab”
property“indent-on-tab” gboolean
Whether to indent the selected text when the tab key is pressed.
Owner: GtkSourceView
Flags: Read / Write
Default value: TRUE
“indent-width”
property “indent-width” int
Width of an indentation step expressed in number of spaces.
Owner: GtkSourceView
Flags: Read / Write
Allowed values: [-1,32]
Default value: -1
“insert-spaces-instead-of-tabs”
property“insert-spaces-instead-of-tabs” gboolean
Whether to insert spaces instead of tabs.
Owner: GtkSourceView
Flags: Read / Write
Default value: FALSE
“right-margin-position”
property“right-margin-position” guint
Position of the right margin.
Owner: GtkSourceView
Flags: Read / Write
Allowed values: [1,1000]
Default value: 80
“show-line-marks”
property“show-line-marks” gboolean
Whether to display line mark pixbufs
Owner: GtkSourceView
Flags: Read / Write
Default value: FALSE
“show-line-numbers”
property“show-line-numbers” gboolean
Whether to display line numbers
Owner: GtkSourceView
Flags: Read / Write
Default value: FALSE
“show-right-margin”
property“show-right-margin” gboolean
Whether to display the right margin.
Owner: GtkSourceView
Flags: Read / Write
Default value: FALSE
“smart-backspace”
property“smart-backspace” gboolean
Whether smart Backspace should be used.
Owner: GtkSourceView
Flags: Read / Write
Default value: FALSE
Since: 3.18
“smart-home-end”
property“smart-home-end” GtkSourceSmartHomeEndType
Set the behavior of the HOME and END keys.
Owner: GtkSourceView
Flags: Read / Write
Default value: GTK_SOURCE_SMART_HOME_END_DISABLED
Since: 2.0
“space-drawer”
property“space-drawer” GtkSourceSpaceDrawer *
The GtkSourceSpaceDrawer object associated with the view.
Owner: GtkSourceView
Flags: Read
Since: 3.24
“tab-width”
property“tab-width” guint
Width of a tab character expressed in number of spaces.
Owner: GtkSourceView
Flags: Read / Write
Allowed values: [1,32]
Default value: 8
“change-case”
signalvoid user_function (GtkSourceView *view, GtkSourceChangeCaseType case_type, gpointer user_data)
Keybinding signal to change case of the text at the current cursor position.
view |
the GtkSourceView |
|
case_type |
the case to use |
|
user_data |
user data set when the signal handler was connected. |
Flags: Action
Since: 3.16
“change-number”
signalvoid user_function (GtkSourceView *view, int count, gpointer user_data)
Keybinding signal to edit a number at the current cursor position.
view |
the GtkSourceView |
|
count |
the number to add to the number at the current position |
|
user_data |
user data set when the signal handler was connected. |
Flags: Action
Since: 3.16
“join-lines”
signalvoid user_function (GtkSourceView *view, gpointer user_data)
Keybinding signal to join the lines currently selected.
Flags: Action
Since: 3.16
“line-mark-activated”
signalvoid user_function (GtkSourceView *view, GtkTextIter *iter, GdkEvent *event, gpointer user_data)
Emitted when a line mark has been activated (for instance when there
was a button press in the line marks gutter). You can use iter
to
determine on which line the activation took place.
view |
the GtkSourceView |
|
iter |
a GtkTextIter |
|
event |
the GdkEvent that activated the event |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
“move-lines”
signalvoid user_function (GtkSourceView *view, gboolean down, gpointer user_data)
The ::move-lines signal is a keybinding which gets emitted when the user initiates moving a line. The default binding key is Alt+Up/Down arrow. And moves the currently selected lines, or the current line up or down by one line.
view |
the GtkSourceView which received the signal. |
|
down |
||
user_data |
user data set when the signal handler was connected. |
Flags: Action
“move-to-matching-bracket”
signalvoid user_function (GtkSourceView *view, gboolean extend_selection, gpointer user_data)
Keybinding signal to move the cursor to the matching bracket.
view |
the GtkSourceView |
|
extend_selection |
|
|
user_data |
user data set when the signal handler was connected. |
Flags: Action
Since: 3.16
“move-words”
signalvoid user_function (GtkSourceView *view, int count, gpointer user_data)
The ::move-words signal is a keybinding which gets emitted when the user initiates moving a word. The default binding key is Alt+Left/Right Arrow and moves the current selection, or the current word by one word.
view |
the GtkSourceView which received the signal |
|
count |
the number of words to move over |
|
user_data |
user data set when the signal handler was connected. |
Flags: Action
Since: 3.0
“show-completion”
signalvoid user_function (GtkSourceView *view, gpointer user_data)
The ::show-completion signal is a key binding signal which gets emitted when the user requests a completion, by pressing
Control+space.This will create a GtkSourceCompletionContext with the activation
type as GTK_SOURCE_COMPLETION_ACTIVATION_USER_REQUESTED
.
Applications should not connect to it, but may emit it with
g_signal_emit_by_name()
if they need to activate the completion by
another means, for example with another key binding or a menu entry.
view |
The GtkSourceView who emits the signal |
|
user_data |
user data set when the signal handler was connected. |
Flags: Action
“smart-home-end”
signalvoid user_function (GtkSourceView *view, GtkTextIter *iter, int count, gpointer user_data)
Emitted when a the cursor was moved according to the smart home end setting. The signal is emitted after the cursor is moved, but during the GtkTextView::move-cursor action. This can be used to find out whether the cursor was moved by a normal home/end or by a smart home/end.
view |
the GtkSourceView |
|
iter |
a GtkTextIter |
|
count |
the count |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
Since: 3.0