Quantcast

Is there a way to open R terminal running in the background

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Is there a way to open R terminal running in the background

Patrick_Schn01
Hello,

I am working on a GUI, which is working well so far.
I am working on a Windows 7 machine with 64 bit R (Microsoft R Open 3.3.2)

Essentially:
1) a VBS executable is used to open the GUI leaving the R terminal running
in the background but not showing using:

CreateObject("Wscript.Shell").Run R.exe CMD BATCH MyGUI.R , 0, TRUE

2) for the GUI I use code similar to that shown below

My question is, when the GUI is opened, an instance of R runs in the
background.
Is there a way to show ('open') that R terminal?  And similarly put it back
as invisible.
I am imagining that I can write an R function to either open this directly
or by using Windows OS commands

I have found  a way to open a terminal using the code at this link, but it
is not ideal (I want an actual R terminal):
http://freesourcecode.net/rprojects/104/sourcecode/ex-RGtk2-terminal.R



# MyGUI.R ##################################################################
library(RGtk2)

# initiate main window
main_window <<- gtkWindow(show = FALSE)
main_window["title"] <- "My GUI"
main_window$setDefaultSize(800, 600) # (width, height)

# problem: red [X] in top-right leaves underlying R instance open
main_window$deletable <- FALSE  # makes the top-right [X] delete option not
work ...
# Can this button be reprogrammed??

# function to read in data file
open_cb <- function(widget, window) {
  dialog <- gtkFileChooserDialog("Choose a CSV file", window, "open",
                                 "gtk-cancel", GtkResponseType["cancel"],
"gtk-open",
                                 GtkResponseType["accept"])
  if (dialog$run() == GtkResponseType["accept"]) {
    fileName <<- dialog$getFilename()
    dat <<- read.csv(fileName, header=TRUE, na.strings=c("","NA"))
  }
  dialog$destroy()
  statusbar$push(info, paste("Dataset", fileName, "is currently loaded."))
}

# variable to indicate whether it is time to stop R
StopNOW <<- 0

quit_cb <- function(widget, window){
  StopNOW <<- 1
  window$destroy()
  quit(save = "no")
}

# Lists actions in dropdown or toolbar menus
actions <- list(
  list("FileMenu", NULL, "Input File"),
  list("Open", "gtk-open", "_Import CSV File", "<control>O",
       "Select a CSV file to load as a spreadsheet", open_cb),
  list("Quit", "gtk-quit", "_Quit", "<control>Q",
       "Quit the application", quit_cb)
)
action_group <- gtkActionGroup("spreadsheetActions")
action_group$addActions(actions, main_window)

ui_manager <- gtkUIManager()
ui_manager$insertActionGroup(action_group, 0)
merge <- ui_manager$newMergeId()
ui_manager$addUi(merge.id = merge, path = "/", name = "menubar", action =
NULL, type = "menubar", top = FALSE)
ui_manager$addUi(merge, "/menubar", "file", "FileMenu", "menu", FALSE)
ui_manager$addUi(merge, "/menubar/file", "open", "Open", "menuitem", FALSE)
ui_manager$addUi(merge, "/", "toolbar", NULL, "toolbar", FALSE)
ui_manager$addUi(merge, "/toolbar", "quit", "Quit", "toolitem", FALSE)

menubar <- ui_manager$getWidget("/menubar")
toolbar <- ui_manager$getWidget("/toolbar")
main_window$addAccelGroup(ui_manager$getAccelGroup())

# Status bar shown at bottom left of GUI
statusbar <- gtkStatusbar()
info <- statusbar$getContextId("info")
statusbar$push(info, "Ready")

notebook <- gtkNotebook()
notebook$setTabPos("bottom")

vbox <- gtkVBox(homogeneous = FALSE, spacing = 0)
vbox$packStart(menubar, expand = FALSE, fill = FALSE, padding = 0)
vbox$packStart(toolbar, FALSE, FALSE, 0) # Uncomment if toolbar is used
vbox$packStart(notebook, TRUE, TRUE, 0)
vbox$packStart(statusbar, FALSE, FALSE, 0)
main_window$add(vbox)

# open GUI window
main_window$show()

gtkWidgetGrabFocus(main_window)

# This repeat loop & stopNOW variable keeps the GUI window open until closed
repeat {
Sys.sleep(0.001)
    if (StopNOW == 1) break
  }
