|
|
|
@ -4,7 +4,6 @@
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <gtk/gtk.h>
|
|
|
|
#include <gtk/gtk.h>
|
|
|
|
|
|
|
|
|
|
|
|
GdkPixbuf *create_pixbuf(const gchar * filename)
|
|
|
|
GdkPixbuf *create_pixbuf(const gchar * filename)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GdkPixbuf *pixbuf;
|
|
|
|
GdkPixbuf *pixbuf;
|
|
|
|
@ -18,11 +17,6 @@ GdkPixbuf *create_pixbuf(const gchar * filename)
|
|
|
|
return pixbuf;
|
|
|
|
return pixbuf;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef WIN32
|
|
|
|
|
|
|
|
#include "winsock2.h"
|
|
|
|
|
|
|
|
#include "WS2tcpip.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
#include <gtk/gtkadjustment.h>
|
|
|
|
#include <gtk/gtkadjustment.h>
|
|
|
|
#include <gtk/gtkwidget.h>
|
|
|
|
#include <gtk/gtkwidget.h>
|
|
|
|
#include <sys/socket.h>
|
|
|
|
#include <sys/socket.h>
|
|
|
|
@ -37,8 +31,8 @@ GdkPixbuf *create_pixbuf(const gchar * filename)
|
|
|
|
typedef gint32 COLORREF;
|
|
|
|
typedef gint32 COLORREF;
|
|
|
|
#define RGB(r,g,b) ((COLORREF)(((guint8)(r)|((guint16)((guint8)(g))<<8))|(((guint32)(guint8)(b))<<16)))
|
|
|
|
#define RGB(r,g,b) ((COLORREF)(((guint8)(r)|((guint16)((guint8)(g))<<8))|(((guint32)(guint8)(b))<<16)))
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
gchar *fontname;
|
|
|
|
|
|
|
|
gint vhandle;
|
|
|
|
char Host[5][100];
|
|
|
|
char Host[5][100];
|
|
|
|
char Port[5][10];
|
|
|
|
char Port[5][10];
|
|
|
|
char UserName[5][80];
|
|
|
|
char UserName[5][80];
|
|
|
|
@ -49,13 +43,13 @@ char Test2[5][100];
|
|
|
|
char Pass[5][100];
|
|
|
|
char Pass[5][100];
|
|
|
|
char path[5][100];
|
|
|
|
char path[5][100];
|
|
|
|
|
|
|
|
|
|
|
|
char HN[5][6] = {"Host1", "Host2", "Host3", "Host4"};
|
|
|
|
char HN[9][10] = {"Host1", "Host2", "Host3", "Host4", "Host5","Host6", "Host7", "Host8"};
|
|
|
|
char PN[5][6] = {"Port1", "Port2", "Port3", "Port4"};
|
|
|
|
char PN[9][10] = {"Port1", "Port2", "Port3", "Port4", "Port5", "Port6", "Port7", "Port8"};
|
|
|
|
char PASSN[5][6] = {"Pass1", "Pass2", "Pass3", "Pass4"};
|
|
|
|
char PASSN[9][10] = {"Pass1", "Pass2", "Pass3", "Pass4", "Pass5", "Pass6", "Pass7", "Pass8"};
|
|
|
|
char UN[5][6] = {"User1", "User2", "User3", "User4"};
|
|
|
|
char UN[9][10] = {"User1", "User2", "User3", "User4", "User5", "User6", "User7", "User8"};
|
|
|
|
char pn[5][6] = {"Path"};
|
|
|
|
char pn[5][6] = {"Path"};
|
|
|
|
int CurrentHost = 0;
|
|
|
|
int CurrentHost = 0;
|
|
|
|
char VersionString[80] = "0.0.1.26";
|
|
|
|
char VersionString[80] = "1.0.0.47";
|
|
|
|
|
|
|
|
|
|
|
|
char DisMsg[] = "*** Disconnected\r";
|
|
|
|
char DisMsg[] = "*** Disconnected\r";
|
|
|
|
|
|
|
|
|
|
|
|
@ -63,7 +57,8 @@ int PortMask=65535;
|
|
|
|
int mtxparam=1;
|
|
|
|
int mtxparam=1;
|
|
|
|
int MCOM=1;
|
|
|
|
int MCOM=1;
|
|
|
|
int Split;
|
|
|
|
int Split;
|
|
|
|
int x,y;
|
|
|
|
int x, y;
|
|
|
|
|
|
|
|
int vhandle;
|
|
|
|
int Bells = FALSE;
|
|
|
|
int Bells = FALSE;
|
|
|
|
int StripLF = FALSE;
|
|
|
|
int StripLF = FALSE;
|
|
|
|
int LogMonitor = FALSE;
|
|
|
|
int LogMonitor = FALSE;
|
|
|
|
@ -74,7 +69,8 @@ int MONColour = TRUE;
|
|
|
|
int ChatMode = FALSE;
|
|
|
|
int ChatMode = FALSE;
|
|
|
|
int MonPorts = 1;
|
|
|
|
int MonPorts = 1;
|
|
|
|
int muionly = 1;
|
|
|
|
int muionly = 1;
|
|
|
|
|
|
|
|
gchar * font;
|
|
|
|
|
|
|
|
char Font[50];
|
|
|
|
int position;
|
|
|
|
int position;
|
|
|
|
int left = 100, top = 100, right = 500, bottom = 500;
|
|
|
|
int left = 100, top = 100, right = 500, bottom = 500;
|
|
|
|
int height;
|
|
|
|
int height;
|
|
|
|
@ -83,13 +79,13 @@ char Position[50];
|
|
|
|
gint gx, gy;
|
|
|
|
gint gx, gy;
|
|
|
|
gint xx, yy;
|
|
|
|
gint xx, yy;
|
|
|
|
gint xxx, yyy;
|
|
|
|
gint xxx, yyy;
|
|
|
|
int size;
|
|
|
|
char outputmon[50];
|
|
|
|
int Size;
|
|
|
|
char monitormon [50];
|
|
|
|
|
|
|
|
|
|
|
|
int Connecting = FALSE;
|
|
|
|
int Connecting = FALSE;
|
|
|
|
int Disconnecting = FALSE;
|
|
|
|
int Disconnecting = FALSE;
|
|
|
|
int Connected = FALSE;
|
|
|
|
int Connected = FALSE;
|
|
|
|
int SocketActive = FALSE;
|
|
|
|
int SocketActive = FALSE;
|
|
|
|
|
|
|
|
int monitormon1;
|
|
|
|
|
|
|
|
|
|
|
|
char Title[80];
|
|
|
|
char Title[80];
|
|
|
|
|
|
|
|
|
|
|
|
@ -102,21 +98,6 @@ void WritetoMonWindow(char * Text, int Len);
|
|
|
|
int Telnet_Connected(SOCKET sock, int Error);
|
|
|
|
int Telnet_Connected(SOCKET sock, int Error);
|
|
|
|
int SendMsg(const char * msg, int len);
|
|
|
|
int SendMsg(const char * msg, int len);
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef WIN32
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void __cdecl Debugprintf(const char * format, ...)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
char Mess[1000];
|
|
|
|
|
|
|
|
va_list(arglist);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
va_start(arglist, format);
|
|
|
|
|
|
|
|
vsprintf(Mess, format, arglist);
|
|
|
|
|
|
|
|
strcat(Mess, "\r\n");
|
|
|
|
|
|
|
|
OutputDebugString(Mess);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
COLORREF Colours[256] = {0,
|
|
|
|
COLORREF Colours[256] = {0,
|
|
|
|
RGB(0,0,0), RGB(0,0,128), RGB(0,0,192), RGB(0,0,255), // 1 - 4
|
|
|
|
RGB(0,0,0), RGB(0,0,128), RGB(0,0,192), RGB(0,0,255), // 1 - 4
|
|
|
|
@ -169,6 +150,7 @@ GtkWidget *vscrollbar;
|
|
|
|
GtkWidget *vscrollbar2;
|
|
|
|
GtkWidget *vscrollbar2;
|
|
|
|
GtkTextBuffer *text;
|
|
|
|
GtkTextBuffer *text;
|
|
|
|
GtkTextBuffer *text2;
|
|
|
|
GtkTextBuffer *text2;
|
|
|
|
|
|
|
|
GtkTextBuffer *text3;
|
|
|
|
GtkWidget *entry;
|
|
|
|
GtkWidget *entry;
|
|
|
|
GtkWidget *vpaned;
|
|
|
|
GtkWidget *vpaned;
|
|
|
|
GtkWidget *frame1;
|
|
|
|
GtkWidget *frame1;
|
|
|
|
@ -176,9 +158,10 @@ GtkWidget *frame2;
|
|
|
|
GIOChannel *RecvChannel;
|
|
|
|
GIOChannel *RecvChannel;
|
|
|
|
GtkWidget *menubar;
|
|
|
|
GtkWidget *menubar;
|
|
|
|
GtkWidget *view;
|
|
|
|
GtkWidget *view;
|
|
|
|
GtkWidget* scrolledwin;
|
|
|
|
GtkWidget *scrolledwin;
|
|
|
|
GtkWidget *view2;
|
|
|
|
GtkWidget *view2;
|
|
|
|
GtkWidget* scrolledwin2;
|
|
|
|
GtkWidget *scrolledwin2;
|
|
|
|
|
|
|
|
GtkWidget *scrolledwin3;
|
|
|
|
GtkWidget *montx;
|
|
|
|
GtkWidget *montx;
|
|
|
|
GtkWidget *monsup;
|
|
|
|
GtkWidget *monsup;
|
|
|
|
GtkWidget *monnode;
|
|
|
|
GtkWidget *monnode;
|
|
|
|
@ -186,25 +169,30 @@ GtkWidget *encol;
|
|
|
|
GtkWidget *mui;
|
|
|
|
GtkWidget *mui;
|
|
|
|
GtkWidget *addpor;
|
|
|
|
GtkWidget *addpor;
|
|
|
|
GtkWidget *menubar;
|
|
|
|
GtkWidget *menubar;
|
|
|
|
GtkWidget *conmenu, *conn_item, *Conn[4], *Conn2, *Conn3, *Conn4;
|
|
|
|
GtkWidget *conmenu, *conn_item, *Conn[8], *Conn2, *Conn3, *Conn4, *Conn5, *Conn6, *Conn7, *Conn8;
|
|
|
|
GtkWidget *discmenu, *dis_item, sid_item;
|
|
|
|
GtkWidget *discmenu, *dis_item, sid_item;
|
|
|
|
GtkWidget *cfgmenu, *tcp_item, *font_item, *strip_item, *logmon_item, *logout_item, *cfg_item, *chat_term, *Cfg[4], *Cfg2, *Cfg3, *Cfg4;
|
|
|
|
GtkWidget *cfgmenu, *tcp_item, *font_item, *strip_item, *logmon_item, *logout_item, *cfg_item, *chat_term, *Cfg[8], *Cfg2, *Cfg3, *Cfg4, *Cfg5, *Cfg6, *Cfg7, *Cfg8;
|
|
|
|
GtkWidget *monmenu, *mon_item, *mon[32];
|
|
|
|
GtkWidget *monmenu, *mon_item, *mon[32];
|
|
|
|
GtkWidget *tcpmenu;
|
|
|
|
GtkWidget *tcpmenu;
|
|
|
|
GtkWidget *enbel, *enbel_item;
|
|
|
|
GtkWidget *enbel, *enbel_item;
|
|
|
|
GtkWidget *propmenu,*propitem;
|
|
|
|
GtkWidget *propmenu,*propitem,*Prop;
|
|
|
|
|
|
|
|
GtkWidget *text_view, *font_select_dlg;
|
|
|
|
|
|
|
|
GtkWidget *font_select_dlg_ok, *font_select_dlg_apply, *font_select_dlg_cancel;
|
|
|
|
|
|
|
|
gchar *fontname;
|
|
|
|
GtkTextTag *rtag, *btag, *tag[256], *tagm[256];
|
|
|
|
GtkTextTag *rtag, *btag, *tag[256], *tagm[256];
|
|
|
|
|
|
|
|
|
|
|
|
void EnableDisconnectMenu();
|
|
|
|
void EnableDisconnectMenu();
|
|
|
|
void DisableConnectMenu();
|
|
|
|
void DisableConnectMenu();
|
|
|
|
void EnableConnectMenu();
|
|
|
|
void EnableConnectMenu();
|
|
|
|
void DisableDisconnectMenu();
|
|
|
|
void DisableDisconnectMenu();
|
|
|
|
|
|
|
|
void get_fontname(GtkWidget *, gpointer);
|
|
|
|
|
|
|
|
void apply_fontname(GtkWidget *, gpointer);
|
|
|
|
|
|
|
|
void open_font_select_dlg(GtkWidget *, gpointer);
|
|
|
|
|
|
|
|
void font_select_dlg_exit(GtkWidget *, gpointer);
|
|
|
|
void close_application(GtkWidget *widget, gpointer data)
|
|
|
|
void close_application(GtkWidget *widget, gpointer data)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
gtk_main_quit ();
|
|
|
|
gtk_main_quit ();
|
|
|
|
return 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void enter_callback( GtkWidget *widget,
|
|
|
|
void enter_callback( GtkWidget *widget,
|
|
|
|
@ -227,7 +215,6 @@ void enter_callback( GtkWidget *widget,
|
|
|
|
gtk_entry_set_text (GTK_ENTRY (entry), "");
|
|
|
|
gtk_entry_set_text (GTK_ENTRY (entry), "");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void Disconnect(GtkWidget *w, gpointer data);
|
|
|
|
static void Disconnect(GtkWidget *w, gpointer data);
|
|
|
|
static void Toggled(GtkWidget *w, int * data )
|
|
|
|
static void Toggled(GtkWidget *w, int * data )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -238,28 +225,7 @@ static void Toggled(GtkWidget *w, int * data )
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
static void property(GtkWidget *w, gpointer data)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
GtkWidget * dialog = gtk_dialog_new_with_buttons("Properties",
|
|
|
|
|
|
|
|
GTK_WINDOW(window),
|
|
|
|
|
|
|
|
GTK_DIALOG_MODAL,
|
|
|
|
|
|
|
|
GTK_STOCK_OK,
|
|
|
|
|
|
|
|
GTK_STOCK_CANCEL, 2,
|
|
|
|
|
|
|
|
NULL );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GtkWidget *path;
|
|
|
|
|
|
|
|
GtkWidget *label5, *content_area1;
|
|
|
|
|
|
|
|
GtkWidget *entry5;
|
|
|
|
|
|
|
|
content_area1 = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
label5 = gtk_label_new("Path");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gtk_container_add (GTK_CONTAINER (content_area1), label5);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
entry5 = gtk_entry_new();
|
|
|
|
|
|
|
|
gtk_entry_set_max_length (GTK_ENTRY (entry5), 100);
|
|
|
|
|
|
|
|
gtk_widget_show_all (dialog);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
static void Configure(GtkWidget *w, gpointer data)
|
|
|
|
static void Configure(GtkWidget *w, gpointer data)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GtkWidget * dialog = gtk_dialog_new_with_buttons( "Configuration",
|
|
|
|
GtkWidget * dialog = gtk_dialog_new_with_buttons( "Configuration",
|
|
|
|
@ -335,7 +301,6 @@ static void Configure(GtkWidget *w, gpointer data)
|
|
|
|
char *fname = ".BPQTermTCP.ini";
|
|
|
|
char *fname = ".BPQTermTCP.ini";
|
|
|
|
snprintf(path, PATH_MAX, "%s/%s", getenv("HOME"), fname);
|
|
|
|
snprintf(path, PATH_MAX, "%s/%s", getenv("HOME"), fname);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
entry_text = gtk_entry_get_text (GTK_ENTRY (entry1));
|
|
|
|
entry_text = gtk_entry_get_text (GTK_ENTRY (entry1));
|
|
|
|
strcpy(&Host[HostNum][0], entry_text);
|
|
|
|
strcpy(&Host[HostNum][0], entry_text);
|
|
|
|
|
|
|
|
|
|
|
|
@ -349,7 +314,7 @@ static void Configure(GtkWidget *w, gpointer data)
|
|
|
|
strcpy(&Password[HostNum][0], entry_text);
|
|
|
|
strcpy(&Password[HostNum][0], entry_text);
|
|
|
|
|
|
|
|
|
|
|
|
KF = g_key_file_new();
|
|
|
|
KF = g_key_file_new();
|
|
|
|
g_key_file_load_from_file(KF, "BPQTermTCP.ini", 0, NULL);
|
|
|
|
g_key_file_load_from_file(KF, path, 0, NULL);
|
|
|
|
|
|
|
|
|
|
|
|
sprintf(Key, "Host%d", HostNum + 1);
|
|
|
|
sprintf(Key, "Host%d", HostNum + 1);
|
|
|
|
g_key_file_set_string(KF, "Session 1", Key, &Host[HostNum][0]);
|
|
|
|
g_key_file_set_string(KF, "Session 1", Key, &Host[HostNum][0]);
|
|
|
|
@ -366,13 +331,14 @@ static void Configure(GtkWidget *w, gpointer data)
|
|
|
|
|
|
|
|
|
|
|
|
Value = g_key_file_to_data(KF, &length, &error);
|
|
|
|
Value = g_key_file_to_data(KF, &length, &error);
|
|
|
|
|
|
|
|
|
|
|
|
outfile = fopen ("BPQTermTCP.ini", "w");
|
|
|
|
outfile = fopen ( path, "w");
|
|
|
|
fputs(Value, outfile);
|
|
|
|
fputs(Value, outfile);
|
|
|
|
fclose(outfile);
|
|
|
|
fclose(outfile);
|
|
|
|
|
|
|
|
|
|
|
|
g_free(Value);
|
|
|
|
g_free(Value);
|
|
|
|
|
|
|
|
|
|
|
|
g_key_file_free(KF);
|
|
|
|
g_key_file_free(KF);
|
|
|
|
|
|
|
|
ReadConfig();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
gtk_widget_destroy (dialog);
|
|
|
|
gtk_widget_destroy (dialog);
|
|
|
|
@ -446,7 +412,7 @@ GtkWidget *get_menubar_menu(GtkWidget *window)
|
|
|
|
|
|
|
|
|
|
|
|
/* Create the menu items */
|
|
|
|
/* Create the menu items */
|
|
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < 4; i++)
|
|
|
|
for (i = 0; i < 8; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Conn[i] = gtk_check_menu_item_new_with_label (Host[i]);
|
|
|
|
Conn[i] = gtk_check_menu_item_new_with_label (Host[i]);
|
|
|
|
gtk_menu_shell_append (GTK_MENU_SHELL (conmenu), Conn[i]);
|
|
|
|
gtk_menu_shell_append (GTK_MENU_SHELL (conmenu), Conn[i]);
|
|
|
|
@ -468,7 +434,7 @@ GtkWidget *get_menubar_menu(GtkWidget *window)
|
|
|
|
gtk_menu_item_set_submenu (GTK_MENU_ITEM (conn_item), conmenu);
|
|
|
|
gtk_menu_item_set_submenu (GTK_MENU_ITEM (conn_item), conmenu);
|
|
|
|
|
|
|
|
|
|
|
|
dis_item = gtk_menu_item_new_with_label ("Disconnect");
|
|
|
|
dis_item = gtk_menu_item_new_with_label ("Disconnect");
|
|
|
|
g_signal_connect (dis_item, "activate", G_CALLBACK (Disconnect), 0);
|
|
|
|
g_signal_connect (dis_item, "activate", G_CALLBACK (Disconnect), 0);
|
|
|
|
gtk_widget_set_sensitive(dis_item, TRUE);
|
|
|
|
gtk_widget_set_sensitive(dis_item, TRUE);
|
|
|
|
gtk_menu_item_set_submenu (GTK_MENU_ITEM (dis_item), discmenu);
|
|
|
|
gtk_menu_item_set_submenu (GTK_MENU_ITEM (dis_item), discmenu);
|
|
|
|
|
|
|
|
|
|
|
|
@ -487,8 +453,8 @@ GtkWidget *get_menubar_menu(GtkWidget *window)
|
|
|
|
g_signal_connect (chat_term, ("toggled"), G_CALLBACK (Toggled), (void *) &ChatMode);
|
|
|
|
g_signal_connect (chat_term, ("toggled"), G_CALLBACK (Toggled), (void *) &ChatMode);
|
|
|
|
|
|
|
|
|
|
|
|
propitem = gtk_menu_item_new_with_label ("Properties");
|
|
|
|
propitem = gtk_menu_item_new_with_label ("Properties");
|
|
|
|
// g_signal_connect (Prop[i], "activate", G_CALLBACK (property), (void *) i);
|
|
|
|
g_signal_connect(propitem, "activate", G_CALLBACK (open_font_select_dlg), (void*) &font);
|
|
|
|
gtk_menu_item_set_submenu (GTK_MENU_ITEM (propitem), propmenu);
|
|
|
|
//gtk_menu_item_set_submenu (GTK_MENU_ITEM (propitem), propmenu);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tcp_item = gtk_menu_item_new_with_label ("TCP Hosts");
|
|
|
|
tcp_item = gtk_menu_item_new_with_label ("TCP Hosts");
|
|
|
|
@ -572,7 +538,13 @@ gint ScrollTimer(gpointer data)
|
|
|
|
gtk_text_buffer_get_end_iter(text, &iter);
|
|
|
|
gtk_text_buffer_get_end_iter(text, &iter);
|
|
|
|
gtk_text_view_scroll_to_iter ((GtkTextView *)view, &iter, 0.0, FALSE, 0.0, 0.0);
|
|
|
|
gtk_text_view_scroll_to_iter ((GtkTextView *)view, &iter, 0.0, FALSE, 0.0, 0.0);
|
|
|
|
|
|
|
|
|
|
|
|
gtk_text_buffer_get_end_iter(text2, &iter);
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
gint ScrollTimer2(gpointer data)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
GtkTextIter iter;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gtk_text_buffer_get_end_iter(text2, &iter);
|
|
|
|
gtk_text_view_scroll_to_iter ((GtkTextView *)view2, &iter, 0.0, FALSE, 0.0, 0.0);
|
|
|
|
gtk_text_view_scroll_to_iter ((GtkTextView *)view2, &iter, 0.0, FALSE, 0.0, 0.0);
|
|
|
|
|
|
|
|
|
|
|
|
return FALSE;
|
|
|
|
return FALSE;
|
|
|
|
@ -651,7 +623,7 @@ gint PollTimer(gpointer data)
|
|
|
|
else
|
|
|
|
else
|
|
|
|
return TRUE;
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
|
|
|
|
sprintf(Title,"BPQTermTCP Version %s - Disconnected", VersionString);
|
|
|
|
sprintf(Title,"TermTCP Version %s - Disconnected", VersionString);
|
|
|
|
gtk_window_set_title (GTK_WINDOW (window), Title);
|
|
|
|
gtk_window_set_title (GTK_WINDOW (window), Title);
|
|
|
|
DisableDisconnectMenu();
|
|
|
|
DisableDisconnectMenu();
|
|
|
|
EnableConnectMenu();
|
|
|
|
EnableConnectMenu();
|
|
|
|
@ -672,17 +644,14 @@ gint PollTimer(gpointer data)
|
|
|
|
|
|
|
|
|
|
|
|
static GtkWidget *create_monitor ( void )
|
|
|
|
static GtkWidget *create_monitor ( void )
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GtkWidget *tree_view;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
view = gtk_text_view_new ();
|
|
|
|
view = gtk_text_view_new ();
|
|
|
|
text = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
|
|
|
|
text = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
|
|
|
|
gtk_widget_set_size_request (view, 600, 100);
|
|
|
|
|
|
|
|
gtk_text_view_set_editable (GTK_TEXT_VIEW (view), FALSE);
|
|
|
|
gtk_text_view_set_editable (GTK_TEXT_VIEW (view), FALSE);
|
|
|
|
gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), FALSE);
|
|
|
|
gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), FALSE);
|
|
|
|
|
|
|
|
|
|
|
|
scrolledwin = gtk_scrolled_window_new(NULL,NULL);
|
|
|
|
scrolledwin = gtk_scrolled_window_new(NULL,NULL);
|
|
|
|
//gtk_container_set_border_width(GTK_CONTAINER(scrolledwin), 1);
|
|
|
|
gtk_container_set_border_width(GTK_CONTAINER(scrolledwin), 3);
|
|
|
|
gtk_widget_set_size_request(scrolledwin, 600, 100);
|
|
|
|
gtk_widget_set_size_request(scrolledwin, 500, 100);
|
|
|
|
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
|
|
|
|
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
|
|
|
|
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwin), GTK_SHADOW_IN);
|
|
|
|
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwin), GTK_SHADOW_IN);
|
|
|
|
gtk_container_add(GTK_CONTAINER (scrolledwin), view);
|
|
|
|
gtk_container_add(GTK_CONTAINER (scrolledwin), view);
|
|
|
|
@ -699,8 +668,8 @@ static GtkWidget *create_output ( void )
|
|
|
|
gtk_text_view_set_editable (GTK_TEXT_VIEW(view2), FALSE);
|
|
|
|
gtk_text_view_set_editable (GTK_TEXT_VIEW(view2), FALSE);
|
|
|
|
gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW(view2), FALSE);
|
|
|
|
gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW(view2), FALSE);
|
|
|
|
scrolledwin2 = gtk_scrolled_window_new(NULL,NULL);
|
|
|
|
scrolledwin2 = gtk_scrolled_window_new(NULL,NULL);
|
|
|
|
//gtk_container_set_border_width(GTK_CONTAINER(box2), 2);
|
|
|
|
gtk_container_set_border_width(GTK_CONTAINER(scrolledwin2), 3);
|
|
|
|
gtk_widget_set_size_request(scrolledwin2, 100, 100);
|
|
|
|
gtk_widget_set_size_request(scrolledwin2, 500, 100);
|
|
|
|
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin2),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
|
|
|
|
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin2),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
|
|
|
|
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwin2), GTK_SHADOW_IN);
|
|
|
|
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwin2), GTK_SHADOW_IN);
|
|
|
|
gtk_container_add(GTK_CONTAINER(scrolledwin2), view2);
|
|
|
|
gtk_container_add(GTK_CONTAINER(scrolledwin2), view2);
|
|
|
|
@ -709,85 +678,75 @@ static GtkWidget *create_output ( void )
|
|
|
|
return scrolledwin2;
|
|
|
|
return scrolledwin2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void frame_callback(GtkWindow *window,
|
|
|
|
gint delete_event( GtkWidget *widget,
|
|
|
|
GdkEvent *event, gpointer data)
|
|
|
|
GdkEvent *event,
|
|
|
|
{
|
|
|
|
gpointer data )
|
|
|
|
//int x, y;
|
|
|
|
{
|
|
|
|
char buf[10];
|
|
|
|
|
|
|
|
x = event->configure.x;
|
|
|
|
|
|
|
|
y = event->configure.y;
|
|
|
|
|
|
|
|
sprintf(buf, "%d, %d", x, y);
|
|
|
|
|
|
|
|
// gtk_window_set_title(window, buf);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//gint delete_event( GtkWidget *widget,
|
|
|
|
|
|
|
|
// GdkEvent *event,
|
|
|
|
|
|
|
|
// gpointer data )
|
|
|
|
|
|
|
|
//{
|
|
|
|
|
|
|
|
/* If you return FALSE in the "delete_event" signal handler,
|
|
|
|
/* If you return FALSE in the "delete_event" signal handler,
|
|
|
|
* GTK will emit the "destroy" signal. Returning TRUE means
|
|
|
|
* GTK will emit the "destroy" signal. Returning TRUE means
|
|
|
|
* you don't want the window to be destroyed.
|
|
|
|
* you don't want the window to be destroyed.
|
|
|
|
* This is useful for popping up 'are you sure you want to quit?'
|
|
|
|
* This is useful for popping up 'are you sure you want to quit?'
|
|
|
|
* type dialogs. */
|
|
|
|
* type dialogs. */
|
|
|
|
|
|
|
|
|
|
|
|
// g_print ("delete event occurred\n");
|
|
|
|
g_print ("delete event occurred\n");
|
|
|
|
// gtk_window_get_size(GTK_WINDOW(widget), &width, &height);
|
|
|
|
gtk_window_get_size(GTK_WINDOW(widget), &width, &height);
|
|
|
|
// printf("%d %d\n", width, height);
|
|
|
|
gtk_window_get_position(GTK_WINDOW(widget), &x, &y);
|
|
|
|
|
|
|
|
vhandle = gtk_paned_get_position((GtkPaned *)vpaned);
|
|
|
|
|
|
|
|
printf("%d %d %d %d %d\n", x, y, width, height, vhandle);
|
|
|
|
|
|
|
|
//printf("%s\n", Font);
|
|
|
|
|
|
|
|
//gtk_widget_get_style(GtkWidget* window);
|
|
|
|
/* Change TRUE to FALSE and the main window will be destroyed with
|
|
|
|
/* Change TRUE to FALSE and the main window will be destroyed with
|
|
|
|
* a "delete_event". */
|
|
|
|
* a "delete_event". */
|
|
|
|
|
|
|
|
|
|
|
|
// return(FALSE);
|
|
|
|
return(FALSE);
|
|
|
|
//}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int main(int argc, char *argv[])
|
|
|
|
int main(int argc, char *argv[])
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//PangoFontDescription *font_desc;
|
|
|
|
|
|
|
|
int i;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PangoFontDescription *font_desc;
|
|
|
|
|
|
|
|
|
|
|
|
gtk_init (&argc, &argv);
|
|
|
|
gtk_init (&argc, &argv);
|
|
|
|
|
|
|
|
|
|
|
|
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
|
|
|
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
|
|
|
gtk_window_set_title (GTK_WINDOW (window), "Paned Windows");
|
|
|
|
|
|
|
|
gtk_signal_connect (GTK_OBJECT (window), "destroy",
|
|
|
|
gtk_signal_connect (GTK_OBJECT (window), "destroy",
|
|
|
|
GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
|
|
|
|
GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
|
|
|
|
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
|
|
|
|
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
|
|
|
|
gtk_widget_set_usize (GTK_WIDGET(window), 450, 400);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ReadConfig();
|
|
|
|
ReadConfig();
|
|
|
|
|
|
|
|
|
|
|
|
// window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
|
|
|
gtk_window_set_default_size(GTK_WINDOW (window), width, height);
|
|
|
|
//gtk_window_set_default_size(GTK_WINDOW (window),left - right, top - bottom);
|
|
|
|
gtk_widget_set_uposition(GTK_WIDGET(window),gx, gy);
|
|
|
|
gtk_widget_set_uposition(window, left, top);
|
|
|
|
|
|
|
|
gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
|
|
|
|
gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
|
|
|
|
g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (close_application), NULL);
|
|
|
|
g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (close_application), NULL);
|
|
|
|
gtk_window_set_title (GTK_WINDOW (window), "BPQTermTCP");
|
|
|
|
gtk_window_set_title (GTK_WINDOW (window), "TermTCP");
|
|
|
|
gtk_container_set_border_width (GTK_CONTAINER (window), 0);
|
|
|
|
gtk_container_set_border_width (GTK_CONTAINER (window), 0);
|
|
|
|
gtk_window_set_icon(GTK_WINDOW(window), create_pixbuf("bpqicon.png"));
|
|
|
|
gtk_window_set_icon(GTK_WINDOW(window), create_pixbuf("/usr/share/pixmaps/bpqicon.png"));
|
|
|
|
|
|
|
|
//gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
|
|
|
|
// Create a box for the menu
|
|
|
|
//gtk_window_get_frame_dimensions(GTK_WINDOW(window),&left,&top,&right,&bottom);
|
|
|
|
|
|
|
|
|
|
|
|
// g_signal_connect(G_OBJECT(window), "configure-event",
|
|
|
|
|
|
|
|
// G_CALLBACK(frame_callback), NULL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gtk_signal_connect (GTK_OBJECT (window), "delete_event",
|
|
|
|
|
|
|
|
GTK_SIGNAL_FUNC (delete_event), NULL);
|
|
|
|
|
|
|
|
|
|
|
|
// gtk_signal_connect (GTK_OBJECT (window), "delete_event",
|
|
|
|
// Create a box for the menu
|
|
|
|
// GTK_SIGNAL_FUNC (delete_event), NULL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
box1 = gtk_vbox_new (FALSE, 0);
|
|
|
|
box1 = gtk_vbox_new (FALSE, 0);
|
|
|
|
gtk_container_add (GTK_CONTAINER (window), box1);
|
|
|
|
gtk_container_add (GTK_CONTAINER (window), box1);
|
|
|
|
box10 = gtk_vbox_new (FALSE, 0);
|
|
|
|
box10 = gtk_vbox_new (FALSE, 0);
|
|
|
|
|
|
|
|
|
|
|
|
menubar = get_menubar_menu (window);
|
|
|
|
menubar = get_menubar_menu (window);
|
|
|
|
|
|
|
|
|
|
|
|
gtk_box_pack_start (GTK_BOX (box1), menubar, FALSE, TRUE, 1);
|
|
|
|
gtk_box_pack_start (GTK_BOX (box1), menubar, FALSE, TRUE, 1);
|
|
|
|
gtk_container_add (GTK_CONTAINER (box1), box10);
|
|
|
|
gtk_container_add (GTK_CONTAINER (box1), box10);
|
|
|
|
|
|
|
|
|
|
|
|
gtk_widget_show (window);
|
|
|
|
gtk_widget_show (window);
|
|
|
|
|
|
|
|
|
|
|
|
vpaned = gtk_vpaned_new ();
|
|
|
|
vpaned = gtk_vpaned_new ();
|
|
|
|
gtk_container_add (GTK_CONTAINER (box10), vpaned);
|
|
|
|
gtk_container_add (GTK_CONTAINER (box10), vpaned);
|
|
|
|
|
|
|
|
gtk_paned_set_position(GTK_PANED(vpaned), vhandle);
|
|
|
|
gtk_widget_show (vpaned);
|
|
|
|
gtk_widget_show (vpaned);
|
|
|
|
|
|
|
|
|
|
|
|
/* Now create the contents of the two halves of the window */
|
|
|
|
/* Now create the contents of the two halves of the window */
|
|
|
|
@ -799,33 +758,36 @@ int main(int argc, char *argv[])
|
|
|
|
frame2 = create_output ();
|
|
|
|
frame2 = create_output ();
|
|
|
|
gtk_paned_add2 (GTK_PANED (vpaned), frame2);
|
|
|
|
gtk_paned_add2 (GTK_PANED (vpaned), frame2);
|
|
|
|
gtk_widget_show (frame2);
|
|
|
|
gtk_widget_show (frame2);
|
|
|
|
// gtk_widget_show(box2);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Separator */
|
|
|
|
/* Separator */
|
|
|
|
separator = gtk_hseparator_new ();
|
|
|
|
separator = gtk_hseparator_new ();
|
|
|
|
gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
|
|
|
|
gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
|
|
|
|
|
|
|
|
|
|
|
|
box2 = gtk_vbox_new (FALSE, 10);
|
|
|
|
box2 = gtk_vbox_new (FALSE, 10);
|
|
|
|
gtk_container_set_border_width (GTK_CONTAINER (box2), 1);
|
|
|
|
gtk_container_set_border_width (GTK_CONTAINER (box2), 1);
|
|
|
|
gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, FALSE, 0);
|
|
|
|
gtk_box_pack_start (GTK_BOX (box10), box2, FALSE, FALSE, 0);
|
|
|
|
|
|
|
|
|
|
|
|
// set up the text entry line
|
|
|
|
// set up the text entry line
|
|
|
|
|
|
|
|
|
|
|
|
entry = gtk_entry_new();
|
|
|
|
entry = gtk_entry_new();
|
|
|
|
gtk_entry_set_max_length (GTK_ENTRY (entry), 300);
|
|
|
|
//gtk_entry_new_with_buffer(text);
|
|
|
|
|
|
|
|
gtk_entry_set_max_length (GTK_ENTRY (entry), width);
|
|
|
|
gtk_entry_set_activates_default(GTK_ENTRY (entry), TRUE);
|
|
|
|
gtk_entry_set_activates_default(GTK_ENTRY (entry), TRUE);
|
|
|
|
g_signal_connect (G_OBJECT (entry), "activate", G_CALLBACK (enter_callback), (gpointer) entry);
|
|
|
|
g_signal_connect (G_OBJECT (entry), "activate", G_CALLBACK (enter_callback), (gpointer) entry);
|
|
|
|
gtk_box_pack_start (GTK_BOX (box2), entry, FALSE, FALSE, 0);
|
|
|
|
gtk_box_pack_start (GTK_BOX (box2), entry, FALSE, FALSE, 0);
|
|
|
|
|
|
|
|
gtk_widget_grab_focus(entry);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gtk_widget_show_all (window);
|
|
|
|
|
|
|
|
|
|
|
|
/* Change default font throughout the widget */
|
|
|
|
/* Change default font throughout the widget */
|
|
|
|
|
|
|
|
|
|
|
|
// font_desc = pango_font_description_from_string ("sans 9");
|
|
|
|
font_desc=pango_font_description_from_string(Font);
|
|
|
|
// gtk_widget_modify_font (entry, font_desc);
|
|
|
|
gtk_widget_modify_font (entry, font_desc);
|
|
|
|
// gtk_widget_modify_font (view, font_desc);
|
|
|
|
gtk_widget_modify_font (view, font_desc);
|
|
|
|
// gtk_widget_modify_font (view2, font_desc);
|
|
|
|
gtk_widget_modify_font (view2, font_desc);
|
|
|
|
// pango_font_description_free (font_desc);
|
|
|
|
// gtk_entry_new_with_buffer();
|
|
|
|
|
|
|
|
//gtk_signal_connect(G_OBJECT(window), "configure-event",
|
|
|
|
gtk_widget_show_all (window);
|
|
|
|
// G_CALLBACK(frame_callback), NULL);
|
|
|
|
|
|
|
|
|
|
|
|
rtag = gtk_text_buffer_create_tag (text, NULL, "foreground", "red", NULL);
|
|
|
|
rtag = gtk_text_buffer_create_tag (text, NULL, "foreground", "red", NULL);
|
|
|
|
btag = gtk_text_buffer_create_tag (text, NULL, "foreground", "blue", NULL);
|
|
|
|
btag = gtk_text_buffer_create_tag (text, NULL, "foreground", "blue", NULL);
|
|
|
|
@ -851,16 +813,24 @@ int main(int argc, char *argv[])
|
|
|
|
gtk_main ();
|
|
|
|
gtk_main ();
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
GKeyFile * KF;
|
|
|
|
GKeyFile * KF;
|
|
|
|
gchar * Value;
|
|
|
|
gchar * Value;
|
|
|
|
GError *error = NULL;
|
|
|
|
GError *error = NULL;
|
|
|
|
gsize length;
|
|
|
|
gsize length;
|
|
|
|
FILE *outfile;
|
|
|
|
FILE *outfile;
|
|
|
|
|
|
|
|
|
|
|
|
KF = g_key_file_new();
|
|
|
|
char path[PATH_MAX];
|
|
|
|
g_key_file_load_from_file(KF, "BPQTermTCP.ini", 0, NULL);
|
|
|
|
char *fname = ".BPQTermTCP.ini";
|
|
|
|
|
|
|
|
snprintf(path, PATH_MAX, "%s/%s", getenv("HOME"), fname);
|
|
|
|
|
|
|
|
|
|
|
|
g_key_file_set_integer(KF, "Session 1", "MTX", mtxparam);
|
|
|
|
KF = g_key_file_new();
|
|
|
|
|
|
|
|
g_key_file_load_from_file(KF, path, 0, NULL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//printf("%d %d\n", width, height);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g_key_file_set_integer(KF, "Session 1", "MTX", mtxparam);
|
|
|
|
g_key_file_set_integer(KF, "Session 1", "MCOM", MCOM);
|
|
|
|
g_key_file_set_integer(KF, "Session 1", "MCOM", MCOM);
|
|
|
|
g_key_file_set_integer(KF, "Session 1", "MonNODES", MonNODES);
|
|
|
|
g_key_file_set_integer(KF, "Session 1", "MonNODES", MonNODES);
|
|
|
|
g_key_file_set_integer(KF, "Session 1", "ChatMode", ChatMode);
|
|
|
|
g_key_file_set_integer(KF, "Session 1", "ChatMode", ChatMode);
|
|
|
|
@ -870,12 +840,19 @@ int main(int argc, char *argv[])
|
|
|
|
g_key_file_set_integer(KF, "Session 1", "MonPorts", MonPorts);
|
|
|
|
g_key_file_set_integer(KF, "Session 1", "MonPorts", MonPorts);
|
|
|
|
g_key_file_set_integer(KF, "Session 1", "PortMask", PortMask);
|
|
|
|
g_key_file_set_integer(KF, "Session 1", "PortMask", PortMask);
|
|
|
|
g_key_file_set_integer(KF, "Session 1", "MUIONLY", muionly);
|
|
|
|
g_key_file_set_integer(KF, "Session 1", "MUIONLY", muionly);
|
|
|
|
// g_key_file_set_string(KF, "Session 1", "Path", &path);
|
|
|
|
|
|
|
|
// printf(Size, "%d,%d,%d,%d", left,top,right,bottom);
|
|
|
|
//sprintf(Font, "%s", Font);
|
|
|
|
|
|
|
|
//g_key_file_set_string(KF, "Session 1", "Font", Font);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sprintf(Position, "%d,%d,%d,%d,%d", x, y, width, height, vhandle);
|
|
|
|
|
|
|
|
g_key_file_set_string(KF, "Session 1", "Position", Position);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//sprintf(monitormon, "%d,%d", xx, yy);
|
|
|
|
|
|
|
|
//g_key_file_set_string(KF, "Session 1", "Scrollwin", monitormon);
|
|
|
|
Value = g_key_file_to_data(KF, &length, &error);
|
|
|
|
Value = g_key_file_to_data(KF, &length, &error);
|
|
|
|
// sprintf(Value, "%d,%d,%d,%d", &left,&top,&right,&bottom);
|
|
|
|
|
|
|
|
// g_key_file_set_string(KF, "Session 1", "Size", &Value);
|
|
|
|
outfile = fopen ( path, "w");
|
|
|
|
outfile = fopen ("BPQTermTCP.ini", "w");
|
|
|
|
|
|
|
|
fputs(Value, outfile);
|
|
|
|
fputs(Value, outfile);
|
|
|
|
fclose(outfile);
|
|
|
|
fclose(outfile);
|
|
|
|
|
|
|
|
|
|
|
|
@ -887,12 +864,116 @@ int main(int argc, char *argv[])
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void open_font_select_dlg(GtkWidget *widget, gpointer data)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
font_select_dlg=gtk_font_selection_dialog_new( "Select Font");
|
|
|
|
|
|
|
|
font_select_dlg_ok=GTK_FONT_SELECTION_DIALOG(font_select_dlg)->ok_button;
|
|
|
|
|
|
|
|
font_select_dlg_apply=GTK_FONT_SELECTION_DIALOG(font_select_dlg)->apply_button;
|
|
|
|
|
|
|
|
font_select_dlg_cancel=GTK_FONT_SELECTION_DIALOG(font_select_dlg)->cancel_button;
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(font_select_dlg_ok), "clicked", G_CALLBACK(get_fontname), NULL);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(font_select_dlg_apply), "clicked", G_CALLBACK(apply_fontname), NULL);
|
|
|
|
|
|
|
|
g_signal_connect(G_OBJECT(font_select_dlg_cancel), "clicked", G_CALLBACK(font_select_dlg_exit), NULL);
|
|
|
|
|
|
|
|
gtk_widget_show_all(font_select_dlg);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void get_fontname(GtkWidget *widget, gpointer data)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
gchar *fontname;
|
|
|
|
|
|
|
|
fontname=gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(font_select_dlg));
|
|
|
|
|
|
|
|
strcpy(Font, fontname);
|
|
|
|
|
|
|
|
PangoFontDescription *font_desc;
|
|
|
|
|
|
|
|
font_desc=pango_font_description_from_string(Font);
|
|
|
|
|
|
|
|
gtk_widget_modify_font (entry, font_desc);
|
|
|
|
|
|
|
|
gtk_widget_modify_font (view, font_desc);
|
|
|
|
|
|
|
|
gtk_widget_modify_font (view2, font_desc);
|
|
|
|
|
|
|
|
gtk_widget_modify_font (window, font_desc);
|
|
|
|
|
|
|
|
pango_font_description_free (font_desc);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GKeyFile * KF;
|
|
|
|
|
|
|
|
gchar * Value;
|
|
|
|
|
|
|
|
GError *error = NULL;
|
|
|
|
|
|
|
|
gsize length;
|
|
|
|
|
|
|
|
FILE *outfile;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
char path[PATH_MAX];
|
|
|
|
|
|
|
|
char *fname = ".BPQTermTCP.ini";
|
|
|
|
|
|
|
|
snprintf(path, PATH_MAX, "%s/%s", getenv("HOME"), fname);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
KF = g_key_file_new();
|
|
|
|
|
|
|
|
g_key_file_load_from_file(KF, path, 0, NULL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sprintf(Font, "%s", fontname);
|
|
|
|
|
|
|
|
g_key_file_set_string(KF, "Session 1", "Font", Font);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Value = g_key_file_to_data(KF, &length, &error);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
outfile = fopen ( path, "w");
|
|
|
|
|
|
|
|
fputs(Value, outfile);
|
|
|
|
|
|
|
|
fclose(outfile);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g_free(Value);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g_key_file_free(KF);
|
|
|
|
|
|
|
|
gtk_widget_destroy(font_select_dlg);
|
|
|
|
|
|
|
|
// gtk_entry_new_with_buffer();
|
|
|
|
|
|
|
|
//return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void apply_fontname(GtkWidget *widget, gpointer data)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
gchar *fontname;
|
|
|
|
|
|
|
|
fontname=gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(font_select_dlg));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PangoFontDescription *font_desc;
|
|
|
|
|
|
|
|
font_desc=pango_font_description_from_string(fontname);
|
|
|
|
|
|
|
|
gtk_widget_modify_font(window, font_desc);
|
|
|
|
|
|
|
|
gtk_widget_modify_font (entry, font_desc);
|
|
|
|
|
|
|
|
gtk_widget_modify_font (view, font_desc);
|
|
|
|
|
|
|
|
gtk_widget_modify_font (view2, font_desc);
|
|
|
|
|
|
|
|
gtk_widget_modify_font(window, font_desc);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GKeyFile * KF;
|
|
|
|
|
|
|
|
gchar * Value;
|
|
|
|
|
|
|
|
GError *error = NULL;
|
|
|
|
|
|
|
|
gsize length;
|
|
|
|
|
|
|
|
FILE *outfile;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
char path[PATH_MAX];
|
|
|
|
|
|
|
|
char *fname = ".BPQTermTCP.ini";
|
|
|
|
|
|
|
|
snprintf(path, PATH_MAX, "%s/%s", getenv("HOME"), fname);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
KF = g_key_file_new();
|
|
|
|
|
|
|
|
g_key_file_load_from_file(KF, path, 0, NULL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sprintf(Font, "%s", fontname);
|
|
|
|
|
|
|
|
g_key_file_set_string(KF, "Session 1", "Font", Font);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Value = g_key_file_to_data(KF, &length, &error);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
outfile = fopen ( path, "w");
|
|
|
|
|
|
|
|
fputs(Value, outfile);
|
|
|
|
|
|
|
|
fclose(outfile);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g_free(Value);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g_key_file_free(KF);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void font_select_dlg_exit(GtkWidget *widget, gpointer data)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
gtk_widget_destroy(font_select_dlg);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void SendTraceOptions()
|
|
|
|
void SendTraceOptions()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
char Buffer[80];
|
|
|
|
char Buffer[80];
|
|
|
|
|
|
|
|
|
|
|
|
int Len = sprintf(Buffer,"\\\\\\\\%x %x %x %x %x %x %x\r", PortMask, mtxparam, MCOM, MonNODES, MONColour, muionly,1);
|
|
|
|
//int Len = sprintf(Buffer,"\\\\\\\\%x %x %x %x %x %x\r", PortMask, mtxparam, MCOM, MonNODES, MONColour, muionly);
|
|
|
|
|
|
|
|
// ** makes the system use utf8 **
|
|
|
|
|
|
|
|
int Len = sprintf(Buffer,"\\\\\\\\%x %x %x %x %x %x %x\r", PortMask, mtxparam, MCOM, MonNODES, MONColour, muionly, 1);
|
|
|
|
send(sock, Buffer, Len, 0);
|
|
|
|
send(sock, Buffer, Len, 0);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -923,7 +1004,7 @@ lineloop:
|
|
|
|
|
|
|
|
|
|
|
|
if (len <= 0)
|
|
|
|
if (len <= 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
g_timeout_add (100, ScrollTimer, 0);
|
|
|
|
g_timeout_add (100, ScrollTimer2, 0);
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -1309,153 +1390,6 @@ MonLoop:
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
|
|
|
|
|
|
gboolean GtkMsg_ShowMessage(GIOChannel *channel, GIOCondition condition, gpointer data)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
gchar message[MAX_MSG_LEN + 10];
|
|
|
|
|
|
|
|
// GtkTextMark* MarkEnd;
|
|
|
|
|
|
|
|
gchar * ptr;
|
|
|
|
|
|
|
|
char * Buffptr;
|
|
|
|
|
|
|
|
char * FEptr = 0;
|
|
|
|
|
|
|
|
int len = 0, MonLen;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// GtkWidget *widgetMsgList = lookup_widget(MainWindow, "textview1");
|
|
|
|
|
|
|
|
// GtkTextBuffer *textMsgList = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widgetMsgList));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (condition & G_IO_HUP)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (SocketActive)
|
|
|
|
|
|
|
|
closesocket(sock);
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sprintf(Title,"BPQTermTCP Version %s - Disconnected", VersionString);
|
|
|
|
|
|
|
|
gtk_window_set_title (GTK_WINDOW (window), Title);
|
|
|
|
|
|
|
|
DisableDisconnectMenu();
|
|
|
|
|
|
|
|
EnableConnectMenu();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WritetoOutputWindow(DisMsg, strlen(DisMsg));
|
|
|
|
|
|
|
|
SocketActive = FALSE;
|
|
|
|
|
|
|
|
Connected = FALSE;
|
|
|
|
|
|
|
|
Disconnecting = FALSE;
|
|
|
|
|
|
|
|
MonData = FALSE;
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ((condition & G_IO_IN) == 0)
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g_io_channel_read_chars (channel, message, MAX_MSG_LEN, &len, NULL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (len == 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (Disconnecting == FALSE)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
shutdown(sock, 2); // SD_BOTH
|
|
|
|
|
|
|
|
Disconnecting = TRUE;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
message[len] = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Look for MON delimiters (FF/FE)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Buffptr = message;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (MonData)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Already in MON State
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FEptr = memchr(Buffptr, 0xfe, len);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!FEptr)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// no FE - so send all to monitor
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WritetoMonWindow(Buffptr, len);
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MonData = FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MonLen = FEptr - Buffptr; // Mon Data, Excluding the FE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WritetoMonWindow(Buffptr, MonLen);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Buffptr = ++FEptr; // Char following FE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (++MonLen < len)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
len -= MonLen;
|
|
|
|
|
|
|
|
goto MonLoop; // See if next in MON or Data
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Nothing Left
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MonLoop:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ptr = memchr(Buffptr, 0xff, len);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (ptr)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Buffer contains Mon Data
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (ptr > Buffptr)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Some Normal Data before the FF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int NormLen = ptr - Buffptr; // Before the FF
|
|
|
|
|
|
|
|
WritetoOutputWindow(Buffptr, NormLen);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
len -= NormLen;
|
|
|
|
|
|
|
|
Buffptr = ptr;
|
|
|
|
|
|
|
|
goto MonLoop;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MonData = TRUE;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FEptr = memchr(Buffptr, 0xfe, len);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (FEptr)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
MonData = FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MonLen = FEptr + 1 - Buffptr; // MonLen includes FF and FE
|
|
|
|
|
|
|
|
WritetoMonWindow(Buffptr+1, MonLen - 2);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
len -= MonLen;
|
|
|
|
|
|
|
|
Buffptr += MonLen; // Char Following FE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (len <= 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
goto MonLoop;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// No FE, so rest of buffer is MON Data
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WritetoMonWindow(Buffptr+1, len -1); // Exclude FF
|
|
|
|
|
|
|
|
// DoRefresh();
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// No FF, so must be session data
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WritetoOutputWindow(Buffptr, len);
|
|
|
|
|
|
|
|
// SlowTimer = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int Telnet_Connected(SOCKET sock, int Error)
|
|
|
|
int Telnet_Connected(SOCKET sock, int Error)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -1561,8 +1495,9 @@ void ReadConfig()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
FILE *infile;
|
|
|
|
FILE *infile;
|
|
|
|
GKeyFile * KF;
|
|
|
|
GKeyFile * KF;
|
|
|
|
gchar * Value;
|
|
|
|
// gchar * Value;
|
|
|
|
gchar * Posn;
|
|
|
|
gchar * Posn;
|
|
|
|
|
|
|
|
// gchar * font;
|
|
|
|
|
|
|
|
|
|
|
|
GError *error = NULL;
|
|
|
|
GError *error = NULL;
|
|
|
|
char path[PATH_MAX];
|
|
|
|
char path[PATH_MAX];
|
|
|
|
@ -1574,13 +1509,16 @@ void ReadConfig()
|
|
|
|
|
|
|
|
|
|
|
|
Posn = g_key_file_get_string (KF, "Session 1", "Position", &error);
|
|
|
|
Posn = g_key_file_get_string (KF, "Session 1", "Position", &error);
|
|
|
|
if (Posn)
|
|
|
|
if (Posn)
|
|
|
|
sscanf(Posn,"%d,%d,%d,%d",&gx,&gy, &width, &height);
|
|
|
|
sscanf(Posn,"%d,%d,%d,%d,%d",&gx,&gy, &width, &height, &vhandle);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
printf("%s %d %d %d %d %d\n", Posn, gx, gy, width, height, vhandle);
|
|
|
|
|
|
|
|
|
|
|
|
printf("%s %d %d %d %d\n", Posn, gx, gy, width, height);
|
|
|
|
fontname = g_key_file_get_string (KF, "Session 1", "Font", &error);
|
|
|
|
|
|
|
|
if (fontname)
|
|
|
|
|
|
|
|
strcpy(Font, fontname);
|
|
|
|
|
|
|
|
|
|
|
|
PortMask = g_key_file_get_integer(KF, "Session 1", "PortMask", &error);
|
|
|
|
PortMask = g_key_file_get_integer(KF, "Session 1", "PortMask", &error);
|
|
|
|
Bells = g_key_file_get_integer(KF, "Session 1", "Bells", &error);
|
|
|
|
Bells = g_key_file_get_integer(KF, "Session 1", "Bells", &error);
|
|
|
|
// StripLF = g_key_file_get_integer(KF, "Session 1", "StripLF", &error);
|
|
|
|
|
|
|
|
MCOM = g_key_file_get_integer(KF, "Session 1", "MCOM", &error);
|
|
|
|
MCOM = g_key_file_get_integer(KF, "Session 1", "MCOM", &error);
|
|
|
|
MONColour = g_key_file_get_integer(KF, "Session 1", "MONColour", &error);
|
|
|
|
MONColour = g_key_file_get_integer(KF, "Session 1", "MONColour", &error);
|
|
|
|
MonNODES= g_key_file_get_integer(KF, "Session 1", "MonNODES", &error);
|
|
|
|
MonNODES= g_key_file_get_integer(KF, "Session 1", "MonNODES", &error);
|
|
|
|
@ -1597,7 +1535,7 @@ void ReadConfig()
|
|
|
|
|
|
|
|
|
|
|
|
g_key_file_free(KF);
|
|
|
|
g_key_file_free(KF);
|
|
|
|
|
|
|
|
|
|
|
|
infile = fopen ("BPQTermTCP.ini", "r");
|
|
|
|
infile = fopen ( path, "r");
|
|
|
|
|
|
|
|
|
|
|
|
if (infile)
|
|
|
|
if (infile)
|
|
|
|
{
|
|
|
|
{
|