⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gtkdateedit.c.svn-base

📁 一款Linux手机上应用的文件管理器 系统要求就安装Gtk+2.0
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
				if (strlen(gtk_entry_get_text (GTK_ENTRY (entry))) == 0)					gtk_editable_insert_text (editable, result, count, position);				else if (strlen(gtk_entry_get_text (GTK_ENTRY (entry))) == 1)					{						gint date = atoi (gtk_entry_get_text (GTK_ENTRY (entry)));																date = date * 10 + atoi (result);																if (date <= 31)							gtk_editable_insert_text (editable, result, count, position);						else							{								date = 31;																												sprintf (result,"%d",date);									gtk_entry_set_text (entry, result);																		}																	gtk_widget_child_focus (gtk_widget_get_parent (GTK_WIDGET (entry)), GTK_DIR_TAB_BACKWARD);						gtk_widget_child_focus (gtk_widget_get_parent (GTK_WIDGET (entry)), GTK_DIR_TAB_BACKWARD);				}														g_signal_handlers_unblock_by_func (G_OBJECT (editable),																					 G_CALLBACK (day_edit_insert_text_handler),																					 data);			}				g_signal_stop_emission_by_name (G_OBJECT (editable), "insert_text");			g_free (result);	}static gboolean year_key_press_handler (GtkWidget *widget, GdkEventKey *k, gpointer user_data){			if (k->keyval == GDK_Right)     {						gtk_widget_child_focus (gtk_widget_get_parent (widget), GTK_DIR_TAB_FORWARD);						return TRUE;		}	else if (k->keyval == GDK_Left)     {						gtk_widget_child_focus (gtk_widget_get_parent (widget), GTK_DIR_TAB_FORWARD);			gtk_widget_child_focus (gtk_widget_get_parent (widget), GTK_DIR_TAB_FORWARD);						return TRUE;		}	else		return FALSE;}static gboolean mon_key_press_handler (GtkWidget *widget, GdkEventKey *k, gpointer user_data){			if (k->keyval == GDK_Right)     {						gtk_widget_child_focus (gtk_widget_get_parent (widget), GTK_DIR_TAB_FORWARD);						return TRUE;		}	else if (k->keyval == GDK_Left)     {					gtk_widget_child_focus (gtk_widget_get_parent (widget), GTK_DIR_TAB_BACKWARD);						return TRUE;		}	else		return FALSE;}static gboolean day_key_press_handler (GtkWidget *widget, GdkEventKey *k, gpointer user_data){			if (k->keyval == GDK_Right)     {						gtk_widget_child_focus (gtk_widget_get_parent (widget), GTK_DIR_TAB_BACKWARD);				gtk_widget_child_focus (gtk_widget_get_parent (widget), GTK_DIR_TAB_BACKWARD);						return TRUE;		}	else if (k->keyval == GDK_Left)     {					gtk_widget_child_focus (gtk_widget_get_parent (widget), GTK_DIR_TAB_BACKWARD);						return TRUE;		}	else		return FALSE;}void 				gtk_date_edit_set_widget_width			(GtkDateEdit 	*entry,																								guint 					pad1w, 																								guint 					entry1w,																								guint 					entry2w,																								guint 					entry3w,																								guint						pad2w){		gtk_widget_set_size_request (entry->pad1, pad1w, -1);	gtk_widget_set_size_request (entry->entry1, entry1w, -1);	gtk_widget_set_size_request (entry->entry2, entry2w, -1);	gtk_widget_set_size_request (entry->entry3, entry3w, -1);	gtk_widget_set_size_request (entry->pad2, pad2w, -1);}static gboolean entry_focus_out_cb (GtkWidget * widget, GdkEventFocus * event, 																												gpointer user_data){		gtk_editable_select_region(GTK_EDITABLE(widget), 0, 0);	return FALSE;	}static voidgtk_date_edit_init (GtkDateEdit * date_edit){				date_edit->pad1 = gtk_label_new ("");	date_edit->entry1 = gtk_entry_new();	date_edit->entry2 = gtk_entry_new ();	date_edit->entry3 = gtk_entry_new ();	date_edit->eventbox1 = gtk_event_box_new ();	date_edit->eventbox2 = gtk_event_box_new ();	date_edit->pad2 = gtk_label_new ("");		g_signal_connect(G_OBJECT(date_edit->entry1), "insert_text",		     G_CALLBACK(year_edit_insert_text_handler),					NULL);	g_signal_connect(G_OBJECT(date_edit->entry2), "insert_text",		     G_CALLBACK(mon_edit_insert_text_handler),		      NULL);			g_signal_connect(G_OBJECT(date_edit->entry3), "insert_text",		     G_CALLBACK(day_edit_insert_text_handler),		      NULL);			g_signal_connect(G_OBJECT(date_edit->entry1), "key_press_event",		     G_CALLBACK(year_key_press_handler),					NULL);	g_signal_connect(G_OBJECT(date_edit->entry2), "key_press_event",		     G_CALLBACK(mon_key_press_handler),		      NULL);				g_signal_connect(G_OBJECT(date_edit->entry3), "key_press_event",		     G_CALLBACK(day_key_press_handler),		      NULL);													g_signal_connect(G_OBJECT(date_edit->entry1), "focus-out-event",											G_CALLBACK(entry_focus_out_cb), NULL);	g_signal_connect(G_OBJECT(date_edit->entry2), "focus-out-event",											G_CALLBACK(entry_focus_out_cb), NULL);	g_signal_connect(G_OBJECT(date_edit->entry3), "focus-out-event",											G_CALLBACK(entry_focus_out_cb), NULL);																gtk_entry_set_has_frame(GTK_ENTRY(date_edit->entry1), FALSE);	gtk_entry_set_has_frame(GTK_ENTRY(date_edit->entry2), FALSE);	gtk_entry_set_has_frame(GTK_ENTRY(date_edit->entry3), FALSE);		gtk_box_pack_start (GTK_BOX (date_edit), date_edit->pad1, FALSE ,FALSE, 0);	gtk_box_pack_start (GTK_BOX (date_edit), date_edit->entry1, FALSE, FALSE, 0);	gtk_box_pack_start (GTK_BOX (date_edit), date_edit->eventbox1, TRUE, TRUE, 0);	gtk_box_pack_start (GTK_BOX (date_edit), date_edit->entry2, FALSE, FALSE, 0);	gtk_box_pack_start (GTK_BOX (date_edit), date_edit->eventbox2, TRUE, TRUE, 0);	gtk_box_pack_start (GTK_BOX (date_edit), date_edit->entry3, FALSE, FALSE, 0);	gtk_box_pack_start (GTK_BOX (date_edit), date_edit->pad2, FALSE ,FALSE, 0);		//	GTK_WIDGET_SET_FLAGS (date_edit, GTK_CAN_FOCUS);		date_edit->label1 = gtk_label_new ("-");	gtk_container_add(GTK_CONTAINER (date_edit->eventbox1), date_edit->label1);	date_edit->label2 = gtk_label_new ("-");	gtk_container_add(GTK_CONTAINER (date_edit->eventbox2), date_edit->label2);	  GdkColor white;		white.red = 65535;  white.green = 65535;  white.blue = 65535;											gtk_widget_modify_bg (date_edit->eventbox1, GTK_STATE_NORMAL, &white);	gtk_widget_modify_bg (date_edit->eventbox2, GTK_STATE_NORMAL, &white);	gtk_entry_set_width_chars (GTK_ENTRY (date_edit->entry1), 4);	gtk_entry_set_width_chars (GTK_ENTRY (date_edit->entry2), 2);	gtk_entry_set_width_chars (GTK_ENTRY (date_edit->entry3), 2);			return;}guint		gtk_date_edit_get_year	(GtkDateEdit  *dateedit){	guint year;		year = atoi(gtk_entry_get_text(GTK_ENTRY(dateedit->entry1)));	//printf ("%s:year=%d\n", __FUNCTION__, year);		return year;	}guint		gtk_date_edit_get_mon	(GtkDateEdit  *dateedit){	guint mon;		mon = atoi(gtk_entry_get_text(GTK_ENTRY(dateedit->entry2)));	//printf ("%s:month=%d\n", __FUNCTION__, mon);		return mon;	}guint		gtk_date_edit_get_day	(GtkDateEdit  *dateedit){	guint day;		day = atoi(gtk_entry_get_text(GTK_ENTRY(dateedit->entry3)));	//printf ("%s:day=%d\n", __FUNCTION__, day);		return day;	}void				gtk_date_edit_set_value							(GtkDateEdit  *dateedit,																								guint						year,																								guint						mon,																								guint						day){	gchar textbuf[5];		sprintf (textbuf, "%d", year);	gtk_entry_set_text (GTK_ENTRY (dateedit->entry1), textbuf);	if (mon > 9)		sprintf (textbuf, "%d", mon);	else		sprintf (textbuf, "0%d", mon);	gtk_entry_set_text (GTK_ENTRY (dateedit->entry2), textbuf);	if (day > 9)		sprintf (textbuf, "%d", day);	else		sprintf (textbuf, "0%d", day);	gtk_entry_set_text (GTK_ENTRY (dateedit->entry3), textbuf);		}GtkWidget *gtk_date_edit_new (void){  return gtk_widget_new (GTK_TYPE_DATE_EDIT, NULL);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -