Blame src/connection-editor/ce-page.h

Packit Service d328f3
// SPDX-License-Identifier: GPL-2.0+
Packit Service d328f3
/* NetworkManager Connection editor -- Connection editor for NetworkManager
Packit Service d328f3
 *
Packit Service d328f3
 * Dan Williams <dcbw@redhat.com>
Packit Service d328f3
 *
Packit Service d328f3
 * Copyright 2008 - 2014 Red Hat, Inc.
Packit Service d328f3
 */
Packit Service d328f3
Packit Service d328f3
#ifndef __CE_PAGE_H__
Packit Service d328f3
#define __CE_PAGE_H__
Packit Service d328f3
Packit Service d328f3
#include <glib.h>
Packit Service d328f3
#include <glib-object.h>
Packit Service d328f3
Packit Service d328f3
#include <gtk/gtk.h>
Packit Service d328f3
Packit Service d328f3
#include <NetworkManager.h>
Packit Service d328f3
Packit Service d328f3
#include "nm-connection-editor.h"
Packit Service d328f3
#include "utils.h"
Packit Service d328f3
Packit Service d328f3
/* for ARPHRD_ETHER / ARPHRD_INFINIBAND for MAC utilies */
Packit Service d328f3
#include <net/if_arp.h>
Packit Service d328f3
Packit Service d328f3
struct _func_tag_page_new_connection_result;
Packit Service d328f3
#define FUNC_TAG_PAGE_NEW_CONNECTION_RESULT_IMPL struct _func_tag_page_new_connection_result *_dummy
Packit Service d328f3
#define FUNC_TAG_PAGE_NEW_CONNECTION_RESULT_CALL ((struct _func_tag_page_new_connection_result *) NULL)
Packit Service d328f3
typedef void (*PageNewConnectionResultFunc) (FUNC_TAG_PAGE_NEW_CONNECTION_RESULT_IMPL,
Packit Service d328f3
                                             NMConnection *connection, /* allow-none, don't transfer reference, allow-keep */
Packit Service d328f3
                                             gboolean canceled,
Packit Service d328f3
                                             GError *error,
Packit Service d328f3
                                             gpointer user_data);
Packit Service d328f3
Packit Service d328f3
typedef GSList * (*PageGetConnectionsFunc) (gpointer user_data);
Packit Service d328f3
Packit Service d328f3
struct _func_tag_page_new_connection;
Packit Service d328f3
#define FUNC_TAG_PAGE_NEW_CONNECTION_IMPL struct _func_tag_page_new_connection *_dummy
Packit Service d328f3
#define FUNC_TAG_PAGE_NEW_CONNECTION_CALL ((struct _func_tag_page_new_connection *) NULL)
Packit Service d328f3
typedef void (*PageNewConnectionFunc) (FUNC_TAG_PAGE_NEW_CONNECTION_IMPL,
Packit Service d328f3
                                       GtkWindow *parent,
Packit Service d328f3
                                       const char *detail,
Packit Service d328f3
                                       gpointer detail_data,
Packit Service d328f3
                                       NMConnection *connection,
Packit Service d328f3
                                       NMClient *client,
Packit Service d328f3
                                       PageNewConnectionResultFunc result_func,
Packit Service d328f3
                                       gpointer user_data);
