Example #1
0
static void
change_widget_scale (WidgetOverlay *ovl, ChildData *cd, gdouble new_scale)
{
	widget_overlay_set_child_props (ovl, cd->child, WIDGET_OVERLAY_CHILD_SCALE, new_scale, -1);
	if (ovl->priv->scale_child)
		gtk_range_set_value (ovl->priv->scale_range, new_scale);
}
Example #2
0
static void
widget_overlay_set_property (GObject *object,
			     guint param_id,
			     const GValue *value,
			     GParamSpec *pspec)
{
	WidgetOverlay *ovl = WIDGET_OVERLAY (object);
	if (ovl->priv) {
                switch (param_id) {
                case PROP_ADD_SCALE: {
			gboolean need_scale;
			need_scale = g_value_get_boolean (value);
			if (!need_scale && !ovl->priv->scale_child)
				return;

			if (need_scale && ovl->priv->scale_child) {
				widget_overlay_set_child_props (ovl, ovl->priv->scale_child->child,
								WIDGET_OVERLAY_CHILD_ALPHA, .6,
								-1);
			}
			else if (need_scale) {
				GtkWidget *box, *wid, *button, *image;
				box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
				wid = gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL,
								SCALE_MIN, SCALE_MAX, SCALE_STEP);
				ovl->priv->scale_range = GTK_RANGE (wid);
				g_object_set (G_OBJECT (wid), "draw-value", FALSE, NULL);
				gtk_box_pack_start (GTK_BOX (box), wid, TRUE, TRUE, 0);

				button = gtk_button_new ();
				image = gtk_image_new_from_icon_name ("window-close-symbolic",
								  GTK_ICON_SIZE_MENU);
				gtk_container_add (GTK_CONTAINER (button), image);
				gtk_container_add (GTK_CONTAINER (box), button);
				gtk_widget_set_name (button, "browser-tab-close-button");
				g_signal_connect (button, "clicked",
						  G_CALLBACK (scale_button_clicked_cb), ovl);

				gtk_container_add (GTK_CONTAINER (ovl), box);
				gtk_widget_show_all (box);

				GList *list;
				for (list = ovl->priv->children; list; list = list->next) {
					ChildData *cd = (ChildData*) list->data;
					if (cd->child == box) {
						ovl->priv->scale_child = cd;
						break;
					}
				}
				g_assert (ovl->priv->scale_child);

				ChildData *cd;
				cd = get_first_child (ovl);
				if (cd)
					gtk_range_set_value (ovl->priv->scale_range, cd->scale);
				gtk_range_set_inverted (ovl->priv->scale_range, TRUE);

				g_signal_connect (wid, "value-changed",
						  G_CALLBACK (scale_value_changed_cb), ovl);

				widget_overlay_set_child_props (ovl, box,
								WIDGET_OVERLAY_CHILD_VALIGN,
								WIDGET_OVERLAY_ALIGN_FILL,
								WIDGET_OVERLAY_CHILD_HALIGN,
								WIDGET_OVERLAY_ALIGN_END,
								WIDGET_OVERLAY_CHILD_SCALE, 1.,
								WIDGET_OVERLAY_CHILD_ALPHA, .6,
								-1);
			}
			else {
				widget_overlay_set_child_props (ovl, ovl->priv->scale_child->child,
								WIDGET_OVERLAY_CHILD_ALPHA, 0.,
								-1);
			}
			break;
			}
		}
	}
}
Example #3
0
static void
ui_formgrid_show (GtkWidget *widget)
{
	UiFormGrid *formgrid;
	GtkWidget *ovl, *packed;
	formgrid = UI_FORMGRID (widget);

	if (! formgrid->priv->overlay_grid) {
		/* finalize packing */
		GtkWidget *sw, *vp;
		sw = gtk_scrolled_window_new (NULL, NULL);
		gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
						GTK_POLICY_AUTOMATIC,
						GTK_POLICY_AUTOMATIC);
		gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
						     GTK_SHADOW_NONE);
		gtk_container_add (GTK_CONTAINER (sw), formgrid->priv->raw_grid);
		gtk_widget_show_all (sw);
		packed = sw;

		/* overlay */
		ovl = widget_overlay_new ();
		formgrid->priv->overlay_grid = ovl;
		g_object_set (G_OBJECT (ovl), "add-scale", TRUE, NULL);
		g_object_set (G_OBJECT (ovl), "add-scale", FALSE, NULL);
		gtk_container_add (GTK_CONTAINER (ovl), packed);
		widget_overlay_set_child_props (WIDGET_OVERLAY (ovl), packed,
						WIDGET_OVERLAY_CHILD_HALIGN,
						WIDGET_OVERLAY_ALIGN_FILL,
						WIDGET_OVERLAY_CHILD_VALIGN,
						WIDGET_OVERLAY_ALIGN_FILL,
						WIDGET_OVERLAY_CHILD_SCALE, .9,
						-1);
		gtk_widget_show (ovl);
		gtk_notebook_append_page (GTK_NOTEBOOK (formgrid->priv->nb), ovl, NULL);
	}

	if (! formgrid->priv->overlay_form) {
		/* finalize packing */
		if (formgrid->priv->scroll_form) {
			GtkWidget *sw, *vp;
			sw = gtk_scrolled_window_new (NULL, NULL);
			gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
							GTK_POLICY_AUTOMATIC,
							GTK_POLICY_AUTOMATIC);
			gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
							     GTK_SHADOW_NONE);
			vp = gtk_viewport_new (NULL, NULL);
			gtk_widget_set_name (vp, "gdaui-transparent-background");
			gtk_container_add (GTK_CONTAINER (sw), vp);
			gtk_viewport_set_shadow_type (GTK_VIEWPORT (vp), GTK_SHADOW_NONE);
			gtk_container_add (GTK_CONTAINER (vp), formgrid->priv->raw_form);
			gtk_widget_show_all (sw);
			packed = sw;
		}
		else {
			gtk_widget_show (formgrid->priv->raw_form);
			packed = formgrid->priv->raw_form;
		}
		
		/* overlay */
		ovl = widget_overlay_new ();
		formgrid->priv->overlay_form = ovl;
		g_object_set (G_OBJECT (ovl), "add-scale", TRUE, NULL);
		g_object_set (G_OBJECT (ovl), "add-scale", FALSE, NULL);
		gtk_container_add (GTK_CONTAINER (ovl), packed);
		widget_overlay_set_child_props (WIDGET_OVERLAY (ovl), packed,
						WIDGET_OVERLAY_CHILD_HALIGN,
						WIDGET_OVERLAY_ALIGN_FILL,
						WIDGET_OVERLAY_CHILD_VALIGN,
						WIDGET_OVERLAY_ALIGN_FILL,
						WIDGET_OVERLAY_CHILD_SCALE, 1.,
						-1);
		gtk_widget_show (ovl);
		gtk_notebook_append_page (GTK_NOTEBOOK (formgrid->priv->nb), ovl, NULL);
		gtk_notebook_set_current_page (GTK_NOTEBOOK (formgrid->priv->nb),
					       0);
	}

	((GtkWidgetClass *)parent_class)->show (widget);
	if (! formgrid->priv->autoupdate_possible)
		gtk_widget_hide (formgrid->priv->autoupdate_toggle);
}