GtkWidget *label_dialog;
GdkFont *text_font = NULL;
PangoFontDescription *font_desc;
-GtkAdjustment *vadj;
pthread_mutex_t cmd_mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cmd_wait;
char cmd[1000];
static void terminate_console(int sig);
static gint message_handler(gpointer data);
static int initial_connect_to_director(gpointer data);
+static void set_scroll_bar_to_end(void);
/* Static variables */
static char *configfile = NULL;
memset(&jcr, 0, sizeof(jcr));
- set_statusf(_(" Connecting to Director %s:%d\n"), dir->address,dir->DIRport);
- set_textf(_("Connecting to Director %s:%d\n"), dir->address,dir->DIRport);
+ set_statusf(_(" Connecting to Director %s:%d"), dir->address,dir->DIRport);
+ set_textf(_("Connecting to Director %s:%d\n\n"), dir->address,dir->DIRport);
-// while (gtk_events_pending()) { /* fully paint screen */
-// gtk_main_iteration();
-// }
+ while (gtk_events_pending()) { /* fully paint screen */
+ gtk_main_iteration();
+ }
UA_sock = bnet_connect(NULL, 5, 15, "Director daemon", dir->address,
NULL, dir->DIRport, 0);
if (UA_sock == NULL) {
int len;
va_start(arg_ptr, fmt);
len = bvsnprintf(buf, sizeof(buf), fmt, arg_ptr);
+ va_end(arg_ptr);
set_text(buf, len);
}
if (text_chars > MAX_TEXT_CHARS) {
truncate_text_chars();
}
- buf_len = gtk_text_buffer_get_char_count(textbuf);
- gtk_text_buffer_get_iter_at_offset(textbuf, &iter, buf_len - 1);
- gtk_text_iter_set_offset(&iter, buf_len);
- /*
- * Force the scroll bars to the bottom so that most
- * recent text is on screen.
- */
- if (ready || at_prompt) {
- vadj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(scroll1));
- gtk_adjustment_set_value(vadj, vadj->upper);
- }
+ set_scroll_bar_to_end();
}
void set_statusf(char *fmt, ...)
int len;
va_start(arg_ptr, fmt);
len = bvsnprintf(buf, sizeof(buf), fmt, arg_ptr);
+ va_end(arg_ptr);
gtk_label_set_text(GTK_LABEL(status1), buf);
+// set_scroll_bar_to_end();
ready = false;
}
void set_status_ready()
{
- GtkTextBuffer *textbuf;
gtk_label_set_text(GTK_LABEL(status1), " Ready");
- if (!ready) {
- textbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text1));
- vadj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(scroll1));
- gtk_adjustment_set_value(vadj, vadj->upper);
- }
ready = true;
+// set_scroll_bar_to_end();
}
void set_status(char *buf)
{
gtk_label_set_text(GTK_LABEL(status1), buf);
+// set_scroll_bar_to_end();
ready = false;
}
+
+static void set_scroll_bar_to_end(void)
+{
+ GtkTextBuffer* textbuf = NULL;
+ GtkTextIter iter;
+ guint buf_len;
+
+ textbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text1));
+ buf_len = gtk_text_buffer_get_char_count(textbuf);
+ gtk_text_buffer_get_iter_at_offset(textbuf, &iter, buf_len - 1);
+ gtk_text_iter_set_offset(&iter, buf_len);
+ gtk_text_buffer_place_cursor(textbuf, &iter);
+ gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(text1),
+ gtk_text_buffer_get_mark(textbuf, "insert"),
+ 0, TRUE, 0.0, 1.0);
+}