-rw-r--r-- | DipstickDlg.cpp | 62 |
1 files changed, 52 insertions, 10 deletions
diff --git a/DipstickDlg.cpp b/DipstickDlg.cpp index ace2aff..f27b219 100644 --- a/DipstickDlg.cpp +++ b/DipstickDlg.cpp | |||
@@ -92,62 +92,65 @@ WORD hi,lo; | |||
92 | m_TimeOut=MAKELONG(lo,hi); | 92 | m_TimeOut=MAKELONG(lo,hi); |
93 | m_bMSWorkAround = app->GetProfileInt("Options","InnermostURL",m_bMSWorkAround); | 93 | m_bMSWorkAround = app->GetProfileInt("Options","InnermostURL",m_bMSWorkAround); |
94 | m_bAutoBest = app->GetProfileInt("Options","AutoBest",m_bAutoBest); | 94 | m_bAutoBest = app->GetProfileInt("Options","AutoBest",m_bAutoBest); |
95 | m_bSmartAdjust = app->GetProfileInt("Options","SmartAdjust",m_bSmartAdjust); | 95 | m_bSmartAdjust = app->GetProfileInt("Options","SmartAdjust",m_bSmartAdjust); |
96 | m_bAdjustInnermost = app->GetProfileInt("Options","AdjustInnermost",m_bAdjustInnermost); | 96 | m_bAdjustInnermost = app->GetProfileInt("Options","AdjustInnermost",m_bAdjustInnermost); |
97 | m_bIgnorelative = app->GetProfileInt("Options","IgnoreRelative",m_bIgnorelative); | 97 | m_bIgnorelative = app->GetProfileInt("Options","IgnoreRelative",m_bIgnorelative); |
98 | m_impexPath = app->GetProfileString("Options","ImportExportPath",m_impexPath); | 98 | m_impexPath = app->GetProfileString("Options","ImportExportPath",m_impexPath); |
99 | //{{AFX_DATA_INIT(CDipstickDlg) | 99 | //{{AFX_DATA_INIT(CDipstickDlg) |
100 | //}}AFX_DATA_INIT | 100 | //}}AFX_DATA_INIT |
101 | // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 | 101 | // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 |
102 | m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); | 102 | m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); |
103 | m_bmpBack.LoadBitmap(IDB_DIABACK); | 103 | m_bmpBack.LoadBitmap(IDB_DIABACK); |
104 | m_bmpBack.GetBitmap(&m_bitmapBack); | 104 | m_bmpBack.GetBitmap(&m_bitmapBack); |
105 | CString tmp; | 105 | CString tmp; |
106 | VERIFY(tmp.LoadString(IDS_REGEX_HTMLURL)); | 106 | VERIFY(tmp.LoadString(IDS_REGEX_HTMLURL)); |
107 | VERIFY(m_reHTMLURL.Compile(tmp,CRegEx::regExtended|CRegEx::regIgnoreCase)); | 107 | VERIFY(m_reHTMLURL.Compile(tmp,CRegEx::regExtended|CRegEx::regIgnoreCase)); |
108 | VERIFY(tmp.LoadString(IDS_REGEX_URL)); | ||
109 | VERIFY(m_reURL.Compile(tmp,CRegEx::regExtended|CRegEx::regIgnoreCase)); | ||
108 | } | 110 | } |
109 | 111 | ||
110 | CDipstickDlg::~CDipstickDlg() | 112 | CDipstickDlg::~CDipstickDlg() |
111 | { | 113 | { |
112 | } | 114 | } |
113 | 115 | ||
114 | void CDipstickDlg::DoDataExchange(CDataExchange* pDX) | 116 | void CDipstickDlg::DoDataExchange(CDataExchange* pDX) |
115 | { | 117 | { |
116 | CDialog::DoDataExchange(pDX); | 118 | CDialog::DoDataExchange(pDX); |
117 | //{{AFX_DATA_MAP(CDipstickDlg) | 119 | //{{AFX_DATA_MAP(CDipstickDlg) |
118 | DDX_Control(pDX, IDC_ADVANCED, m_AdvancedCtl); | 120 | DDX_Control(pDX, IDC_ADVANCED, m_AdvancedCtl); |
119 | DDX_Control(pDX, ID_HELP, m_HelpCtl); | 121 | DDX_Control(pDX, ID_HELP, m_HelpCtl); |
120 | DDX_Control(pDX, IDC_EXIT, m_ExitCtl); | 122 | DDX_Control(pDX, IDC_EXIT, m_ExitCtl); |
121 | DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl); | 123 | DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl); |
122 | DDX_Control(pDX, IDC_MANUALPING, m_ManualPingCtl); | 124 | DDX_Control(pDX, IDC_MANUALPING, m_ManualPingCtl); |
123 | DDX_Control(pDX, IDC_REMOVE, m_RemoveCtl); | 125 | DDX_Control(pDX, IDC_REMOVE, m_RemoveCtl); |
124 | DDX_Control(pDX, IDC_REPINGALL, m_RepingAllCtl); | 126 | DDX_Control(pDX, IDC_REPINGALL, m_RepingAllCtl); |
125 | DDX_Control(pDX, IDC_REPING, m_RepingCtl); | 127 | DDX_Control(pDX, IDC_REPING, m_RepingCtl); |
126 | DDX_Control(pDX, IDC_CLEAR, m_ClearListCtl); | 128 | DDX_Control(pDX, IDC_CLEAR, m_ClearListCtl); |
127 | DDX_Control(pDX, IDC_HOSTLIST, m_HostList); | 129 | DDX_Control(pDX, IDC_HOSTLIST, m_HostList); |
128 | //}}AFX_DATA_MAP | 130 | //}}AFX_DATA_MAP |
129 | } | 131 | } |
130 | 132 | ||
131 | BEGIN_MESSAGE_MAP(CDipstickDlg, CDialog) | 133 | BEGIN_MESSAGE_MAP(CDipstickDlg, CDialog) |
132 | //{{AFX_MSG_MAP(CDipstickDlg) | 134 | //{{AFX_MSG_MAP(CDipstickDlg) |
133 | ON_WM_SYSCOMMAND() | 135 | ON_WM_SYSCOMMAND() |
134 | ON_WM_PAINT() | 136 | ON_WM_PAINT() |
135 | ON_WM_QUERYDRAGICON() | 137 | ON_WM_QUERYDRAGICON() |
136 | ON_WM_DESTROY() | 138 | ON_WM_DESTROY() |
137 | ON_BN_CLICKED(IDC_OPTIONS, OnOptions) | 139 | ON_BN_CLICKED(IDC_OPTIONS, OnOptions) |
140 | ON_MESSAGE(WM_DNP_URLSPING, OnURLSPing) | ||
138 | ON_MESSAGE(WM_DNP_URLPING, OnUrlPing) | 141 | ON_MESSAGE(WM_DNP_URLPING, OnUrlPing) |
139 | ON_MESSAGE(WM_DNP_ACTIVITYCOUNT, OnActivityCount) | 142 | ON_MESSAGE(WM_DNP_ACTIVITYCOUNT, OnActivityCount) |
140 | ON_MESSAGE(WM_DNP_UPDATEHOSTDATA, OnUpdateHostData) | 143 | ON_MESSAGE(WM_DNP_UPDATEHOSTDATA, OnUpdateHostData) |
141 | ON_MESSAGE(WM_DNP_HTML, OnHTMLTransfer) | 144 | ON_MESSAGE(WM_DNP_HTML, OnHTMLTransfer) |
142 | ON_NOTIFY(LVN_COLUMNCLICK, IDC_HOSTLIST, OnColumnclickHostlist) | 145 | ON_NOTIFY(LVN_COLUMNCLICK, IDC_HOSTLIST, OnColumnclickHostlist) |
143 | ON_WM_WINDOWPOSCHANGING() | 146 | ON_WM_WINDOWPOSCHANGING() |
144 | ON_COMMAND(ID_DRAGPAD_OPTIONS, OnDragpadOptions) | 147 | ON_COMMAND(ID_DRAGPAD_OPTIONS, OnDragpadOptions) |
145 | ON_COMMAND(ID_DRAGPAD_SHOWMAINWINDOW, OnDragpadShowmainwindow) | 148 | ON_COMMAND(ID_DRAGPAD_SHOWMAINWINDOW, OnDragpadShowmainwindow) |
146 | ON_COMMAND(ID_DRAGPAD_HELP, OnDragpadHelp) | 149 | ON_COMMAND(ID_DRAGPAD_HELP, OnDragpadHelp) |
147 | ON_COMMAND(ID_DRAGPAD_ABOUT, OnDragpadAbout) | 150 | ON_COMMAND(ID_DRAGPAD_ABOUT, OnDragpadAbout) |
148 | ON_COMMAND(ID_DRAGPAD_EXIT, OnDragpadExit) | 151 | ON_COMMAND(ID_DRAGPAD_EXIT, OnDragpadExit) |
149 | ON_BN_CLICKED(IDC_MANUALPING, OnManualping) | 152 | ON_BN_CLICKED(IDC_MANUALPING, OnManualping) |
150 | ON_COMMAND(ID_DRAGPAD_MANUALPING, OnDragpadManualping) | 153 | ON_COMMAND(ID_DRAGPAD_MANUALPING, OnDragpadManualping) |
151 | ON_COMMAND(ID_DRAGPAD_REPINGALL, OnDragpadRepingAll) | 154 | ON_COMMAND(ID_DRAGPAD_REPINGALL, OnDragpadRepingAll) |
152 | ON_COMMAND(ID_DRAGPAD_REMOVEALL, OnDragpadRemoveAll) | 155 | ON_COMMAND(ID_DRAGPAD_REMOVEALL, OnDragpadRemoveAll) |
153 | ON_BN_CLICKED(IDC_REPING, OnReping) | 156 | ON_BN_CLICKED(IDC_REPING, OnReping) |
@@ -1172,67 +1175,80 @@ UINT cfNIF = RegisterClipboardFormat("Netscape Image Format"); | |||
1172 | CString sourceURL = subs; | 1175 | CString sourceURL = subs; |
1173 | if(!sourceURL.GetLength()) | 1176 | if(!sourceURL.GetLength()) |
1174 | break; | 1177 | break; |
1175 | TRACE0("SourceURL = "+sourceURL+"\n"); | 1178 | TRACE0("SourceURL = "+sourceURL+"\n"); |
1176 | _xferHTML* xf = new _xferHTML; | 1179 | _xferHTML* xf = new _xferHTML; |
1177 | VERIFY(xf->src.Crack(sourceURL)); | 1180 | VERIFY(xf->src.Crack(sourceURL)); |
1178 | LPTSTR htmlBuff = xf->html.GetBuffer(endSelection-startSelection+2); | 1181 | LPTSTR htmlBuff = xf->html.GetBuffer(endSelection-startSelection+2); |
1179 | ASSERT(htmlBuff); | 1182 | ASSERT(htmlBuff); |
1180 | memmove(htmlBuff,&lps[startSelection],endSelection-startSelection+1); | 1183 | memmove(htmlBuff,&lps[startSelection],endSelection-startSelection+1); |
1181 | htmlBuff[endSelection-startSelection+1]=0; | 1184 | htmlBuff[endSelection-startSelection+1]=0; |
1182 | xf->html.ReleaseBuffer(); | 1185 | xf->html.ReleaseBuffer(); |
1183 | if(bTestOnly){ | 1186 | if(bTestOnly){ |
1184 | rv = m_reHTMLURL.Match(xf->html); | 1187 | rv = m_reHTMLURL.Match(xf->html); |
1185 | delete xf; | 1188 | delete xf; |
1186 | }else{ | 1189 | }else{ |
1187 | PostMessage(WM_DNP_HTML,0,(LPARAM)xf); | 1190 | PostMessage(WM_DNP_HTML,0,(LPARAM)xf); |
1191 | rv = TRUE; | ||
1188 | } | 1192 | } |
1189 | }while(FALSE); | 1193 | }while(FALSE); |
1190 | GlobalUnlock(hg); | 1194 | GlobalUnlock(hg); |
1191 | GlobalFree(hg); | 1195 | GlobalFree(hg); |
1192 | return rv; | 1196 | return rv; |
1193 | } | 1197 | } |
1194 | if(pDO->IsDataAvailable(cfNIF)){ | 1198 | if(pDO->IsDataAvailable(cfNIF)){ |
1195 | if(!bTestOnly){ | 1199 | if(!bTestOnly){ |
1196 | HGLOBAL hg = pDO->GetGlobalData(cfNIF); | 1200 | HGLOBAL hg = pDO->GetGlobalData(cfNIF); |
1197 | ASSERT(hg); | 1201 | ASSERT(hg); |
1198 | LPVOID lpv = GlobalLock(hg); | 1202 | LPVOID lpv = GlobalLock(hg); |
1199 | ASSERT(lpv); | 1203 | ASSERT(lpv); |
1200 | struct _nif{ | 1204 | struct _nif{ |
1201 | BYTE data[0x20]; | 1205 | BYTE data[0x20]; |
1202 | DWORD m_offDescr; | 1206 | DWORD m_offDescr; |
1203 | DWORD m_offURL; | 1207 | DWORD m_offURL; |
1204 | DWORD m_offToImage; | 1208 | DWORD m_offToImage; |
1205 | } *nif = (_nif*)lpv; | 1209 | } *nif = (_nif*)lpv; |
1206 | PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString((LPCTSTR)&nif->data[nif->m_offURL])); | 1210 | PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString((LPCTSTR)&nif->data[nif->m_offURL])); |
1207 | GlobalUnlock(hg); | 1211 | GlobalUnlock(hg); |
1208 | GlobalFree(hg); | 1212 | GlobalFree(hg); |
1209 | } | 1213 | } |
1210 | return TRUE; | 1214 | return TRUE; |
1211 | } | 1215 | } |
1212 | if(pDO->IsDataAvailable(CF_TEXT)){ | 1216 | if(pDO->IsDataAvailable(CF_TEXT)){ |
1213 | if(!bTestOnly){ | 1217 | BOOL rv = FALSE; |
1214 | HGLOBAL hg = pDO->GetGlobalData(CF_TEXT); | 1218 | HGLOBAL hg = pDO->GetGlobalData(CF_TEXT); |
1215 | ASSERT(hg); | 1219 | ASSERT(hg); |
1216 | LPVOID lpv = GlobalLock(hg); | 1220 | LPVOID lpv = GlobalLock(hg); |
1217 | ASSERT(lpv); | 1221 | ASSERT(lpv); |
1218 | PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString((LPCTSTR)lpv)); | 1222 | if(bTestOnly){ |
1219 | GlobalUnlock(hg); | 1223 | rv = m_reURL.Match((LPCSTR)lpv); |
1220 | GlobalFree(hg); | 1224 | }else{ |
1225 | CString sel = (LPCSTR)lpv; | ||
1226 | if(m_reURL.Match(sel)) { | ||
1227 | rv = TRUE; | ||
1228 | CString tmp = m_reURL.GetMatch(CRegEx::matchPostMatch); | ||
1229 | if(m_reURL.Match(tmp)) { | ||
1230 | PostMessage(WM_DNP_URLSPING,0,(LPARAM)new CString((LPCSTR)lpv)); | ||
1231 | }else{ | ||
1232 | PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString((LPCTSTR)lpv)); | ||
1233 | } | ||
1234 | } | ||
1221 | } | 1235 | } |
1222 | return TRUE; | 1236 | GlobalUnlock(hg); |
1237 | GlobalFree(hg); | ||
1238 | return rv; | ||
1223 | } | 1239 | } |
1224 | return FALSE; | 1240 | return FALSE; |
1225 | } | 1241 | } |
1226 | 1242 | ||
1227 | LRESULT CDipstickDlg::OnHTMLTransfer(WPARAM wP, LPARAM lP) | 1243 | LRESULT CDipstickDlg::OnHTMLTransfer(WPARAM wP, LPARAM lP) |
1228 | { | 1244 | { |
1229 | _xferHTML* xf = (_xferHTML*)lP; | 1245 | _xferHTML* xf = (_xferHTML*)lP; |
1230 | CSelectURLsDlg su; | 1246 | CSelectURLsDlg su; |
1231 | su.m_bAdjust = m_bSmartAdjust; | 1247 | su.m_bAdjust = m_bSmartAdjust; |
1232 | su.m_bAdjustInnermost = m_bAdjustInnermost; | 1248 | su.m_bAdjustInnermost = m_bAdjustInnermost; |
1233 | BeginWaitCursor(); | 1249 | BeginWaitCursor(); |
1234 | while(m_reHTMLURL.Match(xf->html)){ | 1250 | while(m_reHTMLURL.Match(xf->html)){ |
1235 | CString url = m_reHTMLURL.GetMatch(1); | 1251 | CString url = m_reHTMLURL.GetMatch(1); |
1236 | xf->html = m_reHTMLURL.GetMatch(CRegEx::matchPostMatch); | 1252 | xf->html = m_reHTMLURL.GetMatch(CRegEx::matchPostMatch); |
1237 | if(CCrackURL::GetHostName(url)==url){ | 1253 | if(CCrackURL::GetHostName(url)==url){ |
1238 | if(m_bIgnorelative) | 1254 | if(m_bIgnorelative) |
@@ -1244,32 +1260,58 @@ CSelectURLsDlg su; | |||
1244 | } | 1260 | } |
1245 | if(!su.m_URLs.Find(url)) | 1261 | if(!su.m_URLs.Find(url)) |
1246 | VERIFY(su.m_URLs.AddTail(url)); | 1262 | VERIFY(su.m_URLs.AddTail(url)); |
1247 | } | 1263 | } |
1248 | EndWaitCursor(); | 1264 | EndWaitCursor(); |
1249 | delete xf; | 1265 | delete xf; |
1250 | if(su.DoModal()==IDOK){ | 1266 | if(su.DoModal()==IDOK){ |
1251 | POSITION p = su.m_URLs.GetHeadPosition(); | 1267 | POSITION p = su.m_URLs.GetHeadPosition(); |
1252 | while(p){ | 1268 | while(p){ |
1253 | CString url = su.m_URLs.GetNext(p); | 1269 | CString url = su.m_URLs.GetNext(p); |
1254 | PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString(url)); | 1270 | PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString(url)); |
1255 | } | 1271 | } |
1256 | } | 1272 | } |
1257 | return 0; | 1273 | return 0; |
1258 | } | 1274 | } |
1259 | 1275 | ||
1276 | LRESULT CDipstickDlg::OnURLSPing(WPARAM wP,LPARAM lP) | ||
1277 | { | ||
1278 | CString *sel = (CString*)lP; | ||
1279 | TRACE1("URLS: %s\n",(LPCTSTR)*sel); | ||
1280 | CSelectURLsDlg su; | ||
1281 | su.m_bAdjust = m_bSmartAdjust; | ||
1282 | su.m_bAdjustInnermost = m_bAdjustInnermost; | ||
1283 | BeginWaitCursor(); | ||
1284 | while(m_reURL.Match(*sel)){ | ||
1285 | CString url = m_reURL.GetMatch(CRegEx::matchMatch); | ||
1286 | (*sel) = m_reURL.GetMatch(CRegEx::matchPostMatch); | ||
1287 | if(!su.m_URLs.Find(url)) | ||
1288 | VERIFY(su.m_URLs.AddTail(url)); | ||
1289 | } | ||
1290 | EndWaitCursor(); | ||
1291 | delete sel; | ||
1292 | if(su.DoModal()==IDOK){ | ||
1293 | POSITION p = su.m_URLs.GetHeadPosition(); | ||
1294 | while(p){ | ||
1295 | CString url = su.m_URLs.GetNext(p); | ||
1296 | PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString(url)); | ||
1297 | } | ||
1298 | } | ||
1299 | return 0; | ||
1300 | } | ||
1301 | |||
1260 | UINT CPingyHost::PingProc(LPVOID pParam) | 1302 | UINT CPingyHost::PingProc(LPVOID pParam) |
1261 | { | 1303 | { |
1262 | CPingyHost* pThis = (CPingyHost*)pParam; | 1304 | CPingyHost* pThis = (CPingyHost*)pParam; |
1263 | ASSERT(pThis->m_Daddy); | 1305 | ASSERT(pThis->m_Daddy); |
1264 | return pThis->DoPing(); | 1306 | return pThis->DoPing(); |
1265 | } | 1307 | } |
1266 | 1308 | ||
1267 | UINT CPingyHost::DoPing() | 1309 | UINT CPingyHost::DoPing() |
1268 | { | 1310 | { |
1269 | CSingleLock slock(&m_mutex); | 1311 | CSingleLock slock(&m_mutex); |
1270 | if(!slock.Lock(2000)){ | 1312 | if(!slock.Lock(2000)){ |
1271 | m_Status.LoadString(IDS_PS_FAILEDTOLOCK); | 1313 | m_Status.LoadString(IDS_PS_FAILEDTOLOCK); |
1272 | return 1; | 1314 | return 1; |
1273 | } | 1315 | } |
1274 | m_Pinging = TRUE; | 1316 | m_Pinging = TRUE; |
1275 | m_bToPing = FALSE; | 1317 | m_bToPing = FALSE; |
@@ -1570,17 +1612,17 @@ CSingleLock sl(&m_mutex); | |||
1570 | sl.Unlock(); | 1612 | sl.Unlock(); |
1571 | delete this; | 1613 | delete this; |
1572 | }else{ | 1614 | }else{ |
1573 | if(!AfxBeginThread(CPingyHost::SuicideProc,this)) | 1615 | if(!AfxBeginThread(CPingyHost::SuicideProc,this)) |
1574 | ASSERT(FALSE); | 1616 | ASSERT(FALSE); |
1575 | } | 1617 | } |
1576 | } | 1618 | } |
1577 | 1619 | ||
1578 | UINT CPingyHost::SuicideProc(LPVOID pParam) | 1620 | UINT CPingyHost::SuicideProc(LPVOID pParam) |
1579 | { | 1621 | { |
1580 | CPingyHost* pThis = (CPingyHost*)pParam; | 1622 | CPingyHost* pThis = (CPingyHost*)pParam; |
1581 | CSingleLock sl(&pThis->m_mutex); | 1623 | CSingleLock sl(&pThis->m_mutex); |
1582 | sl.Lock(); | 1624 | sl.Lock(); |
1583 | VERIFY(sl.Unlock()); | 1625 | VERIFY(sl.Unlock()); |
1584 | delete pThis; | 1626 | delete pThis; |
1585 | return 0; | 1627 | return 0; |
1586 | } | 1628 | } \ No newline at end of file |