#include <gtk/gtk.h>
#import "JubGtkUI.h"
+#import "JubGtkChatUI.h"
#import "JubGtkRosterUI.h"
void on_roster_window_destroy(GObject *object, gpointer user_data)
}
@implementation JubGtkUI
-- init
+- initWithClient: (JubChatClient*)client;
{
self = [super init];
gtk_init(argc, argv);
- builder = gtk_builder_new();
- gtk_builder_add_from_file(builder, "data/gtk/roster.ui", NULL);
-
- rosterUI = [[JubGtkRosterUI alloc] initWithBuilder: builder];
+ _rosterUI = [[JubGtkRosterUI alloc]
+ initWithClient: client];
} @catch (id e) {
[self release];
@throw e;
- (void)dealloc
{
- [rosterUI release];
- g_object_unref(G_OBJECT(builder));
+ [_rosterUI release];
[super dealloc];
}
- (void)startUIThread
{
- GtkWidget *roster_window;
-
- roster_window =
- GTK_WIDGET(gtk_builder_get_object(builder, "RosterWindow"));
-
- gtk_builder_connect_signals(builder, NULL);
-
- gtk_widget_show(roster_window);
-
[[OFThread threadWithBlock: ^(void){
gtk_main();
[OFApplication terminate];
}] start];
}
-- (id<XMPPRosterDelegate>)rosterDelegate
+- (Class)chatUIClass
+{
+ return [JubGtkChatUI class];
+}
+
+- (void)client: (JubChatClient*)client
+ didChangePresence: (XMPPPresence*)presence
{
- return rosterUI;
+ [_rosterUI client: client
+ didChangePresence: presence];
}
@end