gtk md5计算 极其入门

#include <gtk/gtk.h>

typedef struct stMd5Info {
	GtkWidget * source;
	GtkWidget * present;
} MD5_INFO_ST;

void compute_md5_msg(GtkWidget * button, MD5_INFO_ST * info)
{
	GChecksum * check_sum;
	GtkTextBuffer * text_buffer;
	const gchar * msg = gtk_entry_get_text(GTK_ENTRY(info->source));
	gchar * result;

	if (!msg || msg[0] == '\0')
		return;

	result = g_compute_checksum_for_string(G_CHECKSUM_MD5, msg, -1);

	text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(info->present));

	gtk_text_buffer_set_text(text_buffer, result, -1);
}

void clear_md5_msg(GtkWidget * button, MD5_INFO_ST * info)
{
	gtk_entry_set_text(GTK_ENTRY(info->source), "");
	gtk_text_buffer_set_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(info->present)), "", -1);
}

int main(int ac, char ** av)
{
	GtkWidget * window;
	GtkWidget * grid;
	GtkWidget * button_box;
	GtkWidget * button_calc, * button_clear;
	GtkWidget * entry;
	GtkWidget * label;
	GtkWidget * md5_text_view;
	MD5_INFO_ST md5_info;
	gtk_init(&ac, &av);

	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
	gtk_container_set_border_width(GTK_CONTAINER(window), 10);
	gtk_widget_set_size_request(window, 300, 400);
	g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

	grid = gtk_grid_new();
	gtk_container_add(GTK_CONTAINER(window), grid);
	gtk_grid_set_column_spacing(GTK_GRID(grid), 10);
	gtk_grid_set_row_spacing(GTK_GRID(grid), 10);

	label = gtk_label_new("Source:");
	gtk_widget_set_halign(label, GTK_ALIGN_START);

	entry = gtk_entry_new();
	gtk_widget_set_hexpand(entry, TRUE);
	md5_info.source = entry;

	gtk_grid_attach(GTK_GRID(grid), label, 0, 0, 1, 1);
	gtk_grid_attach(GTK_GRID(grid), entry, 1, 0, 1, 1);

	label = gtk_label_new("MD5:");
	gtk_widget_set_valign(label, GTK_ALIGN_START);
	gtk_widget_set_halign(label, GTK_ALIGN_START);
	gtk_grid_attach(GTK_GRID(grid), label, 0, 1, 1, 1);

	md5_text_view = gtk_text_view_new();
	gtk_text_view_set_editable(GTK_TEXT_VIEW(md5_text_view), FALSE);
	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(md5_text_view), GTK_WRAP_CHAR);
	gtk_widget_set_hexpand(md5_text_view, TRUE);
	gtk_widget_set_vexpand(md5_text_view, TRUE);

	md5_info.present = md5_text_view;

	gtk_grid_attach(GTK_GRID(grid), md5_text_view, 1, 1, 1, 1);

	button_box = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL);
	gtk_button_box_set_layout(GTK_BUTTON_BOX(button_box), GTK_BUTTONBOX_END);
	gtk_box_set_spacing(GTK_BOX(button_box), 5);

	button_calc = gtk_button_new_with_label("Calc");
	button_clear = gtk_button_new_with_label("Clear");

	gtk_box_pack_start(GTK_BOX(button_box), button_calc, FALSE, FALSE, 2);
	gtk_box_pack_start(GTK_BOX(button_box), button_clear, FALSE, FALSE, 2);


	g_signal_connect(button_calc, "clicked", G_CALLBACK(compute_md5_msg), &md5_info);
	g_signal_connect(button_clear, "clicked", G_CALLBACK(clear_md5_msg), &md5_info);

	gtk_grid_attach(GTK_GRID(grid), button_box, 0, 2, 2, 1);


	gtk_widget_show_all(window);

	gtk_main();

	return 0;
}


看了一段时间的gtk,写了个非常非常小的程序,关键在于可以让界面显示的稍微正常点了。不至于巨丑无比,也算是一个阶段的慰藉,哈哈,贴出来看看了。想办法做个自己的类结构还是很重要啊。要不然就的总是用个结构体去连接信号了。很不友善感觉

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值