Exemple #1
0
tstring UTF8ToString(const std::string& string) {return WideToMultibyte(UTF8ToWide(string));}
Exemple #2
0
bool CMainWindow::Initialize()
{
    CRegStdDWORD pos(_T("Software\\TortoiseGit\\UDiffViewerPos"), 0);
    CRegStdDWORD width(_T("Software\\TortoiseGit\\UDiffViewerWidth"), (DWORD)640);
    CRegStdDWORD height(_T("Software\\TortoiseGit\\UDiffViewerHeight"), (DWORD)480);
    if (DWORD(pos) && DWORD(width) && DWORD(height))
    {
        RECT rc;
        rc.left = LOWORD(DWORD(pos));
        rc.top = HIWORD(DWORD(pos));
        rc.right = rc.left + DWORD(width);
        rc.bottom = rc.top + DWORD(height);
        HMONITOR hMon = MonitorFromRect(&rc, MONITOR_DEFAULTTONULL);
        if (hMon)
        {
            // only restore the window position if the monitor is valid
            MoveWindow(*this, LOWORD(DWORD(pos)), HIWORD(DWORD(pos)),
                       DWORD(width), DWORD(height), FALSE);
        }
    }

    m_hWndEdit = ::CreateWindow(
                     _T("Scintilla"),
                     _T("Source"),
                     WS_CHILD | WS_VSCROLL | WS_HSCROLL | WS_CLIPCHILDREN,
                     CW_USEDEFAULT, CW_USEDEFAULT,
                     CW_USEDEFAULT, CW_USEDEFAULT,
                     *this,
                     0,
                     hResource,
                     0);
    if (m_hWndEdit == NULL)
        return false;

    RECT rect;
    GetClientRect(*this, &rect);
    ::SetWindowPos(m_hWndEdit, HWND_TOP,
                   rect.left, rect.top,
                   rect.right-rect.left, rect.bottom-rect.top,
                   SWP_SHOWWINDOW);

    m_directFunction = SendMessage(m_hWndEdit, SCI_GETDIRECTFUNCTION, 0, 0);
    m_directPointer = SendMessage(m_hWndEdit, SCI_GETDIRECTPOINTER, 0, 0);

    // Set up the global default style. These attributes are used wherever no explicit choices are made.
    SetAStyle(STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOWTEXT), ::GetSysColor(COLOR_WINDOW),
              // Reusing TortoiseBlame's setting which already have an user friendly
              // pane in TortoiseSVN's Settings dialog, while there is no such
              // pane for TortoiseUDiff.
              CRegStdDWORD(_T("Software\\TortoiseGit\\BlameFontSize"), 10),
              WideToMultibyte(CRegStdString(_T("Software\\TortoiseGit\\BlameFontName"), _T("Courier New"))).c_str());
    SendEditor(SCI_SETTABWIDTH, 4);
    SendEditor(SCI_SETREADONLY, TRUE);
    LRESULT pix = SendEditor(SCI_TEXTWIDTH, STYLE_LINENUMBER, (LPARAM)"_99999");
    SendEditor(SCI_SETMARGINWIDTHN, 0, pix);
    SendEditor(SCI_SETMARGINWIDTHN, 1);
    SendEditor(SCI_SETMARGINWIDTHN, 2);
    //Set the default windows colors for edit controls
    SendEditor(SCI_STYLESETFORE, STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOWTEXT));
    SendEditor(SCI_STYLESETBACK, STYLE_DEFAULT, ::GetSysColor(COLOR_WINDOW));
    SendEditor(SCI_SETSELFORE, TRUE, ::GetSysColor(COLOR_HIGHLIGHTTEXT));
    SendEditor(SCI_SETSELBACK, TRUE, ::GetSysColor(COLOR_HIGHLIGHT));
    SendEditor(SCI_SETCARETFORE, ::GetSysColor(COLOR_WINDOWTEXT));

    return true;
}