0

I'm writing a GUI in R that compares a bunch of different plots. I am trying to implement a scrolling window to contain the plots.

What I am having trouble with is controlling the size of a scrolledwindow using Rgtk2:

window = gtkWindow(show = FALSE)
hbox = gtkHBoxNew(homogeneous = FALSE, spacing = 0)
window$add(hbox)
vboxLoad = gtkVBoxNew(homogeneous = FALSE, spacing = 0)
hbox$add(vboxLoad)

scroll = gtkScrolledWindow()
vbox2 = gtkVBoxNew(homogeneous = FALSE, spacing = 0)

scroll$addWithViewport(vbox2)
vboxLoad$add(scroll)

framePlot = gtkFrameNew("Plot1")
framePlot2 = gtkFrameNew("Plot2")

vbox2$add(framePlot)
vbox2$add(framePlot2)

plot1 = gtkDrawingArea()
gtkWidgetSetSizeRequest(plot1,450,400)
asCairoDevice(plot1)
gtkWidgetShow(plot1)
framePlot$add(plot1)

plot2 = gtkDrawingArea()
gtkWidgetSetSizeRequest(plot2,450,400)
asCairoDevice(plot2)
gtkWidgetShow(plot2)
framePlot2$add(plot2)

Gives me something tantalizingly close to what I need, but Rgtk2 does not have a gtk_scrolled_window_set_min_content_width option and I don't know how to use adjustments to achieve the desired effect, i.e:

hadjustment = gtkAdjustmentNew(value = NULL, lower = NULL, upper = NULL, step.incr = NULL, page.incr = NULL, page.size = 600)
gtkScrolledWindowSetHadjustment(scroll, hadjustment)

does not work as a blunt instrument.

Any help would be appreciated.

user2127595
  • 176
  • 14

1 Answers1

0

As usual, I tried to attack the wrong part of the problem. Controlling the size of the box that contains the scrolled window seems to work just fine:

window = gtkWindow(show = FALSE)
hbox = gtkHBoxNew(homogeneous = FALSE, spacing = 0)
window$add(hbox)
vboxLoad = gtkVBoxNew(homogeneous = FALSE, spacing = 0)
vboxd$setSizeRequest(400,400)
hbox$add(vboxLoad)

scroll = gtkScrolledWindow()
vbox2 = gtkVBoxNew(homogeneous = FALSE, spacing = 0)

scroll$addWithViewport(vbox2)
vboxLoad$add(scroll)

framePlot = gtkFrameNew("Plot1")
framePlot2 = gtkFrameNew("Plot2")

vbox2$add(framePlot)
vbox2$add(framePlot2)

plot1 = gtkDrawingArea()
gtkWidgetSetSizeRequest(plot1,450,400)
asCairoDevice(plot1)
gtkWidgetShow(plot1)
framePlot$add(plot1)

plot2 = gtkDrawingArea()
gtkWidgetSetSizeRequest(plot2,450,400)
asCairoDevice(plot2)
gtkWidgetShow(plot2)
framePlot2$add(plot2)
user2127595
  • 176
  • 14