]> cgit.babelmonkeys.de Git - jubjub.git/blob - src/gui/gtk/JubGtkUI.m
Open new chat windows when activating a roster row
[jubjub.git] / src / gui / gtk / JubGtkUI.m
1 #import <ObjXMPP/ObjXMPP.h>
2 #include <gtk/gtk.h>
3
4 #import "JubGtkUI.h"
5 #import "JubGtkRosterUI.h"
6
7 void on_roster_window_destroy(GObject *object, gpointer user_data)
8 {
9         gtk_main_quit();
10 }
11
12 @implementation JubGtkUI
13 - initWithConnection: (XMPPConnection*)connection
14 {
15         self = [super init];
16
17         @try {
18                 int *argc;
19                 char ***argv;
20
21                 [[OFApplication sharedApplication] getArgumentCount: &argc
22                                                   andArgumentValues: &argv];
23
24                 gtk_init(argc, argv);
25
26                 builder = gtk_builder_new();
27                 gtk_builder_add_from_file(builder, "data/gtk/roster.ui", NULL);
28
29                 rosterUI = [[JubGtkRosterUI alloc] initWithBuilder: builder
30                                                         connection: connection];
31         } @catch (id e) {
32                 [self release];
33                 @throw e;
34         }
35
36         return self;
37 }
38
39 - (void)dealloc
40 {
41         [rosterUI release];
42         g_object_unref(G_OBJECT(builder));
43
44         [super dealloc];
45 }
46
47 - (void)startUIThread
48 {
49         GtkWidget *roster_window;
50
51         roster_window =
52             GTK_WIDGET(gtk_builder_get_object(builder, "RosterWindow"));
53
54         gtk_builder_connect_signals(builder, NULL);
55
56         gtk_widget_show(roster_window);
57
58         [[OFThread threadWithBlock: ^(void){
59                 gtk_main();
60                 [OFApplication terminate];
61
62                 return nil;
63         }] start];
64 }
65
66 - (id<XMPPRosterDelegate>)rosterDelegate
67 {
68         return rosterUI;
69 }
70 @end