|
Packit Service |
639700 |
// SPDX-License-Identifier: GPL-2.0+
|
|
Packit |
fabffb |
/* NetworkManager Connection editor -- Connection editor for NetworkManager
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Dan Williams <dcbw@redhat.com>
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Copyright 2008 - 2014 Red Hat, Inc.
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#include "nm-default.h"
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#include <string.h>
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#include "page-bridge-port.h"
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
G_DEFINE_TYPE (CEPageBridgePort, ce_page_bridge_port, CE_TYPE_PAGE)
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#define CE_PAGE_BRIDGE_PORT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), CE_TYPE_PAGE_BRIDGE_PORT, CEPageBridgePortPrivate))
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
typedef struct {
|
|
Packit |
fabffb |
NMSettingBridgePort *setting;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
GtkSpinButton *priority;
|
|
Packit |
fabffb |
GtkSpinButton *path_cost;
|
|
Packit |
fabffb |
GtkToggleButton *hairpin_mode;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
} CEPageBridgePortPrivate;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static void
|
|
Packit |
fabffb |
bridge_port_private_init (CEPageBridgePort *self)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
CEPageBridgePortPrivate *priv = CE_PAGE_BRIDGE_PORT_GET_PRIVATE (self);
|
|
Packit |
fabffb |
GtkBuilder *builder;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
builder = CE_PAGE (self)->builder;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
priv->priority = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "bridge_port_priority"));
|
|
Packit |
fabffb |
priv->path_cost = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "bridge_port_path_cost"));
|
|
Packit |
fabffb |
priv->hairpin_mode = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "bridge_port_hairpin_mode"));
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static void
|
|
Packit |
fabffb |
stuff_changed (GtkWidget *w, gpointer user_data)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
ce_page_changed (CE_PAGE (user_data));
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static void
|
|
Packit |
fabffb |
populate_ui (CEPageBridgePort *self)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
CEPageBridgePortPrivate *priv = CE_PAGE_BRIDGE_PORT_GET_PRIVATE (self);
|
|
Packit |
fabffb |
NMSettingBridgePort *s_port = priv->setting;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
gtk_spin_button_set_value (priv->priority, (gdouble) nm_setting_bridge_port_get_priority (s_port));
|
|
Packit |
fabffb |
gtk_spin_button_set_value (priv->path_cost, (gdouble) nm_setting_bridge_port_get_path_cost (s_port));
|
|
Packit |
fabffb |
gtk_toggle_button_set_active (priv->hairpin_mode, nm_setting_bridge_port_get_hairpin_mode (s_port));
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static void
|
|
Packit |
fabffb |
finish_setup (CEPageBridgePort *self, gpointer user_data)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
CEPageBridgePortPrivate *priv = CE_PAGE_BRIDGE_PORT_GET_PRIVATE (self);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
populate_ui (self);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_signal_connect (priv->priority, "value-changed", G_CALLBACK (stuff_changed), self);
|
|
Packit |
fabffb |
g_signal_connect (priv->path_cost, "value-changed", G_CALLBACK (stuff_changed), self);
|
|
Packit |
fabffb |
g_signal_connect (priv->hairpin_mode, "toggled", G_CALLBACK (stuff_changed), self);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
CEPage *
|
|
Packit |
fabffb |
ce_page_bridge_port_new (NMConnectionEditor *editor,
|
|
Packit |
fabffb |
NMConnection *connection,
|
|
Packit |
fabffb |
GtkWindow *parent_window,
|
|
Packit |
fabffb |
NMClient *client,
|
|
Packit |
fabffb |
const char **out_secrets_setting_name,
|
|
Packit |
fabffb |
GError **error)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
CEPageBridgePort *self;
|
|
Packit |
fabffb |
CEPageBridgePortPrivate *priv;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
self = CE_PAGE_BRIDGE_PORT (ce_page_new (CE_TYPE_PAGE_BRIDGE_PORT,
|
|
Packit |
fabffb |
editor,
|
|
Packit |
fabffb |
connection,
|
|
Packit |
fabffb |
parent_window,
|
|
Packit |
fabffb |
client,
|
|
Packit |
fabffb |
"/org/gnome/nm_connection_editor/ce-page-bridge-port.ui",
|
|
Packit |
fabffb |
"BridgePortPage",
|
|
Packit |
fabffb |
/* Translators: a "Bridge Port" is a network
|
|
Packit |
fabffb |
* device that is part of a bridge.
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
_("Bridge Port")));
|
|
Packit |
fabffb |
if (!self) {
|
|
Packit |
fabffb |
g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("Could not load bridge port user interface."));
|
|
Packit |
fabffb |
return NULL;
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
bridge_port_private_init (self);
|
|
Packit |
fabffb |
priv = CE_PAGE_BRIDGE_PORT_GET_PRIVATE (self);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
priv->setting = nm_connection_get_setting_bridge_port (connection);
|
|
Packit |
fabffb |
if (!priv->setting) {
|
|
Packit |
fabffb |
priv->setting = NM_SETTING_BRIDGE_PORT (nm_setting_bridge_port_new ());
|
|
Packit |
fabffb |
nm_connection_add_setting (connection, NM_SETTING (priv->setting));
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_signal_connect (self, CE_PAGE_INITIALIZED, G_CALLBACK (finish_setup), NULL);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
return CE_PAGE (self);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static void
|
|
Packit |
fabffb |
ui_to_setting (CEPageBridgePort *self)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
CEPageBridgePortPrivate *priv = CE_PAGE_BRIDGE_PORT_GET_PRIVATE (self);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_object_set (priv->setting,
|
|
Packit |
fabffb |
NM_SETTING_BRIDGE_PORT_HAIRPIN_MODE, gtk_toggle_button_get_active (priv->hairpin_mode),
|
|
Packit |
fabffb |
NM_SETTING_BRIDGE_PORT_PRIORITY, gtk_spin_button_get_value_as_int (priv->priority),
|
|
Packit |
fabffb |
NM_SETTING_BRIDGE_PORT_PATH_COST, gtk_spin_button_get_value_as_int (priv->path_cost),
|
|
Packit |
fabffb |
NULL);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static gboolean
|
|
Packit |
fabffb |
ce_page_validate_v (CEPage *page, NMConnection *connection, GError **error)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
CEPageBridgePort *self = CE_PAGE_BRIDGE_PORT (page);
|
|
Packit |
fabffb |
CEPageBridgePortPrivate *priv = CE_PAGE_BRIDGE_PORT_GET_PRIVATE (self);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
ui_to_setting (self);
|
|
Packit |
fabffb |
return nm_setting_verify (NM_SETTING (priv->setting), NULL, error);
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static void
|
|
Packit |
fabffb |
ce_page_bridge_port_init (CEPageBridgePort *self)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
}
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
static void
|
|
Packit |
fabffb |
ce_page_bridge_port_class_init (CEPageBridgePortClass *bridge_port_class)
|
|
Packit |
fabffb |
{
|
|
Packit |
fabffb |
GObjectClass *object_class = G_OBJECT_CLASS (bridge_port_class);
|
|
Packit |
fabffb |
CEPageClass *parent_class = CE_PAGE_CLASS (bridge_port_class);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
g_type_class_add_private (object_class, sizeof (CEPageBridgePortPrivate));
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/* virtual methods */
|
|
Packit |
fabffb |
parent_class->ce_page_validate_v = ce_page_validate_v;
|
|
Packit |
fabffb |
}
|