# End GUI Code

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Is there a way to open R terminal running in the background

Duncan Murdoch-2
On 19/04/2017 11:44 AM, Brad P wrote:

> Hello,
>
> I am working on a GUI, which is working well so far.
> I am working on a Windows 7 machine with 64 bit R (Microsoft R Open 3.3.2)
>
> Essentially:
> 1) a VBS executable is used to open the GUI leaving the R terminal running
> in the background but not showing using:
>
> CreateObject("Wscript.Shell").Run R.exe CMD BATCH MyGUI.R , 0, TRUE

I think this is more of a Microsoft question than anything specific to
R.  How do you ask VBS to show you a process that it is running?

No idea where to go with VBS questions.

Duncan Murdoch

>
> 2) for the GUI I use code similar to that shown below
>
> My question is, when the GUI is opened, an instance of R runs in the
> background.
> Is there a way to show ('open') that R terminal?  And similarly put it back
> as invisible.
> I am imagining that I can write an R function to either open this directly
> or by using Windows OS commands
>
> I have found  a way to open a terminal using the code at this link, but it
> is not ideal (I want an actual R terminal):
> http://freesourcecode.net/rprojects/104/sourcecode/ex-RGtk2-terminal.R
>
>
>
> # MyGUI.R ##################################################################
> library(RGtk2)
>
> # initiate main window
> main_window <<- gtkWindow(show = FALSE)
> main_window["title"] <- "My GUI"
> main_window$setDefaultSize(800, 600) # (width, height)
>
> # problem: red [X] in top-right leaves underlying R instance open
> main_window$deletable <- FALSE  # makes the top-right [X] delete option not
> work ...
> # Can this button be reprogrammed??
>
> # function to read in data file
> open_cb <- function(widget, window) {
>   dialog <- gtkFileChooserDialog("Choose a CSV file", window, "open",
>                                  "gtk-cancel", GtkResponseType["cancel"],
> "gtk-open",
>                                  GtkResponseType["accept"])
>   if (dialog$run() == GtkResponseType["accept"]) {
>     fileName <<- dialog$getFilename()
>     dat <<- read.csv(fileName, header=TRUE, na.strings=c("","NA"))
>   }
>   dialog$destroy()
>   statusbar$push(info, paste("Dataset", fileName, "is currently loaded."))
> }
>
> # variable to indicate whether it is time to stop R
> StopNOW <<- 0
>
> quit_cb <- function(widget, window){
>   StopNOW <<- 1
>   window$destroy()
>   quit(save = "no")
> }
>
> # Lists actions in dropdown or toolbar menus
> actions <- list(
>   list("FileMenu", NULL, "Input File"),
>   list("Open", "gtk-open", "_Import CSV File", "<control>O",
>        "Select a CSV file to load as a spreadsheet", open_cb),
>   list("Quit", "gtk-quit", "_Quit", "<control>Q",
>        "Quit the application", quit_cb)
> )
> action_group <- gtkActionGroup("spreadsheetActions")
> action_group$addActions(actions, main_window)
>
> ui_manager <- gtkUIManager()
> ui_manager$insertActionGroup(action_group, 0)
> merge <- ui_manager$newMergeId()
> ui_manager$addUi(merge.id = merge, path = "/", name = "menubar", action =
> NULL, type = "menubar", top = FALSE)
> ui_manager$addUi(merge, "/menubar", "file", "FileMenu", "menu", FALSE)
> ui_manager$addUi(merge, "/menubar/file", "open", "Open", "menuitem", FALSE)
> ui_manager$addUi(merge, "/", "toolbar", NULL, "toolbar", FALSE)
> ui_manager$addUi(merge, "/toolbar", "quit", "Quit", "toolitem", FALSE)
>
> menubar <- ui_manager$getWidget("/menubar")
> toolbar <- ui_manager$getWidget("/toolbar")
> main_window$addAccelGroup(ui_manager$getAccelGroup())
>
> # Status bar shown at bottom left of GUI
> statusbar <- gtkStatusbar()
> info <- statusbar$getContextId("info")
> statusbar$push(info, "Ready")
>
> notebook <- gtkNotebook()
> notebook$setTabPos("bottom")
>
> vbox <- gtkVBox(homogeneous = FALSE, spacing = 0)
> vbox$packStart(menubar, expand = FALSE, fill = FALSE, padding = 0)
> vbox$packStart(toolbar, FALSE, FALSE, 0) # Uncomment if toolbar is used
> vbox$packStart(notebook, TRUE, TRUE, 0)
> vbox$packStart(statusbar, FALSE, FALSE, 0)
> main_window$add(vbox)
>
> # open GUI window
> main_window$show()
>
> gtkWidgetGrabFocus(main_window)
>
> # This repeat loop & stopNOW variable keeps the GUI window open until closed
> repeat {
> Sys.sleep(0.001)
>     if (StopNOW == 1) break
>   }
> # End GUI Code
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Is there a way to open R terminal running in the background