Packit Service d328f3
Packit Service d328f3
#define CE_TYPE_PAGE            (ce_page_get_type ())
Packit Service d328f3
#define CE_PAGE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), CE_TYPE_PAGE, CEPage))
Packit Service d328f3
#define CE_PAGE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), CE_TYPE_PAGE, CEPageClass))
Packit Service d328f3
#define CE_IS_PAGE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CE_TYPE_PAGE))
Packit Service d328f3
#define CE_IS_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CE_TYPE_PAGE))
Packit Service d328f3
#define CE_PAGE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), CE_TYPE_PAGE, CEPageClass))
Packit Service d328f3
Packit Service d328f3
#define CE_PAGE_CONNECTION    "connection"
Packit Service d328f3
#define CE_PAGE_PARENT_WINDOW "parent-window"
Packit Service d328f3
Packit Service d328f3
#define CE_PAGE_CHANGED       "changed"
Packit Service d328f3
#define CE_PAGE_INITIALIZED   "initialized"
Packit Service d328f3
#define CE_PAGE_NEW_EDITOR    "new-editor"
Packit Service d328f3
Packit Service d328f3
typedef struct {
Packit Service d328f3
	GObject parent;
Packit Service d328f3
Packit Service d328f3
	gboolean inter_page_change_running;
Packit Service d328f3
	GtkBuilder *builder;
Packit Service d328f3
	GtkWidget *page;
Packit Service d328f3
	char *title;
Packit Service d328f3
Packit Service d328f3
	gulong secrets_done_validate;
Packit Service d328f3
Packit Service d328f3
	NMConnectionEditor *editor;
Packit Service d328f3
	NMConnection *connection;
Packit Service d328f3
	GtkWindow *parent_window;
Packit Service d328f3
	NMClient *client;
Packit Service d328f3
} CEPage;
Packit Service d328f3
Packit Service d328f3
typedef struct {
Packit Service d328f3
	GObjectClass parent;
Packit Service d328f3
Packit Service d328f3
	/* Virtual functions */
Packit Service d328f3
	gboolean    (*ce_page_validate_v) (CEPage *self, NMConnection *connection, GError **error);
Packit Service d328f3
	gboolean    (*last_update)  (CEPage *self, NMConnection *connection, GError **error);
Packit Service d328f3
	gboolean    (*inter_page_change)  (CEPage *self);
Packit Service d328f3
} CEPageClass;
Packit Service d328f3
Packit Service d328f3
typedef CEPage* (*CEPageNewFunc)(NMConnectionEditor *editor,
Packit Service d328f3
                                 NMConnection *connection,
Packit Service d328f3
                                 GtkWindow *parent,
Packit Service d328f3
                                 NMClient *client,
Packit Service d328f3
                                 const char **out_secrets_setting_name,
Packit Service d328f3
                                 GError **error);
Packit Service d328f3
Packit Service d328f3
#define CE_TOOLTIP_ADDR_AUTO _("IP addresses identify your computer on the network. " \
Packit Service d328f3
                               "Click the “Add” button to add static IP address to be " \
Packit Service d328f3
                               "configured in addition to the automatic ones.")
Packit Service d328f3
#define CE_TOOLTIP_ADDR_MANUAL _("IP addresses identify your computer on the network. " \
Packit Service d328f3
                                 "Click the “Add” button to add an IP address.")
Packit Service d328f3
#define CE_TOOLTIP_ADDR_SHARED _("The IP address identify your computer on the network and " \
Packit Service d328f3
                                 "determines the address range distributed to other computers. " \
Packit Service d328f3
                                 "Click the “Add” button to add an IP address. "\
Packit Service d328f3
                                 "If no address is provided, range will be determined automatically.")
Packit Service d328f3
Packit Service d328f3
#define CE_LABEL_ADDR_AUTO _("Additional static addresses")
Packit Service d328f3
#define CE_LABEL_ADDR_MANUAL _("Addresses")
Packit Service d328f3
#define CE_LABEL_ADDR_SHARED _("Address (optional)")
Packit Service d328f3
Packit Service d328f3
GType ce_page_get_type (void);
Packit Service d328f3
Packit Service d328f3
GtkWidget *  ce_page_get_page (CEPage *self);
Packit Service d328f3
Packit Service d328f3
const char * ce_page_get_title (CEPage *self);
Packit Service d328f3
Packit Service d328f3
gboolean ce_page_validate (CEPage *self, NMConnection *connection, GError **error);
Packit Service d328f3
gboolean ce_page_last_update (CEPage *self, NMConnection *connection, GError **error);
Packit Service d328f3
gboolean ce_page_inter_page_change (CEPage *self);
Packit Service d328f3
Packit Service d328f3
void ce_page_setup_mac_combo (CEPage *self, GtkComboBox *combo,
Packit Service d328f3
                              const char *mac, char **mac_list);
Packit Service d328f3
void ce_page_setup_data_combo (CEPage *self, GtkComboBox *combo,
Packit Service d328f3
                               const char *data, char **list);
