ギコナビ
リビジョン | bec130f718729a3d07d7de9e47e730b9a600eeae (tree) |
---|---|
日時 | 2007-10-02 01:04:40 |
作者 | cvs2git <cvs2git> |
コミッター | cvs2git |
This commit was manufactured by cvs2svn to create tag 'v1_57_0_733'.
@@ -115,6 +115,7 @@ type | ||
115 | 115 | //-- |
116 | 116 | function TreatSyria(AString: string): string; |
117 | 117 | //-- |
118 | + function AddToken(AString: string; Invisible: Boolean): Boolean; | |
118 | 119 | end; |
119 | 120 | var |
120 | 121 | Abon1 :TAbon; |
@@ -383,14 +384,20 @@ begin | ||
383 | 384 | buftoken := Copy(argline,1,pos-1); |
384 | 385 | Delete(argline,1,pos); |
385 | 386 | if Length(buftoken) > 0 then begin |
386 | - bufstl.Append(buftoken); | |
387 | + // >> ÅnÜég[NÍRgµ¢Å³·é | |
388 | + if AnsiPos('>>', buftoken) <> 1 then begin | |
389 | + bufstl.Append(buftoken); | |
390 | + end; | |
387 | 391 | end else if ( bufstl.Count = 0 ) then begin |
388 | 392 | bufstl.Append(''); |
389 | 393 | end; |
390 | 394 | pos := AnsiPos(#9,argline); |
391 | 395 | end; |
392 | 396 | if Length(argline) > 0 then begin |
393 | - bufstl.Append(argline); | |
397 | + // >> ÅnÜég[NÍRgµ¢Å³·é | |
398 | + if AnsiPos('>>', argline) <> 1 then begin | |
399 | + bufstl.Append(argline); | |
400 | + end; | |
394 | 401 | end; |
395 | 402 | ret := bufstl.Count; |
396 | 403 | SetLength(Ftokens[index],ret); |
@@ -448,6 +455,9 @@ begin | ||
448 | 455 | trgLen := Length(target); |
449 | 456 | |
450 | 457 | for lines := 0 to High(Ftokens) do begin |
458 | + if Length(Ftokens[lines]) = 0 then begin | |
459 | + Continue; | |
460 | + end; | |
451 | 461 | hit := true; |
452 | 462 | bufline := target; |
453 | 463 | pts := PChar(bufline); |
@@ -905,6 +915,32 @@ begin | ||
905 | 915 | Result := Result + AString; |
906 | 916 | end; |
907 | 917 | |
918 | +// NG[ht@CÉÇÁ ÇÁ³ê½êATrueª©¦é | |
919 | +function TAbon.AddToken(AString: string; Invisible: Boolean): Boolean; | |
920 | +var | |
921 | + bufStringList : TStringList; | |
922 | + ngword: String; | |
923 | +begin | |
924 | + Result := False; | |
925 | + if FileExists(GetNGwordpath) then begin | |
926 | + bufStringList := TStringList.Create; | |
927 | + try | |
928 | + bufStringList.LoadFromFile(GetNGwordpath); | |
929 | + if (Invisible) then begin | |
930 | + ngword := #9 + AString; | |
931 | + end else begin | |
932 | + ngword := AString; | |
933 | + end; | |
934 | + if (bufStringList.IndexOf(ngword) = -1) then begin | |
935 | + bufStringList.Add(ngword); | |
936 | + bufStringList.SaveToFile(GetNGwordpath); | |
937 | + Result := True; | |
938 | + end; | |
939 | + finally | |
940 | + bufStringList.Free; | |
941 | + end; | |
942 | + end; | |
943 | +end; | |
908 | 944 | |
909 | 945 | |
910 | 946 | end. |
@@ -1777,9 +1777,6 @@ begin | ||
1777 | 1777 | end; |
1778 | 1778 | |
1779 | 1779 | function TThreadItem.GetCreateDate: TDateTime; |
1780 | -var | |
1781 | - unixtime: Int64; | |
1782 | - tmp: string; | |
1783 | 1780 | begin |
1784 | 1781 | // t@C¼©çXì¬úðßé |
1785 | 1782 | try |
@@ -1787,18 +1784,7 @@ begin | ||
1787 | 1784 | Result := ZERO_DATE |
1788 | 1785 | else begin |
1789 | 1786 | // Ot@CÌg£qð͸µ½à̪Xì¬ú |
1790 | - tmp := ChangeFileExt(FFileName, ''); | |
1791 | - if AnsiPos('_', tmp) <> 0 then | |
1792 | - if AnsiPos('_', tmp) > 9 then | |
1793 | - tmp := Copy(tmp, 1, AnsiPos('_', tmp)-1) | |
1794 | - else | |
1795 | - Delete(tmp, AnsiPos('_', tmp), 1); | |
1796 | - | |
1797 | - if ( Length(tmp) = 9) and ( tmp[1] = '0' ) then | |
1798 | - Insert('1', tmp, 1); | |
1799 | - | |
1800 | - unixtime := StrToInt64Def(tmp, ZERO_DATE); | |
1801 | - Result := UnixToDateTime(unixtime) + OffsetFromUTC; | |
1787 | + Result := GikoSys.GetCreateDateFromName(FFileName); | |
1802 | 1788 | if GikoSys.Setting.FutureThread then begin |
1803 | 1789 | if CompareDateTime(Result, Now) = 1 then |
1804 | 1790 | Result := ZERO_DATE; |
@@ -1438,12 +1438,13 @@ end; | ||
1438 | 1438 | |
1439 | 1439 | procedure TEditorForm.BoardTopClick(Sender: TObject); |
1440 | 1440 | var |
1441 | - ini: TIniFile; | |
1441 | + ini: TMemIniFile; | |
1442 | 1442 | begin |
1443 | - ini := TIniFile.Create(GikoSys.Setting.GetFileName); | |
1443 | + ini := TMemIniFile.Create(GikoSys.Setting.GetFileName); | |
1444 | 1444 | try |
1445 | 1445 | BoardtopTab.TabVisible := BoardTop.Checked; |
1446 | 1446 | ini.WriteBool('EditorForm', 'BoardTopTab', BoardtopTab.TabVisible); |
1447 | + ini.UpdateFile; | |
1447 | 1448 | finally |
1448 | 1449 | ini.Free; |
1449 | 1450 | end; |
@@ -1,6 +1,5 @@ | ||
1 | 1 | object FavoriteDM: TFavoriteDM |
2 | 2 | OldCreateOrder = False |
3 | - OnDestroy = DataModuleDestroy | |
4 | 3 | Left = 192 |
5 | 4 | Top = 107 |
6 | 5 | Height = 201 |
@@ -45,20 +45,14 @@ type | ||
45 | 45 | end; |
46 | 46 | |
47 | 47 | TFavoriteDM = class(TDataModule) |
48 | - procedure DataModuleDestroy(Sender: TObject); | |
49 | 48 | private |
50 | 49 | { Private é¾ } |
50 | + FAbEnd: Boolean; | |
51 | 51 | FStack: TStack; |
52 | 52 | FTreeView: TTreeView; |
53 | 53 | FModified: boolean; |
54 | 54 | procedure ReadNode(Node: IXMLNode); |
55 | 55 | procedure AddSaveString(Node: TTreeNode; SaveList: TStringList); |
56 | -// procedure AddSaveString(Node: TTreeNode; XMLNode: IXMLNode); | |
57 | -// procedure SAXStartDocument(Sender: TObject); | |
58 | -// procedure SAXEndDocument(Sender: TObject); | |
59 | -// procedure SAXStartElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString; const Atts: IAttributes); | |
60 | -// procedure SAXEndElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString); | |
61 | -// procedure SAXCharacters(Sender: TObject; const PCh: SAXString); | |
62 | 56 | public |
63 | 57 | { Public é¾ } |
64 | 58 | procedure Clear; |
@@ -70,6 +64,7 @@ type | ||
70 | 64 | procedure URLReplace(oldURLs: TStringList; newURLs: TStringList); |
71 | 65 | property TreeView: TTreeView read FTreeView; |
72 | 66 | property Modified: boolean read FModified write FModified; |
67 | + property AbEnd: Boolean read FAbEnd write FAbEnd; | |
73 | 68 | end; |
74 | 69 | |
75 | 70 | var |
@@ -262,19 +257,6 @@ begin | ||
262 | 257 | |
263 | 258 | end; |
264 | 259 | |
265 | -procedure TFavoriteDM.DataModuleDestroy(Sender: TObject); | |
266 | -//var | |
267 | -// i: Integer; | |
268 | -begin | |
269 | -{ TreeView.Items.BeginUpdate; | |
270 | - for i := TreeView.Items.Count - 1 downto 0 do begin | |
271 | - // if TObject(TreeView.Items[i].Data) <> nil then | |
272 | - // TObject(TreeView.Items[i].Data).Free; | |
273 | - end; | |
274 | - TreeView.Items.Clear; | |
275 | - TreeView.Items.EndUpdate; | |
276 | -} //TreeView.Free; | |
277 | -end; | |
278 | 260 | procedure TFavoriteDM.Clear; |
279 | 261 | var |
280 | 262 | Node : TTreeNode; |
@@ -307,6 +289,8 @@ var | ||
307 | 289 | FavFolder: TFavoriteFolder; |
308 | 290 | LinkExists: Boolean; |
309 | 291 | begin |
292 | + FABend := False; | |
293 | + | |
310 | 294 | FavoriteDM.Modified := true; |
311 | 295 | FileName := GikoSys.GetConfigDir + FAVORITE_FILE_NAME; |
312 | 296 |
@@ -341,11 +325,15 @@ begin | ||
341 | 325 | Node.ImageIndex := 14; |
342 | 326 | Node.SelectedIndex := 14; |
343 | 327 | end; |
328 | + | |
344 | 329 | finally |
345 | 330 | FStack.Free; |
346 | 331 | XMLDoc.Free; |
347 | 332 | end; |
348 | 333 | except |
334 | + on e : Exception do begin | |
335 | + FABend := True; | |
336 | + end; | |
349 | 337 | end; |
350 | 338 | end; |
351 | 339 |
@@ -455,25 +443,6 @@ begin | ||
455 | 443 | end; |
456 | 444 | |
457 | 445 | procedure TFavoriteDM.WriteFavorite; |
458 | -{ | |
459 | -var | |
460 | - FileName: string; | |
461 | -// SaveList: TStringList; | |
462 | -// i: Integer; | |
463 | -// Count: Integer; | |
464 | - | |
465 | - XMLDoc: IXMLDocument; | |
466 | - XMLNode: IXMLNode; | |
467 | -// FavoNode: IXMLNode; | |
468 | -begin | |
469 | - XMLDoc := NewXMLDocument; | |
470 | - XMLDoc.Encoding := 'Shift_JIS'; | |
471 | - XMLDoc.StandAlone := 'yes'; | |
472 | - XMLNode := XMLDoc.AddChild('favorite'); | |
473 | - FileName := GikoSys.GetConfigDir + FAVORITE_FILE_NAME; | |
474 | - AddSaveString(TreeView.Items.GetFirstNode, XMLNode); | |
475 | - XMLDoc.SaveToFile(FileName); | |
476 | -} | |
477 | 446 | var |
478 | 447 | FileName, tmpFileName: string; |
479 | 448 | SaveList: TStringList; |
@@ -502,42 +471,6 @@ begin | ||
502 | 471 | end; |
503 | 472 | end; |
504 | 473 | |
505 | -{ | |
506 | -procedure TFavoriteDM.AddSaveString(Node: TTreeNode; XMLNode: IXMLNode); | |
507 | -var | |
508 | - i: Integer; | |
509 | -// s: string; | |
510 | - FavBoard: TFavoriteBoardItem; | |
511 | - FavThread: TFavoriteThreadItem; | |
512 | - FavNode: IXMLNode; | |
513 | -begin | |
514 | - for i := 0 to Node.Count - 1 do begin | |
515 | - if TObject(Node.Item[i].Data) is TFavoriteFolder then begin | |
516 | - FavNode := XMLNode.AddChild('folder'); | |
517 | - FavNode.Attributes['title'] := Node.Item[i].Text; | |
518 | - AddSaveString(Node.Item[i], FavNode); | |
519 | - end else if TObject(Node.Item[i].Data) is TFavoriteBoardItem then begin | |
520 | - FavBoard := TFavoriteBoardItem(Node.Item[i].Data); | |
521 | - FavNode := XMLNode.AddChild('favitem'); | |
522 | - FavNode.Attributes['type'] := '2ch'; | |
523 | - FavNode.Attributes['favtype'] := 'board'; | |
524 | - FavNode.Attributes['bbs'] := FavBoard.BBSID; | |
525 | - FavNode.Attributes['title'] := Node.Item[i].Text; | |
526 | - FavNode.Attributes['boardname'] := FavBoard.BoardName; | |
527 | - end else if TObject(Node.Item[i].Data) is TFavoriteThreadItem then begin | |
528 | - FavThread := TFavoriteThreadItem(Node.Item[i].Data); | |
529 | - FavNode := XMLNode.AddChild('favitem'); | |
530 | - FavNode.Attributes['type'] := '2ch'; | |
531 | - FavNode.Attributes['favtype'] := 'thread'; | |
532 | - FavNode.Attributes['bbs'] := FavThread.BBSID; | |
533 | - FavNode.Attributes['thread'] := FavThread.ThreadID; | |
534 | - FavNode.Attributes['title'] := Node.Item[i].Text; | |
535 | - FavNode.Attributes['threadname'] := FavThread.ThreadName; | |
536 | - end; | |
537 | - end; | |
538 | -end; | |
539 | -} | |
540 | - | |
541 | 474 | procedure TFavoriteDM.AddSaveString(Node: TTreeNode; SaveList: TStringList); |
542 | 475 | var |
543 | 476 | s: string; |
@@ -570,74 +503,6 @@ begin | ||
570 | 503 | end; |
571 | 504 | end; |
572 | 505 | |
573 | -{ | |
574 | -procedure TFavoriteDM.SAXStartDocument(Sender: TObject); | |
575 | -begin | |
576 | - FStack := TStack.Create; | |
577 | - FStack.Push(FTreeView.Items.GetFirstNode); | |
578 | -end; | |
579 | - | |
580 | -procedure TFavoriteDM.SAXEndDocument(Sender: TObject); | |
581 | -begin | |
582 | - FStack.Free; | |
583 | -end; | |
584 | - | |
585 | -procedure TFavoriteDM.SAXStartElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString; | |
586 | - const Atts: IAttributes); | |
587 | -var | |
588 | - FavType: string; | |
589 | - ParentNode: TTreeNode; | |
590 | - CurrentNode: TTreeNode; | |
591 | - FavFolder: TFavoriteFolder; | |
592 | - FavBoard: TFavoriteBoardItem; | |
593 | - FavThread: TFavoriteThreadItem; | |
594 | -begin | |
595 | - if QName = 'folder' then begin | |
596 | - ParentNode := FStack.Peek; | |
597 | - if TObject(ParentNode.Data) is TFavoriteFolder then begin | |
598 | - FavFolder := TFavoriteFolder.Create; | |
599 | - CurrentNode := FTreeView.Items.AddChildObject(ParentNode, Atts.getValue('title'), FavFolder); | |
600 | - CurrentNode.ImageIndex := 12; | |
601 | - CurrentNode.SelectedIndex := 13; | |
602 | - FStack.Push(CurrentNode); | |
603 | - end; | |
604 | - end else if QName = 'favitem' then begin | |
605 | - ParentNode := FStack.Peek; | |
606 | - if TObject(ParentNode.Data) is TFavoriteFolder then begin | |
607 | - FavType := Atts.getValue('favtype'); | |
608 | - if FavType = 'board' then begin | |
609 | - FavBoard := TFavoriteBoardItem.Create; | |
610 | - FavBoard.BBSID := Atts.getValue('bbs'); | |
611 | - FavBoard.BoardName := Atts.getValue('boardname'); | |
612 | - CurrentNode := FTreeView.Items.AddChildObject(ParentNode, Atts.getValue('title'), FavBoard); | |
613 | - CurrentNode.ImageIndex := 14; | |
614 | - CurrentNode.SelectedIndex := 15; | |
615 | - end else if FavType = 'thread' then begin | |
616 | - FavThread := TFavoriteThreadItem.Create; | |
617 | - FavThread.BBSID := Atts.getValue('bbs'); | |
618 | - FavThread.ThreadID := Atts.getValue('thread'); | |
619 | - FavThread.ThreadName := Atts.getValue('threadname'); | |
620 | - CurrentNode := FTreeView.Items.AddChildObject(ParentNode, Atts.getValue('title'), FavThread); | |
621 | - CurrentNode.ImageIndex := 16; | |
622 | - CurrentNode.SelectedIndex := 17; | |
623 | - end; | |
624 | - end; | |
625 | - end; | |
626 | -end; | |
627 | - | |
628 | -procedure TFavoriteDM.SAXEndElement(Sender: TObject; const NamespaceURI, LocalName, QName: SAXString); | |
629 | -begin | |
630 | - if QName = 'folder' then begin | |
631 | - if FStack.Count <> 0 then | |
632 | - FStack.Pop; | |
633 | - end; | |
634 | -end; | |
635 | - | |
636 | -procedure TFavoriteDM.SAXCharacters(Sender: TObject; const PCh: SAXString); | |
637 | -begin | |
638 | -// | |
639 | -end; | |
640 | -} | |
641 | 506 | function TFavoriteDM.SaveFavoriteFile(FileName: String) : Boolean; |
642 | 507 | var |
643 | 508 | FavoriteFilePath: string; |
@@ -8419,6 +8419,17 @@ object GikoForm: TGikoForm | ||
8419 | 8419 | object N71: TMenuItem |
8420 | 8420 | Action = GikoDM.IndividualAbonID0Action |
8421 | 8421 | end |
8422 | + object N82: TMenuItem | |
8423 | + Caption = '-' | |
8424 | + end | |
8425 | + object IDNG1: TMenuItem | |
8426 | + Action = GikoDM.AddIDtoNGWord1Action | |
8427 | + Caption = 'NG'#12527#12540#12489#12395#36861#21152 | |
8428 | + end | |
8429 | + object IDNG2: TMenuItem | |
8430 | + Action = GikoDM.AddIDtoNGWord0Action | |
8431 | + Caption = 'NG'#12527#12540#12489#12395#36861#21152'('#36879#26126')' | |
8432 | + end | |
8422 | 8433 | end |
8423 | 8434 | object N52: TMenuItem |
8424 | 8435 | Caption = #20491#21029#12354#12412#65374#12435#35299#38500 |
@@ -8781,4 +8792,11 @@ object GikoForm: TGikoForm | ||
8781 | 8792 | Left = 4 |
8782 | 8793 | Top = 373 |
8783 | 8794 | end |
8795 | + object ResPopupClearTimer: TTimer | |
8796 | + Tag = 1 | |
8797 | + Enabled = False | |
8798 | + OnTimer = ResPopupClearTimerTimer | |
8799 | + Left = 8 | |
8800 | + Top = 440 | |
8801 | + end | |
8784 | 8802 | end |
@@ -24,7 +24,8 @@ uses | ||
24 | 24 | const |
25 | 25 | NGWORDNAME_PANEL = 3; |
26 | 26 | THREADSIZE_PANEL = 2; |
27 | - | |
27 | + USER_RESPOPUPCLEAR = WM_USER + 2005; ///< wParam : TWebBrowser | |
28 | + | |
28 | 29 | type |
29 | 30 | |
30 | 31 | TToolBarSettingSenderType = (tssNone, tssMain, tssList, tssBrowser); |
@@ -419,6 +420,10 @@ type | ||
419 | 420 | N80: TMenuItem; |
420 | 421 | SameBoardThreadItem: TMenuItem; |
421 | 422 | N81: TMenuItem; |
423 | + N82: TMenuItem; | |
424 | + IDNG1: TMenuItem; | |
425 | + IDNG2: TMenuItem; | |
426 | + ResPopupClearTimer: TTimer; | |
422 | 427 | procedure FormCreate(Sender: TObject); |
423 | 428 | procedure FormDestroy(Sender: TObject); |
424 | 429 | procedure BrowserStatusTextChange(Sender: TObject; |
@@ -555,6 +560,7 @@ type | ||
555 | 560 | procedure GetResURLMenuClick(Sender: TObject); |
556 | 561 | procedure MainCoolBarContextPopup(Sender: TObject; MousePos: TPoint; |
557 | 562 | var Handled: Boolean); |
563 | + procedure ResPopupClearTimerTimer(Sender: TObject); | |
558 | 564 | private |
559 | 565 | { Private é¾ } |
560 | 566 | FEnabledCloseButton: Boolean; |
@@ -686,6 +692,10 @@ type | ||
686 | 692 | procedure SameBoardThreadSubItemOnClick(Sender: TObject); |
687 | 693 | //! |bvAbvuEUì¬ |
688 | 694 | procedure CreateResPopupBrowser; |
695 | + //! D&Dðó¯æé | |
696 | + procedure WMDropFiles(var Msg: TWMDropFiles); Message WM_DropFiles; | |
697 | + //! t@C`FbN | |
698 | + function isValidFile(FileName: String) : boolean; | |
689 | 699 | protected |
690 | 700 | procedure CreateParams(var Params: TCreateParams); override; |
691 | 701 | procedure WndProc(var Message: TMessage); override; |
@@ -756,6 +766,8 @@ type | ||
756 | 766 | procedure IndividualAbonID(Atype : Integer); |
757 | 767 | //±ÌX Ú`ñ |
758 | 768 | procedure IndividualAbon(Atag, Atype : Integer); |
769 | + //¯êIDðNG[hÉo^ | |
770 | + procedure AddIDtoNGWord(invisible : boolean); | |
759 | 771 | //uEUÌÄ`æ true:SÄÌ^u false:ANeBuÈ^uÌÝ |
760 | 772 | procedure RepaintAllTabsBrowser(); |
761 | 773 | //No[Ýè |
@@ -1312,6 +1324,20 @@ begin | ||
1312 | 1324 | |
1313 | 1325 | //u·Ýèt@CÌÇÝÝ |
1314 | 1326 | ReplaceDM.LoadFromFile(GikoSys.GetReplaceFileName); |
1327 | + | |
1328 | + //X|bvAbvÁ^C}[ | |
1329 | + ResPopupClearTimer.Interval := GikoSys.Setting.RespopupWait; | |
1330 | + | |
1331 | + // D&Dðó¯æé | |
1332 | + DragAcceptFiles(Self.Handle, True); | |
1333 | + | |
1334 | + // ú»É¸sµ½W [`FbN | |
1335 | + if (FavoriteDM.AbEnd) then begin | |
1336 | + GikoUtil.MsgBox(Self.Handle, '¨CÉüèÌú»É¸sµÜµ½BMRirðI¹µÜ·B', | |
1337 | + 'ú»Ùí'); | |
1338 | + Self.Close; | |
1339 | + end; | |
1340 | + | |
1315 | 1341 | end; |
1316 | 1342 | |
1317 | 1343 | // CoolBar ÌÝèðÏÉÛ¶ |
@@ -1467,6 +1493,13 @@ begin | ||
1467 | 1493 | GikoDM.TabsOpenAction.Execute; |
1468 | 1494 | GikoDM.TabsOpenAction.Tag := 0; |
1469 | 1495 | if (GikoSys.Setting.LastCloseTabURL <> '') then begin |
1496 | + PostMessage( Handle, USER_DOCUMENTCOMPLETE, Integer( FActiveContent.Browser ), 0 ); | |
1497 | + if ( FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin | |
1498 | + while (FActiveContent.Browser.ReadyState <> READYSTATE_COMPLETE) and | |
1499 | + (FActiveContent.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin | |
1500 | + Application.ProcessMessages; | |
1501 | + end; | |
1502 | + end; | |
1470 | 1503 | item := BBSsFindThreadFromURL( GikoSys.Setting.LastCloseTabURL ); |
1471 | 1504 | if (item <> nil) and (item.IsLogFile) then begin |
1472 | 1505 | OpenThreadItem(item, item.URL); |
@@ -1523,13 +1556,15 @@ end; | ||
1523 | 1556 | procedure TGikoForm.FormDestroy(Sender: TObject); |
1524 | 1557 | var |
1525 | 1558 | i : Integer; |
1526 | -// CoolSet: TCoolSet; | |
1527 | 1559 | wp : TWindowPlacement; |
1528 | 1560 | tmpBool : Boolean; |
1529 | 1561 | begin |
1530 | 1562 | // }EXWFX`[Jú |
1531 | 1563 | try |
1564 | + MouseGesture.Clear; | |
1532 | 1565 | MouseGesture.UnHook; |
1566 | + MouseGesture.Free; | |
1567 | + MouseGesture := nil; | |
1533 | 1568 | except |
1534 | 1569 | end; |
1535 | 1570 | try |
@@ -1586,11 +1621,14 @@ begin | ||
1586 | 1621 | //¨CÉüèÛ¶ |
1587 | 1622 | try |
1588 | 1623 | //FavoriteDMÍ©®¶¬tH[ÈÌÅAðúÍ©®Iɳêé |
1589 | - FavoriteDM.WriteFavorite; | |
1624 | + // ú»Ùí©çÌI¹ÅÍÛ¶µÈ¢ | |
1625 | + if not (FavoriteDM.AbEnd) then begin | |
1626 | + FavoriteDM.WriteFavorite; | |
1627 | + end; | |
1590 | 1628 | FavoriteDM.Clear; |
1591 | 1629 | except |
1592 | 1630 | end; |
1593 | - LockWindowUpdate(Self.Handle); | |
1631 | + //LockWindowUpdate(Self.Handle); | |
1594 | 1632 | try |
1595 | 1633 | //^uN[Y |
1596 | 1634 | tmpBool := GikoSys.Setting.ShowDialogForAllTabClose; |
@@ -1698,7 +1736,6 @@ begin | ||
1698 | 1736 | if FEvent <> nil then |
1699 | 1737 | FEvent.Free; |
1700 | 1738 | |
1701 | - // TODO X|bvAbvÌjü | |
1702 | 1739 | try |
1703 | 1740 | if FResPopupBrowser <> nil then begin |
1704 | 1741 | TOleControl(FResPopupBrowser).Parent := nil; |
@@ -1714,7 +1751,7 @@ begin | ||
1714 | 1751 | end; |
1715 | 1752 | except |
1716 | 1753 | end; |
1717 | - LockWindowUpdate(0); | |
1754 | + //LockWindowUpdate(0); | |
1718 | 1755 | end; |
1719 | 1756 | |
1720 | 1757 | // eÉ éLrlbgE BBS j [ðZbg^XV |
@@ -1936,10 +1973,20 @@ begin | ||
1936 | 1973 | if FResPopupBrowser <> nil then begin |
1937 | 1974 | if not(Sender is TResPopupBrowser) then begin |
1938 | 1975 | if (FResPopupBrowser.Visible) then begin |
1939 | - FResPopupBrowser.Clear; | |
1976 | + if ResPopupClearTimer.Interval > 0 then begin | |
1977 | + ResPopupClearTimer.Enabled := True; | |
1978 | + ResPopupClearTimer.Tag := 0; | |
1979 | + end else begin | |
1980 | + FResPopupBrowser.Clear; | |
1981 | + end; | |
1940 | 1982 | end; |
1941 | 1983 | end else begin |
1942 | - TResPopupBrowser(Sender).ChildClear; | |
1984 | + if ResPopupClearTimer.Interval > 0 then begin | |
1985 | + ResPopupClearTimer.Enabled := True; | |
1986 | + ResPopupClearTimer.Tag := 1; | |
1987 | + end else begin | |
1988 | + TResPopupBrowser(Sender).ChildClear; | |
1989 | + end; | |
1943 | 1990 | end; |
1944 | 1991 | end; |
1945 | 1992 | cResPopup := nil; |
@@ -1968,7 +2015,7 @@ begin | ||
1968 | 2015 | PreviewTimer.Interval := GikoSys.Setting.PreviewWait; |
1969 | 2016 | PreviewTimer.Enabled := True; |
1970 | 2017 | end else if (Pos('about:blank', Text2) = 1) or (Pos('http://', Text2) = 1) or (Pos('mailto:', Text2) = 1) then begin |
1971 | - if Pos('mailto:', Text2) = 1 then begin | |
2018 | + if (Pos('mailto:', Text2) = 1) and (GikoSys.Setting.RespopupMailTo) then begin | |
1972 | 2019 | s := StringReplace(Text2, 'mailto:', '', [rfIgnoreCase]); |
1973 | 2020 | //MRirX p[g3Ì466É´Ó |
1974 | 2021 | GetCursorPos(p); |
@@ -1977,6 +2024,15 @@ begin | ||
1977 | 2024 | e := IHTMLDocument2(TWebBrowser(Sender).Document).elementFromPoint(p.x, p.y); |
1978 | 2025 | if (Assigned(e)) then begin |
1979 | 2026 | CreateResPopupBrowser; |
2027 | + | |
2028 | + if not(Sender is TResPopupBrowser) then begin | |
2029 | + if (FResPopupBrowser.Visible) then begin | |
2030 | + FResPopupBrowser.Clear; | |
2031 | + end; | |
2032 | + end else begin | |
2033 | + TResPopupBrowser(Sender).ChildClear; | |
2034 | + end; | |
2035 | + | |
1980 | 2036 | cResPopup := FResPopupBrowser.CreateNewBrowser; |
1981 | 2037 | tmp2 := ZenToHan(e.Get_outerText); |
1982 | 2038 | if (GikoSys.IsNumeric(tmp2)) then begin |
@@ -1991,6 +2047,16 @@ begin | ||
1991 | 2047 | end; |
1992 | 2048 | end; |
1993 | 2049 | end else begin |
2050 | + CreateResPopupBrowser; | |
2051 | + | |
2052 | + if not(Sender is TResPopupBrowser) then begin | |
2053 | + if (FResPopupBrowser.Visible) then begin | |
2054 | + FResPopupBrowser.Clear; | |
2055 | + end; | |
2056 | + end else begin | |
2057 | + TResPopupBrowser(Sender).ChildClear; | |
2058 | + end; | |
2059 | + | |
1994 | 2060 | threadItem := GetActiveContent(true); |
1995 | 2061 | URL := THTMLCreate.GetRespopupURL(Text2, threadItem.URL); |
1996 | 2062 | PathRec := Gikosys.Parse2chURL2(URL); |
@@ -2043,7 +2109,6 @@ begin | ||
2043 | 2109 | wkIntSt := 1; |
2044 | 2110 | wkIntTo := 1; |
2045 | 2111 | end; |
2046 | - CreateResPopupBrowser; | |
2047 | 2112 | cResPopup := FResPopupBrowser.CreateNewBrowser; |
2048 | 2113 | cResPopup.PopupType := gptThread; |
2049 | 2114 | HTMLCreater.SetResPopupText(cResPopup, threadItem, wkIntSt, wkIntTo, ATitle, PathRec.FFirst ); |
@@ -2051,6 +2116,8 @@ begin | ||
2051 | 2116 | end; |
2052 | 2117 | end; |
2053 | 2118 | if (cResPopup <> nil) then begin |
2119 | + ResPopupClearTimer.Enabled := False; | |
2120 | + | |
2054 | 2121 | if cResPopup.PopupType = gptRaw then begin |
2055 | 2122 | if cResPopup.Title <> '' then begin |
2056 | 2123 | cResPopup.TitlePopup; |
@@ -2181,6 +2248,7 @@ var | ||
2181 | 2248 | ARect: TRect; |
2182 | 2249 | begin |
2183 | 2250 | DefaultDraw := True; |
2251 | +// Ⱥ©³ðÅExitµÄ¢é | |
2184 | 2252 | Exit; |
2185 | 2253 | DefaultDraw := False; |
2186 | 2254 | if (cdsSelected in State) or (cdsHot in State) then begin |
@@ -2740,7 +2808,8 @@ var | ||
2740 | 2808 | begin |
2741 | 2809 | Thread := inThread; |
2742 | 2810 | idx := BrowserTab.TabIndex; |
2743 | - if (FActiveContent <> nil) and | |
2811 | + if (not FStartUp) and | |
2812 | + (FActiveContent <> nil) and | |
2744 | 2813 | (FActiveContent.Thread <> Thread.Thread) and |
2745 | 2814 | (FActiveContent.Browser <> nil) and |
2746 | 2815 | (Assigned(FActiveContent.Browser.Document)) then begin |
@@ -2777,6 +2846,12 @@ begin | ||
2777 | 2846 | ThreadTitle := Thread.Thread.Title; |
2778 | 2847 | ThreadPTitle := Thread.Thread.ParentBoard.Title; |
2779 | 2848 | //ThreadScrollTop := Thread.Thread.ScrollTop; |
2849 | + if Thread.Thread.IsLogFile then begin | |
2850 | + if not FileExists(Thread.Thread.GetThreadFileName) then begin | |
2851 | + Thread.Thread.DeleteLogFile; | |
2852 | + end; | |
2853 | + end; | |
2854 | + | |
2780 | 2855 | ThreadIsLog := Thread.Thread.IsLogFile; |
2781 | 2856 | ThreadItem := Thread.Thread; |
2782 | 2857 | ThreadNewArraical := Thread.Thread.NewArrival; |
@@ -4279,7 +4354,6 @@ begin | ||
4279 | 4354 | MenuToolBar.Buttons[0].AutoSize := True; |
4280 | 4355 | MainCoolBar.AutoSize := False; |
4281 | 4356 | MainCoolBar.AutoSize := True; |
4282 | - | |
4283 | 4357 | GikoSys.MenuFont(ListCoolBar.Font); |
4284 | 4358 | GikoSys.MenuFont(BrowserCoolBar.Font); |
4285 | 4359 | // MenuToolBar.Font.Color := clMenuText; |
@@ -4733,6 +4807,13 @@ begin | ||
4733 | 4807 | senderBrowser := TWebBrowser( Message.WParam ); |
4734 | 4808 | BrowserDocumentComplete( senderBrowser, senderBrowser.Parent, url ); |
4735 | 4809 | end; |
4810 | + USER_RESPOPUPCLEAR: | |
4811 | + if (TObject(Message.WParam) is TResPopupBrowser) then begin | |
4812 | + try | |
4813 | + TResPopupBrowser( Message.WParam ).Clear; | |
4814 | + except | |
4815 | + end; | |
4816 | + end; | |
4736 | 4817 | end; |
4737 | 4818 | |
4738 | 4819 | inherited; |
@@ -4869,7 +4950,7 @@ begin | ||
4869 | 4950 | s := CustomStringReplace(Range.text, '@', ' ');//Spóð¼póÉ |
4870 | 4951 | s := ZenToHan(Trim(s)); |
4871 | 4952 | if GikoSys.IsNumeric(s) then begin |
4872 | - Num := StrToInt64(s); | |
4953 | + Num := StrToInt64Def(s, -1); | |
4873 | 4954 | ThreadItem := GetActiveContent(true); |
4874 | 4955 | if (ThreadItem <> nil) and (Num <= ThreadItem.Count) |
4875 | 4956 | and (Num > 0)then begin |
@@ -6611,7 +6692,7 @@ begin | ||
6611 | 6692 | |
6612 | 6693 | end; |
6613 | 6694 | // ************************************************************************* |
6614 | -//! ¨CÉüèc[Ì}EXAbvCxg | |
6695 | +//! XbhuEUNbNCxg | |
6615 | 6696 | // ************************************************************************* |
6616 | 6697 | function TGikoForm.WebBrowserClick(Sender: TObject): WordBool; |
6617 | 6698 | const |
@@ -6662,7 +6743,9 @@ begin | ||
6662 | 6743 | end; |
6663 | 6744 | count := GikoSys.GetSameIDResCount(AID, FActiveContent.Thread); |
6664 | 6745 | limited := LIMIT; |
6665 | - if count > LIMIT then begin | |
6746 | + if not (GikoSys.Setting.LimitResCountMessage) then begin | |
6747 | + limited := -1; | |
6748 | + end else if (count > LIMIT) then begin | |
6666 | 6749 | if (GikoUtil.MsgBox(Handle, |
6667 | 6750 | IntToStr(LIMIT) + 'ÂÈã èÜ·ªA·×Ä\¦µÜ·©H', |
6668 | 6751 | 'ID|bvAbvx', |
@@ -6955,10 +7038,11 @@ end; | ||
6955 | 7038 | |
6956 | 7039 | procedure TGikoForm.BrowserPanelResize(Sender: TObject); |
6957 | 7040 | begin |
6958 | - if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin | |
6959 | - MoveWindow(FActiveContent.Browser.Handle, 0, 0, BrowserPanel.ClientWidth, BrowserPanel.ClientHeight, false); | |
6960 | - end; | |
6961 | - | |
7041 | + if (FIsMinimize <> mtMinimizing) then begin | |
7042 | + if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin | |
7043 | + MoveWindow(FActiveContent.Browser.Handle, 0, 0, BrowserPanel.ClientWidth, BrowserPanel.ClientHeight, false); | |
7044 | + end; | |
7045 | + end; | |
6962 | 7046 | end; |
6963 | 7047 | procedure TGikoForm.CoolBarResized(Sender: TObject; CoolBar: TCoolBar); |
6964 | 7048 | var |
@@ -7091,6 +7175,63 @@ begin | ||
7091 | 7175 | if ThreadItem <> nil then |
7092 | 7176 | InsertBrowserTab( ThreadItem, True ); |
7093 | 7177 | end; |
7178 | +//¯êIDðNG[hÉo^ | |
7179 | +procedure TGikoForm.AddIDtoNGWord(invisible : boolean); | |
7180 | +var | |
7181 | + ThreadItem : TThreadItem; | |
7182 | + No : Integer; | |
7183 | +{$IFDEF SPAM_FILTER_ENABLED} | |
7184 | + body : TStringList; | |
7185 | + ReadList : TStringList; | |
7186 | + wordCount : TWordCount; | |
7187 | +{$ENDIF} | |
7188 | + id, dateStr: String; | |
7189 | +begin | |
7190 | + No := KokoPopupMenu.Tag; | |
7191 | + if No = 0 then Exit; | |
7192 | + ThreadItem := GetActiveContent(True); | |
7193 | + if ThreadItem = nil then Exit; | |
7194 | + | |
7195 | + id := GikoSys.GetResID(No, ThreadItem); | |
7196 | + if (id <> '') and (not IsNoValidID(id)) then begin | |
7197 | + // RgƵÄAXbh¼Æ¡úÌútðÇÁ | |
7198 | + DateTimeToString(dateStr, 'yyyymmdd', Now); | |
7199 | + id := id + #9'>>add ' + dateStr + ',' + ThreadItem.Title; | |
7200 | + if (GikoSys.FAbon.AddToken(id, invisible)) then begin | |
7201 | + GikoSys.FAbon.ReLoadFromNGwordFile; | |
7202 | + FActiveContent.Repaint := True; | |
7203 | + end; | |
7204 | + end else begin | |
7205 | + ShowMessage('IDðæ¾Å«Ü¹ñŵ½B'); | |
7206 | + end; | |
7207 | +{$IFDEF SPAM_FILTER_ENABLED} | |
7208 | + body := TStringList.Create; | |
7209 | + try | |
7210 | + GikoSys.GetSameIDRes(id, ThreadItem, body); | |
7211 | + ReadList := TStringList.Create; | |
7212 | + wordCount := TWordCount.Create; | |
7213 | + try | |
7214 | + // XpÉÝè | |
7215 | + ReadList.LoadFromFile( ThreadItem.GetThreadFileName ); | |
7216 | + for i := 0 to body.Count - 1 do begin | |
7217 | + GikoSys.SpamCountWord( ReadList[ i ], wordCount ); | |
7218 | + GikoSys.SpamForget( wordCount, False ); // nðð | |
7219 | + GikoSys.SpamLearn( wordCount, True ); // XpÉÝè | |
7220 | + end; | |
7221 | + finally | |
7222 | + wordCount.Free; | |
7223 | + ReadList.Free; | |
7224 | + end; | |
7225 | + finally | |
7226 | + body.Free; | |
7227 | + end; | |
7228 | +{$ENDIF} | |
7229 | + if (FActiveContent.Repaint) then begin | |
7230 | + ThreadItem.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop; | |
7231 | + if ThreadItem <> nil then | |
7232 | + InsertBrowserTab( ThreadItem, True ); | |
7233 | + end; | |
7234 | +end; | |
7094 | 7235 | |
7095 | 7236 | //¯êIDÌ Ú`ñ |
7096 | 7237 | procedure TGikoForm.IndividualAbonID(Atype : Integer); |
@@ -7582,6 +7723,103 @@ begin | ||
7582 | 7723 | FResPopupBrowser := TResPopupBrowser.Create(BrowserPanel); |
7583 | 7724 | end; |
7584 | 7725 | end; |
7726 | +//! O©çÌD&D | |
7727 | +procedure TGikoForm.WMDropFiles(var Msg: TWMDropFiles); | |
7728 | +var | |
7729 | + FileName: Array[0..MAX_PATH] of Char; | |
7730 | + Cnt, K: Integer; | |
7731 | + Board: TBoard; | |
7732 | + LogFolder: String; | |
7733 | + datList: TStringList; | |
7734 | +begin | |
7735 | + // \¦µÄ¢éÌÂÌÆ«ÈOÍÛ | |
7736 | + if GetActiveList is TBoard then begin | |
7737 | + Board := TBoard(GetActiveList); | |
7738 | + if MsgBox(Handle, Board.Title | |
7739 | + + ' ÂÉüêÄ¢¢Å·©H', 'MRir', MB_YESNO or MB_ICONQUESTION) = IDYES then begin | |
7740 | + // ÂÌÍAOtH_ÉRs[µÄÍ®êOÎƯ¶H | |
7741 | + datList := TStringList.Create; | |
7742 | + try | |
7743 | + Cnt := DragQueryFile(Msg.Drop, $FFFFFFFF, FileName, SizeOf(FileName)); | |
7744 | + for K := 0 to Cnt - 1 do begin | |
7745 | + DragQueryFile(Msg.Drop, K, FileName, SizeOf(FileName)); | |
7746 | + {FileNameÉdrop³ê½t@C¼ªüÁÄ¢éÌÅA±±Å½ç©Ìð·éB½Æ¦ÎÌs} | |
7747 | + // t@CÌ`FbN | |
7748 | + if (isValidFile(FileName)) then begin | |
7749 | + LogFolder := ExtractFilePath(Board.FilePath); | |
7750 | + if (FileExists( LogFolder + ExtractFileName(FileName))) then begin | |
7751 | + GikoUtil.MsgBox(Handle, LogFolder + 'É' + ExtractFileName(FileName) + 'ªùɶݵܷB', 'G[', MB_ICONSTOP or MB_OK); | |
7752 | + end else begin | |
7753 | + if (not DirectoryExists(LogFolder)) then begin | |
7754 | + if (not GikoSys.ForceDirectoriesEx(LogFolder) ) then begin | |
7755 | + GikoUtil.MsgBox(Handle, LogFolder + '̶¬É¸sµÜµ½B', 'G[', MB_ICONSTOP or MB_OK); | |
7756 | + end; | |
7757 | + end; | |
7758 | + if (not Windows.CopyFile(FileName, PChar(LogFolder + ExtractFileName(FileName)), true)) then begin | |
7759 | + GikoUtil.MsgBox(Handle, FileName + 'ÌRs[ɸsµÜµ½B', 'G[', MB_ICONSTOP or MB_OK); | |
7760 | + end else begin | |
7761 | + datList.Add(ExtractFileName(FileName)); | |
7762 | + end; | |
7763 | + end; | |
7764 | + end; | |
7765 | + end; | |
7766 | + DragFinish(Msg.Drop); | |
7767 | + if (datList.Count > 0) then begin | |
7768 | + GikoSys.AddOutofIndexDat(Board, datList, False); | |
7769 | + ShowMessage(IntToStr(datList.Count) + 'ÂÌdatt@CªRs[³êܵ½B' ); | |
7770 | + if GikoForm.TreeView.Visible then | |
7771 | + GikoForm.TreeView.Refresh; | |
7772 | + if GikoForm.ListView.Visible then | |
7773 | + GikoForm.ListView.Refresh; | |
7774 | + end else begin | |
7775 | + ShowMessage('êÂàRs[³êܹñŵ½B' ); | |
7776 | + end; | |
7777 | + finally | |
7778 | + datList.Free; | |
7779 | + end; | |
7780 | + | |
7781 | + end; | |
7782 | + end else begin | |
7783 | + ShowMessage('Âð\¦µÄ¾³¢B'); | |
7784 | + end; | |
7785 | +end; | |
7786 | +//! t@C`FbN | |
7787 | +function TGikoForm.isValidFile(FileName: String) : boolean; | |
7788 | +var | |
7789 | + dt: TDateTime; | |
7790 | +begin | |
7791 | + Result := True; | |
7792 | + // ¶Ý·é©Ag£qdatAt@C¼ | |
7793 | + if ( not FileExists(FileName) ) then begin | |
7794 | + Result := False; | |
7795 | + GikoUtil.MsgBox(Handle, FileName + 'ͶݵܹñB', 'G[', MB_ICONSTOP or MB_OK); | |
7796 | + end else if (ExtractFileExt(ExtractFileName(FileName)) <> '.dat' ) then begin | |
7797 | + Result := False; | |
7798 | + GikoUtil.MsgBox(Handle, ExtractFileName(FileName) + 'Ìg£qª".dat"Å èܹñB', 'G[', MB_ICONSTOP or MB_OK); | |
7799 | + end else begin | |
7800 | + // Ot@CÌg£qð͸µ½à̪Xì¬ú | |
7801 | + try | |
7802 | + dt := GikoSys.GetCreateDateFromName(FileName); | |
7803 | + if ((UnixToDateTime(ZERO_DATE) + OffsetFromUTC) = dt) then begin | |
7804 | + Result := False; | |
7805 | + GikoUtil.MsgBox(Handle, ExtractFileName(FileName) + 'Ìt@C¼ªs³Å·B', 'G[', MB_ICONSTOP or MB_OK); | |
7806 | + end; | |
7807 | + except | |
7808 | + Result := False; | |
7809 | + GikoUtil.MsgBox(Handle, ExtractFileName(FileName) + 'Ìt@C¼ªs³Å·B', 'G[', MB_ICONSTOP or MB_OK); | |
7810 | + end; | |
7811 | + end; | |
7812 | +end; | |
7813 | + | |
7814 | +procedure TGikoForm.ResPopupClearTimerTimer(Sender: TObject); | |
7815 | +begin | |
7816 | + ResPopupClearTimer.Enabled := False; | |
7817 | + if ResPopupClearTimer.Tag = 0 then begin | |
7818 | + FResPopupBrowser.Clear; | |
7819 | + end else begin | |
7820 | + FResPopupBrowser.CurrentBrowser.ChildClear; | |
7821 | + end; | |
7822 | +end; | |
7585 | 7823 | |
7586 | 7824 | initialization |
7587 | 7825 | OleInitialize(nil); |
@@ -1344,6 +1344,18 @@ object GikoDM: TGikoDM | ||
1344 | 1344 | OnExecute = NewLinkToClipboardActionExecute |
1345 | 1345 | OnUpdate = DependActiveCntentActionUpdate |
1346 | 1346 | end |
1347 | + object AddIDtoNGWord0Action: TAction | |
1348 | + Category = #12502#12521#12454#12470#12509#12483#12503#12450#12483#12503 | |
1349 | + Caption = 'ID'#12434'NG'#12527#12540#12489#12395#36861#21152'('#36879#26126')' | |
1350 | + Hint = #12524#12473#12398'ID'#12434'NG'#12527#12540#12489#12501#12449#12452#12523#12395#36861#21152#12377#12427#65288#36879#26126#65289 | |
1351 | + OnExecute = AddIDtoNGWord0ActionExecute | |
1352 | + end | |
1353 | + object AddIDtoNGWord1Action: TAction | |
1354 | + Category = #12502#12521#12454#12470#12509#12483#12503#12450#12483#12503 | |
1355 | + Caption = 'ID'#12434'NG'#12527#12540#12489#12395#36861#21152 | |
1356 | + Hint = 'ID'#12434'NG'#12527#12540#12489#12501#12449#12452#12523#12395#36861#21152#12377#12427 | |
1357 | + OnExecute = AddIDtoNGWord1ActionExecute | |
1358 | + end | |
1347 | 1359 | end |
1348 | 1360 | object ToobarImageList: TImageList |
1349 | 1361 | Left = 44 |
@@ -237,6 +237,8 @@ type | ||
237 | 237 | ScrollPageUpAction: TAction; |
238 | 238 | AllLinkToClipboardAction: TAction; |
239 | 239 | NewLinkToClipboardAction: TAction; |
240 | + AddIDtoNGWord0Action: TAction; | |
241 | + AddIDtoNGWord1Action: TAction; | |
240 | 242 | procedure EditNGActionExecute(Sender: TObject); |
241 | 243 | procedure ReloadActionExecute(Sender: TObject); |
242 | 244 | procedure GoFowardActionExecute(Sender: TObject); |
@@ -444,6 +446,8 @@ type | ||
444 | 446 | procedure ScrollPageUpActionExecute(Sender: TObject); |
445 | 447 | procedure AllLinkToClipboardActionExecute(Sender: TObject); |
446 | 448 | procedure NewLinkToClipboardActionExecute(Sender: TObject); |
449 | + procedure AddIDtoNGWord0ActionExecute(Sender: TObject); | |
450 | + procedure AddIDtoNGWord1ActionExecute(Sender: TObject); | |
447 | 451 | private |
448 | 452 | { Private é¾ } |
449 | 453 | procedure ClearResFilter; |
@@ -2261,9 +2265,11 @@ begin | ||
2261 | 2265 | if item <> nil then |
2262 | 2266 | GikoForm.InsertBrowserTab( item, false ); |
2263 | 2267 | end; |
2264 | - //ÅÌPÉÝè AhXÌÝè̽ßÌJÄÑ | |
2265 | - if GikoForm.BrowserTab.Tabs.Count > 0 then begin | |
2266 | - GikoForm.BrowserTab.OnChange(nil); | |
2268 | + //ÅÌPÉÝè | |
2269 | + if (GikoSys.Setting.URLDisplay) and | |
2270 | + (GikoForm.BrowserTab.Tabs.Count > 0) then begin | |
2271 | + GikoForm.AddressComboBox.Text := | |
2272 | + TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[0]).Thread.URL; | |
2267 | 2273 | end; |
2268 | 2274 | end; |
2269 | 2275 | finally |
@@ -2408,7 +2414,9 @@ begin | ||
2408 | 2414 | if ThreadItem = nil then Exit; |
2409 | 2415 | count := GikoSys.GetSameIDResCount(No, GikoForm.ActiveContent.Thread); |
2410 | 2416 | limited := LIMIT; |
2411 | - if count > LIMIT then begin | |
2417 | + if not (GikoSys.Setting.LimitResCountMessage) then begin | |
2418 | + limited := -1; | |
2419 | + end else if count > LIMIT then begin | |
2412 | 2420 | if ( GikoUtil.MsgBox(GikoForm.Handle, |
2413 | 2421 | IntToStr(LIMIT) + 'ÂÈã èÜ·ªA·×Ä\¦µÜ·©H', |
2414 | 2422 | 'ID|bvAbvx', |
@@ -4434,6 +4442,16 @@ begin | ||
4434 | 4442 | end; |
4435 | 4443 | |
4436 | 4444 | |
4445 | +//! ±ÌXÌIDðNG[hÉÇÁ·éi§¾) | |
4446 | +procedure TGikoDM.AddIDtoNGWord0ActionExecute(Sender: TObject); | |
4447 | +begin | |
4448 | + GikoForm.AddIDtoNGWord(true); | |
4449 | +end; | |
4450 | +//! ±ÌXÌIDðNG[hÉÇÁ·é | |
4451 | +procedure TGikoDM.AddIDtoNGWord1ActionExecute(Sender: TObject); | |
4452 | +begin | |
4453 | + GikoForm.AddIDtoNGWord(false); | |
4454 | +end; | |
4437 | 4455 | |
4438 | 4456 | end. |
4439 | 4457 |
@@ -116,8 +116,6 @@ type | ||
116 | 116 | function ChooseString(const Text, Separator: string; Index: integer): string; |
117 | 117 | //! êt@C©çÌ |
118 | 118 | procedure RestoreThreadData(Board: TBoard); |
119 | - //! CfbNXÉÈ¢datiÍ®êdatjÌÇÁ | |
120 | - procedure AddOutofIndexDat(Board: TBoard; DatList: TStringList); | |
121 | 119 | public |
122 | 120 | { Public é¾ } |
123 | 121 | FAbon : TAbon; |
@@ -129,13 +127,10 @@ type | ||
129 | 127 | property ResRange : Longint read FResRange write FResRange; |
130 | 128 | //! o[Wîñ |
131 | 129 | property Version : String read FVersion; |
132 | -// function MsgBox(Msg: string; Title: string; Flags: Longint): integer; overload; | |
133 | -// function MsgBox(Handle: THandle; Msg: string; Title: string; Flags: Longint): integer; overload; | |
134 | 130 | function IsNumeric(s: string): boolean; |
135 | 131 | function IsFloat(s: string): boolean; |
136 | 132 | function DirectoryExistsEx(const Name: string): Boolean; |
137 | 133 | function ForceDirectoriesEx(Dir: string): Boolean; |
138 | -// function GetVersion: string; | |
139 | 134 | |
140 | 135 | function GetBoardFileName: string; |
141 | 136 | function GetCustomBoardFileName: string; |
@@ -224,7 +219,7 @@ type | ||
224 | 219 | procedure GetSameIDRes(AIDNum : Integer; ThreadItem: TThreadItem;var body: TStringList); overload; |
225 | 220 | function GetSameIDResCount(const AID : string; ThreadItem: TThreadItem):Integer; overload; |
226 | 221 | function GetSameIDResCount(AIDNum : Integer; ThreadItem: TThreadItem):Integer; overload; |
227 | - | |
222 | + function GetResID(AIDNum: Integer; ThreadItem: TThreadItem): String; | |
228 | 223 | //! PêðÍ |
229 | 224 | procedure SpamCountWord( const text : string; wordCount : TWordCount ); |
230 | 225 | //! wKNA |
@@ -257,6 +252,10 @@ type | ||
257 | 252 | function GetOEIndentChar : string; |
258 | 253 | //! u·Ýèt@Cæ¾ |
259 | 254 | function GetReplaceFileName: String; |
255 | + //! CfbNXÉÈ¢datiÍ®êdatjÌÇÁ | |
256 | + procedure AddOutofIndexDat(Board: TBoard; DatList: TStringList; AllCreate: boolean = True); | |
257 | + //! t@C¼©çÌXbhì¬úÌæ¾ | |
258 | + function GetCreateDateFromName(FileName: String): TDateTime; | |
260 | 259 | end; |
261 | 260 | |
262 | 261 | var |
@@ -266,7 +265,7 @@ const | ||
266 | 265 | ZERO_DATE: Integer = 25569; |
267 | 266 | BETA_VERSION_NAME_E = 'beta'; |
268 | 267 | BETA_VERSION_NAME_J = 'ÊÞÀ'; |
269 | - BETA_VERSION = 56; | |
268 | + BETA_VERSION = 57; | |
270 | 269 | BETA_VERSION_BUILD = ''; //!< debugÅÈÇ |
271 | 270 | APP_NAME = 'gikoNavi'; |
272 | 271 | BE_PHP_URL = 'http://be.2ch.net/test/p.php?i='; |
@@ -345,18 +344,6 @@ var | ||
345 | 344 | i: Integer; |
346 | 345 | FileList: TStringList; |
347 | 346 | begin |
348 | - //Xbhf[^t@CðXV | |
349 | -// FlashExitWrite; | |
350 | - | |
351 | -// FExitWrite.Free; | |
352 | - FBayesian.Free; | |
353 | - FAWKStr.Free; | |
354 | - FSetting.Free; | |
355 | - FDolib.Free; | |
356 | - FAbon.Free; | |
357 | - FSelectResFilter.Free; | |
358 | - FGikoMessage.Free; | |
359 | - //FBoardURLList.Free; | |
360 | 347 | //e|HTMLðí |
361 | 348 | FileList := TStringList.Create; |
362 | 349 | try |
@@ -369,6 +356,13 @@ begin | ||
369 | 356 | finally |
370 | 357 | FileList.Free; |
371 | 358 | end; |
359 | + FGikoMessage.Free; | |
360 | + FBayesian.Free; | |
361 | + FSelectResFilter.Free; | |
362 | + FAbon.Free; | |
363 | + FAWKStr.Free; | |
364 | + FDolib.Free; | |
365 | + FSetting.Free; | |
372 | 366 | inherited; |
373 | 367 | end; |
374 | 368 |
@@ -572,11 +566,18 @@ var | ||
572 | 566 | usePlugIn : Boolean; |
573 | 567 | islog : Boolean; |
574 | 568 | urlHead: String; |
569 | + datFileCheck: Boolean; | |
575 | 570 | {* |
576 | 571 | FavoThreadItem : TFavoriteThreadItem; |
577 | 572 | Node: TTreeNode; |
578 | 573 | *} |
574 | +{$IFDEF DEBUG} | |
575 | + st, rt: Cardinal; | |
576 | +{$ENDIF} | |
579 | 577 | begin |
578 | +{$IFDEF DEBUG} | |
579 | + st := GetTickCount; | |
580 | +{$ENDIF} | |
580 | 581 | if Board.IsThreadDatRead then |
581 | 582 | Exit; |
582 | 583 | Board.Clear; |
@@ -592,12 +593,16 @@ begin | ||
592 | 593 | |
593 | 594 | FileName := Board.GetFolderIndexFileName; |
594 | 595 | |
595 | - FileList := TStringList.Create; | |
596 | - FileList.Sorted := True; | |
597 | - FileList.BeginUpdate; | |
598 | - //IsLogFilepDATt@CXg | |
599 | - GetFileList(ExtractFileDir(Board.GetFolderIndexFileName), '*.dat', FileList, False); | |
600 | - FileList.EndUpdate; | |
596 | + // | |
597 | + datFileCheck := (Setting.CheckDatFile) or (not FileExists(FileName)); | |
598 | + if (datFileCheck) then begin | |
599 | + FileList := TStringList.Create; | |
600 | + FileList.Sorted := True; | |
601 | + FileList.BeginUpdate; | |
602 | + //IsLogFilepDATt@CXg | |
603 | + GetFileList(ExtractFileDir(Board.GetFolderIndexFileName), '*.dat', FileList, False); | |
604 | + FileList.EndUpdate; | |
605 | + end; | |
601 | 606 | |
602 | 607 | // d¡ðh® |
603 | 608 | Board.BeginUpdate; |
@@ -609,7 +614,11 @@ begin | ||
609 | 614 | //QsÚ©çiPsÚÍo[Wj |
610 | 615 | for i := sl.Count - 1 downto 1 do begin |
611 | 616 | Rec := ParseIndexLine(sl[i]); |
612 | - islog := FileList.Find( Rec.FFileName, Index ); | |
617 | + if (datFileCheck) then begin | |
618 | + islog := FileList.Find( Rec.FFileName, Index ); | |
619 | + end else begin | |
620 | + islog := (Rec.FSize <> 0) and (Rec.FCount <> 0); | |
621 | + end; | |
613 | 622 | if usePlugIn then |
614 | 623 | ThreadItem := TThreadItem.Create( |
615 | 624 | Board.BoardPlugIn, |
@@ -636,7 +645,7 @@ begin | ||
636 | 645 | end; |
637 | 646 | |
638 | 647 | ThreadItem.BeginUpdate; |
639 | - if islog then | |
648 | + if (datFileCheck) and (islog) then | |
640 | 649 | FileList.Delete( Index ); |
641 | 650 | |
642 | 651 | ThreadItem.No := Rec.FNo; |
@@ -671,50 +680,75 @@ begin | ||
671 | 680 | if UnRead <> Board.UnRead then |
672 | 681 | Board.UnRead := UnRead; |
673 | 682 | |
674 | - //CfbNXɳ©Á½OðÇÁi êCfbNXÎj | |
675 | - AddOutofIndexDat(Board, FileList); | |
683 | + if (datFileCheck) then begin | |
684 | + //CfbNXɳ©Á½OðÇÁi êCfbNXÎj | |
685 | + AddOutofIndexDat(Board, FileList); | |
686 | + end; | |
676 | 687 | Board.EndUpdate; |
677 | 688 | |
678 | 689 | //OñÙíI¹`FbN |
679 | 690 | RestoreThreadData( Board ); |
680 | 691 | finally |
681 | 692 | sl.Free; |
682 | - FileList.Free; | |
693 | + if (datFileCheck) then begin | |
694 | + FileList.Free; | |
695 | + end; | |
683 | 696 | Board.Sorted := False; |
684 | 697 | end; |
685 | 698 | Board.IsThreadDatRead := True; |
699 | +{$IFDEF DEBUG} | |
700 | + rt := GetTickCount - st; | |
701 | + Writeln('Read Done.' + IntToStr(rt) + ' ms'); | |
702 | +{$ENDIF} | |
686 | 703 | end; |
687 | 704 | {! |
688 | 705 | \brief CfbNXÉÈ¢datiÍ®êdatjÌÇÁ |
689 | 706 | \param Board ÇÁ·é |
690 | 707 | \param DatList datt@C¼ |
691 | 708 | } |
692 | -procedure TGikoSys.AddOutofIndexDat(Board: TBoard; DatList: TStringList); | |
709 | +procedure TGikoSys.AddOutofIndexDat(Board: TBoard; DatList: TStringList; AllCreate: Boolean = True); | |
693 | 710 | var |
694 | 711 | i : Integer; |
695 | 712 | Boardpath,FileName : String; |
696 | 713 | ResRec: TResRec; |
697 | 714 | ThreadItem: TThreadItem; |
715 | + create: Boolean; | |
698 | 716 | begin |
717 | + create := False; | |
699 | 718 | Boardpath := ExtractFilePath(Board.GetFolderIndexFileName); |
700 | 719 | //CfbNXɳ©Á½OðÇÁi êCfbNXÎj |
701 | 720 | for i := 0 to DatList.Count - 1 do begin |
702 | 721 | FileName := Boardpath + DatList[i]; |
703 | - | |
704 | - //ResRec := DivideStrLine(ReadThreadFile(FileName, 1)); | |
705 | - if Board.IsBoardPlugInAvailable then begin | |
706 | - ThreadItem := TThreadItem.Create( | |
707 | - Board.BoardPlugIn, | |
708 | - Board, | |
709 | - Board.BoardPlugIn.FileName2ThreadURL( DWORD( Board ), DatList[i] ) ); | |
710 | - THTMLCreate.DivideStrLine(Board.BoardPlugIn.GetDat( DWORD( ThreadItem ), 1 ), @ResRec); | |
711 | - end else begin | |
712 | - ThreadItem := TThreadItem.Create( | |
713 | - nil, | |
714 | - Board, | |
715 | - Get2chBoard2ThreadURL( Board, ChangeFileExt( DatList[i], '' ) ) ); | |
716 | - THTMLCreate.DivideStrLine(ReadThreadFile(FileName, 1), @ResRec); | |
722 | + ThreadItem := nil; | |
723 | + if (not AllCreate) then begin | |
724 | + create := False; | |
725 | + ThreadItem := Board.FindThreadFromFileName(DatList[i]); | |
726 | + if (ThreadItem = nil) then begin | |
727 | + create := True; | |
728 | + end else begin | |
729 | + if Board.IsBoardPlugInAvailable then begin | |
730 | + THTMLCreate.DivideStrLine(Board.BoardPlugIn.GetDat( DWORD( ThreadItem ), 1 ), @ResRec); | |
731 | + end else begin | |
732 | + THTMLCreate.DivideStrLine(ReadThreadFile(FileName, 1), @ResRec); | |
733 | + end; | |
734 | + end; | |
717 | 735 | end; |
736 | + if (ThreadItem = nil) then begin | |
737 | + if Board.IsBoardPlugInAvailable then begin | |
738 | + ThreadItem := TThreadItem.Create( | |
739 | + Board.BoardPlugIn, | |
740 | + Board, | |
741 | + Board.BoardPlugIn.FileName2ThreadURL( DWORD( Board ), DatList[i] ) ); | |
742 | + THTMLCreate.DivideStrLine(Board.BoardPlugIn.GetDat( DWORD( ThreadItem ), 1 ), @ResRec); | |
743 | + end else begin | |
744 | + ThreadItem := TThreadItem.Create( | |
745 | + nil, | |
746 | + Board, | |
747 | + Get2chBoard2ThreadURL( Board, ChangeFileExt( DatList[i], '' ) ) ); | |
748 | + THTMLCreate.DivideStrLine(ReadThreadFile(FileName, 1), @ResRec); | |
749 | + end; | |
750 | + end; | |
751 | + | |
718 | 752 | |
719 | 753 | ThreadItem.BeginUpdate; |
720 | 754 | ThreadItem.FileName := DatList[i]; |
@@ -736,7 +770,9 @@ begin | ||
736 | 770 | ThreadItem.ScrollTop := 0; |
737 | 771 | ThreadItem.AgeSage := gasNone; |
738 | 772 | ThreadItem.EndUpdate; |
739 | - Board.Add(ThreadItem); | |
773 | + if (AllCreate) or (create) then begin | |
774 | + Board.Add(ThreadItem); | |
775 | + end; | |
740 | 776 | end; |
741 | 777 | end; |
742 | 778 | {! |
@@ -1307,17 +1343,15 @@ var | ||
1307 | 1343 | nm: NONCLIENTMETRICS; |
1308 | 1344 | begin |
1309 | 1345 | nm.cbSize := sizeof(NONCLIENTMETRICS); |
1310 | - | |
1311 | - SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @nm, 0); | |
1312 | - lf := nm.lfMenuFont; | |
1313 | - | |
1314 | - Font.Name := lf.lfFaceName; | |
1315 | - Font.Height := lf.lfHeight; | |
1316 | - Font.Style := []; | |
1317 | - if lf.lfWeight >= 700 then | |
1318 | - Font.Style := Font.Style + [fsBold]; | |
1319 | - if lf.lfItalic = 1 then | |
1320 | - Font.Style := Font.Style + [fsItalic]; | |
1346 | + SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @nm, 0); | |
1347 | + lf := nm.lfMenuFont; | |
1348 | + Font.Name := lf.lfFaceName; | |
1349 | + Font.Height := lf.lfHeight; | |
1350 | + Font.Style := []; | |
1351 | + if lf.lfWeight >= 700 then | |
1352 | + Font.Style := Font.Style + [fsBold]; | |
1353 | + if lf.lfItalic = 1 then | |
1354 | + Font.Style := Font.Style + [fsItalic]; | |
1321 | 1355 | end; |
1322 | 1356 | |
1323 | 1357 | {! |
@@ -2849,12 +2883,27 @@ end; | ||
2849 | 2883 | } |
2850 | 2884 | procedure TGikoSys.GetSameIDRes(AIDNum : Integer; ThreadItem: TThreadItem;var body: TStringList); |
2851 | 2885 | var |
2886 | + AID : String; | |
2887 | +begin | |
2888 | + AID := GetResID(AIDNum, ThreadItem); | |
2889 | + if not IsNoValidID(AID) then begin | |
2890 | + GetSameIDRes(AID, ThreadItem, body); | |
2891 | + end; | |
2892 | +end; | |
2893 | +{! | |
2894 | +\brief e ID æ¾ | |
2895 | +\param AIDNum e XÔ | |
2896 | +\param ThreadItem eXbh | |
2897 | +\param body OUT:eID | |
2898 | +} | |
2899 | +function TGikoSys.GetResID(AIDNum: Integer; ThreadItem: TThreadItem): String; | |
2900 | +var | |
2852 | 2901 | Res: TResRec; |
2853 | 2902 | boardPlugIn : TBoardPlugIn; |
2854 | - AID : String; | |
2855 | 2903 | stList: TStringList; |
2856 | 2904 | i : Integer; |
2857 | 2905 | begin |
2906 | + Result := ''; | |
2858 | 2907 | if (ThreadItem <> nil) and (ThreadItem.IsLogFile) |
2859 | 2908 | and (AIDNum > 0) and (AIDNum <= ThreadItem.Count) then begin |
2860 | 2909 | //if ThreadItem.IsBoardPlugInAvailable then begin |
@@ -2866,21 +2915,21 @@ begin | ||
2866 | 2915 | end else begin |
2867 | 2916 | THTMLCreate.DivideStrLine( ReadThreadFile(ThreadItem.GetThreadFileName, AIDNum), @Res); |
2868 | 2917 | end; |
2869 | - AID := Res.FDateTime; | |
2870 | - if AnsiPos('id', AnsiLowerCase(AID)) > 0 then begin | |
2871 | - AID := Copy(AID, AnsiPos('id', AnsiLowerCase(AID)) - 1, 11); | |
2872 | - if AnsiPos(' be:', AnsiLowerCase(AID)) > 0 then begin | |
2873 | - AID := Copy(AID, 1, AnsiPos(' BE:', AnsiLowerCase(AID)) - 1) | |
2918 | + Result := Res.FDateTime; | |
2919 | + if AnsiPos('id', AnsiLowerCase(Result)) > 0 then begin | |
2920 | + Result := Copy(Result, AnsiPos('id', AnsiLowerCase(Result)) - 1, 11); | |
2921 | + if AnsiPos(' be:', AnsiLowerCase(Result)) > 0 then begin | |
2922 | + Result := Copy(Result, 1, AnsiPos(' BE:', AnsiLowerCase(Result)) - 1) | |
2874 | 2923 | end; |
2875 | 2924 | end else begin |
2876 | 2925 | stlist := TStringList.Create; |
2877 | 2926 | try |
2878 | - stList.DelimitedText := AID; | |
2879 | - AID := ''; | |
2927 | + stList.DelimitedText := Result; | |
2928 | + Result := ''; | |
2880 | 2929 | for i := 0 to stList.Count - 1 do |
2881 | 2930 | if Length(WideString(stList[i])) = 8 then begin |
2882 | 2931 | if NotDateorTimeString(stList[i]) then begin |
2883 | - AID := stList[i]; | |
2932 | + Result := stList[i]; | |
2884 | 2933 | break; |
2885 | 2934 | end; |
2886 | 2935 | end; |
@@ -2888,11 +2937,8 @@ begin | ||
2888 | 2937 | stList.Free; |
2889 | 2938 | end; |
2890 | 2939 | end; |
2891 | - if not IsNoValidID(AID) then | |
2892 | - GetSameIDRes(AID, ThreadItem, body); | |
2893 | 2940 | end; |
2894 | 2941 | end; |
2895 | - | |
2896 | 2942 | {! |
2897 | 2943 | \brief ¯¶e ID ðÂXðJEg |
2898 | 2944 | \param AID ÂlðÁè·ée ID |
@@ -3309,7 +3355,8 @@ begin | ||
3309 | 3355 | ThreadItem.NewReceive := ini.ReadInteger(SECTION, 'NewReceive', 0); |
3310 | 3356 | |
3311 | 3357 | ThreadItem.Size := ini.ReadInteger(SECTION, 'Size', 0); |
3312 | - if(ThreadItem.Size = 0) and (FileExists(ThreadItem.GetThreadFileName)) then begin | |
3358 | + ThreadItem.IsLogFile := FileExists(ThreadItem.GetThreadFileName); | |
3359 | + if(ThreadItem.Size = 0) and (ThreadItem.IsLogFile) then begin | |
3313 | 3360 | try |
3314 | 3361 | ThreadItem.Size := GetFileSize(ThreadItem.GetThreadFileName) - ThreadItem.Count; |
3315 | 3362 | except |
@@ -3399,6 +3446,26 @@ function TGikoSys.GetReplaceFileName: String; | ||
3399 | 3446 | begin |
3400 | 3447 | Result := Setting.GetReplaceFileName; |
3401 | 3448 | end; |
3449 | +//! t@C¼©çÌXbhì¬úÌæ¾ | |
3450 | +function TGikoSys.GetCreateDateFromName(FileName: String): TDateTime; | |
3451 | +var | |
3452 | + tmp : String; | |
3453 | + unixtime: Int64; | |
3454 | +begin | |
3455 | + // Ot@CÌg£qð͸µ½à̪Xì¬ú | |
3456 | + tmp := ChangeFileExt(FileName, ''); | |
3457 | + if AnsiPos('_', tmp) <> 0 then | |
3458 | + if AnsiPos('_', tmp) > 9 then | |
3459 | + tmp := Copy(tmp, 1, AnsiPos('_', tmp)-1) | |
3460 | + else | |
3461 | + Delete(tmp, AnsiPos('_', tmp), 1); | |
3462 | + | |
3463 | + if ( Length(tmp) = 9) and ( tmp[1] = '0' ) then | |
3464 | + Insert('1', tmp, 1); | |
3465 | + | |
3466 | + unixtime := StrToInt64Def(tmp, ZERO_DATE); | |
3467 | + Result := UnixToDateTime(unixtime) + OffsetFromUTC; | |
3468 | +end; | |
3402 | 3469 | |
3403 | 3470 | initialization |
3404 | 3471 | GikoSys := TGikoSys.Create; |
@@ -18,6 +18,7 @@ type | ||
18 | 18 | FOnClick: TDocumentContextMenuEvent; |
19 | 19 | FOnMouseMove: TDocumentContextMenuEvent; |
20 | 20 | FOnMouseDown: TDocumentContextMenuEvent; |
21 | + FOnDoubleClick: TDocumentContextMenuEvent; | |
21 | 22 | protected |
22 | 23 | { IUnknown } |
23 | 24 | function QueryInterface(const IID:TGUID; out Obj): HRESULT; stdcall; |
@@ -37,6 +38,7 @@ type | ||
37 | 38 | property OnClick: TDocumentContextMenuEvent read FOnClick write FOnClick; |
38 | 39 | property OnMouseMove: TDocumentContextMenuEvent read FOnMouseMove write FOnMouseMove; |
39 | 40 | property OnMouseDown: TDocumentContextMenuEvent read FOnMouseDown write FOnMouseDown; |
41 | + property OnDoubleClick: TDocumentContextMenuEvent read FOnDoubleClick write FOnDoubleClick; | |
40 | 42 | end; |
41 | 43 | |
42 | 44 | implementation |
@@ -100,6 +102,10 @@ begin | ||
100 | 102 | if Assigned(FOnClick) then begin |
101 | 103 | PVariant(VarResult)^ := FOnClick(FOwner); |
102 | 104 | end; |
105 | + DISPID_DBLCLICK: | |
106 | + if Assigned(FOnDoubleClick) then begin | |
107 | + PVariant(VarResult)^ := FOnDoubleClick(FOwner); | |
108 | + end; | |
103 | 109 | 1023: |
104 | 110 | if Assigned(FOnContextMenu) then begin |
105 | 111 | PVariant(VarResult)^ := FOnContextMenu(FOwner); |
@@ -189,12 +189,19 @@ var | ||
189 | 189 | begin |
190 | 190 | if GikoListView1.Selected <> nil then begin |
191 | 191 | if (ValidateKey(KeyNameEdit.Text, CategoryNameComboBox.Text)) then begin |
192 | - if (not InputAssistDM.IsDupulicate( | |
192 | + resWord := TResistWord(GikoListView1.Selected.Data); | |
193 | + // ÏXOÌL[^JeSƯêàµÍA¼Æd¡³µ | |
194 | + if ((resWord.GetKey = KeyNameEdit.Text) | |
195 | + and (resWord.GetCategory = CategoryNameComboBox.Text)) or | |
196 | + (not InputAssistDM.IsDupulicate( | |
193 | 197 | KeyNameEdit.Text, CategoryNameComboBox.Text) ) then begin |
194 | - resWord := TResistWord(GikoListView1.Selected.Data); | |
195 | - resWord.SetKey(KeyNameEdit.Text); | |
196 | - resWord.SetCategory(CategoryNameComboBox.Text); | |
197 | - resWord.SetText(TextMemo.Text); | |
198 | + resWord.SetCategory(CategoryNameComboBox.Text); | |
199 | + resWord.SetText(TextMemo.Text); | |
200 | + // L[ªÏíéÆ«ÍAChangeKeyðÄÔ | |
201 | + if (resWord.GetKey <> KeyNameEdit.Text) then begin | |
202 | + resWord.SetKey(KeyNameEdit.Text); | |
203 | + InputAssistDM.ChangeKey(resWord); | |
204 | + end; | |
198 | 205 | // êÌXV |
199 | 206 | GikoListView1.Selected.Caption := resWord.GetKey; |
200 | 207 | GikoListView1.Selected.SubItems[0] := resWord.GetCategory; |
@@ -21,8 +21,8 @@ object KuroutOption: TKuroutOption | ||
21 | 21 | Top = 0 |
22 | 22 | Width = 517 |
23 | 23 | Height = 393 |
24 | - ActivePage = KakikomiTabSheet | |
25 | - TabIndex = 2 | |
24 | + ActivePage = RespopupTabSheet | |
25 | + TabIndex = 4 | |
26 | 26 | TabOrder = 0 |
27 | 27 | object TabSheet1: TTabSheet |
28 | 28 | Caption = #35443#32048#35373#23450#65297 |
@@ -562,6 +562,136 @@ object KuroutOption: TKuroutOption | ||
562 | 562 | TabOrder = 1 |
563 | 563 | end |
564 | 564 | end |
565 | + object LogGroupBox: TGroupBox | |
566 | + Left = 16 | |
567 | + Top = 160 | |
568 | + Width = 465 | |
569 | + Height = 65 | |
570 | + Caption = #12525#12464 | |
571 | + TabOrder = 1 | |
572 | + object CheckDatFileCheckBox: TCheckBox | |
573 | + Left = 22 | |
574 | + Top = 14 | |
575 | + Width = 369 | |
576 | + Height = 17 | |
577 | + Caption = #12473#12524#12483#12489#19968#35239#65288'Folder.idx'#65289#35501#12415#36796#12415#26178#12395'dat'#12501#12449#12452#12523#12434#12481#12455#12483#12463#12377#12427#12290 | |
578 | + TabOrder = 0 | |
579 | + end | |
580 | + end | |
581 | + end | |
582 | + object RespopupTabSheet: TTabSheet | |
583 | + Caption = #35443#32048#35373#23450'5' | |
584 | + ImageIndex = 4 | |
585 | + object RespopuGroupBox: TGroupBox | |
586 | + Left = 8 | |
587 | + Top = 16 | |
588 | + Width = 473 | |
589 | + Height = 121 | |
590 | + Caption = #12524#12473#12509#12483#12503#12450#12483#12503 | |
591 | + TabOrder = 0 | |
592 | + object Label16: TLabel | |
593 | + Left = 16 | |
594 | + Top = 48 | |
595 | + Width = 292 | |
596 | + Height = 12 | |
597 | + Caption = '( '#12510#12454#12473#12459#12540#12477#12523#20301#32622#12363#12425#12398#12378#12425#12375#20301#32622' -25 px '#65374' 25'#12288'px)' | |
598 | + end | |
599 | + object Label19: TLabel | |
600 | + Left = 192 | |
601 | + Top = 72 | |
602 | + Width = 96 | |
603 | + Height = 12 | |
604 | + Caption = '(0 ms '#65374' 5000 ms)' | |
605 | + end | |
606 | + object DeltaXLabeledEdit: TLabeledEdit | |
607 | + Left = 120 | |
608 | + Top = 24 | |
609 | + Width = 49 | |
610 | + Height = 20 | |
611 | + EditLabel.Width = 97 | |
612 | + EditLabel.Height = 12 | |
613 | + EditLabel.Caption = #12509#12483#12503#12450#12483#12503#20301#32622' X' | |
614 | + LabelPosition = lpLeft | |
615 | + LabelSpacing = 10 | |
616 | + TabOrder = 0 | |
617 | + Text = '0' | |
618 | + OnExit = DeltaXLabeledEditExit | |
619 | + end | |
620 | + object DeltaYLabeledEdit: TLabeledEdit | |
621 | + Left = 304 | |
622 | + Top = 24 | |
623 | + Width = 49 | |
624 | + Height = 20 | |
625 | + EditLabel.Width = 97 | |
626 | + EditLabel.Height = 12 | |
627 | + EditLabel.Caption = #12509#12483#12503#12450#12483#12503#20301#32622' Y' | |
628 | + LabelPosition = lpLeft | |
629 | + LabelSpacing = 10 | |
630 | + TabOrder = 1 | |
631 | + Text = '0' | |
632 | + OnExit = DeltaYLabeledEditExit | |
633 | + end | |
634 | + object DeltaXUpDown: TUpDown | |
635 | + Left = 169 | |
636 | + Top = 24 | |
637 | + Width = 16 | |
638 | + Height = 20 | |
639 | + Associate = DeltaXLabeledEdit | |
640 | + Min = -25 | |
641 | + Max = 25 | |
642 | + Position = 0 | |
643 | + TabOrder = 2 | |
644 | + Wrap = False | |
645 | + end | |
646 | + object DeltaYUpDown: TUpDown | |
647 | + Left = 353 | |
648 | + Top = 24 | |
649 | + Width = 16 | |
650 | + Height = 20 | |
651 | + Associate = DeltaYLabeledEdit | |
652 | + Min = -25 | |
653 | + Max = 25 | |
654 | + Position = 0 | |
655 | + TabOrder = 3 | |
656 | + Wrap = False | |
657 | + end | |
658 | + object RespopupWaitLabeledEdit: TLabeledEdit | |
659 | + Left = 76 | |
660 | + Top = 66 | |
661 | + Width = 92 | |
662 | + Height = 20 | |
663 | + EditLabel.Width = 52 | |
664 | + EditLabel.Height = 12 | |
665 | + EditLabel.Caption = #12463#12522#12450'Wait' | |
666 | + LabelPosition = lpLeft | |
667 | + LabelSpacing = 10 | |
668 | + TabOrder = 4 | |
669 | + Text = '100' | |
670 | + OnExit = RespopupWaitLabeledEditExit | |
671 | + end | |
672 | + object RespopupWaitUpDown: TUpDown | |
673 | + Left = 168 | |
674 | + Top = 66 | |
675 | + Width = 17 | |
676 | + Height = 20 | |
677 | + Associate = RespopupWaitLabeledEdit | |
678 | + Min = 0 | |
679 | + Max = 5000 | |
680 | + Increment = 100 | |
681 | + Position = 100 | |
682 | + TabOrder = 5 | |
683 | + Thousands = False | |
684 | + Wrap = False | |
685 | + end | |
686 | + object RespopupMailToCheckBox: TCheckBox | |
687 | + Left = 16 | |
688 | + Top = 96 | |
689 | + Width = 185 | |
690 | + Height = 17 | |
691 | + Caption = #12513#12540#12523#27396#12434#12509#12483#12503#12450#12483#12503#12377#12427 | |
692 | + TabOrder = 6 | |
693 | + end | |
694 | + end | |
565 | 695 | end |
566 | 696 | end |
567 | 697 | object OkBotton: TButton |
@@ -81,6 +81,19 @@ type | ||
81 | 81 | Label14: TLabel; |
82 | 82 | ExtListLabeledEdit: TLabeledEdit; |
83 | 83 | Label15: TLabel; |
84 | + LogGroupBox: TGroupBox; | |
85 | + CheckDatFileCheckBox: TCheckBox; | |
86 | + RespopupTabSheet: TTabSheet; | |
87 | + RespopuGroupBox: TGroupBox; | |
88 | + DeltaXLabeledEdit: TLabeledEdit; | |
89 | + DeltaYLabeledEdit: TLabeledEdit; | |
90 | + DeltaXUpDown: TUpDown; | |
91 | + DeltaYUpDown: TUpDown; | |
92 | + Label16: TLabel; | |
93 | + RespopupWaitLabeledEdit: TLabeledEdit; | |
94 | + RespopupWaitUpDown: TUpDown; | |
95 | + Label19: TLabel; | |
96 | + RespopupMailToCheckBox: TCheckBox; | |
84 | 97 | procedure OkBottonClick(Sender: TObject); |
85 | 98 | procedure FormCreate(Sender: TObject); |
86 | 99 | procedure CDeleteButtonClick(Sender: TObject); |
@@ -94,6 +107,9 @@ type | ||
94 | 107 | procedure MoveHistoryMaxEditExit(Sender: TObject); |
95 | 108 | procedure AHandredLabeledEditExit(Sender: TObject); |
96 | 109 | procedure ExtListLabeledEditExit(Sender: TObject); |
110 | + procedure DeltaXLabeledEditExit(Sender: TObject); | |
111 | + procedure DeltaYLabeledEditExit(Sender: TObject); | |
112 | + procedure RespopupWaitLabeledEditExit(Sender: TObject); | |
97 | 113 | private |
98 | 114 | { Private é¾ } |
99 | 115 | procedure SetValue; |
@@ -156,6 +172,12 @@ begin | ||
156 | 172 | ReplaceDatCheckBox.Checked := GikoSys.Setting.ReplaceDat; |
157 | 173 | SentIniFileSizeUpDown.Position := GikoSys.Setting.SentIniFileSize; |
158 | 174 | ExtListLabeledEdit.Text := GikoSys.Setting.ExtList; |
175 | + // Folder.idxÇÝÝdat`FbN | |
176 | + CheckDatFileCheckBox.Checked := GikoSys.Setting.CheckDatFile; | |
177 | + DeltaXUpDown.Position := GikoSys.Setting.RespopupDeltaX; | |
178 | + DeltaYUpDown.Position := GikoSys.Setting.RespopupDeltaY; | |
179 | + RespopupWaitUpDown.Position := GikoSys.Setting.RespopupWait; | |
180 | + RespopupMailToCheckBox.Checked := GikoSys.Setting.RespopupMailTo; | |
159 | 181 | end; |
160 | 182 | |
161 | 183 | procedure TKuroutOption.SaveSetting; |
@@ -198,6 +220,14 @@ begin | ||
198 | 220 | GikoSys.Setting.ReplaceDat := ReplaceDatCheckBox.Checked; |
199 | 221 | GikoSys.Setting.SentIniFileSize := SentIniFileSizeUpDown.Position; |
200 | 222 | GikoSys.Setting.ExtList := ExtListLabeledEdit.Text; |
223 | + // Folder.idxÇÝÝdat`FbN | |
224 | + GikoSys.Setting.CheckDatFile := CheckDatFileCheckBox.Checked; | |
225 | + | |
226 | + GikoSys.Setting.RespopupDeltaX := StrToInt(DeltaXLabeledEdit.Text); | |
227 | + GikoSys.Setting.RespopupDeltaY := StrToInt(DeltaYLabeledEdit.Text); | |
228 | + GikoSys.Setting.RespopupWait := StrToInt(RespopupWaitLabeledEdit.Text); | |
229 | + GikoForm.ResPopupClearTimer.Interval := GikoSys.Setting.RespopupWait; | |
230 | + GikoSys.Setting.RespopupMailTo := RespopupMailToCheckBox.Checked; | |
201 | 231 | end; |
202 | 232 | |
203 | 233 | procedure TKuroutOption.RecvBufferSizeExit(Sender: TObject); |
@@ -229,6 +259,9 @@ begin | ||
229 | 259 | MoveHistoryMaxEditExit(Sender); |
230 | 260 | AHandredLabeledEditExit(Sender); |
231 | 261 | ExtListLabeledEditExit(Sender); |
262 | + DeltaXLabeledEditExit(Sender); | |
263 | + DeltaYLabeledEditExit(Sender); | |
264 | + RespopupWaitLabeledEditExit(Sender); | |
232 | 265 | PostColumnData(); |
233 | 266 | SaveSetting; |
234 | 267 | end; |
@@ -448,8 +481,38 @@ begin | ||
448 | 481 | if AnsiEndsStr(';', ExtListLabeledEdit.Text) then begin |
449 | 482 | ExtListLabeledEdit.Text := |
450 | 483 | Copy(ExtListLabeledEdit.Text, 0, |
451 | - Length(ExtListLabeledEdit.Text) - 1); | |
484 | + Length(ExtListLabeledEdit.Text) - 1); | |
452 | 485 | end; |
453 | 486 | end; |
487 | +// X|bvAbvÊuX | |
488 | +procedure TKuroutOption.DeltaXLabeledEditExit(Sender: TObject); | |
489 | +begin | |
490 | + if not GikoSys.IsNumeric(DeltaXLabeledEdit.Text) then | |
491 | + DeltaXLabeledEdit.Text := IntToStr(GikoSys.Setting.RespopupDeltaX); | |
492 | + if StrToInt(DeltaXLabeledEdit.Text) < DeltaXUpDown.Min then | |
493 | + DeltaXLabeledEdit.Text := IntToStr(DeltaXUpDown.Min); | |
494 | + if StrToInt(DeltaXLabeledEdit.Text) > DeltaXUpDown.Max then | |
495 | + DeltaXLabeledEdit.Text:= IntToStr(DeltaXUpDown.Max); | |
496 | +end; | |
497 | +// X|bvAbvÊuY | |
498 | +procedure TKuroutOption.DeltaYLabeledEditExit(Sender: TObject); | |
499 | +begin | |
500 | + if not GikoSys.IsNumeric(DeltaYLabeledEdit.Text) then | |
501 | + DeltaYLabeledEdit.Text := IntToStr(GikoSys.Setting.RespopupDeltaY); | |
502 | + if StrToInt(DeltaYLabeledEdit.Text) < DeltaYUpDown.Min then | |
503 | + DeltaYLabeledEdit.Text := IntToStr(DeltaYUpDown.Min); | |
504 | + if StrToInt(DeltaYLabeledEdit.Text) > DeltaYUpDown.Max then | |
505 | + DeltaYLabeledEdit.Text := IntToStr(DeltaYUpDown.Max); | |
506 | +end; | |
507 | + | |
508 | +procedure TKuroutOption.RespopupWaitLabeledEditExit(Sender: TObject); | |
509 | +begin | |
510 | + if not GikoSys.IsNumeric(RespopupWaitLabeledEdit.Text) then | |
511 | + RespopupWaitLabeledEdit.Text := IntToStr(GikoSys.Setting.RespopupWait); | |
512 | + if StrToInt(RespopupWaitLabeledEdit.Text) < RespopupWaitUpDown.Min then | |
513 | + RespopupWaitLabeledEdit.Text := IntToStr(RespopupWaitUpDown.Min); | |
514 | + if StrToInt(RespopupWaitLabeledEdit.Text) > RespopupWaitUpDown.Max then | |
515 | + RespopupWaitLabeledEdit.Text := IntToStr(RespopupWaitUpDown.Max); | |
516 | +end; | |
454 | 517 | |
455 | 518 | end. |
@@ -47,20 +47,32 @@ var | ||
47 | 47 | sec : TStringList; |
48 | 48 | begin |
49 | 49 | sec := TStringList.Create; |
50 | - ini := TMemIniFile.Create(GikoSys.GetBoardFileName); | |
51 | - ini.ReadSections(sec); | |
50 | + try | |
51 | + ini := TMemIniFile.Create(GikoSys.GetBoardFileName); | |
52 | + try | |
53 | + ini.ReadSections(sec); | |
52 | 54 | |
53 | - CategoryComboBox.Clear; | |
54 | - CategoryComboBox.Items.BeginUpdate; | |
55 | - for i := 0 to sec.Count - 1 do begin | |
56 | - CategoryComboBox.Items.Add(sec[i]); | |
57 | - end; | |
58 | - CategoryComboBox.Items.EndUpdate; | |
59 | - CategoryComboBox.ItemIndex := 0; | |
55 | + CategoryComboBox.Clear; | |
56 | + CategoryComboBox.Items.BeginUpdate; | |
57 | + for i := 0 to sec.Count - 1 do begin | |
58 | + CategoryComboBox.Items.Add(sec[i]); | |
59 | + end; | |
60 | + CategoryComboBox.Items.EndUpdate; | |
61 | + CategoryComboBox.ItemIndex := 0; | |
60 | 62 | |
61 | - ResultMemo.Lines.Clear; | |
63 | + ResultMemo.Lines.Clear; | |
64 | + finally | |
65 | + if ini <> nil then begin | |
66 | + ini.Free; | |
67 | + end; | |
68 | + end; | |
69 | + finally | |
70 | + if sec <> nil then begin | |
71 | + sec.Free; | |
72 | + end; | |
73 | + end; | |
62 | 74 | end; |
63 | - | |
75 | +//! fXgN^ | |
64 | 76 | procedure TNewBoardURLForm.SearchButtonClick(Sender: TObject); |
65 | 77 | var |
66 | 78 | i : Integer; |
@@ -186,9 +198,13 @@ begin | ||
186 | 198 | keys := TStringList.Create; |
187 | 199 | try |
188 | 200 | ini := TMemIniFile.Create(GikoSys.GetBoardFileName); |
189 | - ini.ReadSection(sec, keys); | |
190 | - for i := 0 to keys.Count - 1 do begin | |
191 | - urls.Add(ini.ReadString(sec, keys[i], '')); | |
201 | + try | |
202 | + ini.ReadSection(sec, keys); | |
203 | + for i := 0 to keys.Count - 1 do begin | |
204 | + urls.Add(ini.ReadString(sec, keys[i], '')); | |
205 | + end; | |
206 | + finally | |
207 | + ini.Free; | |
192 | 208 | end; |
193 | 209 | finally |
194 | 210 | keys.Free; |
@@ -1,6 +1,6 @@ | ||
1 | 1 | object OptionDialog: TOptionDialog |
2 | - Left = 417 | |
3 | - Top = 435 | |
2 | + Left = 300 | |
3 | + Top = 166 | |
4 | 4 | BorderStyle = bsDialog |
5 | 5 | Caption = #12458#12503#12471#12519#12531 |
6 | 6 | ClientHeight = 428 |
@@ -61,9 +61,9 @@ object OptionDialog: TOptionDialog | ||
61 | 61 | Top = 4 |
62 | 62 | Width = 509 |
63 | 63 | Height = 389 |
64 | - ActivePage = TabSheet1 | |
64 | + ActivePage = ThreadSheet | |
65 | 65 | MultiLine = True |
66 | - TabIndex = 5 | |
66 | + TabIndex = 4 | |
67 | 67 | TabOrder = 3 |
68 | 68 | OnChange = OptionTabChange |
69 | 69 | object ConnectSheet: TTabSheet |
@@ -870,7 +870,7 @@ object OptionDialog: TOptionDialog | ||
870 | 870 | Left = 12 |
871 | 871 | Top = 92 |
872 | 872 | Width = 477 |
873 | - Height = 121 | |
873 | + Height = 157 | |
874 | 874 | Caption = #12522#12531#12463#12463#12522#12483#12463#26178#21205#20316 |
875 | 875 | TabOrder = 1 |
876 | 876 | object AppFolderLabel: TLabel |
@@ -915,13 +915,21 @@ object OptionDialog: TOptionDialog | ||
915 | 915 | TabOrder = 3 |
916 | 916 | OnClick = URLAppCheckBoxClick |
917 | 917 | end |
918 | + object ResAnchorCheckBox: TCheckBox | |
919 | + Left = 12 | |
920 | + Top = 125 | |
921 | + Width = 333 | |
922 | + Height = 17 | |
923 | + Caption = #12524#12473#12450#12531#12459#12540#12398#22580#21512#12289#12381#12398#12524#12473#12414#12391#12472#12515#12531#12503#12377#12427 | |
924 | + TabOrder = 4 | |
925 | + end | |
918 | 926 | end |
919 | 927 | object GroupBox6: TGroupBox |
920 | 928 | Left = 12 |
921 | - Top = 220 | |
929 | + Top = 260 | |
922 | 930 | Width = 477 |
923 | - Height = 49 | |
924 | - Caption = #12525#12464#21066#38500 | |
931 | + Height = 77 | |
932 | + Caption = #30906#35469#12513#12483#12475#12540#12472 | |
925 | 933 | TabOrder = 2 |
926 | 934 | object LogDeleteMessageCheckBox: TCheckBox |
927 | 935 | Left = 12 |
@@ -932,21 +940,14 @@ object OptionDialog: TOptionDialog | ||
932 | 940 | TabOrder = 0 |
933 | 941 | OnClick = URLAppCheckBoxClick |
934 | 942 | end |
935 | - end | |
936 | - object ResAnchorGroupBox: TGroupBox | |
937 | - Left = 12 | |
938 | - Top = 279 | |
939 | - Width = 477 | |
940 | - Height = 49 | |
941 | - Caption = #12524#12473#12450#12531#12459#12540#12463#12522#12483#12463#26178#21205#20316 | |
942 | - TabOrder = 3 | |
943 | - object ResAnchorCheckBox: TCheckBox | |
943 | + object IgnoreLimitResCountCheckBox: TCheckBox | |
944 | 944 | Left = 12 |
945 | - Top = 21 | |
946 | - Width = 165 | |
945 | + Top = 46 | |
946 | + Width = 389 | |
947 | 947 | Height = 17 |
948 | - Caption = #12381#12398#12524#12473#12414#12391#12472#12515#12531#12503#12377#12427 | |
949 | - TabOrder = 0 | |
948 | + Caption = #21516'ID'#12524#12473#12450#12531#12459#12540#34920#31034#12391#21046#38480#25968#36234#12360#12398#30906#35469#12513#12483#12475#12540#12472#12434#34920#31034#12377#12427'(&R)' | |
949 | + TabOrder = 1 | |
950 | + OnClick = URLAppCheckBoxClick | |
950 | 951 | end |
951 | 952 | end |
952 | 953 | end |
@@ -116,8 +116,6 @@ type | ||
116 | 116 | OpenMailerCheckBox: TCheckBox; |
117 | 117 | GroupBox6: TGroupBox; |
118 | 118 | LogDeleteMessageCheckBox: TCheckBox; |
119 | - ResAnchorGroupBox: TGroupBox; | |
120 | - ResAnchorCheckBox: TCheckBox; | |
121 | 119 | TabSheet1: TTabSheet; |
122 | 120 | TabAddRadioGroup: TRadioGroup; |
123 | 121 | GroupBox8: TGroupBox; |
@@ -219,6 +217,8 @@ type | ||
219 | 217 | gppLeftBottomRB: TRadioButton; |
220 | 218 | gppBottomRB: TRadioButton; |
221 | 219 | gppRighBottomRB: TRadioButton; |
220 | + ResAnchorCheckBox: TCheckBox; | |
221 | + IgnoreLimitResCountCheckBox: TCheckBox; | |
222 | 222 | procedure FormCreate(Sender: TObject); |
223 | 223 | procedure FormDestroy(Sender: TObject); |
224 | 224 | procedure ApplyButtonClick(Sender: TObject); |
@@ -766,6 +766,8 @@ begin | ||
766 | 766 | |
767 | 767 | //OíbZ[W |
768 | 768 | LogDeleteMessageCheckBox.Checked := GikoSys.Setting.DeleteMsg; |
769 | + //¯IDXAJ[\¦Ì§Àz¦bZ[W | |
770 | + IgnoreLimitResCountCheckBox.Checked := GikoSys.Setting.LimitResCountMessage; | |
769 | 771 | |
770 | 772 | //I¹mF_CAO |
771 | 773 | ShowDialogForEndCheckBox.Checked := GikoSys.Setting.ShowDialogForEnd; |
@@ -1031,6 +1033,8 @@ begin | ||
1031 | 1033 | |
1032 | 1034 | GikoSys.Setting.OpenMailer := OpenMailerCheckBox.Checked; |
1033 | 1035 | GikoSys.Setting.DeleteMsg := LogDeleteMessageCheckBox.Checked; |
1036 | + GikoSys.Setting.LimitResCountMessage := IgnoreLimitResCountCheckBox.Checked; | |
1037 | + | |
1034 | 1038 | //I¹mF_CAO |
1035 | 1039 | GikoSys.Setting.ShowDialogForEnd := ShowDialogForEndCheckBox.Checked; |
1036 | 1040 | //AllTabClose |
@@ -10,7 +10,6 @@ uses | ||
10 | 10 | SHDocVw_TLB |
11 | 11 | {$IFEND} |
12 | 12 | ; |
13 | - | |
14 | 13 | type |
15 | 14 | TPreviewBrowser = class(TWebBrowser) |
16 | 15 | private |
@@ -29,6 +28,9 @@ uses MojuUtils, GikoSystem, Setting; | ||
29 | 28 | const |
30 | 29 | //vr [t@C¼ |
31 | 30 | HTML_FILE_NAME = 'temp_preview.html'; |
31 | + // }EXJ[\©ç̸çµÊu | |
32 | + DIV_X = 15; | |
33 | + DIV_Y = 15; | |
32 | 34 | |
33 | 35 | constructor TPreviewBrowser.Create(AOwner: TComponent); |
34 | 36 | begin |
@@ -148,26 +150,26 @@ begin | ||
148 | 150 | end; |
149 | 151 | |
150 | 152 | Result := Rect(0, 0, WindowWidth, WindowHeight); |
151 | - | |
153 | + // bata55ÈOͶEªÔáÁĽ | |
152 | 154 | // oµÊuÉæéâ³ |
153 | 155 | case GikoSys.Setting.PopupPosition of |
154 | - gppRightTop: OffsetRect(Result, | |
155 | - Point.x - WindowWidth - 15, Point.y - WindowHeight - 15); | |
156 | - gppRight: OffsetRect(Result, | |
157 | - Point.x - WindowWidth - 15, Point.y - (WindowHeight div 2)); | |
158 | - gppRightBottom: OffsetRect(Result, | |
159 | - Point.x - WindowWidth - 15, Point.y + 15); | |
156 | + gppLeftTop: OffsetRect(Result, | |
157 | + Point.x - WindowWidth - DIV_X, Point.y - WindowHeight - DIV_Y); | |
158 | + gppLeft: OffsetRect(Result, | |
159 | + Point.x - WindowWidth - DIV_X, Point.y - (WindowHeight div 2)); | |
160 | + gppLeftBottom: OffsetRect(Result, | |
161 | + Point.x - WindowWidth - DIV_X, Point.y + DIV_Y); | |
160 | 162 | gppTop: OffsetRect(Result, |
161 | - Point.x - (WindowWidth div 2), Point.y - WindowHeight - 15); | |
163 | + Point.x - (WindowWidth div 2), Point.y - WindowHeight - DIV_Y); | |
162 | 164 | gppCenter: OffsetRect(Result, |
163 | 165 | Point.x - (WindowWidth div 2), Point.y - (WindowHeight div 2)); |
164 | 166 | gppBottom: OffsetRect(Result, |
165 | - Point.x - (WindowWidth div 2), Point.y + 15); | |
166 | - gppLeftTop: OffsetRect(Result, | |
167 | - Point.x + 15, Point.y - WindowHeight - 15); | |
168 | - gppLeft: OffsetRect(Result, | |
169 | - Point.x + 15, Point.y - (WindowHeight div 2)); | |
170 | - gppLeftBottom: OffsetRect(Result, Point.x + 15, Point.y + 15); //MRirX p[gPÌ453É´Ó | |
167 | + Point.x - (WindowWidth div 2), Point.y + DIV_Y); | |
168 | + gppRightTop: OffsetRect(Result, | |
169 | + Point.x + DIV_X, Point.y - WindowHeight - DIV_Y); | |
170 | + gppRight: OffsetRect(Result, | |
171 | + Point.x + DIV_X, Point.y - (WindowHeight div 2)); | |
172 | + gppRightBottom: OffsetRect(Result, Point.x + DIV_X, Point.y + DIV_Y); //MRirX p[gPÌ453É´Ó | |
171 | 173 | end; |
172 | 174 | |
173 | 175 | end; |
@@ -29,6 +29,7 @@ type | ||
29 | 29 | function GetTitle(OnlyTitle: Boolean): string; |
30 | 30 | function CalcRect(WorkArea: TRect; Scroll: Boolean): TRect; |
31 | 31 | function ResPopupBrowserClick(Sender: TObject): WordBool; |
32 | + function ResPopupBrowserDbClick(Sender: TObject): WordBool; | |
32 | 33 | function GetThread: TThreadItem; |
33 | 34 | protected |
34 | 35 | procedure CreateParams(var Params: TCreateParams); override; |
@@ -53,8 +54,7 @@ type | ||
53 | 54 | end; |
54 | 55 | |
55 | 56 | implementation |
56 | -uses MojuUtils, GikoSystem, Setting, Giko, GikoDataModule; | |
57 | - | |
57 | +uses MojuUtils, GikoSystem, Setting, Giko, GikoDataModule, Preview; | |
58 | 58 | |
59 | 59 | constructor TResPopupBrowser.Create(AOwner: TComponent); |
60 | 60 | begin |
@@ -151,13 +151,22 @@ begin | ||
151 | 151 | end; |
152 | 152 | procedure TResPopupBrowser.Popup; |
153 | 153 | begin |
154 | - Write(Self.RawDocument, false); | |
154 | + if (GetAsyncKeyState(VK_SHIFT) = Smallint($8001)) then begin | |
155 | + // VtgµÄéêÍ»ÌÜÜo· | |
156 | + Write(Self.RawDocument, false); | |
157 | + end else begin | |
158 | + // éxµGª©¦éæ¤É¼pXy[X*2ð *2Éu··é | |
159 | + Write( | |
160 | + MojuUtils.CustomStringReplace( | |
161 | + Self.RawDocument, ' ', ' '), | |
162 | + false); | |
163 | + end; | |
155 | 164 | end; |
156 | 165 | procedure TResPopupBrowser.Write(ADocument: String; OnlyTitle: Boolean = False); |
157 | 166 | var |
158 | 167 | p: TPoint; |
159 | 168 | doc: Variant; |
160 | - ARect, rect: TRect; | |
169 | + ARect: TRect; | |
161 | 170 | FDispHtmlDocument: DispHTMLDocument; |
162 | 171 | begin |
163 | 172 | try |
@@ -186,7 +195,7 @@ begin | ||
186 | 195 | FDispHtmlDocument := Idispatch(OleVariant(Self.ControlInterface).Document) as DispHTMLDocument; |
187 | 196 | FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2); |
188 | 197 | FEvent.OnClick := ResPopupBrowserClick; |
189 | - | |
198 | + FEvent.OnDoubleClick := ResPopupBrowserDbClick; | |
190 | 199 | Self.Visible := True; |
191 | 200 | SetWindowPos(Self.Handle, HWND_TOPMOST, |
192 | 201 | ARect.Left, ARect.Top, |
@@ -261,6 +270,7 @@ var | ||
261 | 270 | ele: IHTMLElement2; |
262 | 271 | h, w, dx1, dx2, dy1, dy2: Integer; |
263 | 272 | MaxWidth, MaxHeight: Integer; |
273 | + DIV_X, DIV_Y: Integer; | |
264 | 274 | begin |
265 | 275 | GetCursorpos(p); |
266 | 276 | ele := ((Self.Document as IHTMLDocument2).body as IHTMLElement2); |
@@ -272,6 +282,9 @@ begin | ||
272 | 282 | w := ele.scrollWidth + 10; |
273 | 283 | end; |
274 | 284 | |
285 | + DIV_X := GikoSys.Setting.RespopupDeltaX; | |
286 | + DIV_Y := GikoSys.Setting.RespopupDeltaY; | |
287 | + | |
275 | 288 | dx1 := 0; dx2 := 0; |
276 | 289 | dy1 := 0; dy2 := 0; |
277 | 290 |
@@ -279,44 +292,44 @@ begin | ||
279 | 292 | case GikoSys.Setting.PopupPosition of |
280 | 293 | gppRightTop: |
281 | 294 | begin |
282 | - dx1 := 0; dx2 := -2; | |
283 | - dy1 := -h; dy2 := -2; | |
295 | + dx1 := 0; dx2 := + DIV_X; | |
296 | + dy1 := -h; dy2 := - DIV_Y; | |
284 | 297 | end; |
285 | 298 | gppRight: |
286 | 299 | begin |
287 | - dx1 := 0; dx2 := -2; | |
300 | + dx1 := 0; dx2 := + DIV_X; | |
288 | 301 | dy1 := - (h div 2); dy2 := 0; |
289 | 302 | end; |
290 | 303 | gppRightBottom: |
291 | 304 | begin |
292 | - dx1 := 0; dx2 := -2; | |
293 | - dy1 := 0; dy2 := +2; | |
305 | + dx1 := 0; dx2 := + DIV_X; | |
306 | + dy1 := 0; dy2 := + DIV_Y; | |
294 | 307 | end; |
295 | 308 | gppTop: |
296 | 309 | begin |
297 | 310 | dx1 := - (w div 2); dx2 := 0; |
298 | - dy1 := -h; dy2 := -2; | |
311 | + dy1 := -h; dy2 := - DIV_Y; | |
299 | 312 | end; |
300 | 313 | // p~ gppCenter: OffsetRect(Result, p.x - (w div 2), p.y - (h div 2)); |
301 | 314 | gppBottom: |
302 | 315 | begin |
303 | 316 | dx1 := - (w div 2); dx2 := 0; |
304 | - dy1 := 0; dy2 := +2; | |
317 | + dy1 := 0; dy2 := + DIV_Y; | |
305 | 318 | end; |
306 | 319 | gppLeftTop: |
307 | 320 | begin |
308 | - dx1 := -w; dx2 := +2; | |
309 | - dy1 := -h; dy2 := -2; | |
321 | + dx1 := -w; dx2 := - DIV_X ; | |
322 | + dy1 := -h; dy2 := - DIV_Y; | |
310 | 323 | end; |
311 | 324 | gppLeft: |
312 | 325 | begin |
313 | - dx1 := -w; dx2 := +2; | |
326 | + dx1 := -w; dx2 := - DIV_X; | |
314 | 327 | dy1 := - (h div 2); dy2 := 0; |
315 | 328 | end; |
316 | 329 | gppLeftBottom: |
317 | 330 | begin |
318 | - dx1 := -w; dx2 := +2; | |
319 | - dy1 := 0; dy2 := +2; | |
331 | + dx1 := -w; dx2 := - DIV_X; | |
332 | + dy1 := 0; dy2 := + DIV_Y; | |
320 | 333 | end; |
321 | 334 | end; |
322 | 335 | // úÊuÉÚ® |
@@ -440,7 +453,14 @@ begin | ||
440 | 453 | FOleInPlaceActiveObject := Self.ControlInterface as IOleInPlaceActiveObject; |
441 | 454 | FOleInPlaceActiveObject.OnFrameWindowActivate(False); |
442 | 455 | end; |
443 | - | |
456 | +function TResPopupBrowser.ResPopupBrowserDbClick(Sender: TObject): WordBool; | |
457 | +begin | |
458 | + // MRirÌtH[JXðDÁÄéÌÅtH[ɳâèÔ· | |
459 | + Blur; | |
460 | + // ©ªÅ©ªÍÁ¹È¢ÌÅAbZ[WoRÅÁµÄàç¤ | |
461 | + PostMessage( GikoForm.Handle , USER_RESPOPUPCLEAR, Integer( Self ), 0 ); | |
462 | + Result := True; | |
463 | +end; | |
444 | 464 | initialization |
445 | 465 | OleInitialize(nil); |
446 | 466 |
@@ -20,9 +20,9 @@ type | ||
20 | 20 | TGikoListOrientation = (gloHorizontal, gloVertical); // Xg¼E ½ |
21 | 21 | TGikoListState = (glsMax, glsNormal, glsMin); // XgTCYóÔ |
22 | 22 | // |bvAbv\¦Êu |
23 | - TGikoPopupPosition = (gppRightTop, gppTop, gppLeftTop, | |
24 | - gppRight, gppCenter, gppLeft, | |
25 | - gppRightBottom, gppBottom, gppLeftBottom); | |
23 | + TGikoPopupPosition = (gppLeftTop = 0, gppTop, gppRightTop, | |
24 | + gppLeft, gppCenter, gppRight, | |
25 | + gppLeftBottom, gppBottom, gppRightBottom); | |
26 | 26 | //vr [TCY |
27 | 27 | TGikoPreviewSize = (gpsXLarge, gpsLarge, gpsMedium, gpsSmall, gpsXSmall); |
28 | 28 | TGikoBrowserAutoMaximize = (gbmNone, gbmClick, gbmDoubleClick); |
@@ -450,6 +450,18 @@ type | ||
450 | 450 | FExtList: String; |
451 | 451 | //! SkinÖA |
452 | 452 | FSkinFiles: TSkinFiles; |
453 | + //! indext@CðÇÝÉdatðõ·é | |
454 | + FCheckDatFile: Boolean; | |
455 | + //! ¯IDXAJ[\¦ | |
456 | + FLimitResCountMessage: Boolean; | |
457 | + //! X|bvAbv\¦ÊudeltaX | |
458 | + FRespopupDeltaX: Integer; | |
459 | + //! X|bvAbv\¦ÊudeltaY | |
460 | + FRespopupDeltaY: Integer; | |
461 | + //! X|bvAbv^C}[ | |
462 | + FRespopupWait: Integer; | |
463 | + //! [X|bvAbv | |
464 | + FRespopupMailTo: Boolean; | |
453 | 465 | function GetMainCoolSet(Index: Integer): TCoolSet; |
454 | 466 | function GetBoardCoolSet(Index: Integer): TCoolSet; |
455 | 467 | function GetBrowserCoolSet(Index: Integer): TCoolSet; |
@@ -807,7 +819,16 @@ type | ||
807 | 819 | property ExtList: String read FExtList write FExtList; |
808 | 820 | //! Skint@CÇ |
809 | 821 | property SkinFiles: TSkinFiles read FSkinFiles; |
810 | - | |
822 | + //! CfbNXÇÝÝdatt@C`FbN | |
823 | + property CheckDatFile: Boolean read FCheckDatFile write FCheckDatFile; | |
824 | + property LimitResCountMessage: Boolean read FLimitResCountMessage write FLimitResCountMessage; | |
825 | + //! X|bvAbv\¦ÊudeltaX | |
826 | + property RespopupDeltaX: Integer read FRespopupDeltaX write FRespopupDeltaX; | |
827 | + //! X|bvAbv\¦ÊudeltaY | |
828 | + property RespopupDeltaY: Integer read FRespopupDeltaY write FRespopupDeltaY; | |
829 | + //! X|bvAbv^C}[ | |
830 | + property RespopupWait: Integer read FRespopupWait write FRespopupWait; | |
831 | + property RespopupMailTo: Boolean read FRespopupMailTo write FRespopupMailTo; | |
811 | 832 | end; |
812 | 833 | |
813 | 834 |
@@ -972,15 +993,16 @@ end; | ||
972 | 993 | //fXgN^ |
973 | 994 | destructor TSetting.Destroy(); |
974 | 995 | begin |
975 | - inherited; | |
996 | + FSkinFiles.Free; | |
997 | + FGestures.Free; | |
976 | 998 | FBoardColumnOrder.Free; |
977 | 999 | FCategoryColumnOrder.Free; |
978 | 1000 | FBBSColumnOrder.Free; |
979 | - FSelectTextList.Free; | |
980 | 1001 | FBoardURLs.Free; |
1002 | + FSelectTextList.Free; | |
981 | 1003 | FMailList.Free; |
982 | 1004 | FNameList.Free; |
983 | - FGestures.Free; | |
1005 | + inherited; | |
984 | 1006 | end; |
985 | 1007 | |
986 | 1008 | //ú»t@C¼æ¾ipX{t@C¼j |
@@ -1147,6 +1169,11 @@ begin | ||
1147 | 1169 | if (FPopupPosition = gppCenter) then begin |
1148 | 1170 | FPopupPosition := gppTop; |
1149 | 1171 | end; |
1172 | + FRespopupDeltaX := ini.ReadInteger('Browser', 'RespopupDelteX', 5); | |
1173 | + FRespopupDeltaY := ini.ReadInteger('Browser', 'RespopupDelteY', 5); | |
1174 | + FRespopupWait := ini.ReadInteger('Browser', 'RespopupWait', 1000); | |
1175 | + FRespopupMailTo := ini.ReadBool('Browser', 'RespopupMailTo', true); | |
1176 | + | |
1150 | 1177 | //AhXo[ |
1151 | 1178 | FURLDisplay := ini.ReadBool('AddressBar', 'URLDisplay', False); |
1152 | 1179 | FAddressBarTabStop := ini.ReadBool('AddressBar', 'TabStop', True); |
@@ -1293,6 +1320,9 @@ begin | ||
1293 | 1320 | |
1294 | 1321 | FSentIniFileSize := ini.ReadInteger('Function', 'SentIniFileSize', 3); |
1295 | 1322 | FExtList := ini.ReadString('Function', 'ExtList', '*.gif;*.jpg;*.jpeg;*.png;*.zip;*.rar'); |
1323 | + | |
1324 | + FCheckDatFile := ini.ReadBool('ThreadList', 'CheckDatFile', True); | |
1325 | + FLimitResCountMessage := ini.ReadBool('Thread', 'LimitResCountMessage', True); | |
1296 | 1326 | ini.UpdateFile; |
1297 | 1327 | finally |
1298 | 1328 | ini.Free; |
@@ -1517,7 +1547,11 @@ begin | ||
1517 | 1547 | |
1518 | 1548 | //|bvAbvÊu |
1519 | 1549 | ini.WriteInteger('Browser', 'PopupPosition', Ord(FPopupPosition)); |
1520 | - | |
1550 | + ini.WriteInteger('Browser', 'RespopupDelteX', FRespopupDeltaX); | |
1551 | + ini.WriteInteger('Browser', 'RespopupDelteY', FRespopupDeltaY); | |
1552 | + ini.WriteInteger('Browser', 'RespopupWait', FRespopupWait); | |
1553 | + ini.WriteBool('Browser', 'RespopupMailTo', FRespopupMailTo); | |
1554 | + | |
1521 | 1555 | //AhXo[ |
1522 | 1556 | ini.WriteBool('AddressBar', 'URLDisplay', FURLDisplay); |
1523 | 1557 | ini.WriteBool('AddressBar', 'TabStop', FAddressBarTabStop); |
@@ -1675,6 +1709,8 @@ begin | ||
1675 | 1709 | ini.WriteBool('Thread', 'ReplaceDat', FReplaceDat); |
1676 | 1710 | ini.WriteInteger('Function', 'SentIniFileSize', FSentIniFileSize); |
1677 | 1711 | ini.WriteString('Function', 'ExtList', FExtList); |
1712 | + ini.WriteBool('ThreadList', 'CheckDatFile', FCheckDatFile); | |
1713 | + ini.WriteBool('Thread', 'LimitResCountMessage', FLimitResCountMessage); | |
1678 | 1714 | ini.UpdateFile; |
1679 | 1715 | finally |
1680 | 1716 | ini.Free; |
@@ -78,7 +78,8 @@ uses | ||
78 | 78 | HistoryList in 'HistoryList.pas', |
79 | 79 | ReplaceDataModule in 'ReplaceDataModule.pas' {ReplaceDM: TDataModule}, |
80 | 80 | ResPopupBrowser in 'ResPopupBrowser.pas', |
81 | - SkinFiles in 'SkinFiles.pas'; | |
81 | + SkinFiles in 'SkinFiles.pas', | |
82 | + NewBoardURL in 'NewBoardURL.pas' {NewBoardURLForm}; | |
82 | 83 | |
83 | 84 | {$R *.RES} |
84 | 85 | {$R gikoResource.res} |
@@ -10,11 +10,11 @@ VersionInfoDescription= | ||
10 | 10 | DefaultGroupName=MRir |
11 | 11 | ; ©ªÌ«Éí¹Ä¾³¢ |
12 | 12 | SourceDir=G:\Release |
13 | -OutputDir=G:\Output | |
13 | +OutputDir=G:\InnoSetup\Output | |
14 | 14 | SetupIconFile="G:\gikoNaviSFX_102\MainIcon.ico" |
15 | 15 | ; MRirÌo[WÉ í¹Ä¾³¢ |
16 | -VersionInfoVersion=1.56.0.714 | |
17 | -OutputBaseFilename=gikoNavi_1.56.0.714_2_setup | |
16 | +VersionInfoVersion=1.56.1.716 | |
17 | +OutputBaseFilename=gikoNavi_b56_setup | |
18 | 18 | |
19 | 19 | |
20 | 20 | [Tasks] |
@@ -90,7 +90,7 @@ begin | ||
90 | 90 | begin |
91 | 91 | DelTree(path, True, True, True); |
92 | 92 | end; |
93 | - | |
93 | + | |
94 | 94 | path := ExpandConstant('{app}') + '\config'; |
95 | 95 | if MsgBox(path + 'tH_Ⱥð®SÉÁµÄæ뵢ŵ天H', mbConfirmation, MB_YESNO) = IDYES then |
96 | 96 | begin |
@@ -1,4 +1,4 @@ | ||
1 | -¡MRir Version1.00 ÊÞÀ56 Readme.txt | |
1 | +¡MRir Version1.00 ÊÞÀ57 Readme.txt | |
2 | 2 | |
3 | 3 | |
4 | 4 | ------------------------------ |
@@ -108,6 +108,19 @@ LICENSE | ||
108 | 108 | ------------------------------ |
109 | 109 | ð |
110 | 110 | ------------------------------ |
111 | +2007/XX/XX | |
112 | + Version ÊÞÀ57 | |
113 | + EÚ×ÝèÉAXbhêÇÝÝÉ[JÌdatt@Cð`FbNµÈ¢IvVðÇÁ | |
114 | + EX|bvAbvÌEBhEð_uNbNÅÁ¹éæ¤ÉC³ | |
115 | + EX|bvAbvÌ\¦ÊuÈÇ̲®ðÚ×ÝèÉÇÁ | |
116 | + ENG[hÅA">>"ÅnÜé¶ñÍRgµ¢Æ·éæ¤ÉC³ | |
117 | + | |
118 | +2007/08/18 | |
119 | + Version ÊÞÀ56 [X2 | |
120 | + üÍAVXgÌÝèÅA}ü¶ñð¾¯ðÏXÅ«È¢sïÌC³ | |
121 | + ê«ÅAMRirðŬ»µÄ³·éÆXbhªXN[·ésïÌC³ | |
122 | + ÊÞÀ55ÈO©çAbvf[g·éÆX|bvAbvÊuÌÝè̶Eªt]·ésïÌC³ | |
123 | + | |
111 | 124 | 2007/08/05 |
112 | 125 | Version ÊÞÀ56 |
113 | 126 | @X|bvAbv̽iΠ|
@@ -1,44 +1,36 @@ | ||
1 | 1 | [Setting] |
2 | -@ascii2d=30 | |
3 | -@chiri=30 | |
4 | -@gline=30 | |
5 | 2 | @newsplus=120 |
6 | -@operate=30 | |
7 | -@tv=30 | |
8 | -aa6=30 | |
3 | +@skate=60 | |
9 | 4 | academy6=30 |
10 | -anime2=45 | |
11 | -book4=30 | |
12 | -bubble5=30 | |
5 | +anime2=60 | |
6 | +bubble6=30 | |
13 | 7 | etc6=30 |
14 | 8 | ex20=30 |
15 | 9 | ex21=30 |
16 | -ex22=30 | |
17 | -food7=30 | |
10 | +ex23=20 | |
11 | +food8=30 | |
18 | 12 | game11=30 |
19 | 13 | game12=30 |
20 | 14 | hobby9=30 |
21 | -human6=30 | |
15 | +human7=30 | |
22 | 16 | life8=30 |
23 | 17 | live23=10 |
24 | 18 | live24=10 |
25 | 19 | live25=10 |
26 | -love5=30 | |
27 | -money5=30 | |
20 | +love6=30 | |
21 | +money6=30 | |
28 | 22 | music8=30 |
29 | 23 | news21=30 |
30 | 24 | news22=30 |
31 | -off4=30 | |
32 | -pc9=30 | |
25 | +news23=128 | |
33 | 26 | pc11=30 |
34 | 27 | qb5=30 |
35 | -school6=30 | |
28 | +school7=30 | |
36 | 29 | science6=30 |
37 | -sports10=60 | |
30 | +sports11=60 | |
38 | 31 | tmp6=45 |
39 | -travel3=30 | |
40 | 32 | tv11=60 |
41 | -wwwww=20 | |
33 | +wwwww=15 | |
42 | 34 | |
43 | 35 | idol=30 |
44 | 36 | pie=30 |