📄 main.c
字号:
#include <stdio.h>
#include <gtk/gtk.h>
#include <string.h>
#include <locale.h>
#define Max 50
static int tag=0;
char *_(char *c)
{
return(g_locale_to_utf8(c,-1,NULL,NULL,NULL));
}
void callback(char * data )
{
g_print ("Hello again - %s was pressed\n",data);
}
//////快速排序
void QuickSort_S(int a[],int low,int high)// 升 序
{
int i=low,j=high;
int temp=a[low];
while(i<j)
{
while(i<j&&temp<=a[j] )j--;
if(i<j)
{
a[i]=a[j];
i++;
}
while(i<j&&a[i]<temp) i++;
if(i<j)
{
a[j]=a[i];
j--;
}
}
a[i]=temp;
if(low<i) QuickSort_S(a,low,i-1);
if(i<high)QuickSort_S(a,j+1,high);
}
void QuickSort_J(int a[],int low,int high)// 降 序
{
int i=low,j=high;
int temp=a[low];
while(i<j)
{
while(i<j&&temp>=a[j] )j--;
if(i<j)
{
a[i]=a[j];
i++;
}
while(i<j&&a[i]>temp) i++;
if(i<j)
{
a[j]=a[i];
j--;
}
}
a[i]=temp;
if(low<i) QuickSort_J(a,low,i-1);
if(i<high)QuickSort_J(a,j+1,high);
}
void enter_callback( GtkWidget *widget,
GtkWidget *entry )
{
const gchar *entry_text;
entry_text = gtk_entry_get_text (GTK_ENTRY (entry));
printf("Entry contents: %s\n", entry_text);
}
void get_value( GtkWidget *widget,GtkWidget *entry )
{
GtkLabel *label;
label = GTK_LABEL (g_object_get_data (G_OBJECT (widget), "user_data"));
const char *buf;
buf = gtk_entry_get_text (GTK_ENTRY (entry));
gtk_label_set_text (label, buf);
}
void set_radio(GtkWidget *widget,gpointer data)
{
tag=GPOINTER_TO_INT (data);
//printf("tag : %d\n", tag);
}
void sort( GtkWidget *widget,GtkWidget *entry )
{
//GtkLabel *label;
GtkEntry *en;
en = GTK_ENTRY (g_object_get_data (G_OBJECT (widget), "user_data1"));
GtkLabel *label;
label = GTK_LABEL (g_object_get_data (G_OBJECT (widget), "user_data"));
char * b="";
const char *buf="";
char msg[Max]="";
char out[Max]="";
char k[]=" ";
int num[Max];
buf = gtk_entry_get_text (GTK_ENTRY (entry));
//gtk_label_set_text (label, buf);
if(!(strcmp(buf,b)))
{b=_("没有输入数据");gtk_label_set_text (label, b);}
else
{
/////////// 字符转整形
int i,ch,flag,n,value;i=flag=n=value=0;
while (1)
{
ch=buf[i++];
if (ch >= '0' && ch <= '9')
{
if (!flag) flag = 1;
value=value*10 + (ch-'0');
}
else
{
if (flag)
{
num[n++]=value;
flag = 0;
value = 0;
}
if (ch == '\0') break;
}
}
if(!n){b=_("输入错误");gtk_label_set_text (label, b);}
else{
if(tag!=0)QuickSort_J(num,0,n-1);
else QuickSort_S(num,0,n-1);
sprintf(out, "%d", num[0]);
for(i=1;i<n;i++) {sprintf(msg, "%d", num[i]);strcat(out,k);strcat(out,msg);}
printf("output : %s\n", out);
b=_("排序结果");gtk_label_set_text (label, b);
gtk_entry_set_text(GTK_ENTRY (en),out);
}
}
}
void clear ( GtkWidget *widget,GtkWidget *entry )
{
GtkEntry *en;
en = GTK_ENTRY (g_object_get_data (G_OBJECT (widget), "user_data1"));
GtkLabel *label;
label = GTK_LABEL (g_object_get_data (G_OBJECT (widget), "user_data"));
char * b="";
gtk_entry_set_text(GTK_ENTRY (entry),b);
gtk_entry_set_text(GTK_ENTRY (en),b);
b=_("排序结果");gtk_label_set_text (label, b);
}
int main( int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *entry;
GtkWidget *label,*table,*button,*button1;
GtkWidget *output,*out;
GtkWidget *radio_button1,*radio_button2;
GSList *group;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_title(GTK_WINDOW(window), "QuickSort");
gtk_window_set_icon_from_file(GTK_WINDOW(window),"/home/lj2505/workspace/001/k.png",NULL);
gtk_window_set_default_size(GTK_WINDOW(window), 300, 360);
g_signal_connect_swapped(window, "destroy",
G_CALLBACK (gtk_main_quit), NULL);
gtk_container_set_border_width (GTK_CONTAINER (window), 20);
setlocale(LC_CTYPE, "");
table = gtk_table_new (12, 5, TRUE);
gtk_container_add(GTK_CONTAINER(window), table);
label = gtk_label_new(_("输入"));
gtk_table_attach_defaults (GTK_TABLE (table), label , 0,5, 0, 1);//放入表格
entry = gtk_entry_new();
gtk_table_attach_defaults (GTK_TABLE (table),entry , 0,5, 1, 2);
radio_button1= gtk_radio_button_new_with_label (NULL, _("升序"));
gtk_table_attach_defaults (GTK_TABLE (table),radio_button1 , 1,2, 3, 4);
g_signal_connect(G_OBJECT (radio_button1), "released", G_CALLBACK (set_radio), GINT_TO_POINTER (0));
gtk_widget_show (radio_button1);
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio_button1));
radio_button2 = gtk_radio_button_new_with_label (group, _("降序"));
gtk_table_attach_defaults (GTK_TABLE (table),radio_button2 , 3,4, 3, 4);
g_signal_connect (G_OBJECT (radio_button2), "released", G_CALLBACK (set_radio), GINT_TO_POINTER (1));
gtk_widget_show (radio_button2);
button = gtk_button_new_with_label(g_convert("排序",-1,"UTF-8","GB2312",NULL,NULL,NULL));
gtk_table_attach_defaults (GTK_TABLE (table),button , 1,2, 5, 6);
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (sort),
entry);
button1 = gtk_button_new_with_label(_("清除"));
gtk_table_attach_defaults (GTK_TABLE (table),button1 , 3,4, 5, 6);
g_signal_connect (G_OBJECT (button1), "clicked", G_CALLBACK (clear),entry);
output = gtk_label_new ("");
g_object_set_data (G_OBJECT (button), "user_data", output);
g_object_set_data (G_OBJECT (button1), "user_data", output);
gtk_label_set_text (GTK_LABEL (output), _("排序结果"));
gtk_table_attach_defaults (GTK_TABLE (table),output , 0,5 , 7, 8);
out = gtk_entry_new();
g_object_set_data (G_OBJECT (button), "user_data1", out);
g_object_set_data (G_OBJECT (button1), "user_data1", out);
gtk_table_attach_defaults (GTK_TABLE (table),out ,0,5, 8, 9);
gtk_widget_show (table);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -