十三、Gtk4-TfeTextView函数

TfeTextView是用于文本编辑的组件,提供了打开、保存、新建文件的功能。头文件tfetextview.h定义了TfeTextView类型和相关函数,包括GFile的获取、打开响应信号以及文件操作方法。创建TfeTextView实例可以使用tfe_text_view_new或tfe_text_view_new_with_file,保存功能由tfe_text_view_save和tfe_text_view_saveas实现,而打开文件则通过tfe_text_view_open实现,该函数会显示文件选择对话框让用户选择文件。

TfeTextView相关函数在这一章节介绍

1 tfetextview.h

头文件tfetextview.h提供了:

  • TfeTextView的类型,是TFE_TYPE_TEXT_VIEW。
  • G_DECLARE_FINAL_TYPE的扩展包含了一些有用的宏。
  • 定义了open-response信号的常量。
  • tfetextview.c的公共函数被声明。

因此,任何使用TfeTextView的程序都需要包含TfeTextView .h。

 1 #ifndef __TFE_TEXT_VIEW_H__
 2 #define __TFE_TEXT_VIEW_H__
 3 
 4 #include <gtk/gtk.h>
 5 
 6 #define TFE_TYPE_TEXT_VIEW tfe_text_view_get_type ()
 7 G_DECLARE_FINAL_TYPE (TfeTextView, tfe_text_view, TFE, TEXT_VIEW, GtkTextView)
 8 
 9 /* "open-response" signal response */
10 enum TfeTextViewOpenResponseType
11 {
   
   
12   TFE_OPEN_RESPONSE_SUCCESS,
13   TFE_OPEN_RESPONSE_CANCEL,
14   TFE_OPEN_RESPONSE_ERROR
15 };
16 
17 GFile *
18 tfe_text_view_get_file (TfeTextView *tv);
19 
20 void
21 tfe_text_view_open (TfeTextView *tv, GtkWindow *win);
22 
23 void
24 tfe_text_view_save (TfeTextView *tv);
25 
26 void
27 tfe_text_view_saveas (TfeTextView *tv);
28 
29 GtkWidget *
30 tfe_text_view_new_with_file (GFile *file);
31 
32 GtkWidget *
33 tfe_text_view_new (void);
34 
35 #endif /* __TFE_TEXT_VIEW_H__ */
 1 #ifndef __TFE_TEXT_VIEW_H__
 2 #define __TFE_TEXT_VIEW_H__
 3 
 4 #include <gtk/gtk.h>
 5 
 6 #define TFE_TYPE_TEXT_VIEW tfe_text_view_get_type ()
 7 G_DECLARE_FINAL_TYPE (TfeTextView, tfe_text_view, TFE, TEXT_VIEW, GtkTextView)
 8 
 9 /* "open-response" signal response */
10 enum TfeTextViewOpenResponseType
11 {
   
   
12   TFE_OPEN_RESPONSE_SUCCESS,
13   TFE_OPEN_RESPONSE_CANCEL,
14   TFE_OPEN_RESPONSE_ERROR
15 };
16 
17 GFile *
18 tfe_text_view_get_file (TfeTextView *tv);
19 
20 void
21 tfe_text_view_open (TfeTextView *tv, GtkWindow *win);
22 
23 void
24 tfe_text_view_save (TfeTextView *tv);
25 
26 void
27 tfe_text_view_saveas (TfeTextView *tv);
28 
29 GtkWidget *
30 tfe_text_view_new_with_file (GFile *file);
31 
32 GtkWidget *
33 tfe_text_view_new (void);
34 
35 #endif /* __TFE_TEXT_VIEW_H__ */
  • 1、2、35:由于这三行代码,下面几行代码只包含一次。你可以使用#pragma once来代替它们。它是非标准的,但被广泛使用。
  • 4:包含gtk4头文件。头文件gtk4也有相同的机制来避免多次包含它。
  • 6-7:这两行定义了TfeTextView类型、它的类结构和一些有用的宏。
    • TfeTextView和TfeTextViewClass被声明为C结构的typedef。
  • 稍后你需要定义一个结构体_TfeTextView。
  • 类结构_TfeTextViewClass在这里定义。你不需要自己定义它。
  • 定义了方便转换的函数TFE_TEXT_VIEW()和用于类型检查的函数TFE_IS_TEXT_VIEW。
  • 9-15:“open-response”信号参数值的定义。
  • 17-33:在TfeTextView上声明公有函数。

2 Instance creation Functions

tfe_text_view_new或tfe_text_view_new_with_file创建了一个TfeTextView实例。

GtkWidget *tfe_text_view_new (void);

tfe_text_view_new只是创建一个新的TfeTextView实例并返回指向新实例的指针。

GtkWidget *tfe_text_view_new_with_file (GFile *file);

tfe_text_view_new_with_file是一个Gfile对象作为参数,它将文件加载到GtkTextBuffer实例中,然后返回指向新实例的指针。如果在创建过程中发生错误,则返回NULL。

每个函数定义如下。

 1 GtkWidget *
 2 tfe_text_view_new_with_file (GFile *file) {
   
   
 3   g_return_val_if_fail (G_IS_FILE (file), NULL);
 4 
 5   GtkWidget *tv;
 6   GtkTextBuffer *tb;
 7   char *contents;
 8   gsize length;
 9 
10   if (! g_file_load_contents (file, NULL, &contents, &length, NULL, NULL)) /* read error */
11     return NULL;
12 
13   if ((tv = tfe_text_view_new()) != NULL)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值