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

📄 network_panel.c

📁 gxsnmp SNMP MANAGER 的实现
💻 C
字号:
/* *  $Id: network_panel.c,v 1.6 1999/06/14 22:39:01 gregm Exp $ * *  GXSNMP -- An snmp management application *  Copyright (c) 1998 Gregory McLean * *  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.,  59 Temple Place - Suite 330, Cambridge, MA 02139, USA. * * The network_panel widget is used to enter in and edit network data. */#include <config.h>#include <gnome.h>#include "network_panel.h"#include "panel_utility.h"#include "debug.h"#define PANEL_ROWS 8static char *network_label[] = {  N_("Name"),  N_("Address"),  N_("Mask"),  N_("Speed"),  N_("Description"),  N_("Contact"),  N_("Created"),  N_("Modified")};static char *network_tooltip[] = {  N_("The name of the network to display under the map icon."),  N_("The network address of this network."),  N_("The network mask, if applicable, for this network."),  N_("The speed, in KBytes per second, of this network."),  N_("Your discription of this network."),  N_("Your contact information for this network."),  N_("Date and time this network was added to the database."),  N_("Date and time this network was modified in the database.")};enum {  CHANGED_SIGNAL,  LAST_SIGNAL};static guint signals[LAST_SIGNAL] = { 0 };/**************************************************************************** * Forward declarations ***************************************************************************/static void     network_panel_class_init    (GXsnmp_network_panelClass *klass);static void     network_panel_init          (GXsnmp_network_panel      *panel);static void     changed_cb                  (GtkWidget                 *widget,					     gpointer                  data);/**************************************************************************** * Widget Methods  ***************************************************************************/GtkTypegxsnmp_network_panel_get_type (){  static GtkType np_type = 0;  if (!np_type)    {      GtkTypeInfo np_info =       {	"GXsnmp_network_panel",	sizeof (GXsnmp_network_panel),	sizeof (GXsnmp_network_panelClass),	(GtkClassInitFunc) network_panel_class_init,	(GtkObjectInitFunc) network_panel_init,	/* reserved 1 */ NULL,	/* reserved 2 */ NULL,	(GtkClassInitFunc) NULL,      };      np_type = gtk_type_unique (gtk_vbox_get_type (), &np_info);    }  return np_type;}/**************************************************************************** * Class init function ***************************************************************************/static voidnetwork_panel_class_init (GXsnmp_network_panelClass *klass){  GtkObjectClass *object_class;  object_class = (GtkObjectClass *) klass;  signals[CHANGED_SIGNAL] =     gtk_signal_new("changed",		   GTK_RUN_FIRST,		   object_class->type,		   GTK_SIGNAL_OFFSET (GXsnmp_network_panelClass, changed),		   gtk_signal_default_marshaller,		   GTK_TYPE_NONE, 0);  gtk_object_class_add_signals (object_class, signals, LAST_SIGNAL);  klass->changed = NULL;}/**************************************************************************** * Object init ***************************************************************************/static voidnetwork_panel_init (GXsnmp_network_panel *panel){  GtkWidget 	*table;  GtkTooltips	*tooltips;  GtkWidget	*label;  GtkWidget 	*event_box;  gint	     	 i;  D_FUNC_START;  g_return_if_fail (panel != NULL);/***  The controls are organized in a PANEL_ROWS by 2 table*/  table = gtk_table_new (PANEL_ROWS, 2, FALSE);  gtk_table_set_row_spacings (GTK_TABLE (table), 4);  gtk_table_set_col_spacings (GTK_TABLE (table), 4);  gtk_container_border_width (GTK_CONTAINER (table), 0);  gtk_container_add (GTK_CONTAINER (panel), table);/***  Start by constructing all of the label widgets and adding the tooltips.*/  tooltips = gtk_tooltips_new ();  for (i = 0; i < PANEL_ROWS; i++)    {      label = gtk_label_new (gettext(network_label[i]));      gtk_misc_set_alignment (GTK_MISC(label), 0.0, 0.5);      event_box = gtk_event_box_new ();      gtk_container_add (GTK_CONTAINER (event_box), label);      gtk_tooltips_set_tip (tooltips, event_box, 			    gettext (network_tooltip[i]), NULL);      gtk_table_attach (GTK_TABLE(table), event_box, 0, 1, i, i + 1,                        GTK_FILL, 0, 0, 0);    }  /* The entry widgets */  panel->name = gtk_entry_new ();  gtk_signal_connect (GTK_OBJECT (panel->name), "changed",		      (GtkSignalFunc) changed_cb, panel);  gtk_table_attach (GTK_TABLE (table), panel->name, 1, 2, 0, 1,		    GTK_FILL, 0, 0, 0);    panel->address = gtk_entry_new ();  gtk_signal_connect (GTK_OBJECT (panel->address), "changed",		      (GtkSignalFunc) changed_cb, panel);  gtk_table_attach (GTK_TABLE (table), panel->address, 1, 2, 1, 2, 		    GTK_FILL, 0, 0, 0);    panel->mask = gtk_entry_new ();  gtk_signal_connect (GTK_OBJECT (panel->mask), "changed", 		      (GtkSignalFunc) changed_cb, panel);  gtk_table_attach (GTK_TABLE (table), panel->mask, 1, 2, 2, 3,		    GTK_FILL, 0, 0, 0);    panel->speed = gtk_entry_new ();  gtk_signal_connect (GTK_OBJECT (panel->speed), "changed",		      (GtkSignalFunc) changed_cb, panel);  gtk_table_attach (GTK_TABLE (table), panel->speed, 1, 2, 3, 4,		    GTK_FILL, 0, 0, 0);  panel->description = gtk_entry_new ();  gtk_signal_connect (GTK_OBJECT (panel->description), "changed", 		      (GtkSignalFunc) changed_cb, panel);  gtk_table_attach (GTK_TABLE (table), panel->description, 1, 2, 4, 5,		    GTK_FILL, 0, 0, 0);    panel->contact = gtk_entry_new ();  gtk_signal_connect (GTK_OBJECT (panel->contact), "changed",		      (GtkSignalFunc) changed_cb, panel);  gtk_table_attach (GTK_TABLE (table), panel->contact, 1, 2, 5, 6,		    GTK_FILL, 0, 0, 0);    panel->created = gtk_entry_new ();  gtk_signal_connect (GTK_OBJECT (panel->created), "changed",		      (GtkSignalFunc) changed_cb, panel);  gtk_table_attach (GTK_TABLE (table), panel->created, 1, 2, 6, 7,		    GTK_FILL, 0, 0, 0);    panel->modified = gtk_entry_new ();  gtk_signal_connect (GTK_OBJECT (panel->modified), "changed",		      (GtkSignalFunc) changed_cb, panel);  gtk_table_attach (GTK_TABLE (table), panel->modified, 1, 2, 7, 8,		    GTK_FILL, 0, 0, 0);  gtk_widget_show_all (table);  D_FUNC_END;}static voidchanged_cb (GtkWidget *widget, gpointer data){  GXsnmp_network_panel *panel;  D_FUNC_START;  g_return_if_fail (data != NULL);  panel = GXSNMP_NETWORK_PANEL (data);  gtk_signal_emit (GTK_OBJECT (panel), signals[CHANGED_SIGNAL]);  D_FUNC_END;}/**************************************************************************** * Public functions ***************************************************************************/GtkWidget *gxsnmp_network_panel_new (){  return GTK_WIDGET (gtk_type_new (gxsnmp_network_panel_get_type()));}voidgxsnmp_network_panel_put_data (GXsnmp_network_panel *panel, DB_network *dbn){  D_FUNC_START;  g_return_if_fail (panel != NULL);  g_return_if_fail (GXSNMP_IS_NETWORK_PANEL (panel));  g_return_if_fail (dbn != NULL);  panel->rowid = dbn->rowid;  DPRTI ("gxsnmp_network_panel_put_data: rowid is", dbn->rowid);  gtk_entry_set_text (GTK_ENTRY (panel->name),		      dbn->name                ? dbn->name : "" );  gtk_entry_set_text (GTK_ENTRY (panel->address),		      dbn->address             ? dbn->address : "" );  gtk_entry_set_text (GTK_ENTRY (panel->mask),		      dbn->netmask             ? dbn->netmask : "" );  gtk_entry_set_text (GTK_ENTRY (panel->description),		      dbn->description         ? dbn->description : "" );  gtk_entry_set_text (GTK_ENTRY (panel->contact), 		      dbn->contact             ? dbn->contact : "" );  gtk_entry_set_text (GTK_ENTRY (panel->created),		      dbn->created             ? dbn->created : "" );  gtk_entry_set_text (GTK_ENTRY (panel->modified), 		      dbn->modified            ? dbn->modified : "");  D_FUNC_END;}gbooleangxsnmp_network_panel_get_data (GXsnmp_network_panel *panel, DB_network *dbn){  gint   changed = FALSE;  D_FUNC_START;  g_return_val_if_fail (panel != NULL, FALSE);  g_return_val_if_fail (GXSNMP_IS_NETWORK_PANEL (panel), FALSE);  g_return_val_if_fail (dbn != NULL, FALSE);  if (dbn->rowid != panel->rowid)    {      DPRT ("gxsnmp_network_panel_get_data: dbn->rowid != panel->rowid");      g_warning ("dbn->rowid != panel->rowid ??? Something is broke.");      D_FUNC_END;      return FALSE;    }  changed |= update_string_field (&dbn->name,	       gtk_entry_get_text (GTK_ENTRY (panel->name)));  changed |= update_string_field (&dbn->address,	       gtk_entry_get_text (GTK_ENTRY (panel->address)));  changed |= update_string_field (&dbn->netmask,	       gtk_entry_get_text (GTK_ENTRY (panel->mask)));  changed |= update_string_field (&dbn->contact,	       gtk_entry_get_text (GTK_ENTRY (panel->contact)));  changed |= update_string_field (&dbn->description,               gtk_entry_get_text (GTK_ENTRY (panel->description)));  D_FUNC_END;  return (changed != FALSE);}/* EOF */

⌨️ 快捷键说明

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