@implementation JubGtkChatUI
- initWithTitle: (OFString*)title
- closeBlock: (jub_close_block_t)closeBlock_
- sendBlock: (jub_send_block_t)sendBlock_
+ closeBlock: (jub_close_block_t)closeBlock
+ sendBlock: (jub_send_block_t)sendBlock
{
self = [super init];
@try {
__block volatile BOOL initialized = NO;
- __block GtkWidget *chat_window_;
- __block GtkTextBuffer *chat_buffer_;
+ __block GtkWidget *chat_window;
+ __block GtkTextBuffer *chat_buffer;
- closeBlock = [closeBlock_ copy];
- sendBlock = [sendBlock_ copy];
- bufferEmpty = YES;
+ _closeBlock = [closeBlock copy];
+ _sendBlock = [sendBlock copy];
+ _bufferEmpty = YES;
g_idle_add_block(^{
GtkEntry *chat_entry;
gtk_builder_add_from_file(builder, "data/gtk/chat.ui",
NULL);
- chat_window_ = GTK_WIDGET(
+ chat_window = GTK_WIDGET(
gtk_builder_get_object(builder, "ChatWindow"));
- g_signal_connect(chat_window_, "destroy",
+ g_signal_connect(chat_window, "destroy",
G_CALLBACK(call_close_block), closeBlock);
- chat_view = GTK_TEXT_VIEW(
+ _chat_view = GTK_TEXT_VIEW(
gtk_builder_get_object(builder, "ChatTextView"));
- chat_buffer_ = gtk_text_view_get_buffer(chat_view);
- gtk_text_buffer_create_tag(chat_buffer_, "bold",
+ chat_buffer = gtk_text_view_get_buffer(_chat_view);
+ gtk_text_buffer_create_tag(chat_buffer, "bold",
"weight", PANGO_WEIGHT_BOLD, NULL);
chat_entry = GTK_ENTRY(
g_signal_connect(chat_entry, "key_release_event",
G_CALLBACK(call_send_block), send_params);
- gtk_window_set_title(GTK_WINDOW(chat_window_),
+ gtk_window_set_title(GTK_WINDOW(chat_window),
[title UTF8String]);
- gtk_widget_show(chat_window_);
+ gtk_widget_show(chat_window);
initialized = YES;
while (!initialized);
- chat_buffer = chat_buffer_;
- chat_window = chat_window_;
+ _chat_buffer = chat_buffer;
+ _chat_window = chat_window;
} @catch (id e) {
[self release];
@throw e;
- (void)dealloc
{
- gtk_widget_destroy(chat_window);
- [sendBlock release];
- [closeBlock release];
+ gtk_widget_destroy(_chat_window);
+ [_sendBlock release];
+ [_closeBlock release];
[super dealloc];
}
- (void)addMessage: (OFString*)text
sender: (OFString*)sender
{
- BOOL first = bufferEmpty;
- if (OF_UNLIKELY(bufferEmpty)) bufferEmpty = NO;
+ BOOL first = _bufferEmpty;
+ if (OF_UNLIKELY(_bufferEmpty)) _bufferEmpty = NO;
g_idle_add_block(^{
GtkTextIter end_iter;
GtkTextMark *insert_mark =
- gtk_text_buffer_get_insert(chat_buffer);
+ gtk_text_buffer_get_insert(_chat_buffer);
if (OF_LIKELY(!first))
- gtk_text_buffer_insert_at_cursor(chat_buffer, "\n", 1);
+ gtk_text_buffer_insert_at_cursor(_chat_buffer, "\n", 1);
- gtk_text_buffer_get_end_iter(chat_buffer, &end_iter);
- gtk_text_buffer_insert_with_tags_by_name(chat_buffer, &end_iter,
- [sender UTF8String], [sender UTF8StringLength], "bold",
- NULL);
- gtk_text_buffer_get_end_iter(chat_buffer, &end_iter);
- gtk_text_buffer_insert_with_tags_by_name(chat_buffer, &end_iter,
- ": ", 2, "bold", NULL);
+ gtk_text_buffer_get_end_iter(_chat_buffer, &end_iter);
+ gtk_text_buffer_insert_with_tags_by_name(_chat_buffer,
+ &end_iter, [sender UTF8String], [sender UTF8StringLength],
+ "bold", NULL);
+ gtk_text_buffer_get_end_iter(_chat_buffer, &end_iter);
+ gtk_text_buffer_insert_with_tags_by_name(_chat_buffer,
+ &end_iter, ": ", 2, "bold", NULL);
- gtk_text_buffer_insert_at_cursor(chat_buffer, [text UTF8String],
- [text UTF8StringLength]);
+ gtk_text_buffer_insert_at_cursor(_chat_buffer,
+ [text UTF8String], [text UTF8StringLength]);
- gtk_text_view_scroll_to_mark(chat_view, insert_mark, 0,
+ gtk_text_view_scroll_to_mark(_chat_view, insert_mark, 0,
FALSE, 0, 0);
});
}