示例#1
0
 void ScreenModel::onScreenAdded(QScreen *scrn) {
     // Recive screen updates
     connect(scrn, SIGNAL(geometryChanged(const QRect &)), this, SLOT(onScreenChanged()));
     onScreenChanged();
 }
示例#2
0
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);
	}
}