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

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