void ScreenModel::onScreenAdded(QScreen *scrn) { // Recive screen updates connect(scrn, SIGNAL(geometryChanged(const QRect &)), this, SLOT(onScreenChanged())); onScreenChanged(); }
void initWidgets(void) { guint i; GtkWidget *hboxWidget = NULL; GdkColor color = myTheme.win_bg_color; // TODO: Typ okna winWidget = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width(GTK_CONTAINER(winWidget), 8); gtk_window_set_title(GTK_WINDOW(winWidget), OBS_TITLE); gtk_widget_set_size_request(winWidget, myTheme.win_size_width, myTheme.win_size_heigh); if (myOptions.composite) gdk_color_parse("black", &color); gtk_widget_modify_bg(winWidget, GTK_STATE_NORMAL, &color); gtk_window_set_decorated(GTK_WINDOW(winWidget), myTheme.win_decor); gtk_window_set_skip_taskbar_hint(GTK_WINDOW(winWidget), TRUE); gtk_window_set_skip_pager_hint(GTK_WINDOW(winWidget), TRUE); GTK_WIDGET_SET_FLAGS(winWidget, GTK_CAN_FOCUS); gtk_widget_set_app_paintable(winWidget, TRUE); if (myTheme.win_pos == T_WIN_POS_CENTER) /* Window position - center */ gtk_window_set_position(GTK_WINDOW(winWidget), GTK_WIN_POS_CENTER); else if (myTheme.win_pos == T_WIN_POS_CUSTOM) { /* Window position - custom */ gtk_window_set_position(GTK_WINDOW(winWidget), GTK_WIN_POS_NONE); gtk_window_move(GTK_WINDOW(winWidget), myTheme.win_pos_x, myTheme.win_pos_y); } if (myTheme.win_size == T_WIN_SIZE_FULLSCREEN) /* Window size - fullscreen */ gtk_window_resize(GTK_WINDOW(winWidget), gdk_screen_get_width(gdk_screen_get_default()), gdk_screen_get_height(gdk_screen_get_default())); else if (myTheme.win_size == T_WIN_SIZE_CUSTOM) /* Window size - custom */ gtk_window_resize(GTK_WINDOW(winWidget), myTheme.win_size_width, myTheme.win_size_heigh); g_signal_connect(winWidget, "destroy", G_CALLBACK(onDestroy), NULL); g_signal_connect(winWidget, "key_press_event", G_CALLBACK(onKeyPress), NULL); g_signal_connect(winWidget, "window_state_event", G_CALLBACK(onWindowStateChange), NULL); g_signal_connect(winWidget, "show", G_CALLBACK(onWindowShow), NULL); if (myOptions.composite) { if (gtk_widget_is_composited(winWidget)) { printMessage(MSG_VERB, "Compositing enabled.\n"); g_signal_connect(winWidget, "expose_event", G_CALLBACK(onExpose), NULL); g_signal_connect(winWidget, "screen-changed", G_CALLBACK(onScreenChanged), NULL); onScreenChanged(winWidget, NULL, NULL); } else { printMessage(MSG_WARN, "No compositing, enabling rendered effects!\n"); myOptions.composite = FALSE; } } else { printMessage(MSG_VERB, "Compositing disabled.\n"); } hboxWidget = gtk_hbox_new(FALSE, 0); hboxButtonWidget = gtk_hbutton_box_new(); /*gtk_hbutton_box_set_spacing_default(10);*/ gtk_box_pack_start(GTK_BOX(hboxWidget), gtk_vbox_new(TRUE, 0), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hboxWidget), hboxButtonWidget, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hboxWidget), gtk_vbox_new(TRUE, 0), TRUE, TRUE, 0); gtk_container_add(GTK_CONTAINER(winWidget), hboxWidget); if (myOptions.buttons[0] != ACTION_NONE) { for (i = 0; i <= 8; i++) if (myOptions.buttons[i] != ACTION_NONE) addButton(myOptions.buttons[i]); } else { addButton(ACTION_CANCEL); addButton(ACTION_LOGOUT); addButton(ACTION_RESTART); addButton(ACTION_SHUTDOWN); } }