Example #1
0
static void report_gui_view(report_gui_t *rg)
{
  static int null_stdout = -1;
  static int null_stderr = -1;
  char *argv[] = {NULL, NULL, NULL};
  char *url;
  int size;

  /* Open /dev/null if not already done */
  if (null_stdout < 0) {
	  null_stdout = open("/dev/null", O_WRONLY);
	  if (null_stdout < 0) {
		  perror("Cannot open '/dev/null' for stdout redirection");
	  }
  }

  if (null_stdout >= 0) {
	  fprintf(stderr, "Browser stdout redirected to /dev/null (fd=%d)\n", null_stdout);
  }

  if (null_stderr < 0) {
	  null_stderr = open("/dev/null", O_WRONLY);
	  if (null_stderr < 0) {
		  perror("Cannot open '/dev/null' for stderr redirection");
	  }
  }

  if (null_stderr >= 0) {
	  fprintf(stderr, "Browser stderr redirected to /dev/null (fd=%d)\n", null_stderr);
  }

  /* Build URL */
  size = strlen(rg->report_name) + 6;
  url = (char *) malloc(size);
  snprintf(url, size, "file:%s", rg->report_name);

  /* Spawn HTML browser */
  argv[0] = get_browser();
  argv[1] = url;
  fprintf(stderr, "Start Test Report viewer: %s %s\n", argv[0], argv[1]);

  if (child_spawn(argv, -1 /* stdin */, null_stdout /* stdout */, null_stderr /* stderr */,
		  (child_handler_t *) NULL, NULL) == NULL) {
	  status_mesg("Cannot execute browser \"%s\"", argv[0]);
  }

  free(url);
}
Example #2
0
void show_history(char * historyfile) {
	  char workstring[1024];
	  // build the browser call string
#ifdef __APPLE__
	  sprintf(workstring,"%s/html/%s",file_name,historyfile);

	  void open_file_with_browser_mac(char *file);

	  open_file_with_browser_mac(workstring);
#else

#ifdef USE_WIN
	  sprintf(workstring,"%s/html/%s",file_name,historyfile);
#else
	  char callstring[1024];
	  get_browser(callstring);
	  sprintf(workstring," %s%s/html/%s",callstring,file_name,historyfile);
#endif
	  launch_command(workstring);
#endif
}
Example #3
0
void Gobby::OperationOpen::read_finish()
{
	// If the last character is a newline character, remove it.
	GtkTextIter end_iter, test_iter;
	gtk_text_buffer_get_end_iter(m_content, &end_iter);
	test_iter = end_iter;
	if(gtk_text_iter_backward_char(&test_iter))
	{
		if(gtk_text_iter_get_char(&test_iter) == '\n')
		{
			gtk_text_buffer_delete(
				m_content, &test_iter, &end_iter);
		}
	}

	gtk_text_buffer_set_modified(m_content, FALSE);

	GtkTextIter insert_iter;
	GtkTextMark* insert = gtk_text_buffer_get_insert(m_content);
	gtk_text_buffer_get_iter_at_mark(m_content, &insert_iter, insert);

	InfUser* user = INF_USER(g_object_new(
		INF_TEXT_TYPE_USER,
		"id", 1,
		"flags", INF_USER_LOCAL,
		"name", m_preferences.user.name.get().c_str(),
		/* The user is made active when the user
		 * switches to the document. */
		"status", INF_USER_INACTIVE,
		"hue", m_preferences.user.hue.get(),
		"caret-position", gtk_text_iter_get_offset(&insert_iter),
		static_cast<void*>(NULL)));

	InfUserTable* user_table = inf_user_table_new();
	inf_user_table_add_user(user_table, user);
	g_object_unref(user);

	InfTextGtkBuffer* text_gtk_buffer =
		inf_text_gtk_buffer_new(m_content, user_table);
	g_object_unref(user_table);

	ConnectionManager& connection_manager =
		get_browser().get_connection_manager();
	InfCommunicationManager* communication_manager =
		connection_manager.get_communication_manager();

	InfBrowser* browser = m_parent.get_browser();

	InfIo* io;
	g_object_get(G_OBJECT(browser), "io", &io, NULL);

	InfTextSession* session = inf_text_session_new_with_user_table(
		communication_manager, INF_TEXT_BUFFER(text_gtk_buffer), io,
		user_table, INF_SESSION_RUNNING, NULL, NULL);

	g_object_unref(io);
	g_object_unref(text_gtk_buffer);

	InfRequest* request = inf_browser_add_note(
		m_parent.get_browser(), m_parent.get_browser_iter(),
		m_name.c_str(), "InfText", NULL,
		INF_SESSION(session), TRUE,
		on_request_finished_static, this);
	g_object_unref(session);

	if(request != NULL)
	{
		m_request = request;
		g_object_ref(m_request);

		// TODO: We can remove the node watch here, but need to have
		// the browser available in on_request_finished then. Maybe
		// just disconnect the signal, or bind it.
	}
}