Skip to content
Snippets Groups Projects
Select Git revision
  • aa9f17050936a04df0fcc9952947062136bee81c
  • master default protected
  • dev
  • appimage
  • fix_gitlab
  • fixappveyor
  • gitlab
  • fix_ci
  • fix_dbus_error
  • fix_ci_osx
  • sakia020
  • fix_travis#1105
  • feature/backend
  • check_uniq_node_by_endpoints
  • qt5.7
  • feature/agent_architecture
  • translations
  • pyqt5.6
  • qtwebengine
  • pyinstaller
  • landscape
  • 0.53.2
  • 0.53.1
  • 0.53.0
  • 0.52.0
  • 0.51.1
  • 0.51.0
  • 0.50.5
  • 0.50.4
  • 0.50.3
  • 0.50.2
  • 0.50.1
  • 0.50.0
  • 0.33.0rc7
  • 0.33.0rc6
  • 0.33.0rc5
  • 0.33.0rc4
  • 0.33.0rc3
  • 0.33.0rc2
  • 0.33.0rc1
  • 0.32.10post1
41 results

mainwindow.py

Blame
  • utils.cpp 1.61 KiB
    #include "utils.h"
    
    #include <flutter_windows.h>
    #include <io.h>
    #include <stdio.h>
    #include <windows.h>
    
    #include <iostream>
    
    void CreateAndAttachConsole() {
      if (::AllocConsole()) {
        FILE *unused;
        if (freopen_s(&unused, "CONOUT$", "w", stdout)) {
          _dup2(_fileno(stdout), 1);
        }
        if (freopen_s(&unused, "CONOUT$", "w", stderr)) {
          _dup2(_fileno(stdout), 2);
        }
        std::ios::sync_with_stdio();
        FlutterDesktopResyncOutputStreams();
      }
    }
    
    std::vector<std::string> GetCommandLineArguments() {
      // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use.
      int argc;
      wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc);
      if (argv == nullptr) {
        return std::vector<std::string>();
      }
    
      std::vector<std::string> command_line_arguments;
    
      // Skip the first argument as it's the binary name.
      for (int i = 1; i < argc; i++) {
        command_line_arguments.push_back(Utf8FromUtf16(argv[i]));
      }
    
      ::LocalFree(argv);
    
      return command_line_arguments;
    }
    
    std::string Utf8FromUtf16(const wchar_t* utf16_string) {
      if (utf16_string == nullptr) {
        return std::string();
      }
      int target_length = ::WideCharToMultiByte(
          CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string,
          -1, nullptr, 0, nullptr, nullptr);
      if (target_length == 0) {
        return std::string();
      }
      std::string utf8_string;
      utf8_string.resize(target_length);
      int converted_length = ::WideCharToMultiByte(
          CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string,
          -1, utf8_string.data(),
          target_length, nullptr, nullptr);
      if (converted_length == 0) {
        return std::string();
      }
      return utf8_string;
    }