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

📄 config-ui.c

📁 gphone is a net phone base on the rtp protocol. It is simple but pratical and can be a good sample f
💻 C
字号:
/*  Gnome-o-Phone - A program for internet telephony  Copyright (C) 1999  Roland Dreier    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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.    $Id: config-ui.c 1.1 Sat, 11 Dec 1999 23:53:26 -0600 dreier $*/#ifdef HAVE_CONFIG_H#include <config.h>#endif#include "ui.h"#include <gtk/gtk.h>#ifdef HAVE_LINUX_TELEPHONY_H#include <linux/telephony.h>#endif#ifdef HAVE_LINUX_IXJUSER_H#include <linux/ixjuser.h>#endif#include "thread-queue.h"#include "request.h"#include "talk.h"#include "listen.h"#include "connection.h"#include "thread.h"#include "sound.h"#include "gphone.h"#include "gphone-lib.h"static GtkWidget *Config_Window = NULL;static GtkWidget *Receive_Port_Entry;static GtkWidget *Send_Port_Entry;static Sound_Device_Type Device;static int Ixj_Port;static voiddestroy(GtkWidget *widget, gpointer data){  Config_Window = NULL;}static voidok_button_clicked(GtkWidget *widget, gpointer data){  /* FIX: Handle Port Numbers */  set_sound_device(Device);  set_sound_ixj_port(Ixj_Port);  gtk_widget_destroy(GTK_WIDGET(data));}static voidcancel_button_clicked(GtkWidget *widget, gpointer data){  gtk_widget_destroy(GTK_WIDGET(data));}static voiddevice_menu(GtkWidget *widget, gpointer data){  Device = (Sound_Device_Type) GPOINTER_TO_INT(data);}static voidport_menu(GtkWidget *widget, gpointer data){  Ixj_Port = GPOINTER_TO_INT(data);}static voidadd_network_page(GtkWidget *notebook){  GtkWidget *label;  GtkWidget *frame;  GtkWidget *vbox;  GtkWidget *table;  vbox = gtk_vbox_new(FALSE, 5);  table = gtk_table_new(2, 2, FALSE);  label = gtk_label_new("Receive Port:");  gtk_widget_show(label);  gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);  gtk_widget_set_sensitive(label, FALSE);  Receive_Port_Entry = gtk_entry_new();  gtk_widget_show(Receive_Port_Entry);  gtk_table_attach_defaults(GTK_TABLE(table), Receive_Port_Entry, 1, 2, 0, 1);  gtk_widget_set_sensitive(Receive_Port_Entry, FALSE);  label = gtk_label_new("Send Port:");  gtk_widget_show(label);  gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);  gtk_widget_set_sensitive(label, FALSE);  Send_Port_Entry = gtk_entry_new();  gtk_widget_show(Send_Port_Entry);  gtk_table_attach_defaults(GTK_TABLE(table), Send_Port_Entry, 1, 2, 1, 2);  gtk_widget_set_sensitive(Send_Port_Entry, FALSE);  gtk_widget_show(table);  gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, FALSE, 0);  gtk_widget_show(vbox);  frame = gtk_frame_new("Network configuration");  gtk_widget_show(frame);  gtk_container_add(GTK_CONTAINER(frame), vbox);  label = gtk_label_new("Network");  gtk_widget_show(label);  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), frame, label);}static voidadd_sound_page(GtkWidget *notebook){  GtkWidget *label;  GtkWidget *frame;  GtkWidget *vbox;  GtkWidget *table;  GtkWidget *optionmenu;  GtkWidget *menu;  GtkWidget *menuitem;  vbox = gtk_vbox_new(FALSE, 5);  table = gtk_table_new(2, 2, FALSE);  /* Sound device selection */  label = gtk_label_new("Sound Device:");  gtk_widget_show(label);  gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);  optionmenu = gtk_option_menu_new();  menu = gtk_menu_new();  menuitem = gtk_menu_item_new_with_label("OSS: /dev/dsp");  gtk_signal_connect(GTK_OBJECT(menuitem), "activate",                            GTK_SIGNAL_FUNC(device_menu),                            GINT_TO_POINTER(OSS_DEVICE));  gtk_widget_show(menuitem);  gtk_menu_append(GTK_MENU(menu), menuitem);#ifdef HAVE_LINUX_TELEPHONY_H#ifdef HAVE_LINUX_IXJUSER_H  menuitem = gtk_menu_item_new_with_label("IXJ: /dev/phone0");  gtk_signal_connect(GTK_OBJECT(menuitem), "activate",                            GTK_SIGNAL_FUNC(device_menu),                            GINT_TO_POINTER(IXJ_DEVICE));  gtk_widget_show(menuitem);  gtk_menu_append(GTK_MENU(menu), menuitem);#endif /* HAVE_LINUX_IXJUSER_H */#endif /* HAVE_LINUX_TELEPHONY_H */   switch (Device) {  case OSS_DEVICE:    gtk_menu_set_active(GTK_MENU(menu), 0);    break;#ifdef HAVE_LINUX_TELEPHONY_H#ifdef HAVE_LINUX_IXJUSER_H  case IXJ_DEVICE:    gtk_menu_set_active(GTK_MENU(menu), 1);    break;#endif /* HAVE_LINUX_IXJUSER_H */#endif /* HAVE_LINUX_TELEPHONY_H */   default:    g_assert_not_reached();    break;  }  gtk_option_menu_set_menu(GTK_OPTION_MENU(optionmenu), menu);  gtk_widget_show(menu);  gtk_widget_show(optionmenu);  gtk_table_attach_defaults(GTK_TABLE(table), optionmenu, 1, 2, 0, 1);  /* IXJ port selection */#ifdef HAVE_LINUX_TELEPHONY_H#ifdef HAVE_LINUX_IXJUSER_H  label = gtk_label_new("IXJ Port:");  gtk_widget_show(label);  gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);  optionmenu = gtk_option_menu_new();  menu = gtk_menu_new();  menuitem = gtk_menu_item_new_with_label("POTS");  gtk_signal_connect(GTK_OBJECT(menuitem), "activate",                     GTK_SIGNAL_FUNC(port_menu),                     GINT_TO_POINTER(PORT_POTS));  gtk_widget_show(menuitem);  gtk_menu_append(GTK_MENU(menu), menuitem);  menuitem = gtk_menu_item_new_with_label("PSTN");  gtk_signal_connect(GTK_OBJECT(menuitem), "activate",                     GTK_SIGNAL_FUNC(port_menu),                     GINT_TO_POINTER(PORT_PSTN));  gtk_widget_show(menuitem);  gtk_menu_append(GTK_MENU(menu), menuitem);  menuitem = gtk_menu_item_new_with_label("Speaker");  gtk_signal_connect(GTK_OBJECT(menuitem), "activate",                     GTK_SIGNAL_FUNC(port_menu),                     GINT_TO_POINTER(PORT_SPEAKER));  gtk_widget_show(menuitem);  gtk_menu_append(GTK_MENU(menu), menuitem);  menuitem = gtk_menu_item_new_with_label("Handset");  gtk_signal_connect(GTK_OBJECT(menuitem), "activate",                     GTK_SIGNAL_FUNC(port_menu),                     GINT_TO_POINTER(PORT_HANDSET));  gtk_widget_show(menuitem);  gtk_menu_append(GTK_MENU(menu), menuitem);  switch (Ixj_Port) {  case PORT_POTS:    gtk_menu_set_active(GTK_MENU(menu), 0);    break;  case PORT_PSTN:    gtk_menu_set_active(GTK_MENU(menu), 1);    break;  case PORT_SPEAKER:    gtk_menu_set_active(GTK_MENU(menu), 2);    break;  case PORT_HANDSET:    gtk_menu_set_active(GTK_MENU(menu), 3);    break;  default:    g_assert_not_reached();    break;  }  gtk_option_menu_set_menu(GTK_OPTION_MENU(optionmenu), menu);  gtk_widget_show(menu);  gtk_widget_show(optionmenu);  gtk_table_attach_defaults(GTK_TABLE(table), optionmenu, 1, 2, 1, 2);#endif /* HAVE_LINUX_IXJUSER_H */#endif /* HAVE_LINUX_TELEPHONY_H */   gtk_widget_show(table);  gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, FALSE, 0);  gtk_widget_show(vbox);  frame = gtk_frame_new("Sound configuration");  gtk_widget_show(frame);  gtk_container_add(GTK_CONTAINER(frame), vbox);  label = gtk_label_new("Sound");  gtk_widget_show(label);  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), frame, label);}voidconfig_open_window(void){  GtkWidget *vbox;  GtkWidget *hbox;  GtkWidget *separator;  GtkWidget *notebook;  GtkWidget *button;  if (Config_Window != NULL) {    return;  }  Device = get_sound_device();  Ixj_Port = get_sound_ixj_port();  Config_Window = gtk_window_new(GTK_WINDOW_DIALOG);  gtk_window_set_title(GTK_WINDOW(Config_Window), "gphone config");  gtk_container_set_border_width(GTK_CONTAINER(Config_Window), 10);    gtk_signal_connect(GTK_OBJECT(Config_Window), "destroy",                     GTK_SIGNAL_FUNC(destroy), NULL);  vbox = gtk_vbox_new(FALSE, 5);  notebook = gtk_notebook_new();  gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);  add_network_page(notebook);  add_sound_page(notebook);  gtk_widget_show(notebook);  gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0);  separator = gtk_hseparator_new();  gtk_widget_show(separator);  gtk_box_pack_start(GTK_BOX(vbox), separator, FALSE, FALSE, 0);  hbox = gtk_hbox_new(TRUE, 5);  button = gtk_button_new_with_label("OK");  gtk_signal_connect(GTK_OBJECT(button), "clicked",                     GTK_SIGNAL_FUNC(ok_button_clicked), Config_Window);  gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);  gtk_widget_show(button);  button = gtk_button_new_with_label("Cancel");  gtk_signal_connect(GTK_OBJECT(button), "clicked",                     GTK_SIGNAL_FUNC(cancel_button_clicked), Config_Window);  gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);  gtk_widget_show(button);  gtk_widget_show(hbox);  gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);  gtk_container_add(GTK_CONTAINER(Config_Window), vbox);  gtk_widget_show(vbox);  gtk_widget_show(Config_Window);}/* * Local variables: *  compile-command: "make -k gphone" * End: */

⌨️ 快捷键说明

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