1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-02 03:52:49 -05:00

Having created and used uxsel, it actually turns out to be

practically trivial to put all the pieces together and create a
working prototype of Unix PuTTY! It's missing a lot of things -
notably GUI request boxes for host keys and logfiles and so forth,
the Event Log, mid-session reconfiguration, session loading and
saving, sensible population of the character sets drop-down list and
probably other fiddly little things too - but it will put up a
config box and then create a GUI window containing an SSH connection
to the host you specified, so it's _basically_ there. Woo!

[originally from svn r3020]
This commit is contained in:
Simon Tatham
2003-03-29 19:52:50 +00:00
parent 54aff83bf0
commit a3428ae953
6 changed files with 322 additions and 21 deletions

View File

@ -716,7 +716,7 @@ void dlg_end(void *dlg, int value)
{
struct dlgparam *dp = (struct dlgparam *)dlg;
dp->retval = value;
gtk_main_quit();
gtk_widget_destroy(dp->window);
}
void dlg_refresh(union control *ctrl, void *dlg)
@ -910,7 +910,6 @@ static int listitem_key(GtkWidget *item, GdkEventKey *event, gpointer data,
event->keyval==GDK_Page_Up || event->keyval==GDK_KP_Page_Up)
? 2 : 1;
int i, n;
GtkWidget *thisitem;
GList *children, *chead;
chead = children = gtk_container_children(GTK_CONTAINER(list));
@ -964,13 +963,13 @@ static int listitem_key(GtkWidget *item, GdkEventKey *event, gpointer data,
static int listitem_single_key(GtkWidget *item, GdkEventKey *event,
gpointer data)
{
listitem_key(item, event, data, FALSE);
return listitem_key(item, event, data, FALSE);
}
static int listitem_multi_key(GtkWidget *item, GdkEventKey *event,
gpointer data)
{
listitem_key(item, event, data, TRUE);
return listitem_key(item, event, data, TRUE);
}
static int listitem_button(GtkWidget *item, GdkEventButton *event,
@ -1043,7 +1042,7 @@ static void draglist_down(GtkButton *button, gpointer data)
static void filesel_ok(GtkButton *button, gpointer data)
{
struct dlgparam *dp = (struct dlgparam *)data;
/* struct dlgparam *dp = (struct dlgparam *)data; */
gpointer filesel = gtk_object_get_data(GTK_OBJECT(button), "user-data");
struct uctrl *uc = gtk_object_get_data(GTK_OBJECT(filesel), "user-data");
char *name = gtk_file_selection_get_filename(GTK_FILE_SELECTION(filesel));
@ -1052,7 +1051,7 @@ static void filesel_ok(GtkButton *button, gpointer data)
static void fontsel_ok(GtkButton *button, gpointer data)
{
struct dlgparam *dp = (struct dlgparam *)data;
/* struct dlgparam *dp = (struct dlgparam *)data; */
gpointer fontsel = gtk_object_get_data(GTK_OBJECT(button), "user-data");
struct uctrl *uc = gtk_object_get_data(GTK_OBJECT(fontsel), "user-data");
char *name = gtk_font_selection_dialog_get_font_name
@ -1808,7 +1807,7 @@ int tree_key_press(GtkWidget *widget, GdkEventKey *event, gpointer data)
{
GtkWidget *w = dp->treeitems[i];
int vis = TRUE;
while (w && GTK_IS_TREE_ITEM(w) || GTK_IS_TREE(w)) {
while (w && (GTK_IS_TREE_ITEM(w) || GTK_IS_TREE(w))) {
if (!GTK_WIDGET_VISIBLE(w)) {
vis = FALSE;
break;
@ -1825,7 +1824,6 @@ int tree_key_press(GtkWidget *widget, GdkEventKey *event, gpointer data)
gtk_signal_emit_stop_by_name(GTK_OBJECT(widget),
"key_press_event");
if (j >= 0) {
gint return_val;
gtk_signal_emit_by_name(GTK_OBJECT(dp->treeitems[j]), "toggle");
gtk_widget_grab_focus(dp->treeitems[j]);
}
@ -1892,7 +1890,7 @@ void shortcut_add(struct Shortcuts *scs, GtkWidget *labelw,
}
}
int do_config_box(const char *title)
int do_config_box(const char *title, Config *cfg)
{
GtkWidget *window, *hbox, *vbox, *cols, *label,
*tree, *treescroll, *panels, *panelvbox;
@ -1901,7 +1899,6 @@ int do_config_box(const char *title)
char *path;
GtkTreeItem *treeitemlevels[8];
GtkTree *treelevels[8];
Config cfg;
struct dlgparam dp;
struct sesslist sl;
struct Shortcuts scs;
@ -1909,7 +1906,7 @@ int do_config_box(const char *title)
struct selparam *selparams = NULL;
int nselparams = 0, selparamsize = 0;
do_defaults(NULL, &cfg);
do_defaults(NULL, cfg);
dlg_init(&dp);
@ -2072,7 +2069,7 @@ int do_config_box(const char *title)
dp.treeitems[index] = selparams[index].treeitem;
}
dp.data = &cfg;
dp.data = cfg;
dlg_refresh(NULL, &dp);
dp.shortcuts = &selparams[0].shortcuts;
@ -2218,8 +2215,9 @@ char *x_get_default(const char *key)
int main(int argc, char **argv)
{
Config cfg;
gtk_init(&argc, &argv);
printf("returned %d\n", do_config_box("PuTTY Configuration"));
printf("returned %d\n", do_config_box("PuTTY Configuration", &cfg));
return 0;
}