📄 common.c
字号:
/* * * Copyright (C) 2003 Xiangbin Lee <honeycombs@sina.com> <honeycombs@263.net> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation. */#include "common.h"/* create a new GtkAccelGroup */GtkAccelGroup *create_menu_accelgroup(GtkWidget *widget){ GtkAccelGroup *accel; accel = gtk_accel_group_new(); _gtk_accel_group_attach(accel, G_OBJECT(widget)); return accel;}/* Insert new submenu to a top menu */GtkWidget *create_menu_item( GtkMenu *menu, guchar *label, GtkSignalFunc func, gpointer data, GtkAccelGroup *accel, guint key, guint mods) { GtkWidget *menu_item; if (label == NULL) { menu_item =gtk_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item); gtk_widget_show(menu_item); return menu_item; } else { menu_item = gtk_menu_item_new_with_label(label); if(func==NULL) { GtkWidget *submenu=gtk_menu_new(); gtk_menu_set_accel_group(GTK_MENU(submenu), accel); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),submenu); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item); gtk_widget_show(menu_item); menu_item = gtk_tearoff_menu_item_new(); gtk_widget_show(menu_item); gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menu_item); return submenu; } else { gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item); g_signal_connect(GTK_OBJECT(menu_item), "activate", func, data); gtk_widget_add_accelerator(menu_item, "activate", accel, key, mods, GTK_ACCEL_VISIBLE); gtk_widget_show(menu_item); return menu_item; } } return NULL;}/* Add a new button to a bar */GtkWidget *AppAddButoBar( GtkWidget *Toolbar, gchar *title, gchar *tip,gchar *icofile, GtkSignalFunc func, gpointer data){ GtkWidget *iconw, *ret; iconw = gtk_image_new_from_file (icofile); ret=gtk_toolbar_append_item ( GTK_TOOLBAR (Toolbar), title,tip,"Private",iconw, GTK_SIGNAL_FUNC (func),(gpointer)data); return ret ;}gint app_menu_default(APP_MAIN *hMain)/* APP_MENUBAR(hMain) */{ /* create new main menu and it's submenu for app main, sample: * * GtkAccelGroup *accel; * GtkWidget *menu, *menu_item; * accel = gtk_accel_group_new(); * _gtk_accel_group_attach(accel, G_OBJECT(APP_HMAIN(hMain))); * * menu = create_menu(GTK_MENU_BAR(APP_MENUBAR(hMain)), "MENU-1", accel); * menu_item= create_menu_item(GTK_MENU(menu), "MENU-1-1", * GTK_SIGNAL_FUNC(MENU_1_1),NULL,accel,GDK_F2,0); * menu_item= create_menu_item(GTK_MENU(menu), NULL,NULL,NULL,NULL,0,0); * menu_item= create_menu_item(GTK_MENU(menu), "MENU-1-2", * GTK_SIGNAL_FUNC(MENU_1_2),NULL,accel,GDK_F3,0); * * gboolean MENU_1_1(GtkWidget *widget, gpointer data); * gboolean MENU_1_2(GtkWidget *widget, gpointer data); * */ return 1;} gint app_toolbar_default(APP_MAIN *hMain) /* APP_TOOLBAR(hMain) */{ /* Add buttons to your toolbar, sample: * * if(AppAddButoBar(APP_TOOLBAR(hMain),"Title","Tip","X.ico", * GTK_SIGNAL_FUNC (TOOLBAR_FUN1),LPDATA)==NULL)return 0; * * gboolean TOOLBAR_FUN1(GtkWidget *widget, gpointer data); * * --- Add your codes here : */ return 1;}gint app_status_default(APP_MAIN *hMain) /* APP_STATUSBAR(hMain) */{ /* Add new icon and it's function to a statusbar, sample: * * GtkWidget *iconw; * iconw = gtk_image_new_from_file ("help.ico"); * if(gtk_toolbar_append_item (GTK_TOOLBAR (APP_STATUSBAR(hMain)), * "Help","help","Private",iconw,GTK_SIGNAL_FUNC (Main_Help), * NULL)==NULL)return 0; * * gboolean Main_Help(GtkWidget *widget, gpointer data); * * --- Add your codes here : */ return 1;}gint app_frame_default(APP_MAIN *hMain)/* APP_MAINFRAME(hMain) */{ /* add a new wizard to main view , sample : * * GtkWidget *frame,*label; * label = gtk_label_new (char *labalname); * frame = a new GtkWidget; * gtk_notebook_append_page (GTK_NOTEBOOK(APP_MAINFRAME(hMain)), frame, label); * * --- Add your codes here : */ return 1;}GtkWidget *app_init(APP_MAIN *hMain, gchar *title){ GtkWidget *handToolbar, *handMenubar, *handStatusbar,*main_vbox,*tool_hbox; if(APP_IFREGISTER(hMain)==GTK_WIDGET_REG) return APP_HMAIN(hMain); else APP_IFREGISTER(hMain)=GTK_WIDGET_REG; /* Create a new window */ APP_HMAIN(hMain) = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (APP_HMAIN(hMain)), title); /* maximize of the window. */ gtk_window_maximize(GTK_WINDOW(APP_HMAIN(hMain))); /* Sets the border width of the window. */ gtk_container_set_border_width (GTK_CONTAINER(APP_HMAIN(hMain)), 10); /* create menubar of the window. */ handMenubar= gtk_handle_box_new (); APP_MENUBAR(hMain) = gtk_menu_bar_new(); gtk_container_add(GTK_CONTAINER(handMenubar),APP_MENUBAR(hMain)); /* create toolbar of the window. */ handToolbar= gtk_handle_box_new (); APP_TOOLBAR(hMain) = gtk_toolbar_new (); gtk_toolbar_set_orientation (GTK_TOOLBAR (APP_TOOLBAR(hMain)), GTK_ORIENTATION_HORIZONTAL); gtk_toolbar_set_style (GTK_TOOLBAR (APP_TOOLBAR(hMain)), GTK_TOOLBAR_BOTH); gtk_container_set_border_width (GTK_CONTAINER (APP_TOOLBAR(hMain)), 1); gtk_container_add(GTK_CONTAINER(handToolbar),APP_TOOLBAR(hMain)); /* create mainview of the window. */ APP_MAINFRAME(hMain) = gtk_notebook_new (); gtk_notebook_set_tab_pos (GTK_NOTEBOOK (APP_MAINFRAME(hMain)), GTK_POS_BOTTOM); gtk_notebook_set_show_tabs( GTK_NOTEBOOK (APP_MAINFRAME(hMain)),FALSE ); gtk_notebook_set_show_border( GTK_NOTEBOOK (APP_MAINFRAME(hMain)),FALSE ); /* create statusbar of the window. */ handStatusbar= gtk_handle_box_new (); tool_hbox = gtk_hbox_new(FALSE, 2); gtk_box_set_spacing (GTK_BOX (tool_hbox),0); gtk_container_add(GTK_CONTAINER(handStatusbar),tool_hbox); APP_STATUSBAR(hMain) = gtk_toolbar_new (); gtk_toolbar_set_orientation (GTK_TOOLBAR (APP_STATUSBAR(hMain)), GTK_ORIENTATION_HORIZONTAL); gtk_toolbar_set_style (GTK_TOOLBAR (APP_STATUSBAR(hMain)), GTK_TOOLBAR_BOTH); gtk_container_set_border_width (GTK_CONTAINER (APP_STATUSBAR(hMain)), 1); gtk_box_pack_start(GTK_BOX(tool_hbox), APP_STATUSBAR(hMain), FALSE, FALSE, 0); /* adding menubar, toolbar, mainview & statusbar into main_vbox */ main_vbox = gtk_vbox_new(FALSE, 2); gtk_box_pack_start(GTK_BOX(main_vbox), handMenubar, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(main_vbox), handToolbar, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(main_vbox), APP_MAINFRAME(hMain), TRUE, TRUE, 0); gtk_box_pack_end(GTK_BOX(main_vbox), handStatusbar, FALSE, FALSE, 0); gtk_container_add(GTK_CONTAINER(APP_HMAIN(hMain)),main_vbox); return APP_HMAIN(hMain);}GtkWidget *gtk_append_scrollctrl(GtkWidget *ctrl){ GtkWidget * scrolled_window; scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); if(ctrl!=NULL) gtk_container_add (GTK_CONTAINER (scrolled_window),ctrl); return scrolled_window;}GtkWidget *gtk_append_scrollviewport(GtkWidget *ctrl){ GtkWidget * scrolled_window; scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); if(ctrl!=NULL) gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW(scrolled_window),ctrl); return scrolled_window;}/* text area GtkWidget */GtkWidget *textarea_createlist(GtkWidget *window,GTK_TextArea *lptextarea){ if(lptextarea->regsignal==GTK_WIDGET_REG) return (lptextarea->scrolled_window); else lptextarea->regsignal=GTK_WIDGET_REG; lptextarea->view = gtk_text_view_new (); lptextarea->buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (lptextarea->view)); lptextarea->scrolled_window = gtk_append_scrollctrl(lptextarea->view); if(window!=NULL) gtk_container_add (GTK_CONTAINER (window), lptextarea->scrolled_window); gtk_widget_show_all (lptextarea->scrolled_window); return lptextarea->scrolled_window;}GtkWidget *listctrl_createnew(GtkWidget *window,GtkScrollCtrl *lpctrl,gint column,gchar *titles[]){ if(lpctrl->regsignal==GTK_WIDGET_REG) return (lpctrl->scrolled_window); else lpctrl->regsignal=GTK_WIDGET_REG; if(titles==NULL) lpctrl->ctrl = gtk_clist_new(column); else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -