void CPushDlg::Refresh() { CString WorkingDir=g_Git.m_CurrentDir; WorkingDir.Replace(_T(':'),_T('_')); CRegString remote(CString(_T("Software\\TortoiseGit\\History\\PushRemote\\")+WorkingDir)); m_RemoteReg = remote; int sel = -1; STRING_VECTOR list; m_Remote.Reset(); if(!g_Git.GetRemoteList(list)) { if (list.size() > 1) m_Remote.AddString(CString(MAKEINTRESOURCE(IDS_PROC_PUSHFETCH_ALLREMOTES))); for (unsigned int i = 0; i < list.size(); ++i) { m_Remote.AddString(list[i]); if(list[i] == remote) sel = i + (list.size() > 1 ? 1 : 0); } } else MessageBox(g_Git.GetGitLastErr(_T("Could not get list of remotes.")), _T("TortoiseGit"), MB_ICONERROR); // if the last selected remote was "- All -" and "- All -" is still in the list -> select it if (list.size() > 1 && remote == CString(MAKEINTRESOURCE(IDS_PROC_PUSHFETCH_ALLREMOTES))) sel = 0; m_Remote.SetCurSel(sel); int current = -1; list.clear(); m_BranchSource.Reset(); m_BranchSource.SetMaxHistoryItems(0x7FFFFFFF); if(!g_Git.GetBranchList(list,¤t)) m_BranchSource.SetList(list); else MessageBox(g_Git.GetGitLastErr(_T("Could not get list of local branches.")), _T("TortoiseGit"), MB_ICONERROR); if (wcsncmp(m_BranchSourceName, _T("refs/"), 5) == 0) m_BranchSourceName = m_BranchSourceName.Mid(5); if (wcsncmp(m_BranchSourceName, _T("heads/"), 6) == 0) { m_BranchSourceName = m_BranchSourceName.Mid(6); m_BranchSource.SetCurSel(m_BranchSource.FindStringExact(-1, m_BranchSourceName)); } else if (wcsncmp(m_BranchSourceName, _T("remotes/"), 8) == 0) m_BranchSource.SetCurSel(m_BranchSource.FindStringExact(-1, m_BranchSourceName)); else m_BranchSource.SetCurSel(current); GetRemoteBranch(m_BranchSource.GetString()); this->GetDlgItem(IDOK)->EnableWindow(m_BranchSource.GetCount() != 0); if (list.size() > 1 && m_bPushAllRemotes) m_Remote.SetCurSel(0); m_bPushAllRemotes = FALSE; // reset to FALSE, so that a refresh does not reselect all even if it was already deselected by user; correct value will be set in OnBnClickedOk method }
void CPushDlg::Refresh() { CString WorkingDir=g_Git.m_CurrentDir; WorkingDir.Replace(_T(':'),_T('_')); CRegString remote(CString(_T("Software\\TortoiseGit\\History\\PushRemote\\")+WorkingDir)); m_RemoteReg = remote; int sel = -1; STRING_VECTOR list; m_Remote.Reset(); list.push_back(CString(MAKEINTRESOURCE(IDS_PROC_PUSHFETCH_ALLREMOTES))); if(!g_Git.GetRemoteList(list)) { if (list.size() <= 2) list.erase(list.begin()); for (unsigned int i = 0; i < list.size(); ++i) { m_Remote.AddString(list[i]); if(list[i] == remote) sel = i; } } // if the last selected remote was "- All -" and "- All -" is still in the list -> select it if (list.size() > 1 && remote == CString(MAKEINTRESOURCE(IDS_PROC_PUSHFETCH_ALLREMOTES))) sel = 0; m_Remote.SetCurSel(sel); int current=0; list.clear(); m_BranchSource.Reset(); m_BranchSource.AddString(_T(" ")); // empty string does not work, for removal of remote branches/tags m_BranchSource.SetMaxHistoryItems(0x7FFFFFFF); if(!g_Git.GetBranchList(list,¤t)) { for (unsigned int i = 0; i < list.size(); ++i) m_BranchSource.AddString(list[i]); ++current; // shift for " " } if (wcsncmp(m_BranchSourceName, _T("refs/"), 5) == 0) m_BranchSourceName = m_BranchSourceName.Mid(5); if (wcsncmp(m_BranchSourceName, _T("heads/"), 6) == 0) { m_BranchSourceName = m_BranchSourceName.Mid(6); m_BranchSource.SetCurSel(m_BranchSource.FindStringExact(-1, m_BranchSourceName)); } else if (wcsncmp(m_BranchSourceName, _T("remotes/"), 8) == 0) m_BranchSource.SetCurSel(m_BranchSource.FindStringExact(-1, m_BranchSourceName)); else m_BranchSource.SetCurSel(current); GetRemoteBranch(m_BranchSource.GetString()); this->GetDlgItem(IDOK)->EnableWindow(m_BranchSource.GetCount() != 0); }
void CPushDlg::Refresh() { CString WorkingDir=g_Git.m_CurrentDir; WorkingDir.Replace(_T(':'),_T('_')); CRegString remote(CString(_T("Software\\TortoiseGit\\History\\PushRemote\\")+WorkingDir)); m_RemoteReg = remote; int sel=0; STRING_VECTOR list; m_Remote.Reset(); if(!g_Git.GetRemoteList(list)) { for(unsigned int i=0;i<list.size();i++) { m_Remote.AddString(list[i]); if(list[i] == remote) sel = i; } } m_Remote.SetCurSel(sel); int current=0; list.clear(); m_BranchSource.Reset(); m_BranchSource.SetMaxHistoryItems(0x7FFFFFFF); if(!g_Git.GetBranchList(list,¤t)) { for(unsigned int i=0;i<list.size();i++) m_BranchSource.AddString(list[i]); } if (wcsncmp(m_BranchSourceName, _T("refs/"), 5) == 0) m_BranchSourceName = m_BranchSourceName.Mid(5); if (wcsncmp(m_BranchSourceName, _T("heads/"), 6) == 0) { m_BranchSourceName = m_BranchSourceName.Mid(6); m_BranchSource.SetCurSel(m_BranchSource.FindStringExact(-1, m_BranchSourceName)); } else if (wcsncmp(m_BranchSourceName, _T("remotes/"), 8) == 0) m_BranchSource.SetCurSel(m_BranchSource.FindStringExact(-1, m_BranchSourceName)); else m_BranchSource.SetCurSel(current); GetRemoteBranch(m_BranchSource.GetString()); this->GetDlgItem(IDOK)->EnableWindow(m_BranchSource.GetCount() != 0); }
void CPushDlg::OnCbnSelchangeBranchSource() { GetRemoteBranch(m_BranchSource.GetString()); }