Patrick_Schn01
Duncan,

I was thinking to have an additional button in the GUI which would use an R
function to open the window/process running in the background.
I don't think this is a VBS question, as it is simply used to start the GUI
without opening R and calling it directly.
I suppose this may be considered a Windows question - I will look further
into opening a process running in the background using DOS commands.

Thank you for your time.


On Wed, Apr 19, 2017 at 12:14 PM, Duncan Murdoch <[hidden email]>
wrote:

> On 19/04/2017 11:44 AM, Brad P wrote:
>
>> Hello,
>>
>> I am working on a GUI, which is working well so far.
>> I am working on a Windows 7 machine with 64 bit R (Microsoft R Open 3.3.2)
>>
>> Essentially:
>> 1) a VBS executable is used to open the GUI leaving the R terminal running
>> in the background but not showing using:
>>
>> CreateObject("Wscript.Shell").Run R.exe CMD BATCH MyGUI.R , 0, TRUE
>>
>
> I think this is more of a Microsoft question than anything specific to R.
> How do you ask VBS to show you a process that it is running?
>
> No idea where to go with VBS questions.
>
> Duncan Murdoch
>
>
>> 2) for the GUI I use code similar to that shown below
>>
>> My question is, when the GUI is opened, an instance of R runs in the
>> background.
>> Is there a way to show ('open') that R terminal?  And similarly put it
>> back
>> as invisible.
>> I am imagining that I can write an R function to either open this directly
>> or by using Windows OS commands
>>
>> I have found  a way to open a terminal using the code at this link, but it
>> is not ideal (I want an actual R terminal):
>> http://freesourcecode.net/rprojects/104/sourcecode/ex-RGtk2-terminal.R
>>
>>
>>
>> # MyGUI.R ############################################################
>> ######
>> library(RGtk2)
>>
>> # initiate main window
>> main_window <<- gtkWindow(show = FALSE)
>> main_window["title"] <- "My GUI"
>> main_window$setDefaultSize(800, 600) # (width, height)
>>
>> # problem: red [X] in top-right leaves underlying R instance open
>> main_window$deletable <- FALSE  # makes the top-right [X] delete option
>> not
>> work ...
>> # Can this button be reprogrammed??
>>
>> # function to read in data file
>> open_cb <- function(widget, window) {
>>   dialog <- gtkFileChooserDialog("Choose a CSV file", window, "open",
>>                                  "gtk-cancel", GtkResponseType["cancel"],
>> "gtk-open",
>>                                  GtkResponseType["accept"])
>>   if (dialog$run() == GtkResponseType["accept"]) {
>>     fileName <<- dialog$getFilename()
>>     dat <<- read.csv(fileName, header=TRUE, na.strings=c("","NA"))
>>   }
>>   dialog$destroy()
>>   statusbar$push(info, paste("Dataset", fileName, "is currently loaded."))
>> }
>>
>> # variable to indicate whether it is time to stop R
>> StopNOW <<- 0
>>
>> quit_cb <- function(widget, window){
>>   StopNOW <<- 1
>>   window$destroy()
>>   quit(save = "no")
>> }
>>
>> # Lists actions in dropdown or toolbar menus
>> actions <- list(
>>   list("FileMenu", NULL, "Input File"),
>>   list("Open", "gtk-open", "_Import CSV File", "<control>O",
>>        "Select a CSV file to load as a spreadsheet", open_cb),
>>   list("Quit", "gtk-quit", "_Quit", "<control>Q",
>>        "Quit the application", quit_cb)
>> )
>> action_group <- gtkActionGroup("spreadsheetActions")
>> action_group$addActions(actions, main_window)
>>
>> ui_manager <- gtkUIManager()
>> ui_manager$insertActionGroup(action_group, 0)
>> merge <- ui_manager$newMergeId()
>> ui_manager$addUi(merge.id = merge, path = "/", name = "menubar", action =
>> NULL, type = "menubar", top = FALSE)
>> ui_manager$addUi(merge, "/menubar", "file", "FileMenu", "menu", FALSE)
>> ui_manager$addUi(merge, "/menubar/file", "open", "Open", "menuitem",
>> FALSE)
>> ui_manager$addUi(merge, "/", "toolbar", NULL, "toolbar", FALSE)
>> ui_manager$addUi(merge, "/toolbar", "quit", "Quit", "toolitem", FALSE)
>>
>> menubar <- ui_manager$getWidget("/menubar")
>> toolbar <- ui_manager$getWidget("/toolbar")
>> main_window$addAccelGroup(ui_manager$getAccelGroup())
>>
>> # Status bar shown at bottom left of GUI
>> statusbar <- gtkStatusbar()
>> info <- statusbar$getContextId("info")
>> statusbar$push(info, "Ready")
>>
>> notebook <- gtkNotebook()
>> notebook$setTabPos("bottom")
>>
>> vbox <- gtkVBox(homogeneous = FALSE, spacing = 0)
>> vbox$packStart(menubar, expand = FALSE, fill = FALSE, padding = 0)
>> vbox$packStart(toolbar, FALSE, FALSE, 0) # Uncomment if toolbar is used
>> vbox$packStart(notebook, TRUE, TRUE, 0)
>> vbox$packStart(statusbar, FALSE, FALSE, 0)
>> main_window$add(vbox)
>>
>> # open GUI window
>> main_window$show()
>>
>> gtkWidgetGrabFocus(main_window)
>>
>> # This repeat loop & stopNOW variable keeps the GUI window open until
>> closed
>> repeat {
>> Sys.sleep(0.001)
>>     if (StopNOW == 1) break
>>   }
>> # End GUI Code
>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posti
>> ng-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>>
>

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Is there a way to open R terminal running in the background

