home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Dream 52
/
Amiga_Dream_52.iso
/
Linux
/
Divers
/
yagirc-0.51.tar.gz
/
yagirc-0.51.tar
/
yagirc-0.51
/
gui_connect.c
< prev
next >
Wrap
C/C++ Source or Header
|
1998-05-09
|
4KB
|
152 lines
/*
gui_connect.c : Connect server dialog
Copyright (C) 1998 Timo Sirainen
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <stdio.h>
#include <string.h>
#include <glib.h>
#include "os.h"
#include "gui.h"
#include "irc.h"
#include "commands.h"
static GtkWidget *servdlg = NULL;
static int doubleclick;
/* signal: cancel button pressed */
static void sig_cancel(GtkWidget *dialog)
{
servdlg = NULL;
gui_setup_deinit();
gui_setup_init();
gui_read_config();
gtk_widget_destroy(dialog);
}
/* signal: close button pressed */
static void sig_close(GtkWidget *dialog)
{
servdlg = NULL;
gui_write_config();
gtk_widget_destroy(dialog);
}
/* signal: connect button pressed */
static void sig_connect(GtkWidget *dialog)
{
GtkList *list;
char *data;
data = NULL;
list = gtk_object_get_data(GTK_OBJECT(servdlg), "list");
if (list->selection != NULL)
{
SETUP_SERVER_REC *server;
server = gtk_object_get_data(GTK_OBJECT(list->selection->data), "server");
data = g_strdup(server->name);
}
/*sig_close(dialog);*/
if (data != NULL)
{
char *tmp;
tmp = (char *) g_malloc(strlen(data)+10);
sprintf(tmp, "SERVER %s", data);
irccmd_window(tmp);
g_free(data); g_free(tmp);
}
}
/* signal: mouse button pressed */
static void sig_mousedown(GtkList *list, GdkEventButton *event, GtkWidget *dialog)
{
if (event->button == 1)
{
if (!doubleclick)
doubleclick = 1;
else
{
doubleclick = 0;
sig_connect(dialog);
}
}
}
/* signal: mouse button released */
static void sig_mouseup(GtkList *list, GdkEventButton *event)
{
if (event->button == 1)
{
doubleclick = 0;
}
}
void gui_connect_dialog(void)
{
GtkWidget *button;
GtkWidget *list;
if (servdlg != NULL)
{
/* server dialog already created */
gdk_window_raise(servdlg->window);
return;
}
doubleclick = 0;
servdlg = gtk_dialog_new();
gtk_widget_set_usize(servdlg, 300, 200);
gtk_signal_connect_object (GTK_OBJECT (servdlg), "delete_event",
GTK_SIGNAL_FUNC (sig_cancel), GTK_OBJECT(servdlg));
list = create_local_servers(GTK_DIALOG(servdlg)->vbox, TRUE);
gtk_object_set_data(GTK_OBJECT(servdlg), "list", list);
gtk_signal_connect (GTK_OBJECT (list), "button_press_event",
GTK_SIGNAL_FUNC(sig_mousedown), servdlg);
gtk_signal_connect (GTK_OBJECT (list), "button_release_event",
GTK_SIGNAL_FUNC(sig_mouseup), servdlg);
button = gtk_button_new_with_label (_("Close"));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG(servdlg)->action_area), button, TRUE, TRUE, 10);
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (sig_close), GTK_OBJECT(servdlg));
gtk_widget_show (button);
button = gtk_button_new_with_label (_("Connect"));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG(servdlg)->action_area), button, TRUE, TRUE, 10);
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (sig_connect), GTK_OBJECT(servdlg));
gtk_widget_show (button);
button = gtk_button_new_with_label (_("Cancel"));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG(servdlg)->action_area), button, TRUE, TRUE, 10);
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (sig_cancel), GTK_OBJECT(servdlg));
gtk_widget_show (button);
gtk_widget_show(servdlg);
}