Packit Service d328f3
void ce_page_setup_cloned_mac_combo (GtkComboBoxText *combo, const char *current);
Packit Service d328f3
void ce_page_setup_device_combo (CEPage *self,
Packit Service d328f3
                                 GtkComboBox *combo,
Packit Service d328f3
                                 GType device_type,
Packit Service d328f3
                                 const char *ifname,
Packit Service d328f3
                                 const char *mac,
Packit Service d328f3
                                 const char *mac_property);
Packit Service d328f3
gboolean ce_page_mac_entry_valid (GtkEntry *entry, int type, const char *property_name, GError **error);
Packit Service d328f3
gboolean ce_page_interface_name_valid (const char *iface, const char *property_name, GError **error);
Packit Service d328f3
gboolean ce_page_device_entry_get (GtkEntry *entry, int type,
Packit Service d328f3
                                   gboolean check_ifname,
Packit Service d328f3
                                   char **ifname, char **mac,
Packit Service d328f3
                                   const char *device_name,
Packit Service d328f3
                                   GError **error);
Packit Service d328f3
char *ce_page_cloned_mac_get (GtkComboBoxText *combo);
Packit Service d328f3
gboolean ce_page_cloned_mac_combo_valid (GtkComboBoxText *combo, int type, const char *property_name, GError **error);
Packit Service d328f3
Packit Service d328f3
void ce_page_changed (CEPage *self);
Packit Service d328f3
Packit Service d328f3
NMConnectionEditor *ce_page_new_editor (CEPage *self,
Packit Service d328f3
                                        GtkWindow *parent_window,
Packit Service d328f3
                                        NMConnection *connection);
Packit Service d328f3
Packit Service d328f3
void ce_spin_automatic_val (GtkSpinButton *spin, int defvalue);
Packit Service d328f3
void ce_spin_default_val (GtkSpinButton *spin, int defvalue);
Packit Service d328f3
void ce_spin_off_val (GtkSpinButton *spin, int defvalue);
Packit Service d328f3
int ce_get_property_default (NMSetting *setting, const char *property_name);
Packit Service d328f3
Packit Service d328f3
void ce_page_complete_init (CEPage *self,
Packit Service d328f3
                            const char *setting_name,
Packit Service d328f3
                            GVariant *secrets,
Packit Service d328f3
                            GError *error);
Packit Service d328f3
Packit Service d328f3
char *ce_page_get_next_available_name (const GPtrArray *connections, const char *format);
Packit Service d328f3
Packit Service d328f3
/* Only for subclasses */
Packit Service d328f3
void ce_page_complete_connection (NMConnection *connection,
Packit Service d328f3
                                  const char *format,
Packit Service d328f3
                                  const char *ctype,
Packit Service d328f3
                                  gboolean autoconnect,
Packit Service d328f3
                                  NMClient *client);
Packit Service d328f3
Packit Service d328f3
static inline NMConnection *
Packit Service d328f3
_ensure_connection_own (NMConnection **connection)
Packit Service d328f3
{
Packit Service d328f3
	return (*connection) ?: (*connection = nm_simple_connection_new ());
Packit Service d328f3
}
Packit Service d328f3
Packit Service d328f3
static inline NMConnection *
Packit Service d328f3
_ensure_connection_other (NMConnection *connection, NMConnection **connection_to_free)
Packit Service d328f3
{
Packit Service d328f3
	if (connection) {
Packit Service d328f3
		*connection_to_free = NULL;
Packit Service d328f3
		return connection;
Packit Service d328f3
	}
Packit Service d328f3
	return (*connection_to_free = nm_simple_connection_new ());
Packit Service d328f3
}
Packit Service d328f3
Packit Service d328f3
CEPage *ce_page_new (GType page_type,
Packit Service d328f3
                     NMConnectionEditor *editor,
Packit Service d328f3
                     NMConnection *connection,
Packit Service d328f3
                     GtkWindow *parent_window,
Packit Service d328f3
                     NMClient *client,
Packit Service d328f3
                     const char *ui_resource,
Packit Service d328f3
                     const char *widget_name,
Packit Service d328f3
                     const char *title);
Packit Service d328f3
Packit Service d328f3
#endif  /* __CE_PAGE_H__ */
Packit Service d328f3