Duncan Murdoch-2
On 19/04/2017 12:45 PM, Brad P wrote:
> Duncan,
>
> I was thinking to have an additional button in the GUI which would use
> an R function to open the window/process running in the background.
> I don't think this is a VBS question, as it is simply used to start the
> GUI without opening R and calling it directly.
> I suppose this may be considered a Windows question - I will look
> further into opening a process running in the background using DOS commands.

If you run "R.exe CMD BATCH MyGUI.R", then R doesn't maintain a window
at all.  It just reads input and writes output.  So I think it really is
the higher level thing (VBS in your case, cmd.exe if you run that at a
prompt) that might have the ability to do what you want.

Duncan Murdoch

>
> Thank you for your time.
>
>
> On Wed, Apr 19, 2017 at 12:14 PM, Duncan Murdoch
> <[hidden email] <mailto:[hidden email]>> wrote:
>
>     On 19/04/2017 11:44 AM, Brad P wrote:
>
>         Hello,
>
>         I am working on a GUI, which is working well so far.
>         I am working on a Windows 7 machine with 64 bit R (Microsoft R
>         Open 3.3.2)
>
>         Essentially:
>         1) a VBS executable is used to open the GUI leaving the R
>         terminal running
>         in the background but not showing using:
>
>         CreateObject("Wscript.Shell").Run R.exe CMD BATCH MyGUI.R , 0, TRUE
>
>
>     I think this is more of a Microsoft question than anything specific
>     to R.  How do you ask VBS to show you a process that it is running?
>
>     No idea where to go with VBS questions.
>
>     Duncan Murdoch
>
>
>         2) for the GUI I use code similar to that shown below
>
>         My question is, when the GUI is opened, an instance of R runs in the
>         background.
>         Is there a way to show ('open') that R terminal?  And similarly
>         put it back
>         as invisible.
>         I am imagining that I can write an R function to either open
>         this directly
>         or by using Windows OS commands
>
>         I have found  a way to open a terminal using the code at this
>         link, but it
>         is not ideal (I want an actual R terminal):
>         http://freesourcecode.net/rprojects/104/sourcecode/ex-RGtk2-terminal.R
>         <http://freesourcecode.net/rprojects/104/sourcecode/ex-RGtk2-terminal.R>
>
>
>
>         # MyGUI.R
>         ##################################################################
>         library(RGtk2)
>
>         # initiate main window
>         main_window <<- gtkWindow(show = FALSE)
>         main_window["title"] <- "My GUI"
>         main_window$setDefaultSize(800, 600) # (width, height)
>
>         # problem: red [X] in top-right leaves underlying R instance open
>         main_window$deletable <- FALSE  # makes the top-right [X] delete
>         option not
>         work ...
>         # Can this button be reprogrammed??
>
>         # function to read in data file
>         open_cb <- function(widget, window) {
>           dialog <- gtkFileChooserDialog("Choose a CSV file", window,
>         "open",
>                                          "gtk-cancel",
>         GtkResponseType["cancel"],
>         "gtk-open",
>                                          GtkResponseType["accept"])
>           if (dialog$run() == GtkResponseType["accept"]) {
>             fileName <<- dialog$getFilename()
>             dat <<- read.csv(fileName, header=TRUE, na.strings=c("","NA"))
>           }
>           dialog$destroy()
>           statusbar$push(info, paste("Dataset", fileName, "is currently
>         loaded."))
>         }
>
>         # variable to indicate whether it is time to stop R
>         StopNOW <<- 0
>
>         quit_cb <- function(widget, window){
>           StopNOW <<- 1
>           window$destroy()
>           quit(save = "no")
>         }
>
>         # Lists actions in dropdown or toolbar menus
>         actions <- list(
>           list("FileMenu", NULL, "Input File"),
>           list("Open", "gtk-open", "_Import CSV File", "<control>O",
>                "Select a CSV file to load as a spreadsheet", open_cb),
>           list("Quit", "gtk-quit", "_Quit", "<control>Q",
>                "Quit the application", quit_cb)
>         )
>         action_group <- gtkActionGroup("spreadsheetActions")
>         action_group$addActions(actions, main_window)
>
>         ui_manager <- gtkUIManager()
>         ui_manager$insertActionGroup(action_group, 0)
>         merge <- ui_manager$newMergeId()
>         ui_manager$addUi(merge.id <http://merge.id> = merge, path = "/",
>         name = "menubar", action =
>         NULL, type = "menubar", top = FALSE)
>         ui_manager$addUi(merge, "/menubar", "file", "FileMenu", "menu",
>         FALSE)
>         ui_manager$addUi(merge, "/menubar/file", "open", "Open",
>         "menuitem", FALSE)
>         ui_manager$addUi(merge, "/", "toolbar", NULL, "toolbar", FALSE)
>         ui_manager$addUi(merge, "/toolbar", "quit", "Quit", "toolitem",
>         FALSE)
>
>         menubar <- ui_manager$getWidget("/menubar")
>         toolbar <- ui_manager$getWidget("/toolbar")
>         main_window$addAccelGroup(ui_manager$getAccelGroup())
>
>         # Status bar shown at bottom left of GUI
>         statusbar <- gtkStatusbar()
>         info <- statusbar$getContextId("info")
>         statusbar$push(info, "Ready")
>
>         notebook <- gtkNotebook()
>         notebook$setTabPos("bottom")
>
>         vbox <- gtkVBox(homogeneous = FALSE, spacing = 0)
>         vbox$packStart(menubar, expand = FALSE, fill = FALSE, padding = 0)
>         vbox$packStart(toolbar, FALSE, FALSE, 0) # Uncomment if toolbar
>         is used
>         vbox$packStart(notebook, TRUE, TRUE, 0)
>         vbox$packStart(statusbar, FALSE, FALSE, 0)
>         main_window$add(vbox)
>
>         # open GUI window
>         main_window$show()
>
>         gtkWidgetGrabFocus(main_window)
>
>         # This repeat loop & stopNOW variable keeps the GUI window open
>         until closed
>         repeat {
>         Sys.sleep(0.001)
>             if (StopNOW == 1) break
>           }
>         # End GUI Code
>
>                 [[alternative HTML version deleted]]
>
>         ______________________________________________
>         [hidden email] <mailto:[hidden email]> mailing list
>         -- To UNSUBSCRIBE and more, see
>         https://stat.ethz.ch/mailman/listinfo/r-help
>         <https://stat.ethz.ch/mailman/listinfo/r-help>
>         PLEASE do read the posting guide
>         http://www.R-project.org/posting-guide.html
>         <http://www.R-project.org/posting-guide.html>
>         and provide commented, minimal, self-contained, reproducible code.
>
>
>

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Loading...