aplicando formato allman
parent
def492f92d
commit
f2a13175e5
|
@ -34,7 +34,8 @@
|
||||||
#include <gdk/gdkx.h>
|
#include <gdk/gdkx.h>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
struct EggDesktopFile {
|
struct EggDesktopFile
|
||||||
|
{
|
||||||
GKeyFile *key_file;
|
GKeyFile *key_file;
|
||||||
char *source;
|
char *source;
|
||||||
|
|
||||||
|
@ -989,7 +990,8 @@ end_startup_notification (GdkDisplay *display,
|
||||||
|
|
||||||
#define EGG_DESKTOP_FILE_SN_TIMEOUT_LENGTH (30 /* seconds */)
|
#define EGG_DESKTOP_FILE_SN_TIMEOUT_LENGTH (30 /* seconds */)
|
||||||
|
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
GdkDisplay *display;
|
GdkDisplay *display;
|
||||||
char *startup_id;
|
char *startup_id;
|
||||||
} StartupNotificationData;
|
} StartupNotificationData;
|
||||||
|
@ -1428,7 +1430,8 @@ egg_set_desktop_file_internal (const char *desktop_file_path,
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (set_defaults && egg_desktop_file != NULL) {
|
if (set_defaults && egg_desktop_file != NULL)
|
||||||
|
{
|
||||||
/* Set localized application name and default window icon */
|
/* Set localized application name and default window icon */
|
||||||
if (egg_desktop_file->name)
|
if (egg_desktop_file->name)
|
||||||
g_set_application_name (egg_desktop_file->name);
|
g_set_application_name (egg_desktop_file->name);
|
||||||
|
|
|
@ -26,7 +26,8 @@ G_BEGIN_DECLS
|
||||||
|
|
||||||
typedef struct EggDesktopFile EggDesktopFile;
|
typedef struct EggDesktopFile EggDesktopFile;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum
|
||||||
|
{
|
||||||
EGG_DESKTOP_FILE_TYPE_UNRECOGNIZED,
|
EGG_DESKTOP_FILE_TYPE_UNRECOGNIZED,
|
||||||
|
|
||||||
EGG_DESKTOP_FILE_TYPE_APPLICATION,
|
EGG_DESKTOP_FILE_TYPE_APPLICATION,
|
||||||
|
@ -71,7 +72,8 @@ gboolean egg_desktop_file_launch (EggDesktopFile *deskto
|
||||||
GError **error,
|
GError **error,
|
||||||
...) G_GNUC_NULL_TERMINATED;
|
...) G_GNUC_NULL_TERMINATED;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum
|
||||||
|
{
|
||||||
EGG_DESKTOP_FILE_LAUNCH_CLEARENV = 1,
|
EGG_DESKTOP_FILE_LAUNCH_CLEARENV = 1,
|
||||||
EGG_DESKTOP_FILE_LAUNCH_PUTENV,
|
EGG_DESKTOP_FILE_LAUNCH_PUTENV,
|
||||||
EGG_DESKTOP_FILE_LAUNCH_SCREEN,
|
EGG_DESKTOP_FILE_LAUNCH_SCREEN,
|
||||||
|
@ -143,7 +145,8 @@ char **egg_desktop_file_get_locale_string_list (EggDesktopFile *desktop_file
|
||||||
|
|
||||||
GQuark egg_desktop_file_error_quark (void);
|
GQuark egg_desktop_file_error_quark (void);
|
||||||
|
|
||||||
typedef enum {
|
typedef enum
|
||||||
|
{
|
||||||
EGG_DESKTOP_FILE_ERROR_INVALID,
|
EGG_DESKTOP_FILE_ERROR_INVALID,
|
||||||
EGG_DESKTOP_FILE_ERROR_NOT_LAUNCHABLE,
|
EGG_DESKTOP_FILE_ERROR_NOT_LAUNCHABLE,
|
||||||
EGG_DESKTOP_FILE_ERROR_UNRECOGNIZED_OPTION
|
EGG_DESKTOP_FILE_ERROR_UNRECOGNIZED_OPTION
|
||||||
|
|
|
@ -60,7 +60,8 @@ egg_shell (const char *shell)
|
||||||
#ifndef G_OS_WIN32
|
#ifndef G_OS_WIN32
|
||||||
struct passwd *pw;
|
struct passwd *pw;
|
||||||
int i;
|
int i;
|
||||||
static const char shells [][14] = {
|
static const char shells [][14] =
|
||||||
|
{
|
||||||
/* Note that on some systems shells can also
|
/* Note that on some systems shells can also
|
||||||
* be installed in /usr/bin */
|
* be installed in /usr/bin */
|
||||||
"/bin/bash", "/usr/bin/bash",
|
"/bin/bash", "/usr/bin/bash",
|
||||||
|
@ -71,23 +72,30 @@ egg_shell (const char *shell)
|
||||||
};
|
};
|
||||||
|
|
||||||
if (geteuid () == getuid () &&
|
if (geteuid () == getuid () &&
|
||||||
getegid () == getgid ()) {
|
getegid () == getgid ())
|
||||||
|
{
|
||||||
/* only in non-setuid */
|
/* only in non-setuid */
|
||||||
if (shell != NULL) {
|
if (shell != NULL)
|
||||||
if (access (shell, X_OK) == 0) {
|
{
|
||||||
|
if (access (shell, X_OK) == 0)
|
||||||
|
{
|
||||||
return g_strdup (shell);
|
return g_strdup (shell);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pw = getpwuid(getuid());
|
pw = getpwuid(getuid());
|
||||||
if (pw && pw->pw_shell) {
|
if (pw && pw->pw_shell)
|
||||||
if (access (pw->pw_shell, X_OK) == 0) {
|
{
|
||||||
|
if (access (pw->pw_shell, X_OK) == 0)
|
||||||
|
{
|
||||||
return g_strdup (pw->pw_shell);
|
return g_strdup (pw->pw_shell);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i != G_N_ELEMENTS (shells); i++) {
|
for (i = 0; i != G_N_ELEMENTS (shells); i++)
|
||||||
if (access (shells [i], X_OK) == 0) {
|
{
|
||||||
|
if (access (shells [i], X_OK) == 0)
|
||||||
|
{
|
||||||
return g_strdup (shells[i]);
|
return g_strdup (shells[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,8 @@
|
||||||
typedef struct _EggSMClientOSX EggSMClientOSX;
|
typedef struct _EggSMClientOSX EggSMClientOSX;
|
||||||
typedef struct _EggSMClientOSXClass EggSMClientOSXClass;
|
typedef struct _EggSMClientOSXClass EggSMClientOSXClass;
|
||||||
|
|
||||||
struct _EggSMClientOSX {
|
struct _EggSMClientOSX
|
||||||
|
{
|
||||||
EggSMClient parent;
|
EggSMClient parent;
|
||||||
|
|
||||||
AppleEvent quit_event, quit_reply;
|
AppleEvent quit_event, quit_reply;
|
||||||
|
|
|
@ -66,7 +66,8 @@
|
||||||
typedef struct _EggSMClientWin32 EggSMClientWin32;
|
typedef struct _EggSMClientWin32 EggSMClientWin32;
|
||||||
typedef struct _EggSMClientWin32Class EggSMClientWin32Class;
|
typedef struct _EggSMClientWin32Class EggSMClientWin32Class;
|
||||||
|
|
||||||
struct _EggSMClientWin32 {
|
struct _EggSMClientWin32
|
||||||
|
{
|
||||||
EggSMClient parent;
|
EggSMClient parent;
|
||||||
|
|
||||||
HANDLE message_event, response_event;
|
HANDLE message_event, response_event;
|
||||||
|
@ -224,7 +225,8 @@ got_message (gpointer smclient)
|
||||||
|
|
||||||
/* Windows HANDLE GSource */
|
/* Windows HANDLE GSource */
|
||||||
|
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
GSource source;
|
GSource source;
|
||||||
GPollFD pollfd;
|
GPollFD pollfd;
|
||||||
} GWin32HandleSource;
|
} GWin32HandleSource;
|
||||||
|
@ -256,7 +258,8 @@ g_win32_handle_source_finalize (GSource *source)
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
GSourceFuncs g_win32_handle_source_funcs = {
|
GSourceFuncs g_win32_handle_source_funcs =
|
||||||
|
{
|
||||||
g_win32_handle_source_prepare,
|
g_win32_handle_source_prepare,
|
||||||
g_win32_handle_source_check,
|
g_win32_handle_source_check,
|
||||||
g_win32_handle_source_dispatch,
|
g_win32_handle_source_dispatch,
|
||||||
|
|
|
@ -65,7 +65,8 @@ typedef enum
|
||||||
XSMP_STATE_CONNECTION_CLOSED
|
XSMP_STATE_CONNECTION_CLOSED
|
||||||
} EggSMClientXSMPState;
|
} EggSMClientXSMPState;
|
||||||
|
|
||||||
static const char *state_names[] = {
|
static const char *state_names[] =
|
||||||
|
{
|
||||||
"idle",
|
"idle",
|
||||||
"save-yourself",
|
"save-yourself",
|
||||||
"interact-request",
|
"interact-request",
|
||||||
|
|
|
@ -30,7 +30,8 @@ static void egg_sm_client_debug_handler (const char *log_domain,
|
||||||
const char *message,
|
const char *message,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
|
|
||||||
enum {
|
enum
|
||||||
|
{
|
||||||
SAVE_STATE,
|
SAVE_STATE,
|
||||||
QUIT_REQUESTED,
|
QUIT_REQUESTED,
|
||||||
QUIT_CANCELLED,
|
QUIT_CANCELLED,
|
||||||
|
@ -40,7 +41,8 @@ enum {
|
||||||
|
|
||||||
static guint signals[LAST_SIGNAL];
|
static guint signals[LAST_SIGNAL];
|
||||||
|
|
||||||
struct _EggSMClientPrivate {
|
struct _EggSMClientPrivate
|
||||||
|
{
|
||||||
GKeyFile *state_file;
|
GKeyFile *state_file;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -219,27 +221,38 @@ sm_client_post_parse_func (GOptionContext *context,
|
||||||
GOptionGroup *
|
GOptionGroup *
|
||||||
egg_sm_client_get_option_group (void)
|
egg_sm_client_get_option_group (void)
|
||||||
{
|
{
|
||||||
const GOptionEntry entries[] = {
|
const GOptionEntry entries[] =
|
||||||
{ "sm-client-disable", 0, 0,
|
{
|
||||||
|
{
|
||||||
|
"sm-client-disable", 0, 0,
|
||||||
G_OPTION_ARG_NONE, &sm_client_disable,
|
G_OPTION_ARG_NONE, &sm_client_disable,
|
||||||
N_("Disable connection to session manager"), NULL },
|
N_("Disable connection to session manager"), NULL
|
||||||
{ "sm-client-state-file", 0, 0,
|
},
|
||||||
|
{
|
||||||
|
"sm-client-state-file", 0, 0,
|
||||||
G_OPTION_ARG_FILENAME, &sm_client_state_file,
|
G_OPTION_ARG_FILENAME, &sm_client_state_file,
|
||||||
N_("Specify file containing saved configuration"), N_("FILE") },
|
N_("Specify file containing saved configuration"), N_("FILE")
|
||||||
{ "sm-client-id", 0, 0,
|
},
|
||||||
|
{
|
||||||
|
"sm-client-id", 0, 0,
|
||||||
G_OPTION_ARG_STRING, &sm_client_id,
|
G_OPTION_ARG_STRING, &sm_client_id,
|
||||||
N_("Specify session management ID"), N_("ID") },
|
N_("Specify session management ID"), N_("ID")
|
||||||
|
},
|
||||||
/* MateClient compatibility option */
|
/* MateClient compatibility option */
|
||||||
{ "sm-disable", 0, G_OPTION_FLAG_HIDDEN,
|
{
|
||||||
|
"sm-disable", 0, G_OPTION_FLAG_HIDDEN,
|
||||||
G_OPTION_ARG_NONE, &sm_client_disable,
|
G_OPTION_ARG_NONE, &sm_client_disable,
|
||||||
NULL, NULL },
|
NULL, NULL
|
||||||
|
},
|
||||||
/* MateClient compatibility option. This is a dummy option that only
|
/* MateClient compatibility option. This is a dummy option that only
|
||||||
* exists so that sessions saved by apps with MateClient can be restored
|
* exists so that sessions saved by apps with MateClient can be restored
|
||||||
* later when they've switched to EggSMClient. See bug #575308.
|
* later when they've switched to EggSMClient. See bug #575308.
|
||||||
*/
|
*/
|
||||||
{ "sm-config-prefix", 0, G_OPTION_FLAG_HIDDEN,
|
{
|
||||||
|
"sm-config-prefix", 0, G_OPTION_FLAG_HIDDEN,
|
||||||
G_OPTION_ARG_STRING, &sm_config_prefix,
|
G_OPTION_ARG_STRING, &sm_config_prefix,
|
||||||
NULL, NULL },
|
NULL, NULL
|
||||||
|
},
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
GOptionGroup *group;
|
GOptionGroup *group;
|
||||||
|
|
|
@ -35,14 +35,16 @@ typedef struct _EggSMClient EggSMClient;
|
||||||
typedef struct _EggSMClientClass EggSMClientClass;
|
typedef struct _EggSMClientClass EggSMClientClass;
|
||||||
typedef struct _EggSMClientPrivate EggSMClientPrivate;
|
typedef struct _EggSMClientPrivate EggSMClientPrivate;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum
|
||||||
|
{
|
||||||
EGG_SM_CLIENT_END_SESSION_DEFAULT,
|
EGG_SM_CLIENT_END_SESSION_DEFAULT,
|
||||||
EGG_SM_CLIENT_LOGOUT,
|
EGG_SM_CLIENT_LOGOUT,
|
||||||
EGG_SM_CLIENT_REBOOT,
|
EGG_SM_CLIENT_REBOOT,
|
||||||
EGG_SM_CLIENT_SHUTDOWN
|
EGG_SM_CLIENT_SHUTDOWN
|
||||||
} EggSMClientEndStyle;
|
} EggSMClientEndStyle;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum
|
||||||
|
{
|
||||||
EGG_SM_CLIENT_MODE_DISABLED,
|
EGG_SM_CLIENT_MODE_DISABLED,
|
||||||
EGG_SM_CLIENT_MODE_NO_RESTART,
|
EGG_SM_CLIENT_MODE_NO_RESTART,
|
||||||
EGG_SM_CLIENT_MODE_NORMAL
|
EGG_SM_CLIENT_MODE_NORMAL
|
||||||
|
|
|
@ -38,17 +38,28 @@ struct _TerminalColorScheme
|
||||||
const GdkColor background;
|
const GdkColor background;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const TerminalColorScheme color_schemes[] = {
|
static const TerminalColorScheme color_schemes[] =
|
||||||
{ N_("Black on light yellow"),
|
{
|
||||||
{ 0, 0x0000, 0x0000, 0x0000 }, { 0, 0xFFFF, 0xFFFF, 0xDDDD } },
|
{
|
||||||
{ N_("Black on white"),
|
N_("Black on light yellow"),
|
||||||
{ 0, 0x0000, 0x0000, 0x0000 }, { 0, 0xFFFF, 0xFFFF, 0xFFFF } },
|
{ 0, 0x0000, 0x0000, 0x0000 }, { 0, 0xFFFF, 0xFFFF, 0xDDDD }
|
||||||
{ N_("Gray on black"),
|
},
|
||||||
{ 0, 0xAAAA, 0xAAAA, 0xAAAA }, { 0, 0x0000, 0x0000, 0x0000 } },
|
{
|
||||||
{ N_("Green on black"),
|
N_("Black on white"),
|
||||||
{ 0, 0x0000, 0xFFFF, 0x0000 }, { 0, 0x0000, 0x0000, 0x0000 } },
|
{ 0, 0x0000, 0x0000, 0x0000 }, { 0, 0xFFFF, 0xFFFF, 0xFFFF }
|
||||||
{ N_("White on black"),
|
},
|
||||||
{ 0, 0xFFFF, 0xFFFF, 0xFFFF }, { 0, 0x0000, 0x0000, 0x0000 } }
|
{
|
||||||
|
N_("Gray on black"),
|
||||||
|
{ 0, 0xAAAA, 0xAAAA, 0xAAAA }, { 0, 0x0000, 0x0000, 0x0000 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
N_("Green on black"),
|
||||||
|
{ 0, 0x0000, 0xFFFF, 0x0000 }, { 0, 0x0000, 0x0000, 0x0000 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
N_("White on black"),
|
||||||
|
{ 0, 0xFFFF, 0xFFFF, 0xFFFF }, { 0, 0x0000, 0x0000, 0x0000 }
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static void profile_forgotten_cb (TerminalProfile *profile,
|
static void profile_forgotten_cb (TerminalProfile *profile,
|
||||||
|
@ -599,18 +610,21 @@ update_image_preview (GtkFileChooser *chooser)
|
||||||
image = gtk_file_chooser_get_preview_widget (GTK_FILE_CHOOSER (chooser));
|
image = gtk_file_chooser_get_preview_widget (GTK_FILE_CHOOSER (chooser));
|
||||||
file = gtk_file_chooser_get_preview_uri (chooser);
|
file = gtk_file_chooser_get_preview_uri (chooser);
|
||||||
|
|
||||||
if (file != NULL) {
|
if (file != NULL)
|
||||||
|
{
|
||||||
|
|
||||||
GdkPixbuf *pixbuf = NULL;
|
GdkPixbuf *pixbuf = NULL;
|
||||||
|
|
||||||
pixbuf = create_preview_pixbuf (file);
|
pixbuf = create_preview_pixbuf (file);
|
||||||
g_free (file);
|
g_free (file);
|
||||||
|
|
||||||
if (pixbuf != NULL) {
|
if (pixbuf != NULL)
|
||||||
|
{
|
||||||
gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf);
|
gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf);
|
||||||
g_object_unref (pixbuf);
|
g_object_unref (pixbuf);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
gtk_image_set_from_stock (GTK_IMAGE (image),
|
gtk_image_set_from_stock (GTK_IMAGE (image),
|
||||||
"gtk-dialog-question",
|
"gtk-dialog-question",
|
||||||
GTK_ICON_SIZE_DIALOG);
|
GTK_ICON_SIZE_DIALOG);
|
||||||
|
@ -709,7 +723,8 @@ terminal_profile_editor_focus_widget (GtkWidget *editor,
|
||||||
page = page_parent;
|
page = page_parent;
|
||||||
|
|
||||||
page_parent = gtk_widget_get_parent (page);
|
page_parent = gtk_widget_get_parent (page);
|
||||||
if (page != NULL && GTK_IS_NOTEBOOK (page_parent)) {
|
if (page != NULL && GTK_IS_NOTEBOOK (page_parent))
|
||||||
|
{
|
||||||
GtkNotebook *notebook;
|
GtkNotebook *notebook;
|
||||||
|
|
||||||
notebook = GTK_NOTEBOOK (page_parent);
|
notebook = GTK_NOTEBOOK (page_parent);
|
||||||
|
@ -754,7 +769,8 @@ terminal_profile_edit (TerminalProfile *profile,
|
||||||
|
|
||||||
path = g_build_filename (TERM_PKGDATADIR, "profile-preferences.ui", NULL);
|
path = g_build_filename (TERM_PKGDATADIR, "profile-preferences.ui", NULL);
|
||||||
builder = gtk_builder_new ();
|
builder = gtk_builder_new ();
|
||||||
if (!gtk_builder_add_from_file (builder, path, &error)) {
|
if (!gtk_builder_add_from_file (builder, path, &error))
|
||||||
|
{
|
||||||
g_warning ("Failed to load %s: %s\n", path, error->message);
|
g_warning ("Failed to load %s: %s\n", path, error->message);
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
g_free (path);
|
g_free (path);
|
||||||
|
|
|
@ -30,7 +30,8 @@
|
||||||
#define SKEY_PREFIX "s/key "
|
#define SKEY_PREFIX "s/key "
|
||||||
#define OTP_PREFIX "otp-"
|
#define OTP_PREFIX "otp-"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
TerminalScreen *screen;
|
TerminalScreen *screen;
|
||||||
char *seed;
|
char *seed;
|
||||||
int seq;
|
int seq;
|
||||||
|
|
|
@ -42,12 +42,14 @@ static void byteReverse(unsigned char *buf, unsigned longs);
|
||||||
static void byteReverse(unsigned char *buf, unsigned longs)
|
static void byteReverse(unsigned char *buf, unsigned longs)
|
||||||
{
|
{
|
||||||
guint32 t;
|
guint32 t;
|
||||||
do {
|
do
|
||||||
|
{
|
||||||
t = (guint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
|
t = (guint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
|
||||||
((unsigned) buf[1] << 8 | buf[0]);
|
((unsigned) buf[1] << 8 | buf[0]);
|
||||||
*(guint32 *) buf = t;
|
*(guint32 *) buf = t;
|
||||||
buf += 4;
|
buf += 4;
|
||||||
} while (--longs);
|
}
|
||||||
|
while (--longs);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -88,11 +90,13 @@ void MD4Update(MD4_CTX *ctx, unsigned char const *buf,
|
||||||
|
|
||||||
/* Handle any leading odd-sized chunks */
|
/* Handle any leading odd-sized chunks */
|
||||||
|
|
||||||
if (t) {
|
if (t)
|
||||||
|
{
|
||||||
unsigned char *p = (unsigned char *) ctx->in + t;
|
unsigned char *p = (unsigned char *) ctx->in + t;
|
||||||
|
|
||||||
t = 64 - t;
|
t = 64 - t;
|
||||||
if (len < t) {
|
if (len < t)
|
||||||
|
{
|
||||||
memcpy(p, buf, len);
|
memcpy(p, buf, len);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -104,7 +108,8 @@ void MD4Update(MD4_CTX *ctx, unsigned char const *buf,
|
||||||
}
|
}
|
||||||
/* Process data in 64-byte chunks */
|
/* Process data in 64-byte chunks */
|
||||||
|
|
||||||
while (len >= 64) {
|
while (len >= 64)
|
||||||
|
{
|
||||||
memcpy(ctx->in, buf, 64);
|
memcpy(ctx->in, buf, 64);
|
||||||
byteReverse(ctx->in, 16);
|
byteReverse(ctx->in, 16);
|
||||||
MD4Transform(ctx->buf, (guint32 *) ctx->in);
|
MD4Transform(ctx->buf, (guint32 *) ctx->in);
|
||||||
|
@ -138,7 +143,8 @@ void MD4Final(unsigned char* digest, MD4_CTX *ctx)
|
||||||
count = 64 - 1 - count;
|
count = 64 - 1 - count;
|
||||||
|
|
||||||
/* Pad out to 56 mod 64 */
|
/* Pad out to 56 mod 64 */
|
||||||
if (count < 8) {
|
if (count < 8)
|
||||||
|
{
|
||||||
/* Two lots of padding: Pad the first block to 64 bytes */
|
/* Two lots of padding: Pad the first block to 64 bytes */
|
||||||
memset(p, 0, count);
|
memset(p, 0, count);
|
||||||
byteReverse(ctx->in, 16);
|
byteReverse(ctx->in, 16);
|
||||||
|
@ -146,7 +152,9 @@ void MD4Final(unsigned char* digest, MD4_CTX *ctx)
|
||||||
|
|
||||||
/* Now fill the next block with 56 bytes */
|
/* Now fill the next block with 56 bytes */
|
||||||
memset(ctx->in, 0, 56);
|
memset(ctx->in, 0, 56);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
/* Pad block to 56 bytes */
|
/* Pad block to 56 bytes */
|
||||||
memset(p, 0, count - 8);
|
memset(p, 0, count - 8);
|
||||||
}
|
}
|
||||||
|
@ -317,10 +325,12 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
md4 = (MD4_CTX *)malloc(sizeof(MD4_CTX));
|
md4 = (MD4_CTX *)malloc(sizeof(MD4_CTX));
|
||||||
MD4Init(md4);
|
MD4Init(md4);
|
||||||
do {
|
do
|
||||||
|
{
|
||||||
r = read(0, data, sizeof data);
|
r = read(0, data, sizeof data);
|
||||||
MD4Update(md4, data, r);
|
MD4Update(md4, data, r);
|
||||||
} while (r);
|
}
|
||||||
|
while (r);
|
||||||
|
|
||||||
MD4Final(digest, md4);
|
MD4Final(digest, md4);
|
||||||
printf("MD4 Digest is: ");
|
printf("MD4 Digest is: ");
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
guint32 buf[4];
|
guint32 buf[4];
|
||||||
guint32 bits[2];
|
guint32 bits[2];
|
||||||
unsigned char in[64];
|
unsigned char in[64];
|
||||||
|
|
|
@ -28,12 +28,14 @@
|
||||||
static void byteReverse(unsigned char *buf, unsigned longs)
|
static void byteReverse(unsigned char *buf, unsigned longs)
|
||||||
{
|
{
|
||||||
guint32 t;
|
guint32 t;
|
||||||
do {
|
do
|
||||||
|
{
|
||||||
t = (guint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
|
t = (guint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
|
||||||
((unsigned) buf[1] << 8 | buf[0]);
|
((unsigned) buf[1] << 8 | buf[0]);
|
||||||
*(guint32 *) buf = t;
|
*(guint32 *) buf = t;
|
||||||
buf += 4;
|
buf += 4;
|
||||||
} while (--longs);
|
}
|
||||||
|
while (--longs);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -11,11 +11,13 @@
|
||||||
#include "skey.h"
|
#include "skey.h"
|
||||||
#include "btoe.h"
|
#include "btoe.h"
|
||||||
|
|
||||||
struct skey_hash {
|
struct skey_hash
|
||||||
|
{
|
||||||
int (*Keycrunch) (char *, const char *, const char *);
|
int (*Keycrunch) (char *, const char *, const char *);
|
||||||
void (*Skey) (char *);
|
void (*Skey) (char *);
|
||||||
};
|
};
|
||||||
static struct skey_hash hash_table[] = {
|
static struct skey_hash hash_table[] =
|
||||||
|
{
|
||||||
{ MD4Keycrunch, MD4SKey },
|
{ MD4Keycrunch, MD4SKey },
|
||||||
{ MD5Keycrunch, MD5SKey },
|
{ MD5Keycrunch, MD5SKey },
|
||||||
{ SHA1Keycrunch, SHA1SKey }
|
{ SHA1Keycrunch, SHA1SKey }
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
typedef enum {
|
typedef enum
|
||||||
|
{
|
||||||
MD4,
|
MD4,
|
||||||
MD5,
|
MD5,
|
||||||
SHA1
|
SHA1
|
||||||
|
|
|
@ -8,7 +8,8 @@
|
||||||
|
|
||||||
#include "skey.h"
|
#include "skey.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
SKeyAlgorithm algorithm;
|
SKeyAlgorithm algorithm;
|
||||||
const char *passphrase;
|
const char *passphrase;
|
||||||
const char *seed;
|
const char *seed;
|
||||||
|
@ -17,7 +18,8 @@ typedef struct {
|
||||||
const char *btoe;
|
const char *btoe;
|
||||||
} TestEntry;
|
} TestEntry;
|
||||||
|
|
||||||
static const TestEntry tests[] = {
|
static const TestEntry tests[] =
|
||||||
|
{
|
||||||
{ MD4, "This is a test.", "TeSt", 0, "D185 4218 EBBB 0B51", "ROME MUG FRED SCAN LIVE LACE" },
|
{ MD4, "This is a test.", "TeSt", 0, "D185 4218 EBBB 0B51", "ROME MUG FRED SCAN LIVE LACE" },
|
||||||
{ MD4, "This is a test.", "TeSt", 1, "6347 3EF0 1CD0 B444", "CARD SAD MINI RYE COL KIN" },
|
{ MD4, "This is a test.", "TeSt", 1, "6347 3EF0 1CD0 B444", "CARD SAD MINI RYE COL KIN" },
|
||||||
{ MD4, "This is a test.", "TeSt", 99, "C5E6 1277 6E6C 237A", "NOTE OUT IBIS SINK NAVE MODE" },
|
{ MD4, "This is a test.", "TeSt", 99, "C5E6 1277 6E6C 237A", "NOTE OUT IBIS SINK NAVE MODE" },
|
||||||
|
@ -49,7 +51,8 @@ static const TestEntry tests[] = {
|
||||||
{ SHA1, "Passphrase", "IiIi", 100, "27F4 01CC 0AC8 5112", "MEG JACK DIET GAD FORK GARY" }
|
{ SHA1, "Passphrase", "IiIi", 100, "27F4 01CC 0AC8 5112", "MEG JACK DIET GAD FORK GARY" }
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *algos[] = {
|
static const char *algos[] =
|
||||||
|
{
|
||||||
"MD4",
|
"MD4",
|
||||||
"MD5",
|
"MD5",
|
||||||
"SHA1"
|
"SHA1"
|
||||||
|
@ -80,7 +83,8 @@ int main(int argc, char *argv[])
|
||||||
g_test_init (&argc, &argv, NULL);
|
g_test_init (&argc, &argv, NULL);
|
||||||
g_test_bug_base ("http://bugzilla.mate.org/enter_bug.cgi?product=mate-terminal");
|
g_test_bug_base ("http://bugzilla.mate.org/enter_bug.cgi?product=mate-terminal");
|
||||||
|
|
||||||
for (i = 0; i < G_N_ELEMENTS (tests); ++i) {
|
for (i = 0; i < G_N_ELEMENTS (tests); ++i)
|
||||||
|
{
|
||||||
const TestEntry *test = &tests[i];
|
const TestEntry *test = &tests[i];
|
||||||
char *name;
|
char *name;
|
||||||
|
|
||||||
|
|
|
@ -132,105 +132,172 @@ typedef struct
|
||||||
|
|
||||||
static KeyEntry file_entries[] =
|
static KeyEntry file_entries[] =
|
||||||
{
|
{
|
||||||
{ N_("New Tab"),
|
{
|
||||||
KEY_NEW_TAB, ACCEL_PATH_NEW_TAB, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_t, NULL, FALSE, TRUE },
|
N_("New Tab"),
|
||||||
{ N_("New Window"),
|
KEY_NEW_TAB, ACCEL_PATH_NEW_TAB, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_t, NULL, FALSE, TRUE
|
||||||
KEY_NEW_WINDOW, ACCEL_PATH_NEW_WINDOW, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_n, NULL, FALSE, TRUE },
|
},
|
||||||
{ N_("New Profile"),
|
{
|
||||||
KEY_NEW_PROFILE, ACCEL_PATH_NEW_PROFILE, 0, 0, NULL, FALSE, TRUE },
|
N_("New Window"),
|
||||||
|
KEY_NEW_WINDOW, ACCEL_PATH_NEW_WINDOW, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_n, NULL, FALSE, TRUE
|
||||||
|
},
|
||||||
|
{
|
||||||
|
N_("New Profile"),
|
||||||
|
KEY_NEW_PROFILE, ACCEL_PATH_NEW_PROFILE, 0, 0, NULL, FALSE, TRUE
|
||||||
|
},
|
||||||
#ifdef ENABLE_SAVE
|
#ifdef ENABLE_SAVE
|
||||||
{ N_("Save Contents"),
|
{
|
||||||
KEY_SAVE_CONTENTS, ACCEL_PATH_SAVE_CONTENTS, 0, 0, NULL, FALSE, TRUE },
|
N_("Save Contents"),
|
||||||
|
KEY_SAVE_CONTENTS, ACCEL_PATH_SAVE_CONTENTS, 0, 0, NULL, FALSE, TRUE
|
||||||
|
},
|
||||||
#endif
|
#endif
|
||||||
{ N_("Close Tab"),
|
{
|
||||||
KEY_CLOSE_TAB, ACCEL_PATH_CLOSE_TAB, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_w, NULL, FALSE, TRUE },
|
N_("Close Tab"),
|
||||||
{ N_("Close Window"),
|
KEY_CLOSE_TAB, ACCEL_PATH_CLOSE_TAB, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_w, NULL, FALSE, TRUE
|
||||||
KEY_CLOSE_WINDOW, ACCEL_PATH_CLOSE_WINDOW, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_q, NULL, FALSE, TRUE },
|
},
|
||||||
|
{
|
||||||
|
N_("Close Window"),
|
||||||
|
KEY_CLOSE_WINDOW, ACCEL_PATH_CLOSE_WINDOW, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_q, NULL, FALSE, TRUE
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static KeyEntry edit_entries[] =
|
static KeyEntry edit_entries[] =
|
||||||
{
|
{
|
||||||
{ N_("Copy"),
|
{
|
||||||
KEY_COPY, ACCEL_PATH_COPY, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_c, NULL, FALSE, TRUE },
|
N_("Copy"),
|
||||||
{ N_("Paste"),
|
KEY_COPY, ACCEL_PATH_COPY, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_c, NULL, FALSE, TRUE
|
||||||
KEY_PASTE, ACCEL_PATH_PASTE, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_v, NULL, FALSE, TRUE },
|
},
|
||||||
|
{
|
||||||
|
N_("Paste"),
|
||||||
|
KEY_PASTE, ACCEL_PATH_PASTE, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_v, NULL, FALSE, TRUE
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static KeyEntry view_entries[] =
|
static KeyEntry view_entries[] =
|
||||||
{
|
{
|
||||||
{ N_("Hide and Show menubar"),
|
{
|
||||||
KEY_TOGGLE_MENUBAR, ACCEL_PATH_TOGGLE_MENUBAR, 0, 0, NULL, FALSE, TRUE },
|
N_("Hide and Show menubar"),
|
||||||
{ N_("Full Screen"),
|
KEY_TOGGLE_MENUBAR, ACCEL_PATH_TOGGLE_MENUBAR, 0, 0, NULL, FALSE, TRUE
|
||||||
KEY_FULL_SCREEN, ACCEL_PATH_FULL_SCREEN, 0, GDK_F11, NULL, FALSE, TRUE },
|
},
|
||||||
{ N_("Zoom In"),
|
{
|
||||||
KEY_ZOOM_IN, ACCEL_PATH_ZOOM_IN, GDK_CONTROL_MASK, GDK_plus, NULL, FALSE, TRUE },
|
N_("Full Screen"),
|
||||||
{ N_("Zoom Out"),
|
KEY_FULL_SCREEN, ACCEL_PATH_FULL_SCREEN, 0, GDK_F11, NULL, FALSE, TRUE
|
||||||
KEY_ZOOM_OUT, ACCEL_PATH_ZOOM_OUT, GDK_CONTROL_MASK, GDK_minus, NULL, FALSE, TRUE },
|
},
|
||||||
{ N_("Normal Size"),
|
{
|
||||||
KEY_ZOOM_NORMAL, ACCEL_PATH_ZOOM_NORMAL, GDK_CONTROL_MASK, GDK_0, NULL, FALSE, TRUE }
|
N_("Zoom In"),
|
||||||
|
KEY_ZOOM_IN, ACCEL_PATH_ZOOM_IN, GDK_CONTROL_MASK, GDK_plus, NULL, FALSE, TRUE
|
||||||
|
},
|
||||||
|
{
|
||||||
|
N_("Zoom Out"),
|
||||||
|
KEY_ZOOM_OUT, ACCEL_PATH_ZOOM_OUT, GDK_CONTROL_MASK, GDK_minus, NULL, FALSE, TRUE
|
||||||
|
},
|
||||||
|
{
|
||||||
|
N_("Normal Size"),
|
||||||
|
KEY_ZOOM_NORMAL, ACCEL_PATH_ZOOM_NORMAL, GDK_CONTROL_MASK, GDK_0, NULL, FALSE, TRUE
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static KeyEntry terminal_entries[] =
|
static KeyEntry terminal_entries[] =
|
||||||
{
|
{
|
||||||
{ N_("Set Title"),
|
{
|
||||||
KEY_SET_TERMINAL_TITLE, ACCEL_PATH_SET_TERMINAL_TITLE, 0, 0, NULL, FALSE, TRUE },
|
N_("Set Title"),
|
||||||
{ N_("Reset"),
|
KEY_SET_TERMINAL_TITLE, ACCEL_PATH_SET_TERMINAL_TITLE, 0, 0, NULL, FALSE, TRUE
|
||||||
KEY_RESET, ACCEL_PATH_RESET, 0, 0, NULL, FALSE, TRUE },
|
},
|
||||||
{ N_("Reset and Clear"),
|
{
|
||||||
KEY_RESET_AND_CLEAR, ACCEL_PATH_RESET_AND_CLEAR, 0, 0, NULL, FALSE, TRUE },
|
N_("Reset"),
|
||||||
|
KEY_RESET, ACCEL_PATH_RESET, 0, 0, NULL, FALSE, TRUE
|
||||||
|
},
|
||||||
|
{
|
||||||
|
N_("Reset and Clear"),
|
||||||
|
KEY_RESET_AND_CLEAR, ACCEL_PATH_RESET_AND_CLEAR, 0, 0, NULL, FALSE, TRUE
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static KeyEntry tabs_entries[] =
|
static KeyEntry tabs_entries[] =
|
||||||
{
|
{
|
||||||
{ N_("Switch to Previous Tab"),
|
{
|
||||||
KEY_PREV_TAB, ACCEL_PATH_PREV_TAB, GDK_CONTROL_MASK, GDK_Page_Up, NULL, FALSE, TRUE },
|
N_("Switch to Previous Tab"),
|
||||||
{ N_("Switch to Next Tab"),
|
KEY_PREV_TAB, ACCEL_PATH_PREV_TAB, GDK_CONTROL_MASK, GDK_Page_Up, NULL, FALSE, TRUE
|
||||||
KEY_NEXT_TAB, ACCEL_PATH_NEXT_TAB, GDK_CONTROL_MASK, GDK_Page_Down, NULL, FALSE, TRUE },
|
},
|
||||||
{ N_("Move Tab to the Left"),
|
{
|
||||||
KEY_MOVE_TAB_LEFT, ACCEL_PATH_MOVE_TAB_LEFT, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_Page_Up, NULL, FALSE, TRUE },
|
N_("Switch to Next Tab"),
|
||||||
{ N_("Move Tab to the Right"),
|
KEY_NEXT_TAB, ACCEL_PATH_NEXT_TAB, GDK_CONTROL_MASK, GDK_Page_Down, NULL, FALSE, TRUE
|
||||||
KEY_MOVE_TAB_RIGHT, ACCEL_PATH_MOVE_TAB_RIGHT, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_Page_Down, NULL, FALSE, TRUE },
|
},
|
||||||
{ N_("Detach Tab"),
|
{
|
||||||
KEY_DETACH_TAB, ACCEL_PATH_DETACH_TAB, 0, 0, NULL, FALSE, TRUE },
|
N_("Move Tab to the Left"),
|
||||||
{ N_("Switch to Tab 1"),
|
KEY_MOVE_TAB_LEFT, ACCEL_PATH_MOVE_TAB_LEFT, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_Page_Up, NULL, FALSE, TRUE
|
||||||
|
},
|
||||||
|
{
|
||||||
|
N_("Move Tab to the Right"),
|
||||||
|
KEY_MOVE_TAB_RIGHT, ACCEL_PATH_MOVE_TAB_RIGHT, GDK_SHIFT_MASK | GDK_CONTROL_MASK, GDK_Page_Down, NULL, FALSE, TRUE
|
||||||
|
},
|
||||||
|
{
|
||||||
|
N_("Detach Tab"),
|
||||||
|
KEY_DETACH_TAB, ACCEL_PATH_DETACH_TAB, 0, 0, NULL, FALSE, TRUE
|
||||||
|
},
|
||||||
|
{
|
||||||
|
N_("Switch to Tab 1"),
|
||||||
KEY_SWITCH_TAB_PREFIX "1",
|
KEY_SWITCH_TAB_PREFIX "1",
|
||||||
ACCEL_PATH_SWITCH_TAB_PREFIX "1", GDK_MOD1_MASK, GDK_1, NULL, FALSE, TRUE },
|
ACCEL_PATH_SWITCH_TAB_PREFIX "1", GDK_MOD1_MASK, GDK_1, NULL, FALSE, TRUE
|
||||||
{ N_("Switch to Tab 2"),
|
},
|
||||||
|
{
|
||||||
|
N_("Switch to Tab 2"),
|
||||||
KEY_SWITCH_TAB_PREFIX "2",
|
KEY_SWITCH_TAB_PREFIX "2",
|
||||||
ACCEL_PATH_SWITCH_TAB_PREFIX "2", GDK_MOD1_MASK, GDK_2, NULL, FALSE, TRUE },
|
ACCEL_PATH_SWITCH_TAB_PREFIX "2", GDK_MOD1_MASK, GDK_2, NULL, FALSE, TRUE
|
||||||
{ N_("Switch to Tab 3"),
|
},
|
||||||
|
{
|
||||||
|
N_("Switch to Tab 3"),
|
||||||
KEY_SWITCH_TAB_PREFIX "3",
|
KEY_SWITCH_TAB_PREFIX "3",
|
||||||
ACCEL_PATH_SWITCH_TAB_PREFIX "3", GDK_MOD1_MASK, GDK_3, NULL, FALSE, TRUE },
|
ACCEL_PATH_SWITCH_TAB_PREFIX "3", GDK_MOD1_MASK, GDK_3, NULL, FALSE, TRUE
|
||||||
{ N_("Switch to Tab 4"),
|
},
|
||||||
|
{
|
||||||
|
N_("Switch to Tab 4"),
|
||||||
KEY_SWITCH_TAB_PREFIX "4",
|
KEY_SWITCH_TAB_PREFIX "4",
|
||||||
ACCEL_PATH_SWITCH_TAB_PREFIX "4", GDK_MOD1_MASK, GDK_4, NULL, FALSE, TRUE },
|
ACCEL_PATH_SWITCH_TAB_PREFIX "4", GDK_MOD1_MASK, GDK_4, NULL, FALSE, TRUE
|
||||||
{ N_("Switch to Tab 5"),
|
},
|
||||||
|
{
|
||||||
|
N_("Switch to Tab 5"),
|
||||||
KEY_SWITCH_TAB_PREFIX "5",
|
KEY_SWITCH_TAB_PREFIX "5",
|
||||||
ACCEL_PATH_SWITCH_TAB_PREFIX "5", GDK_MOD1_MASK, GDK_5, NULL, FALSE, TRUE },
|
ACCEL_PATH_SWITCH_TAB_PREFIX "5", GDK_MOD1_MASK, GDK_5, NULL, FALSE, TRUE
|
||||||
{ N_("Switch to Tab 6"),
|
},
|
||||||
|
{
|
||||||
|
N_("Switch to Tab 6"),
|
||||||
KEY_SWITCH_TAB_PREFIX "6",
|
KEY_SWITCH_TAB_PREFIX "6",
|
||||||
ACCEL_PATH_SWITCH_TAB_PREFIX "6", GDK_MOD1_MASK, GDK_6, NULL, FALSE, TRUE },
|
ACCEL_PATH_SWITCH_TAB_PREFIX "6", GDK_MOD1_MASK, GDK_6, NULL, FALSE, TRUE
|
||||||
{ N_("Switch to Tab 7"),
|
},
|
||||||
|
{
|
||||||
|
N_("Switch to Tab 7"),
|
||||||
KEY_SWITCH_TAB_PREFIX "7",
|
KEY_SWITCH_TAB_PREFIX "7",
|
||||||
ACCEL_PATH_SWITCH_TAB_PREFIX "7", GDK_MOD1_MASK, GDK_7, NULL, FALSE, TRUE },
|
ACCEL_PATH_SWITCH_TAB_PREFIX "7", GDK_MOD1_MASK, GDK_7, NULL, FALSE, TRUE
|
||||||
{ N_("Switch to Tab 8"),
|
},
|
||||||
|
{
|
||||||
|
N_("Switch to Tab 8"),
|
||||||
KEY_SWITCH_TAB_PREFIX "8",
|
KEY_SWITCH_TAB_PREFIX "8",
|
||||||
ACCEL_PATH_SWITCH_TAB_PREFIX "8", GDK_MOD1_MASK, GDK_8, NULL, FALSE, TRUE },
|
ACCEL_PATH_SWITCH_TAB_PREFIX "8", GDK_MOD1_MASK, GDK_8, NULL, FALSE, TRUE
|
||||||
{ N_("Switch to Tab 9"),
|
},
|
||||||
|
{
|
||||||
|
N_("Switch to Tab 9"),
|
||||||
KEY_SWITCH_TAB_PREFIX "9",
|
KEY_SWITCH_TAB_PREFIX "9",
|
||||||
ACCEL_PATH_SWITCH_TAB_PREFIX "9", GDK_MOD1_MASK, GDK_9, NULL, FALSE, TRUE },
|
ACCEL_PATH_SWITCH_TAB_PREFIX "9", GDK_MOD1_MASK, GDK_9, NULL, FALSE, TRUE
|
||||||
{ N_("Switch to Tab 10"),
|
},
|
||||||
|
{
|
||||||
|
N_("Switch to Tab 10"),
|
||||||
KEY_SWITCH_TAB_PREFIX "10",
|
KEY_SWITCH_TAB_PREFIX "10",
|
||||||
ACCEL_PATH_SWITCH_TAB_PREFIX "10", GDK_MOD1_MASK, GDK_0, NULL, FALSE, TRUE },
|
ACCEL_PATH_SWITCH_TAB_PREFIX "10", GDK_MOD1_MASK, GDK_0, NULL, FALSE, TRUE
|
||||||
{ N_("Switch to Tab 11"),
|
},
|
||||||
|
{
|
||||||
|
N_("Switch to Tab 11"),
|
||||||
KEY_SWITCH_TAB_PREFIX "11",
|
KEY_SWITCH_TAB_PREFIX "11",
|
||||||
ACCEL_PATH_SWITCH_TAB_PREFIX "11", 0, 0, NULL, FALSE, TRUE },
|
ACCEL_PATH_SWITCH_TAB_PREFIX "11", 0, 0, NULL, FALSE, TRUE
|
||||||
{ N_("Switch to Tab 12"),
|
},
|
||||||
|
{
|
||||||
|
N_("Switch to Tab 12"),
|
||||||
KEY_SWITCH_TAB_PREFIX "12",
|
KEY_SWITCH_TAB_PREFIX "12",
|
||||||
ACCEL_PATH_SWITCH_TAB_PREFIX "12", 0, 0, NULL, FALSE, TRUE }
|
ACCEL_PATH_SWITCH_TAB_PREFIX "12", 0, 0, NULL, FALSE, TRUE
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static KeyEntry help_entries[] = {
|
static KeyEntry help_entries[] =
|
||||||
|
{
|
||||||
{ N_("Contents"), KEY_HELP, ACCEL_PATH_HELP, 0, GDK_F1, NULL, FALSE, TRUE }
|
{ N_("Contents"), KEY_HELP, ACCEL_PATH_HELP, 0, GDK_F1, NULL, FALSE, TRUE }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -739,7 +806,8 @@ accel_edited_callback (GtkCellRendererAccel *cell,
|
||||||
if (!path)
|
if (!path)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!gtk_tree_model_get_iter (model, &iter, path)) {
|
if (!gtk_tree_model_get_iter (model, &iter, path))
|
||||||
|
{
|
||||||
gtk_tree_path_free (path);
|
gtk_tree_path_free (path);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -794,11 +862,14 @@ accel_edited_callback (GtkCellRendererAccel *cell,
|
||||||
{
|
{
|
||||||
GtkAccelKey old_key;
|
GtkAccelKey old_key;
|
||||||
|
|
||||||
if (gtk_accel_map_lookup_entry (ke->accel_path, &old_key)) {
|
if (gtk_accel_map_lookup_entry (ke->accel_path, &old_key))
|
||||||
|
{
|
||||||
_terminal_debug_print (TERMINAL_DEBUG_ACCELS,
|
_terminal_debug_print (TERMINAL_DEBUG_ACCELS,
|
||||||
" Old entry of path %s is keyval %s mask %x\n",
|
" Old entry of path %s is keyval %s mask %x\n",
|
||||||
ke->accel_path, gdk_keyval_name (old_key.accel_key), old_key.accel_mods);
|
ke->accel_path, gdk_keyval_name (old_key.accel_key), old_key.accel_mods);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
_terminal_debug_print (TERMINAL_DEBUG_ACCELS,
|
_terminal_debug_print (TERMINAL_DEBUG_ACCELS,
|
||||||
" Failed to look up the old entry of path %s\n",
|
" Failed to look up the old entry of path %s\n",
|
||||||
ke->accel_path);
|
ke->accel_path);
|
||||||
|
@ -833,7 +904,8 @@ accel_cleared_callback (GtkCellRendererAccel *cell,
|
||||||
if (!path)
|
if (!path)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!gtk_tree_model_get_iter (model, &iter, path)) {
|
if (!gtk_tree_model_get_iter (model, &iter, path))
|
||||||
|
{
|
||||||
gtk_tree_path_free (path);
|
gtk_tree_path_free (path);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,8 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct _TerminalAppClass {
|
struct _TerminalAppClass
|
||||||
|
{
|
||||||
GObjectClass parent_class;
|
GObjectClass parent_class;
|
||||||
|
|
||||||
void (* quit) (TerminalApp *app);
|
void (* quit) (TerminalApp *app);
|
||||||
|
@ -1667,7 +1668,8 @@ terminal_app_class_init (TerminalAppClass *klass)
|
||||||
TerminalApp*
|
TerminalApp*
|
||||||
terminal_app_get (void)
|
terminal_app_get (void)
|
||||||
{
|
{
|
||||||
if (global_app == NULL) {
|
if (global_app == NULL)
|
||||||
|
{
|
||||||
g_object_new (TERMINAL_TYPE_APP, NULL);
|
g_object_new (TERMINAL_TYPE_APP, NULL);
|
||||||
g_assert (global_app != NULL);
|
g_assert (global_app != NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,8 @@ void
|
||||||
_terminal_debug_init(void)
|
_terminal_debug_init(void)
|
||||||
{
|
{
|
||||||
#ifdef MATE_ENABLE_DEBUG
|
#ifdef MATE_ENABLE_DEBUG
|
||||||
const GDebugKey keys[] = {
|
const GDebugKey keys[] =
|
||||||
|
{
|
||||||
{ "accels", TERMINAL_DEBUG_ACCELS },
|
{ "accels", TERMINAL_DEBUG_ACCELS },
|
||||||
{ "encodings", TERMINAL_DEBUG_ENCODINGS },
|
{ "encodings", TERMINAL_DEBUG_ENCODINGS },
|
||||||
{ "factory", TERMINAL_DEBUG_FACTORY },
|
{ "factory", TERMINAL_DEBUG_FACTORY },
|
||||||
|
|
|
@ -25,7 +25,8 @@
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
typedef enum {
|
typedef enum
|
||||||
|
{
|
||||||
TERMINAL_DEBUG_ACCELS = 1 << 0,
|
TERMINAL_DEBUG_ACCELS = 1 << 0,
|
||||||
TERMINAL_DEBUG_ENCODINGS = 1 << 1,
|
TERMINAL_DEBUG_ENCODINGS = 1 << 1,
|
||||||
TERMINAL_DEBUG_FACTORY = 1 << 2,
|
TERMINAL_DEBUG_FACTORY = 1 << 2,
|
||||||
|
@ -60,7 +61,8 @@ _terminal_debug_on (TerminalDebugFlags flags)
|
||||||
#include <glib/gstdio.h>
|
#include <glib/gstdio.h>
|
||||||
static void _terminal_debug_print (guint flags, const char *fmt, ...)
|
static void _terminal_debug_print (guint flags, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
if (_terminal_debug_on (flags)) {
|
if (_terminal_debug_on (flags))
|
||||||
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start (ap, fmt);
|
va_start (ap, fmt);
|
||||||
g_vfprintf (stderr, fmt, ap);
|
g_vfprintf (stderr, fmt, ap);
|
||||||
|
|
|
@ -44,10 +44,12 @@
|
||||||
* labeled "user defined" but still appears in the menu.
|
* labeled "user defined" but still appears in the menu.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const struct {
|
static const struct
|
||||||
|
{
|
||||||
const char *charset;
|
const char *charset;
|
||||||
const char *name;
|
const char *name;
|
||||||
} encodings[] = {
|
} encodings[] =
|
||||||
|
{
|
||||||
{ "ISO-8859-1", N_("Western") },
|
{ "ISO-8859-1", N_("Western") },
|
||||||
{ "ISO-8859-2", N_("Central European") },
|
{ "ISO-8859-2", N_("Central European") },
|
||||||
{ "ISO-8859-3", N_("South European") },
|
{ "ISO-8859-3", N_("South European") },
|
||||||
|
@ -128,7 +130,8 @@ static const struct {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
GtkWidget *dialog;
|
GtkWidget *dialog;
|
||||||
GtkListStore *base_store;
|
GtkListStore *base_store;
|
||||||
GtkTreeView *available_tree_view;
|
GtkTreeView *available_tree_view;
|
||||||
|
@ -271,7 +274,8 @@ terminal_encoding_get_type (void)
|
||||||
{
|
{
|
||||||
static GType type = 0;
|
static GType type = 0;
|
||||||
|
|
||||||
if (G_UNLIKELY (type == 0)) {
|
if (G_UNLIKELY (type == 0))
|
||||||
|
{
|
||||||
type = g_boxed_type_register_static (I_("TerminalEncoding"),
|
type = g_boxed_type_register_static (I_("TerminalEncoding"),
|
||||||
(GBoxedCopyFunc) terminal_encoding_ref,
|
(GBoxedCopyFunc) terminal_encoding_ref,
|
||||||
(GBoxedFreeFunc) terminal_encoding_unref);
|
(GBoxedFreeFunc) terminal_encoding_unref);
|
||||||
|
|
|
@ -75,7 +75,8 @@ terminal_info_bar_new (GtkMessageType type,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
va_start (args, first_button_text);
|
va_start (args, first_button_text);
|
||||||
while (first_button_text != NULL) {
|
while (first_button_text != NULL)
|
||||||
|
{
|
||||||
int response_id;
|
int response_id;
|
||||||
|
|
||||||
response_id = va_arg (args, int);
|
response_id = va_arg (args, int);
|
||||||
|
|
|
@ -937,7 +937,8 @@ terminal_options_free (TerminalOptions *options)
|
||||||
static GOptionContext *
|
static GOptionContext *
|
||||||
get_goption_context (TerminalOptions *options)
|
get_goption_context (TerminalOptions *options)
|
||||||
{
|
{
|
||||||
const GOptionEntry global_unique_goptions[] = {
|
const GOptionEntry global_unique_goptions[] =
|
||||||
|
{
|
||||||
{
|
{
|
||||||
"disable-factory",
|
"disable-factory",
|
||||||
0,
|
0,
|
||||||
|
@ -969,7 +970,8 @@ get_goption_context (TerminalOptions *options)
|
||||||
{ NULL, 0, 0, 0, NULL, NULL, NULL }
|
{ NULL, 0, 0, 0, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
const GOptionEntry global_multiple_goptions[] = {
|
const GOptionEntry global_multiple_goptions[] =
|
||||||
|
{
|
||||||
{
|
{
|
||||||
"window",
|
"window",
|
||||||
0,
|
0,
|
||||||
|
@ -991,7 +993,8 @@ get_goption_context (TerminalOptions *options)
|
||||||
{ NULL, 0, 0, 0, NULL, NULL, NULL }
|
{ NULL, 0, 0, 0, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
const GOptionEntry window_goptions[] = {
|
const GOptionEntry window_goptions[] =
|
||||||
|
{
|
||||||
{
|
{
|
||||||
"show-menubar",
|
"show-menubar",
|
||||||
0,
|
0,
|
||||||
|
@ -1058,7 +1061,8 @@ get_goption_context (TerminalOptions *options)
|
||||||
{ NULL, 0, 0, 0, NULL, NULL, NULL }
|
{ NULL, 0, 0, 0, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
const GOptionEntry terminal_goptions[] = {
|
const GOptionEntry terminal_goptions[] =
|
||||||
|
{
|
||||||
{
|
{
|
||||||
"command",
|
"command",
|
||||||
'e',
|
'e',
|
||||||
|
@ -1107,7 +1111,8 @@ get_goption_context (TerminalOptions *options)
|
||||||
{ NULL, 0, 0, 0, NULL, NULL, NULL }
|
{ NULL, 0, 0, 0, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
const GOptionEntry internal_goptions[] = {
|
const GOptionEntry internal_goptions[] =
|
||||||
|
{
|
||||||
{
|
{
|
||||||
"profile-id",
|
"profile-id",
|
||||||
0,
|
0,
|
||||||
|
|
|
@ -86,7 +86,8 @@ typedef struct
|
||||||
|
|
||||||
#define TERMINAL_OPTION_ERROR (g_quark_from_static_string ("terminal-option-error"))
|
#define TERMINAL_OPTION_ERROR (g_quark_from_static_string ("terminal-option-error"))
|
||||||
|
|
||||||
typedef enum {
|
typedef enum
|
||||||
|
{
|
||||||
TERMINAL_OPTION_ERROR_NOT_IN_FACTORY,
|
TERMINAL_OPTION_ERROR_NOT_IN_FACTORY,
|
||||||
TERMINAL_OPTION_ERROR_EXCLUSIVE_OPTIONS,
|
TERMINAL_OPTION_ERROR_EXCLUSIVE_OPTIONS,
|
||||||
TERMINAL_OPTION_ERROR_INVALID_CONFIG_FILE,
|
TERMINAL_OPTION_ERROR_INVALID_CONFIG_FILE,
|
||||||
|
|
|
@ -189,7 +189,8 @@ struct _TerminalProfilePrivate
|
||||||
/* We have to continue to use these since they're unfortunately different
|
/* We have to continue to use these since they're unfortunately different
|
||||||
* from the value nicks of the vte_terminal_erase_binding_get_type() enum type.
|
* from the value nicks of the vte_terminal_erase_binding_get_type() enum type.
|
||||||
*/
|
*/
|
||||||
static const MateConfEnumStringPair erase_bindings[] = {
|
static const MateConfEnumStringPair erase_bindings[] =
|
||||||
|
{
|
||||||
{ VTE_ERASE_AUTO, "auto" },
|
{ VTE_ERASE_AUTO, "auto" },
|
||||||
{ VTE_ERASE_ASCII_BACKSPACE, "control-h" },
|
{ VTE_ERASE_ASCII_BACKSPACE, "control-h" },
|
||||||
{ VTE_ERASE_ASCII_DELETE, "ascii-del" },
|
{ VTE_ERASE_ASCII_DELETE, "ascii-del" },
|
||||||
|
@ -1110,7 +1111,8 @@ terminal_profile_set_property (GObject *object,
|
||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
case PROP_FONT: {
|
case PROP_FONT:
|
||||||
|
{
|
||||||
PangoFontDescription *font_desc, *new_font_desc;
|
PangoFontDescription *font_desc, *new_font_desc;
|
||||||
|
|
||||||
font_desc = g_value_get_boxed (prop_value);
|
font_desc = g_value_get_boxed (prop_value);
|
||||||
|
@ -1135,7 +1137,8 @@ terminal_profile_set_property (GObject *object,
|
||||||
/* Postprocessing */
|
/* Postprocessing */
|
||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_NAME: {
|
case PROP_NAME:
|
||||||
|
{
|
||||||
const char *name = g_value_get_string (value);
|
const char *name = g_value_get_string (value);
|
||||||
|
|
||||||
g_assert (name != NULL);
|
g_assert (name != NULL);
|
||||||
|
|
|
@ -65,7 +65,8 @@ terminal_screen_container_set_placement_internal (TerminalScreenContainer *conta
|
||||||
#ifdef USE_SCROLLED_WINDOW
|
#ifdef USE_SCROLLED_WINDOW
|
||||||
gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW (priv->scrolled_window), corner);
|
gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW (priv->scrolled_window), corner);
|
||||||
#else
|
#else
|
||||||
switch (corner) {
|
switch (corner)
|
||||||
|
{
|
||||||
case GTK_CORNER_TOP_LEFT:
|
case GTK_CORNER_TOP_LEFT:
|
||||||
case GTK_CORNER_BOTTOM_LEFT:
|
case GTK_CORNER_BOTTOM_LEFT:
|
||||||
gtk_box_reorder_child (GTK_BOX (priv->hbox), priv->vscrollbar, 1);
|
gtk_box_reorder_child (GTK_BOX (priv->hbox), priv->vscrollbar, 1);
|
||||||
|
@ -185,7 +186,8 @@ terminal_screen_container_get_property (GObject *object,
|
||||||
TerminalScreenContainer *container = TERMINAL_SCREEN_CONTAINER (object);
|
TerminalScreenContainer *container = TERMINAL_SCREEN_CONTAINER (object);
|
||||||
TerminalScreenContainerPrivate *priv = container->priv;
|
TerminalScreenContainerPrivate *priv = container->priv;
|
||||||
|
|
||||||
switch (prop_id) {
|
switch (prop_id)
|
||||||
|
{
|
||||||
case PROP_SCREEN:
|
case PROP_SCREEN:
|
||||||
break;
|
break;
|
||||||
case PROP_HSCROLLBAR_POLICY:
|
case PROP_HSCROLLBAR_POLICY:
|
||||||
|
@ -215,7 +217,8 @@ terminal_screen_container_set_property (GObject *object,
|
||||||
TerminalScreenContainer *container = TERMINAL_SCREEN_CONTAINER (object);
|
TerminalScreenContainer *container = TERMINAL_SCREEN_CONTAINER (object);
|
||||||
TerminalScreenContainerPrivate *priv = container->priv;
|
TerminalScreenContainerPrivate *priv = container->priv;
|
||||||
|
|
||||||
switch (prop_id) {
|
switch (prop_id)
|
||||||
|
{
|
||||||
case PROP_SCREEN:
|
case PROP_SCREEN:
|
||||||
priv->screen = g_value_get_object (value);
|
priv->screen = g_value_get_object (value);
|
||||||
break;
|
break;
|
||||||
|
@ -363,11 +366,13 @@ terminal_screen_container_set_policy (TerminalScreenContainer *container,
|
||||||
|
|
||||||
g_object_freeze_notify (object);
|
g_object_freeze_notify (object);
|
||||||
|
|
||||||
if (priv->hscrollbar_policy != hpolicy) {
|
if (priv->hscrollbar_policy != hpolicy)
|
||||||
|
{
|
||||||
priv->hscrollbar_policy = hpolicy;
|
priv->hscrollbar_policy = hpolicy;
|
||||||
g_object_notify (object, "hscrollbar-policy");
|
g_object_notify (object, "hscrollbar-policy");
|
||||||
}
|
}
|
||||||
if (priv->vscrollbar_policy != vpolicy) {
|
if (priv->vscrollbar_policy != vpolicy)
|
||||||
|
{
|
||||||
priv->vscrollbar_policy = vpolicy;
|
priv->vscrollbar_policy = vpolicy;
|
||||||
g_object_notify (object, "vscrollbar-policy");
|
g_object_notify (object, "vscrollbar-policy");
|
||||||
}
|
}
|
||||||
|
@ -375,7 +380,8 @@ terminal_screen_container_set_policy (TerminalScreenContainer *container,
|
||||||
#ifdef USE_SCROLLED_WINDOW
|
#ifdef USE_SCROLLED_WINDOW
|
||||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window), hpolicy, vpolicy);
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolled_window), hpolicy, vpolicy);
|
||||||
#else
|
#else
|
||||||
switch (vpolicy) {
|
switch (vpolicy)
|
||||||
|
{
|
||||||
case GTK_POLICY_NEVER:
|
case GTK_POLICY_NEVER:
|
||||||
gtk_widget_hide (priv->vscrollbar);
|
gtk_widget_hide (priv->vscrollbar);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -81,7 +81,8 @@ enum
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum
|
||||||
|
{
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_PROFILE,
|
PROP_PROFILE,
|
||||||
PROP_ICON_TITLE,
|
PROP_ICON_TITLE,
|
||||||
|
@ -151,13 +152,15 @@ static guint signals[LAST_SIGNAL];
|
||||||
#define USERPASS USERCHARS_CLASS "+(?:" PASSCHARS_CLASS "+)?"
|
#define USERPASS USERCHARS_CLASS "+(?:" PASSCHARS_CLASS "+)?"
|
||||||
#define URLPATH "(?:(/"PATHCHARS_CLASS"+(?:[(]"PATHCHARS_CLASS"*[)])*"PATHCHARS_CLASS"*)*"PATHTERM_CLASS")?"
|
#define URLPATH "(?:(/"PATHCHARS_CLASS"+(?:[(]"PATHCHARS_CLASS"*[)])*"PATHCHARS_CLASS"*)*"PATHTERM_CLASS")?"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
const char *pattern;
|
const char *pattern;
|
||||||
TerminalURLFlavour flavor;
|
TerminalURLFlavour flavor;
|
||||||
GRegexCompileFlags flags;
|
GRegexCompileFlags flags;
|
||||||
} TerminalRegexPattern;
|
} TerminalRegexPattern;
|
||||||
|
|
||||||
static const TerminalRegexPattern url_regex_patterns[] = {
|
static const TerminalRegexPattern url_regex_patterns[] =
|
||||||
|
{
|
||||||
{ SCHEME "//(?:" USERPASS "\\@)?" HOST PORT URLPATH, FLAVOR_AS_IS, G_REGEX_CASELESS },
|
{ SCHEME "//(?:" USERPASS "\\@)?" HOST PORT URLPATH, FLAVOR_AS_IS, G_REGEX_CASELESS },
|
||||||
{ "(?:www|ftp)" HOSTCHARS_CLASS "*\\." HOST PORT URLPATH , FLAVOR_DEFAULT_TO_HTTP, G_REGEX_CASELESS },
|
{ "(?:www|ftp)" HOSTCHARS_CLASS "*\\." HOST PORT URLPATH , FLAVOR_DEFAULT_TO_HTTP, G_REGEX_CASELESS },
|
||||||
{ "(?:callto:|h323:|sip:)" USERCHARS_CLASS "[" USERCHARS ".]*(?:" PORT "/[a-z0-9]+)?\\@" HOST, FLAVOR_VOIP_CALL, G_REGEX_CASELESS },
|
{ "(?:callto:|h323:|sip:)" USERCHARS_CLASS "[" USERCHARS ".]*(?:" PORT "/[a-z0-9]+)?\\@" HOST, FLAVOR_VOIP_CALL, G_REGEX_CASELESS },
|
||||||
|
@ -170,7 +173,8 @@ static TerminalURLFlavour *url_regex_flavors;
|
||||||
static guint n_url_regexes;
|
static guint n_url_regexes;
|
||||||
|
|
||||||
#ifdef ENABLE_SKEY
|
#ifdef ENABLE_SKEY
|
||||||
static const TerminalRegexPattern skey_regex_patterns[] = {
|
static const TerminalRegexPattern skey_regex_patterns[] =
|
||||||
|
{
|
||||||
{ "s/key [[:digit:]]* [-[:alnum:]]*", FLAVOR_AS_IS },
|
{ "s/key [[:digit:]]* [-[:alnum:]]*", FLAVOR_AS_IS },
|
||||||
{ "otp-[a-z0-9]* [[:digit:]]* [-[:alnum:]]*", FLAVOR_AS_IS },
|
{ "otp-[a-z0-9]* [[:digit:]]* [-[:alnum:]]*", FLAVOR_AS_IS },
|
||||||
};
|
};
|
||||||
|
@ -186,7 +190,8 @@ G_DEFINE_TYPE (TerminalScreen, terminal_screen, VTE_TYPE_TERMINAL)
|
||||||
static char *
|
static char *
|
||||||
cwd_of_pid (int pid)
|
cwd_of_pid (int pid)
|
||||||
{
|
{
|
||||||
static const char patterns[][18] = {
|
static const char patterns[][18] =
|
||||||
|
{
|
||||||
"/proc/%d/cwd", /* Linux */
|
"/proc/%d/cwd", /* Linux */
|
||||||
"/proc/%d/path/cwd", /* Solaris >= 10 */
|
"/proc/%d/path/cwd", /* Solaris >= 10 */
|
||||||
};
|
};
|
||||||
|
@ -346,7 +351,8 @@ size_allocate (GtkWidget *widget,
|
||||||
static void
|
static void
|
||||||
terminal_screen_init (TerminalScreen *screen)
|
terminal_screen_init (TerminalScreen *screen)
|
||||||
{
|
{
|
||||||
const GtkTargetEntry target_table[] = {
|
const GtkTargetEntry target_table[] =
|
||||||
|
{
|
||||||
{ "GTK_NOTEBOOK_TAB", GTK_TARGET_SAME_APP, TARGET_TAB },
|
{ "GTK_NOTEBOOK_TAB", GTK_TARGET_SAME_APP, TARGET_TAB },
|
||||||
{ "application/x-color", 0, TARGET_COLOR },
|
{ "application/x-color", 0, TARGET_COLOR },
|
||||||
{ "property/bgimage", 0, TARGET_BGIMAGE },
|
{ "property/bgimage", 0, TARGET_BGIMAGE },
|
||||||
|
@ -466,7 +472,8 @@ terminal_screen_set_property (GObject *object,
|
||||||
|
|
||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_PROFILE: {
|
case PROP_PROFILE:
|
||||||
|
{
|
||||||
TerminalProfile *profile;
|
TerminalProfile *profile;
|
||||||
|
|
||||||
profile = g_value_get_object (value);
|
profile = g_value_get_object (value);
|
||||||
|
@ -708,7 +715,8 @@ terminal_screen_new (TerminalProfile *profile,
|
||||||
|
|
||||||
terminal_screen_set_profile (screen, profile);
|
terminal_screen_set_profile (screen, profile);
|
||||||
|
|
||||||
if (terminal_profile_get_property_boolean (profile, TERMINAL_PROFILE_USE_CUSTOM_DEFAULT_SIZE)) {
|
if (terminal_profile_get_property_boolean (profile, TERMINAL_PROFILE_USE_CUSTOM_DEFAULT_SIZE))
|
||||||
|
{
|
||||||
vte_terminal_set_size (VTE_TERMINAL (screen),
|
vte_terminal_set_size (VTE_TERMINAL (screen),
|
||||||
terminal_profile_get_property_int (profile, TERMINAL_PROFILE_DEFAULT_SIZE_COLUMNS),
|
terminal_profile_get_property_int (profile, TERMINAL_PROFILE_DEFAULT_SIZE_COLUMNS),
|
||||||
terminal_profile_get_property_int (profile, TERMINAL_PROFILE_DEFAULT_SIZE_ROWS));
|
terminal_profile_get_property_int (profile, TERMINAL_PROFILE_DEFAULT_SIZE_ROWS));
|
||||||
|
@ -791,7 +799,8 @@ static const char *
|
||||||
terminal_screen_get_title_format (TerminalScreen *screen)
|
terminal_screen_get_title_format (TerminalScreen *screen)
|
||||||
{
|
{
|
||||||
TerminalScreenPrivate *priv = screen->priv;
|
TerminalScreenPrivate *priv = screen->priv;
|
||||||
static const char *formats[] = {
|
static const char *formats[] =
|
||||||
|
{
|
||||||
"%A" /* TERMINAL_TITLE_REPLACE */,
|
"%A" /* TERMINAL_TITLE_REPLACE */,
|
||||||
"%D%-%S" /* TERMINAL_TITLE_BEFORE */,
|
"%D%-%S" /* TERMINAL_TITLE_BEFORE */,
|
||||||
"%S%-%D" /* TERMINAL_TITLE_AFTER */,
|
"%S%-%D" /* TERMINAL_TITLE_AFTER */,
|
||||||
|
@ -1405,7 +1414,8 @@ get_child_environment (TerminalScreen *screen,
|
||||||
return (char **) g_ptr_array_free (retval, FALSE);
|
return (char **) g_ptr_array_free (retval, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum {
|
enum
|
||||||
|
{
|
||||||
RESPONSE_RELAUNCH,
|
RESPONSE_RELAUNCH,
|
||||||
RESPONSE_EDIT_PROFILE
|
RESPONSE_EDIT_PROFILE
|
||||||
};
|
};
|
||||||
|
@ -1417,7 +1427,8 @@ info_bar_response_cb (GtkWidget *info_bar,
|
||||||
{
|
{
|
||||||
gtk_widget_grab_focus (GTK_WIDGET (screen));
|
gtk_widget_grab_focus (GTK_WIDGET (screen));
|
||||||
|
|
||||||
switch (response) {
|
switch (response)
|
||||||
|
{
|
||||||
case GTK_RESPONSE_CANCEL:
|
case GTK_RESPONSE_CANCEL:
|
||||||
gtk_widget_destroy (info_bar);
|
gtk_widget_destroy (info_bar);
|
||||||
g_signal_emit (screen, signals[CLOSE_SCREEN], 0);
|
g_signal_emit (screen, signals[CLOSE_SCREEN], 0);
|
||||||
|
@ -1481,7 +1492,8 @@ terminal_screen_launch_child_cb (TerminalScreen *screen)
|
||||||
spawn_flags,
|
spawn_flags,
|
||||||
NULL, NULL,
|
NULL, NULL,
|
||||||
&pid,
|
&pid,
|
||||||
&err)) {
|
&err))
|
||||||
|
{
|
||||||
GtkWidget *info_bar;
|
GtkWidget *info_bar;
|
||||||
|
|
||||||
info_bar = terminal_info_bar_new (GTK_MESSAGE_ERROR,
|
info_bar = terminal_info_bar_new (GTK_MESSAGE_ERROR,
|
||||||
|
@ -1753,7 +1765,8 @@ terminal_screen_get_current_dir (TerminalScreen *screen)
|
||||||
TerminalScreenPrivate *priv = screen->priv;
|
TerminalScreenPrivate *priv = screen->priv;
|
||||||
char *cwd;
|
char *cwd;
|
||||||
|
|
||||||
if (priv->pty_fd != -1) {
|
if (priv->pty_fd != -1)
|
||||||
|
{
|
||||||
#if 0
|
#if 0
|
||||||
/* Get the foreground process ID */
|
/* Get the foreground process ID */
|
||||||
cwd = cwd_of_pid (tcgetpgrp (priv->pty_fd));
|
cwd = cwd_of_pid (tcgetpgrp (priv->pty_fd));
|
||||||
|
@ -1866,7 +1879,8 @@ terminal_screen_child_exited (VteTerminal *terminal)
|
||||||
case TERMINAL_EXIT_RESTART:
|
case TERMINAL_EXIT_RESTART:
|
||||||
terminal_screen_launch_child_on_idle (screen);
|
terminal_screen_launch_child_on_idle (screen);
|
||||||
break;
|
break;
|
||||||
case TERMINAL_EXIT_HOLD: {
|
case TERMINAL_EXIT_HOLD:
|
||||||
|
{
|
||||||
GtkWidget *info_bar;
|
GtkWidget *info_bar;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
|
@ -1875,13 +1889,18 @@ terminal_screen_child_exited (VteTerminal *terminal)
|
||||||
info_bar = terminal_info_bar_new (GTK_MESSAGE_INFO,
|
info_bar = terminal_info_bar_new (GTK_MESSAGE_INFO,
|
||||||
_("_Relaunch"), RESPONSE_RELAUNCH,
|
_("_Relaunch"), RESPONSE_RELAUNCH,
|
||||||
NULL);
|
NULL);
|
||||||
if (WIFEXITED (status)) {
|
if (WIFEXITED (status))
|
||||||
|
{
|
||||||
terminal_info_bar_format_text (TERMINAL_INFO_BAR (info_bar),
|
terminal_info_bar_format_text (TERMINAL_INFO_BAR (info_bar),
|
||||||
_("The child process exited normally with status %d."), WEXITSTATUS (status));
|
_("The child process exited normally with status %d."), WEXITSTATUS (status));
|
||||||
} else if (WIFSIGNALED (status)) {
|
}
|
||||||
|
else if (WIFSIGNALED (status))
|
||||||
|
{
|
||||||
terminal_info_bar_format_text (TERMINAL_INFO_BAR (info_bar),
|
terminal_info_bar_format_text (TERMINAL_INFO_BAR (info_bar),
|
||||||
_("The child process was terminated by signal %d."), WTERMSIG (status));
|
_("The child process was terminated by signal %d."), WTERMSIG (status));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
terminal_info_bar_format_text (TERMINAL_INFO_BAR (info_bar),
|
terminal_info_bar_format_text (TERMINAL_INFO_BAR (info_bar),
|
||||||
_("The child process was terminated."));
|
_("The child process was terminated."));
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,8 @@
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
typedef enum {
|
typedef enum
|
||||||
|
{
|
||||||
FLAVOR_AS_IS,
|
FLAVOR_AS_IS,
|
||||||
FLAVOR_DEFAULT_TO_HTTP,
|
FLAVOR_DEFAULT_TO_HTTP,
|
||||||
FLAVOR_VOIP_CALL,
|
FLAVOR_VOIP_CALL,
|
||||||
|
@ -140,7 +141,8 @@ gboolean terminal_screen_has_foreground_process (TerminalScreen *screen);
|
||||||
#define TERMINAL_SCALE_MINIMUM (TERMINAL_SCALE_XXXXX_SMALL/1.2)
|
#define TERMINAL_SCALE_MINIMUM (TERMINAL_SCALE_XXXXX_SMALL/1.2)
|
||||||
#define TERMINAL_SCALE_MAXIMUM (TERMINAL_SCALE_XXXXX_LARGE*1.2)
|
#define TERMINAL_SCALE_MAXIMUM (TERMINAL_SCALE_XXXXX_LARGE*1.2)
|
||||||
|
|
||||||
struct _TerminalScreenPopupInfo {
|
struct _TerminalScreenPopupInfo
|
||||||
|
{
|
||||||
int ref_count;
|
int ref_count;
|
||||||
TerminalWindow *window;
|
TerminalWindow *window;
|
||||||
TerminalScreen *screen;
|
TerminalScreen *screen;
|
||||||
|
|
|
@ -169,7 +169,8 @@ update_sensitivity (void *unused, GtkWidget *dialog)
|
||||||
const gchar *search_string;
|
const gchar *search_string;
|
||||||
gboolean valid;
|
gboolean valid;
|
||||||
|
|
||||||
if (priv->regex) {
|
if (priv->regex)
|
||||||
|
{
|
||||||
g_regex_unref (priv->regex);
|
g_regex_unref (priv->regex);
|
||||||
priv->regex = NULL;
|
priv->regex = NULL;
|
||||||
}
|
}
|
||||||
|
@ -179,7 +180,8 @@ update_sensitivity (void *unused, GtkWidget *dialog)
|
||||||
|
|
||||||
valid = *search_string != '\0';
|
valid = *search_string != '\0';
|
||||||
|
|
||||||
if (valid && GET_FLAG (regex_checkbutton)) {
|
if (valid && GET_FLAG (regex_checkbutton))
|
||||||
|
{
|
||||||
/* Check that the regex is valid */
|
/* Check that the regex is valid */
|
||||||
valid = NULL != terminal_search_dialog_get_regex (dialog);
|
valid = NULL != terminal_search_dialog_get_regex (dialog);
|
||||||
/* TODO show the error message somewhere */
|
/* TODO show the error message somewhere */
|
||||||
|
@ -199,19 +201,22 @@ remove_item (GtkListStore *store,
|
||||||
if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter))
|
if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
do {
|
do
|
||||||
|
{
|
||||||
gchar *item_text;
|
gchar *item_text;
|
||||||
|
|
||||||
gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, 0, &item_text, -1);
|
gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, 0, &item_text, -1);
|
||||||
|
|
||||||
if (item_text != NULL && strcmp (item_text, text) == 0) {
|
if (item_text != NULL && strcmp (item_text, text) == 0)
|
||||||
|
{
|
||||||
gtk_list_store_remove (store, &iter);
|
gtk_list_store_remove (store, &iter);
|
||||||
g_free (item_text);
|
g_free (item_text);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free (item_text);
|
g_free (item_text);
|
||||||
} while (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter));
|
}
|
||||||
|
while (gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter));
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -265,7 +270,8 @@ response_handler (GtkWidget *dialog,
|
||||||
TerminalSearchDialogPrivate *priv;
|
TerminalSearchDialogPrivate *priv;
|
||||||
const gchar *str;
|
const gchar *str;
|
||||||
|
|
||||||
if (response_id != GTK_RESPONSE_ACCEPT) {
|
if (response_id != GTK_RESPONSE_ACCEPT)
|
||||||
|
{
|
||||||
gtk_widget_hide (dialog);
|
gtk_widget_hide (dialog);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -354,14 +360,16 @@ terminal_search_dialog_get_regex (GtkWidget *dialog)
|
||||||
else
|
else
|
||||||
pattern = g_regex_escape_string (text, -1);
|
pattern = g_regex_escape_string (text, -1);
|
||||||
|
|
||||||
if (GET_FLAG (entire_word_checkbutton)) {
|
if (GET_FLAG (entire_word_checkbutton))
|
||||||
|
{
|
||||||
const char *old_pattern = pattern;
|
const char *old_pattern = pattern;
|
||||||
pattern = g_strdup_printf ("\\b%s\\b", pattern);
|
pattern = g_strdup_printf ("\\b%s\\b", pattern);
|
||||||
if (old_pattern != text)
|
if (old_pattern != text)
|
||||||
g_free ((char *) old_pattern);
|
g_free ((char *) old_pattern);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!priv->regex || priv->regex_compile_flags != compile_flags) {
|
if (!priv->regex || priv->regex_compile_flags != compile_flags)
|
||||||
|
{
|
||||||
priv->regex_compile_flags = compile_flags;
|
priv->regex_compile_flags = compile_flags;
|
||||||
if (priv->regex)
|
if (priv->regex)
|
||||||
g_regex_unref (priv->regex);
|
g_regex_unref (priv->regex);
|
||||||
|
|
|
@ -25,7 +25,8 @@
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
typedef enum _TerminalSearchFlags {
|
typedef enum _TerminalSearchFlags
|
||||||
|
{
|
||||||
TERMINAL_SEARCH_FLAG_BACKWARDS = 1 << 0,
|
TERMINAL_SEARCH_FLAG_BACKWARDS = 1 << 0,
|
||||||
TERMINAL_SEARCH_FLAG_WRAP_AROUND = 1 << 1
|
TERMINAL_SEARCH_FLAG_WRAP_AROUND = 1 << 1
|
||||||
} TerminalSearchFlags;
|
} TerminalSearchFlags;
|
||||||
|
|
|
@ -183,7 +183,8 @@ terminal_tab_label_set_property (GObject *object,
|
||||||
TerminalTabLabel *tab_label = TERMINAL_TAB_LABEL (object);
|
TerminalTabLabel *tab_label = TERMINAL_TAB_LABEL (object);
|
||||||
TerminalTabLabelPrivate *priv = tab_label->priv;
|
TerminalTabLabelPrivate *priv = tab_label->priv;
|
||||||
|
|
||||||
switch (prop_id) {
|
switch (prop_id)
|
||||||
|
{
|
||||||
case PROP_SCREEN:
|
case PROP_SCREEN:
|
||||||
priv->screen = g_value_get_object (value);
|
priv->screen = g_value_get_object (value);
|
||||||
break;
|
break;
|
||||||
|
@ -266,7 +267,8 @@ terminal_tab_label_set_bold (TerminalTabLabel *tab_label,
|
||||||
priv->bold = bold;
|
priv->bold = bold;
|
||||||
|
|
||||||
attr_list = gtk_label_get_attributes (GTK_LABEL (priv->label));
|
attr_list = gtk_label_get_attributes (GTK_LABEL (priv->label));
|
||||||
if (!attr_list) {
|
if (!attr_list)
|
||||||
|
{
|
||||||
attr_list = pango_attr_list_new ();
|
attr_list = pango_attr_list_new ();
|
||||||
free_list = TRUE;
|
free_list = TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,9 +151,11 @@ terminal_util_show_help (const char *topic,
|
||||||
guint i;
|
guint i;
|
||||||
|
|
||||||
const char * const * langs = g_get_language_names ();
|
const char * const * langs = g_get_language_names ();
|
||||||
for (i = 0; langs[i]; i++) {
|
for (i = 0; langs[i]; i++)
|
||||||
|
{
|
||||||
lang = langs[i];
|
lang = langs[i];
|
||||||
if (strchr (lang, '.')) {
|
if (strchr (lang, '.'))
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,7 +165,8 @@ terminal_util_show_help (const char *topic,
|
||||||
"mate-terminal.xml",
|
"mate-terminal.xml",
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
if (g_file_test (uri, G_FILE_TEST_EXISTS)) {
|
if (g_file_test (uri, G_FILE_TEST_EXISTS))
|
||||||
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,9 +177,12 @@ terminal_util_show_help (const char *topic,
|
||||||
if (!uri)
|
if (!uri)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (topic) {
|
if (topic)
|
||||||
|
{
|
||||||
url = g_strdup_printf ("ghelp://%s?%s", uri, topic);
|
url = g_strdup_printf ("ghelp://%s?%s", uri, topic);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
url = g_strdup_printf ("ghelp://%s", uri);
|
url = g_strdup_printf ("ghelp://%s", uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -362,7 +368,8 @@ terminal_util_concat_uris (char **uris,
|
||||||
char *
|
char *
|
||||||
terminal_util_get_licence_text (void)
|
terminal_util_get_licence_text (void)
|
||||||
{
|
{
|
||||||
const gchar *license[] = {
|
const gchar *license[] =
|
||||||
|
{
|
||||||
N_("MATE Terminal is free software; you can redistribute it and/or modify "
|
N_("MATE Terminal is free software; you can redistribute it and/or modify "
|
||||||
"it under the terms of the GNU General Public License as published by "
|
"it under the terms of the GNU General Public License as published by "
|
||||||
"the Free Software Foundation; either version 3 of the License, or "
|
"the Free Software Foundation; either version 3 of the License, or "
|
||||||
|
@ -391,7 +398,8 @@ terminal_util_load_builder_file (const char *filename,
|
||||||
|
|
||||||
path = g_build_filename (TERM_PKGDATADIR, filename, NULL);
|
path = g_build_filename (TERM_PKGDATADIR, filename, NULL);
|
||||||
builder = gtk_builder_new ();
|
builder = gtk_builder_new ();
|
||||||
if (!gtk_builder_add_from_file (builder, path, &error)) {
|
if (!gtk_builder_add_from_file (builder, path, &error))
|
||||||
|
{
|
||||||
g_warning ("Failed to load %s: %s\n", filename, error->message);
|
g_warning ("Failed to load %s: %s\n", filename, error->message);
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
g_free (path);
|
g_free (path);
|
||||||
|
@ -402,12 +410,14 @@ terminal_util_load_builder_file (const char *filename,
|
||||||
|
|
||||||
va_start (args, object_name);
|
va_start (args, object_name);
|
||||||
|
|
||||||
while (object_name) {
|
while (object_name)
|
||||||
|
{
|
||||||
GObject **objectptr;
|
GObject **objectptr;
|
||||||
|
|
||||||
objectptr = va_arg (args, GObject**);
|
objectptr = va_arg (args, GObject**);
|
||||||
*objectptr = gtk_builder_get_object (builder, object_name);
|
*objectptr = gtk_builder_get_object (builder, object_name);
|
||||||
if (!*objectptr) {
|
if (!*objectptr)
|
||||||
|
{
|
||||||
g_warning ("Failed to fetch object \"%s\"\n", object_name);
|
g_warning ("Failed to fetch object \"%s\"\n", object_name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -748,7 +758,8 @@ terminal_util_add_proxy_env (GHashTable *env_table)
|
||||||
|
|
||||||
/* Bidirectional object/widget binding */
|
/* Bidirectional object/widget binding */
|
||||||
|
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
GObject *object;
|
GObject *object;
|
||||||
const char *object_prop;
|
const char *object_prop;
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
|
|
|
@ -89,7 +89,8 @@ char **terminal_util_key_file_get_argv (GKeyFile *key_file,
|
||||||
|
|
||||||
void terminal_util_add_proxy_env (GHashTable *env_table);
|
void terminal_util_add_proxy_env (GHashTable *env_table);
|
||||||
|
|
||||||
typedef enum {
|
typedef enum
|
||||||
|
{
|
||||||
FLAG_INVERT_BOOL = 1 << 0,
|
FLAG_INVERT_BOOL = 1 << 0,
|
||||||
} PropertyChangeFlags;
|
} PropertyChangeFlags;
|
||||||
|
|
||||||
|
|
|
@ -899,10 +899,12 @@ terminal_size_to_cb (GtkAction *action,
|
||||||
static void
|
static void
|
||||||
terminal_window_update_size_to_menu (TerminalWindow *window)
|
terminal_window_update_size_to_menu (TerminalWindow *window)
|
||||||
{
|
{
|
||||||
static const struct {
|
static const struct
|
||||||
|
{
|
||||||
guint grid_width;
|
guint grid_width;
|
||||||
guint grid_height;
|
guint grid_height;
|
||||||
} predefined_sizes[] = {
|
} predefined_sizes[] =
|
||||||
|
{
|
||||||
{ 80, 24 },
|
{ 80, 24 },
|
||||||
{ 80, 43 },
|
{ 80, 43 },
|
||||||
{ 132, 24 },
|
{ 132, 24 },
|
||||||
|
@ -1801,182 +1803,280 @@ terminal_window_init (TerminalWindow *window)
|
||||||
{ "NotebookPopup", NULL, "" },
|
{ "NotebookPopup", NULL, "" },
|
||||||
|
|
||||||
/* File menu */
|
/* File menu */
|
||||||
{ "FileNewWindow", STOCK_NEW_WINDOW, N_("Open _Terminal"), "<shift><control>N",
|
{
|
||||||
|
"FileNewWindow", STOCK_NEW_WINDOW, N_("Open _Terminal"), "<shift><control>N",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (file_new_window_callback) },
|
G_CALLBACK (file_new_window_callback)
|
||||||
{ "FileNewTab", STOCK_NEW_TAB, N_("Open Ta_b"), "<shift><control>T",
|
},
|
||||||
|
{
|
||||||
|
"FileNewTab", STOCK_NEW_TAB, N_("Open Ta_b"), "<shift><control>T",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (file_new_tab_callback) },
|
G_CALLBACK (file_new_tab_callback)
|
||||||
{ "FileNewProfile", GTK_STOCK_OPEN, N_("New _Profile…"), "",
|
},
|
||||||
|
{
|
||||||
|
"FileNewProfile", GTK_STOCK_OPEN, N_("New _Profile…"), "",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (file_new_profile_callback) },
|
G_CALLBACK (file_new_profile_callback)
|
||||||
{ "FileSaveContents", GTK_STOCK_SAVE, N_("_Save Contents"), "",
|
},
|
||||||
|
{
|
||||||
|
"FileSaveContents", GTK_STOCK_SAVE, N_("_Save Contents"), "",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (file_save_contents_callback) },
|
G_CALLBACK (file_save_contents_callback)
|
||||||
{ "FileCloseTab", GTK_STOCK_CLOSE, N_("C_lose Tab"), "<shift><control>W",
|
},
|
||||||
|
{
|
||||||
|
"FileCloseTab", GTK_STOCK_CLOSE, N_("C_lose Tab"), "<shift><control>W",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (file_close_tab_callback) },
|
G_CALLBACK (file_close_tab_callback)
|
||||||
{ "FileCloseWindow", GTK_STOCK_CLOSE, N_("_Close Window"), "<shift><control>Q",
|
},
|
||||||
|
{
|
||||||
|
"FileCloseWindow", GTK_STOCK_CLOSE, N_("_Close Window"), "<shift><control>Q",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (file_close_window_callback) },
|
G_CALLBACK (file_close_window_callback)
|
||||||
|
},
|
||||||
|
|
||||||
/* Edit menu */
|
/* Edit menu */
|
||||||
{ "EditCopy", GTK_STOCK_COPY, NULL, "<shift><control>C",
|
{
|
||||||
|
"EditCopy", GTK_STOCK_COPY, NULL, "<shift><control>C",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (edit_copy_callback) },
|
G_CALLBACK (edit_copy_callback)
|
||||||
{ "EditPaste", GTK_STOCK_PASTE, NULL, "<shift><control>V",
|
},
|
||||||
|
{
|
||||||
|
"EditPaste", GTK_STOCK_PASTE, NULL, "<shift><control>V",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (edit_paste_callback) },
|
G_CALLBACK (edit_paste_callback)
|
||||||
{ "EditPasteURIPaths", GTK_STOCK_PASTE, N_("Paste _Filenames"), "",
|
},
|
||||||
|
{
|
||||||
|
"EditPasteURIPaths", GTK_STOCK_PASTE, N_("Paste _Filenames"), "",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (edit_paste_callback) },
|
G_CALLBACK (edit_paste_callback)
|
||||||
{ "EditSelectAll", GTK_STOCK_SELECT_ALL, NULL, NULL,
|
},
|
||||||
|
{
|
||||||
|
"EditSelectAll", GTK_STOCK_SELECT_ALL, NULL, NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (edit_select_all_callback) },
|
G_CALLBACK (edit_select_all_callback)
|
||||||
{ "EditProfiles", NULL, N_("P_rofiles…"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"EditProfiles", NULL, N_("P_rofiles…"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (edit_profiles_callback) },
|
G_CALLBACK (edit_profiles_callback)
|
||||||
{ "EditKeybindings", NULL, N_("_Keyboard Shortcuts…"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"EditKeybindings", NULL, N_("_Keyboard Shortcuts…"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (edit_keybindings_callback) },
|
G_CALLBACK (edit_keybindings_callback)
|
||||||
{ "EditCurrentProfile", NULL, N_("Pr_ofile Preferences"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"EditCurrentProfile", NULL, N_("Pr_ofile Preferences"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (edit_current_profile_callback) },
|
G_CALLBACK (edit_current_profile_callback)
|
||||||
|
},
|
||||||
|
|
||||||
/* View menu */
|
/* View menu */
|
||||||
{ "ViewZoomIn", GTK_STOCK_ZOOM_IN, NULL, "<control>plus",
|
{
|
||||||
|
"ViewZoomIn", GTK_STOCK_ZOOM_IN, NULL, "<control>plus",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (view_zoom_in_callback) },
|
G_CALLBACK (view_zoom_in_callback)
|
||||||
{ "ViewZoomOut", GTK_STOCK_ZOOM_OUT, NULL, "<control>minus",
|
},
|
||||||
|
{
|
||||||
|
"ViewZoomOut", GTK_STOCK_ZOOM_OUT, NULL, "<control>minus",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (view_zoom_out_callback) },
|
G_CALLBACK (view_zoom_out_callback)
|
||||||
{ "ViewZoom100", GTK_STOCK_ZOOM_100, NULL, "<control>0",
|
},
|
||||||
|
{
|
||||||
|
"ViewZoom100", GTK_STOCK_ZOOM_100, NULL, "<control>0",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (view_zoom_normal_callback) },
|
G_CALLBACK (view_zoom_normal_callback)
|
||||||
|
},
|
||||||
|
|
||||||
/* Search menu */
|
/* Search menu */
|
||||||
{ "SearchFind", GTK_STOCK_FIND, N_("_Find..."), "<shift><control>F",
|
{
|
||||||
|
"SearchFind", GTK_STOCK_FIND, N_("_Find..."), "<shift><control>F",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (search_find_callback) },
|
G_CALLBACK (search_find_callback)
|
||||||
{ "SearchFindNext", NULL, N_("Find Ne_xt"), "<shift><control>H",
|
},
|
||||||
|
{
|
||||||
|
"SearchFindNext", NULL, N_("Find Ne_xt"), "<shift><control>H",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (search_find_next_callback) },
|
G_CALLBACK (search_find_next_callback)
|
||||||
{ "SearchFindPrevious", NULL, N_("Find Pre_vious"), "<shift><control>G",
|
},
|
||||||
|
{
|
||||||
|
"SearchFindPrevious", NULL, N_("Find Pre_vious"), "<shift><control>G",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (search_find_prev_callback) },
|
G_CALLBACK (search_find_prev_callback)
|
||||||
{ "SearchClearHighlight", NULL, N_("_Clear Highlight"), "<shift><control>J",
|
},
|
||||||
|
{
|
||||||
|
"SearchClearHighlight", NULL, N_("_Clear Highlight"), "<shift><control>J",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (search_clear_highlight_callback) },
|
G_CALLBACK (search_clear_highlight_callback)
|
||||||
|
},
|
||||||
#if 0
|
#if 0
|
||||||
{ "SearchGoToLine", GTK_STOCK_JUMP_TO, N_("Go to _Line..."), "<shift><control>I",
|
{
|
||||||
|
"SearchGoToLine", GTK_STOCK_JUMP_TO, N_("Go to _Line..."), "<shift><control>I",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (search_goto_line_callback) },
|
G_CALLBACK (search_goto_line_callback)
|
||||||
{ "SearchIncrementalSearch", GTK_STOCK_FIND, N_("_Incremental Search..."), "<shift><control>K",
|
},
|
||||||
|
{
|
||||||
|
"SearchIncrementalSearch", GTK_STOCK_FIND, N_("_Incremental Search..."), "<shift><control>K",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (search_incremental_search_callback) },
|
G_CALLBACK (search_incremental_search_callback)
|
||||||
|
},
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Terminal menu */
|
/* Terminal menu */
|
||||||
{ "TerminalProfiles", NULL, N_("Change _Profile") },
|
{ "TerminalProfiles", NULL, N_("Change _Profile") },
|
||||||
{ "TerminalSetTitle", NULL, N_("_Set Title…"), NULL,
|
{
|
||||||
|
"TerminalSetTitle", NULL, N_("_Set Title…"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (terminal_set_title_callback) },
|
G_CALLBACK (terminal_set_title_callback)
|
||||||
|
},
|
||||||
{ "TerminalSetEncoding", NULL, N_("Set _Character Encoding") },
|
{ "TerminalSetEncoding", NULL, N_("Set _Character Encoding") },
|
||||||
{ "TerminalReset", NULL, N_("_Reset"), NULL,
|
{
|
||||||
|
"TerminalReset", NULL, N_("_Reset"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (terminal_reset_callback) },
|
G_CALLBACK (terminal_reset_callback)
|
||||||
{ "TerminalResetClear", NULL, N_("Reset and C_lear"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"TerminalResetClear", NULL, N_("Reset and C_lear"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (terminal_reset_clear_callback) },
|
G_CALLBACK (terminal_reset_clear_callback)
|
||||||
|
},
|
||||||
|
|
||||||
/* Terminal/Encodings menu */
|
/* Terminal/Encodings menu */
|
||||||
{ "TerminalAddEncoding", NULL, N_("_Add or Remove…"), NULL,
|
{
|
||||||
|
"TerminalAddEncoding", NULL, N_("_Add or Remove…"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (terminal_add_encoding_callback) },
|
G_CALLBACK (terminal_add_encoding_callback)
|
||||||
|
},
|
||||||
|
|
||||||
/* Tabs menu */
|
/* Tabs menu */
|
||||||
{ "TabsPrevious", NULL, N_("_Previous Tab"), "<control>Page_Up",
|
{
|
||||||
|
"TabsPrevious", NULL, N_("_Previous Tab"), "<control>Page_Up",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (tabs_next_or_previous_tab_cb) },
|
G_CALLBACK (tabs_next_or_previous_tab_cb)
|
||||||
{ "TabsNext", NULL, N_("_Next Tab"), "<control>Page_Down",
|
},
|
||||||
|
{
|
||||||
|
"TabsNext", NULL, N_("_Next Tab"), "<control>Page_Down",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (tabs_next_or_previous_tab_cb) },
|
G_CALLBACK (tabs_next_or_previous_tab_cb)
|
||||||
{ "TabsMoveLeft", NULL, N_("Move Tab _Left"), "<shift><control>Page_Up",
|
},
|
||||||
|
{
|
||||||
|
"TabsMoveLeft", NULL, N_("Move Tab _Left"), "<shift><control>Page_Up",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (tabs_move_left_callback) },
|
G_CALLBACK (tabs_move_left_callback)
|
||||||
{ "TabsMoveRight", NULL, N_("Move Tab _Right"), "<shift><control>Page_Down",
|
},
|
||||||
|
{
|
||||||
|
"TabsMoveRight", NULL, N_("Move Tab _Right"), "<shift><control>Page_Down",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (tabs_move_right_callback) },
|
G_CALLBACK (tabs_move_right_callback)
|
||||||
{ "TabsDetach", NULL, N_("_Detach tab"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"TabsDetach", NULL, N_("_Detach tab"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (tabs_detach_tab_callback) },
|
G_CALLBACK (tabs_detach_tab_callback)
|
||||||
|
},
|
||||||
|
|
||||||
/* Help menu */
|
/* Help menu */
|
||||||
{ "HelpContents", GTK_STOCK_HELP, N_("_Contents"), "F1",
|
{
|
||||||
|
"HelpContents", GTK_STOCK_HELP, N_("_Contents"), "F1",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (help_contents_callback) },
|
G_CALLBACK (help_contents_callback)
|
||||||
{ "HelpAbout", GTK_STOCK_ABOUT, N_("_About"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"HelpAbout", GTK_STOCK_ABOUT, N_("_About"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (help_about_callback) },
|
G_CALLBACK (help_about_callback)
|
||||||
|
},
|
||||||
|
|
||||||
/* Popup menu */
|
/* Popup menu */
|
||||||
{ "PopupSendEmail", NULL, N_("_Send Mail To…"), NULL,
|
{
|
||||||
|
"PopupSendEmail", NULL, N_("_Send Mail To…"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (popup_open_url_callback) },
|
G_CALLBACK (popup_open_url_callback)
|
||||||
{ "PopupCopyEmailAddress", NULL, N_("_Copy E-mail Address"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"PopupCopyEmailAddress", NULL, N_("_Copy E-mail Address"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (popup_copy_url_callback) },
|
G_CALLBACK (popup_copy_url_callback)
|
||||||
{ "PopupCall", NULL, N_("C_all To…"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"PopupCall", NULL, N_("C_all To…"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (popup_open_url_callback) },
|
G_CALLBACK (popup_open_url_callback)
|
||||||
{ "PopupCopyCallAddress", NULL, N_("_Copy Call Address"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"PopupCopyCallAddress", NULL, N_("_Copy Call Address"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (popup_copy_url_callback) },
|
G_CALLBACK (popup_copy_url_callback)
|
||||||
{ "PopupOpenLink", NULL, N_("_Open Link"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"PopupOpenLink", NULL, N_("_Open Link"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (popup_open_url_callback) },
|
G_CALLBACK (popup_open_url_callback)
|
||||||
{ "PopupCopyLinkAddress", NULL, N_("_Copy Link Address"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"PopupCopyLinkAddress", NULL, N_("_Copy Link Address"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (popup_copy_url_callback) },
|
G_CALLBACK (popup_copy_url_callback)
|
||||||
|
},
|
||||||
{ "PopupTerminalProfiles", NULL, N_("P_rofiles") },
|
{ "PopupTerminalProfiles", NULL, N_("P_rofiles") },
|
||||||
{ "PopupCopy", GTK_STOCK_COPY, NULL, "",
|
{
|
||||||
|
"PopupCopy", GTK_STOCK_COPY, NULL, "",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (edit_copy_callback) },
|
G_CALLBACK (edit_copy_callback)
|
||||||
{ "PopupPaste", GTK_STOCK_PASTE, NULL, "",
|
},
|
||||||
|
{
|
||||||
|
"PopupPaste", GTK_STOCK_PASTE, NULL, "",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (edit_paste_callback) },
|
G_CALLBACK (edit_paste_callback)
|
||||||
{ "PopupPasteURIPaths", GTK_STOCK_PASTE, N_("Paste _Filenames"), "",
|
},
|
||||||
|
{
|
||||||
|
"PopupPasteURIPaths", GTK_STOCK_PASTE, N_("Paste _Filenames"), "",
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (edit_paste_callback) },
|
G_CALLBACK (edit_paste_callback)
|
||||||
{ "PopupNewTerminal", NULL, N_("Open _Terminal"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"PopupNewTerminal", NULL, N_("Open _Terminal"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (file_new_window_callback) },
|
G_CALLBACK (file_new_window_callback)
|
||||||
{ "PopupNewTab", NULL, N_("Open Ta_b"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"PopupNewTab", NULL, N_("Open Ta_b"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (file_new_tab_callback) },
|
G_CALLBACK (file_new_tab_callback)
|
||||||
{ "PopupCloseWindow", NULL, N_("C_lose Window"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"PopupCloseWindow", NULL, N_("C_lose Window"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (file_close_window_callback) },
|
G_CALLBACK (file_close_window_callback)
|
||||||
{ "PopupCloseTab", NULL, N_("C_lose Tab"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"PopupCloseTab", NULL, N_("C_lose Tab"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (file_close_tab_callback) },
|
G_CALLBACK (file_close_tab_callback)
|
||||||
{ "PopupLeaveFullscreen", NULL, N_("L_eave Full Screen"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"PopupLeaveFullscreen", NULL, N_("L_eave Full Screen"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (popup_leave_fullscreen_callback) },
|
G_CALLBACK (popup_leave_fullscreen_callback)
|
||||||
|
},
|
||||||
{ "PopupInputMethods", NULL, N_("_Input Methods") }
|
{ "PopupInputMethods", NULL, N_("_Input Methods") }
|
||||||
};
|
};
|
||||||
|
|
||||||
const GtkToggleActionEntry toggle_menu_entries[] =
|
const GtkToggleActionEntry toggle_menu_entries[] =
|
||||||
{
|
{
|
||||||
/* View Menu */
|
/* View Menu */
|
||||||
{ "ViewMenubar", NULL, N_("Show _Menubar"), NULL,
|
{
|
||||||
|
"ViewMenubar", NULL, N_("Show _Menubar"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (view_menubar_toggled_callback),
|
G_CALLBACK (view_menubar_toggled_callback),
|
||||||
FALSE },
|
FALSE
|
||||||
{ "ViewFullscreen", NULL, N_("_Full Screen"), NULL,
|
},
|
||||||
|
{
|
||||||
|
"ViewFullscreen", NULL, N_("_Full Screen"), NULL,
|
||||||
NULL,
|
NULL,
|
||||||
G_CALLBACK (view_fullscreen_toggled_callback),
|
G_CALLBACK (view_fullscreen_toggled_callback),
|
||||||
FALSE }
|
FALSE
|
||||||
|
}
|
||||||
};
|
};
|
||||||
TerminalWindowPrivate *priv;
|
TerminalWindowPrivate *priv;
|
||||||
TerminalApp *app;
|
TerminalApp *app;
|
||||||
|
@ -2607,10 +2707,12 @@ terminal_window_set_size_force_grid (TerminalWindow *window,
|
||||||
window,
|
window,
|
||||||
grid_width, grid_height, force_grid_width, force_grid_height, w, h);
|
grid_width, grid_height, force_grid_width, force_grid_height, w, h);
|
||||||
|
|
||||||
if (even_if_mapped && gtk_widget_get_mapped (app)) {
|
if (even_if_mapped && gtk_widget_get_mapped (app))
|
||||||
|
{
|
||||||
gtk_window_resize (GTK_WINDOW (app), w, h);
|
gtk_window_resize (GTK_WINDOW (app), w, h);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
gtk_window_set_default_size (GTK_WINDOW (app), w, h);
|
gtk_window_set_default_size (GTK_WINDOW (app), w, h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2744,7 +2846,8 @@ notebook_page_selected_callback (GtkWidget *notebook,
|
||||||
if (priv->active_screen == screen)
|
if (priv->active_screen == screen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (priv->active_screen != NULL) {
|
if (priv->active_screen != NULL)
|
||||||
|
{
|
||||||
terminal_screen_get_size (priv->active_screen, &old_grid_width, &old_grid_height);
|
terminal_screen_get_size (priv->active_screen, &old_grid_width, &old_grid_height);
|
||||||
|
|
||||||
/* This is so that we maintain the same grid */
|
/* This is so that we maintain the same grid */
|
||||||
|
@ -3314,7 +3417,8 @@ edit_copy_callback (GtkAction *action,
|
||||||
vte_terminal_copy_clipboard (VTE_TERMINAL (priv->active_screen));
|
vte_terminal_copy_clipboard (VTE_TERMINAL (priv->active_screen));
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
TerminalScreen *screen;
|
TerminalScreen *screen;
|
||||||
gboolean uris_as_paths;
|
gboolean uris_as_paths;
|
||||||
} PasteData;
|
} PasteData;
|
||||||
|
@ -3327,7 +3431,8 @@ clipboard_uris_received_cb (GtkClipboard *clipboard,
|
||||||
char *text;
|
char *text;
|
||||||
gsize len;
|
gsize len;
|
||||||
|
|
||||||
if (!uris) {
|
if (!uris)
|
||||||
|
{
|
||||||
g_object_unref (data->screen);
|
g_object_unref (data->screen);
|
||||||
g_slice_free (PasteData, data);
|
g_slice_free (PasteData, data);
|
||||||
return;
|
return;
|
||||||
|
@ -3351,18 +3456,22 @@ clipboard_targets_received_cb (GtkClipboard *clipboard,
|
||||||
int n_targets,
|
int n_targets,
|
||||||
PasteData *data)
|
PasteData *data)
|
||||||
{
|
{
|
||||||
if (!targets) {
|
if (!targets)
|
||||||
|
{
|
||||||
g_object_unref (data->screen);
|
g_object_unref (data->screen);
|
||||||
g_slice_free (PasteData, data);
|
g_slice_free (PasteData, data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gtk_targets_include_uri (targets, n_targets)) {
|
if (gtk_targets_include_uri (targets, n_targets))
|
||||||
|
{
|
||||||
gtk_clipboard_request_uris (clipboard,
|
gtk_clipboard_request_uris (clipboard,
|
||||||
(GtkClipboardURIReceivedFunc) clipboard_uris_received_cb,
|
(GtkClipboardURIReceivedFunc) clipboard_uris_received_cb,
|
||||||
data);
|
data);
|
||||||
return;
|
return;
|
||||||
} else /* if (gtk_targets_include_text (targets, n_targets)) */ {
|
}
|
||||||
|
else /* if (gtk_targets_include_text (targets, n_targets)) */
|
||||||
|
{
|
||||||
vte_terminal_paste_clipboard (VTE_TERMINAL (data->screen));
|
vte_terminal_paste_clipboard (VTE_TERMINAL (data->screen));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3464,7 +3573,8 @@ view_fullscreen_toggled_callback (GtkToggleAction *action,
|
||||||
gtk_window_unfullscreen (GTK_WINDOW (window));
|
gtk_window_unfullscreen (GTK_WINDOW (window));
|
||||||
}
|
}
|
||||||
|
|
||||||
static const double zoom_factors[] = {
|
static const double zoom_factors[] =
|
||||||
|
{
|
||||||
TERMINAL_SCALE_MINIMUM,
|
TERMINAL_SCALE_MINIMUM,
|
||||||
TERMINAL_SCALE_XXXXX_SMALL,
|
TERMINAL_SCALE_XXXXX_SMALL,
|
||||||
TERMINAL_SCALE_XXXX_SMALL,
|
TERMINAL_SCALE_XXXX_SMALL,
|
||||||
|
@ -3621,7 +3731,8 @@ search_find_callback (GtkAction *action,
|
||||||
{
|
{
|
||||||
TerminalWindowPrivate *priv = window->priv;
|
TerminalWindowPrivate *priv = window->priv;
|
||||||
|
|
||||||
if (!priv->search_find_dialog) {
|
if (!priv->search_find_dialog)
|
||||||
|
{
|
||||||
GtkWidget *dialog;
|
GtkWidget *dialog;
|
||||||
|
|
||||||
dialog = priv->search_find_dialog = terminal_search_dialog_new (GTK_WINDOW (window));
|
dialog = priv->search_find_dialog = terminal_search_dialog_new (GTK_WINDOW (window));
|
||||||
|
@ -3788,9 +3899,12 @@ tabs_next_or_previous_tab_cb (GtkAction *action,
|
||||||
guint keyval = 0;
|
guint keyval = 0;
|
||||||
|
|
||||||
name = gtk_action_get_name (action);
|
name = gtk_action_get_name (action);
|
||||||
if (strcmp (name, "TabsNext") == 0) {
|
if (strcmp (name, "TabsNext") == 0)
|
||||||
|
{
|
||||||
keyval = GDK_Page_Down;
|
keyval = GDK_Page_Down;
|
||||||
} else if (strcmp (name, "TabsPrevious") == 0) {
|
}
|
||||||
|
else if (strcmp (name, "TabsPrevious") == 0)
|
||||||
|
{
|
||||||
keyval = GDK_Page_Up;
|
keyval = GDK_Page_Up;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,8 @@ ay_to_string (GVariant *variant,
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* Make sure there are no embedded NULs */
|
/* Make sure there are no embedded NULs */
|
||||||
if (memchr (data, '\0', len) != NULL) {
|
if (memchr (data, '\0', len) != NULL)
|
||||||
|
{
|
||||||
g_set_error_literal (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS,
|
g_set_error_literal (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS,
|
||||||
"String is shorter than claimed");
|
"String is shorter than claimed");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -79,7 +80,8 @@ ay_to_strv (GVariant *variant,
|
||||||
gssize len;
|
gssize len;
|
||||||
|
|
||||||
data = g_variant_get_fixed_array (variant, &data_len, sizeof (char));
|
data = g_variant_get_fixed_array (variant, &data_len, sizeof (char));
|
||||||
if (data_len == 0 || data_len > G_MAXSSIZE) {
|
if (data_len == 0 || data_len > G_MAXSSIZE)
|
||||||
|
{
|
||||||
*argc = 0;
|
*argc = 0;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -87,7 +89,8 @@ ay_to_strv (GVariant *variant,
|
||||||
argv = g_ptr_array_new ();
|
argv = g_ptr_array_new ();
|
||||||
|
|
||||||
len = data_len;
|
len = data_len;
|
||||||
do {
|
do
|
||||||
|
{
|
||||||
gssize string_len;
|
gssize string_len;
|
||||||
|
|
||||||
nullbyte = memchr (data, '\0', len);
|
nullbyte = memchr (data, '\0', len);
|
||||||
|
@ -97,7 +100,8 @@ ay_to_strv (GVariant *variant,
|
||||||
|
|
||||||
len -= string_len + 1;
|
len -= string_len + 1;
|
||||||
data += string_len + 1;
|
data += string_len + 1;
|
||||||
} while (len > 0);
|
}
|
||||||
|
while (len > 0);
|
||||||
|
|
||||||
if (argc)
|
if (argc)
|
||||||
*argc = argv->len;
|
*argc = argv->len;
|
||||||
|
@ -119,7 +123,8 @@ string_to_ay (const char *string)
|
||||||
return g_variant_new_from_data (G_VARIANT_TYPE ("ay"), data, len, TRUE, g_free, data);
|
return g_variant_new_from_data (G_VARIANT_TYPE ("ay"), data, len, TRUE, g_free, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct
|
||||||
|
{
|
||||||
char *factory_name;
|
char *factory_name;
|
||||||
TerminalOptions *options;
|
TerminalOptions *options;
|
||||||
int exit_code;
|
int exit_code;
|
||||||
|
@ -137,7 +142,8 @@ method_call_cb (GDBusConnection *connection,
|
||||||
GDBusMethodInvocation *invocation,
|
GDBusMethodInvocation *invocation,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
if (g_strcmp0 (method_name, "HandleArguments") == 0) {
|
if (g_strcmp0 (method_name, "HandleArguments") == 0)
|
||||||
|
{
|
||||||
TerminalOptions *options = NULL;
|
TerminalOptions *options = NULL;
|
||||||
GVariant *v_wd, *v_display, *v_sid, *v_envv, *v_argv;
|
GVariant *v_wd, *v_display, *v_sid, *v_envv, *v_argv;
|
||||||
char *working_directory = NULL, *display_name = NULL, *startup_id = NULL;
|
char *working_directory = NULL, *display_name = NULL, *startup_id = NULL;
|
||||||
|
@ -176,7 +182,8 @@ method_call_cb (GDBusConnection *connection,
|
||||||
&error,
|
&error,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
if (options != NULL) {
|
if (options != NULL)
|
||||||
|
{
|
||||||
terminal_app_handle_options (terminal_app_get (), options, FALSE /* no resume */, &error);
|
terminal_app_handle_options (terminal_app_get (), options, FALSE /* no resume */, &error);
|
||||||
terminal_options_free (options);
|
terminal_options_free (options);
|
||||||
}
|
}
|
||||||
|
@ -193,9 +200,12 @@ method_call_cb (GDBusConnection *connection,
|
||||||
g_variant_unref (v_argv);
|
g_variant_unref (v_argv);
|
||||||
g_strfreev (argv);
|
g_strfreev (argv);
|
||||||
|
|
||||||
if (error == NULL) {
|
if (error == NULL)
|
||||||
|
{
|
||||||
g_dbus_method_invocation_return_value (invocation, g_variant_new ("()"));
|
g_dbus_method_invocation_return_value (invocation, g_variant_new ("()"));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
g_dbus_method_invocation_return_gerror (invocation, error);
|
g_dbus_method_invocation_return_gerror (invocation, error);
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
}
|
}
|
||||||
|
@ -220,7 +230,8 @@ bus_acquired_cb (GDBusConnection *connection,
|
||||||
"</interface>"
|
"</interface>"
|
||||||
"</node>";
|
"</node>";
|
||||||
|
|
||||||
static const GDBusInterfaceVTable interface_vtable = {
|
static const GDBusInterfaceVTable interface_vtable =
|
||||||
|
{
|
||||||
method_call_cb,
|
method_call_cb,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -245,7 +256,8 @@ bus_acquired_cb (GDBusConnection *connection,
|
||||||
&error);
|
&error);
|
||||||
g_dbus_node_info_unref (introspection_data);
|
g_dbus_node_info_unref (introspection_data);
|
||||||
|
|
||||||
if (registration_id == 0) {
|
if (registration_id == 0)
|
||||||
|
{
|
||||||
g_printerr ("Failed to register object: %s\n", error->message);
|
g_printerr ("Failed to register object: %s\n", error->message);
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
data->exit_code = EXIT_FAILURE;
|
data->exit_code = EXIT_FAILURE;
|
||||||
|
@ -264,13 +276,15 @@ name_acquired_cb (GDBusConnection *connection,
|
||||||
_terminal_debug_print (TERMINAL_DEBUG_FACTORY,
|
_terminal_debug_print (TERMINAL_DEBUG_FACTORY,
|
||||||
"Acquired the name %s on the session bus\n", name);
|
"Acquired the name %s on the session bus\n", name);
|
||||||
|
|
||||||
if (data->options == NULL) {
|
if (data->options == NULL)
|
||||||
|
{
|
||||||
/* Name re-acquired!? */
|
/* Name re-acquired!? */
|
||||||
g_assert_not_reached ();
|
g_assert_not_reached ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!terminal_app_handle_options (terminal_app_get (), data->options, TRUE /* do resume */, &error)) {
|
if (!terminal_app_handle_options (terminal_app_get (), data->options, TRUE /* do resume */, &error))
|
||||||
|
{
|
||||||
g_printerr ("Failed to handle options: %s\n", error->message);
|
g_printerr ("Failed to handle options: %s\n", error->message);
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
data->exit_code = EXIT_FAILURE;
|
data->exit_code = EXIT_FAILURE;
|
||||||
|
@ -300,13 +314,15 @@ name_lost_cb (GDBusConnection *connection,
|
||||||
"Lost the name %s on the session bus\n", name);
|
"Lost the name %s on the session bus\n", name);
|
||||||
|
|
||||||
/* Couldn't get the connection? No way to continue! */
|
/* Couldn't get the connection? No way to continue! */
|
||||||
if (connection == NULL) {
|
if (connection == NULL)
|
||||||
|
{
|
||||||
data->exit_code = EXIT_FAILURE;
|
data->exit_code = EXIT_FAILURE;
|
||||||
gtk_main_quit ();
|
gtk_main_quit ();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data->options == NULL) {
|
if (data->options == NULL)
|
||||||
|
{
|
||||||
/* Already handled */
|
/* Already handled */
|
||||||
data->exit_code = EXIT_SUCCESS;
|
data->exit_code = EXIT_SUCCESS;
|
||||||
gtk_main_quit ();
|
gtk_main_quit ();
|
||||||
|
@ -369,12 +385,15 @@ name_lost_cb (GDBusConnection *connection,
|
||||||
-1,
|
-1,
|
||||||
NULL,
|
NULL,
|
||||||
&error);
|
&error);
|
||||||
if (value == NULL) {
|
if (value == NULL)
|
||||||
|
{
|
||||||
g_printerr ("Failed to forward arguments: %s\n", error->message);
|
g_printerr ("Failed to forward arguments: %s\n", error->message);
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
data->exit_code = EXIT_FAILURE;
|
data->exit_code = EXIT_FAILURE;
|
||||||
gtk_main_quit ();
|
gtk_main_quit ();
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
g_variant_unref (value);
|
g_variant_unref (value);
|
||||||
data->exit_code = EXIT_SUCCESS;
|
data->exit_code = EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -540,7 +559,8 @@ main (int argc, char **argv)
|
||||||
|
|
||||||
g_free (working_directory);
|
g_free (working_directory);
|
||||||
|
|
||||||
if (options == NULL) {
|
if (options == NULL)
|
||||||
|
{
|
||||||
g_printerr (_("Failed to parse arguments: %s\n"), error->message);
|
g_printerr (_("Failed to parse arguments: %s\n"), error->message);
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
|
@ -570,7 +590,8 @@ main (int argc, char **argv)
|
||||||
display_name = gdk_display_get_name (display);
|
display_name = gdk_display_get_name (display);
|
||||||
options->display_name = g_strdup (display_name);
|
options->display_name = g_strdup (display_name);
|
||||||
|
|
||||||
if (options->use_factory) {
|
if (options->use_factory)
|
||||||
|
{
|
||||||
OwnData *data;
|
OwnData *data;
|
||||||
guint owner_id;
|
guint owner_id;
|
||||||
|
|
||||||
|
@ -597,14 +618,19 @@ main (int argc, char **argv)
|
||||||
g_free (data->factory_name);
|
g_free (data->factory_name);
|
||||||
g_free (data);
|
g_free (data);
|
||||||
|
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
terminal_app_handle_options (terminal_app_get (), options, TRUE /* allow resume */, &error);
|
terminal_app_handle_options (terminal_app_get (), options, TRUE /* allow resume */, &error);
|
||||||
terminal_options_free (options);
|
terminal_options_free (options);
|
||||||
|
|
||||||
if (error == NULL) {
|
if (error == NULL)
|
||||||
|
{
|
||||||
gtk_main ();
|
gtk_main ();
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
g_printerr ("Error handling options: %s\n", error->message);
|
g_printerr ("Error handling options: %s\n", error->message);
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
ret = EXIT_FAILURE;
|
ret = EXIT_FAILURE;
|
||||||
|
|
Loading…
Reference in New Issue