MSHTML_TLB,
{$IFEND}
IdHTTP, ActiveX, ActnList, ImgList,
- ToolWin, Buttons, {Clipbrd,} {HTTPApp,} YofUtils, IdComponent,
+ ToolWin, Buttons, {Clipbrd,} {HTTPApp,} YofUtils, IdComponent,
ShellAPI, UrlMon, Tabs, IdGlobal, StrUtils,
CommCtrl, IniFiles, Dialogs,
GikoSystem, GikoUtil, Setting, BoardGroup, ThreadControl, ItemDownload,
FavoriteArrange, AddressHistory, Preview, HTMLDocumentEvent, Kotehan,
HintWindow, GikoCoolBar, GikoListView, ToolBarSetting, ToolBarUtil,
IndividualAbon, Search, ExternalBoardManager, ExternalBoardPlugInMain,
- StdActns, GikoXMLDoc, Variants, ExtActns;
+ StdActns, GikoXMLDoc, Variants, ExtActns,IdTCPConnection, IdBaseComponent,
+ IdTCPClient;
type
TGikoTreeType = (gttNone, gtt2ch, gttHistory, gttFavorite);
N21: TMenuItem;
URLC3: TMenuItem;
URLN2: TMenuItem;
- N22: TMenuItem;
N23: TMenuItem;
ListCoolBar: TGikoCoolBar;
ListToolBar: TToolBar;
ExportFavoriteFileAction1: TMenuItem;
ExportFavoriteFile: TFileSaveAs;
ToolButton21: TToolButton;
- CabinetBBSToolButton: TToolButton;
+ CabinetBBSToolButton: TToolButton;
ToolButton23: TToolButton;
ToolButton24: TToolButton;
N6: TMenuItem;
TmpToolBar: TToolBar;
TreeSelectNameCopy: TAction;
TreeSelectNamePupupMenu: TMenuItem;
- Browser: TWebBrowser;
BrowserPanel: TPanel;
SetFocusForBrowserAction: TAction;
SetFocusForThreadListAction: TAction;
FileRun1: TFileRun;
ThreadlistMaxAndFocusAction: TAction;
BrowserMaxAndFocusAction: TAction;
+ UpBoardButton: TToolButton;
+ SelectTimer: TTimer;
+ SelectThreadSave: TMenuItem;
+ SelectItemSaveForHTML: TAction;
+ FileSaveAs1: TFileSaveAs;
+ N55: TMenuItem;
+ N66: TMenuItem;
+ dat1: TMenuItem;
+ SelectItemSaveForDat: TAction;
+ LogFolderOpenAction: TAction;
+ OpenLogFolder: TMenuItem;
+ Browser: TWebBrowser;
+ LocalRuleView: TToolButton;
+ IdHTTP1: TIdHTTP;
+ TabSave: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure CabinetPanelHide(Sender: TObject);
EndIndex: Integer; OldState, NewState: TItemStates);
procedure BrowserStatusTextChange(Sender: TObject;
const Text: WideString);
- procedure BrowserTitleChange(Sender: TObject; const Text: WideString);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure TreeViewChanging(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
procedure BrowserMaxAndFocusActionUpdate(Sender: TObject);
procedure ThreadlistMaxAndFocusActionExecute(Sender: TObject);
procedure ListViewExit(Sender: TObject);
+ procedure SetFocusForCabinetActionUpdate(Sender: TObject);
+ procedure ListViewSelectItem(Sender: TObject; Item: TListItem;
+ Selected: Boolean);
+ procedure SelectTimerTimer(Sender: TObject);
+ procedure SelectItemSaveForHTMLExecute(Sender: TObject);
+ procedure KidokuActionExecute(Sender: TObject);
+ procedure MidokuActionExecute(Sender: TObject);
+ procedure SelectItemSaveForDatExecute(Sender: TObject);
+ procedure BrowserPanelCanResize(Sender: TObject; var NewWidth,
+ NewHeight: Integer; var Resize: Boolean);
+ procedure LogFolderOpenActionExecute(Sender: TObject);
+ procedure LogFolderOpenActionUpdate(Sender: TObject);
+ procedure LocalRuleViewClick(Sender: TObject);
+ procedure TabSaveClick(Sender: TObject);
private
{ Private \90é\8c¾ }
//RoundList : TRoundList;
// \8ae\8f\8a\82É\82 \82é\83L\83\83\83r\83l\83b\83g\81E BBS \83\81\83j\83\85\81[\82ð\83Z\83b\83g\81^\8dX\90V
procedure SetBBSMenu;
function WebBrowserClick(Sender: TObject): WordBool;
+ procedure SkinorCSSFilesCopy(path: string);
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure WndProc(var Message: TMessage); override;
USER_RESIZED = WM_USER + 2001;
USER_MINIMIZED = WM_USER + 2002;
USER_SETLINKBAR = WM_USER + 2003;
+ SELECTTIME_INTERBAL = 110;
+ BROWSER_COUNT = 5; //\83u\83\89\83E\83U\82Ì\90\94
{$R *.DFM}
procedure TGikoForm.CreateParams(var Params: TCreateParams);
Self.OnDeactivate := AppFormDeactivate;
Application.HookMainWindow(Hook);
Application.OnMessage := HandleAppMessage; //\82È\82ñ\82©\96³\82\82Ä\82à\91å\8fä\95v\82É\82È\82Á\82½\81@by\81@\82à\82¶\82ã
-
+ Self.DoubleBuffered := true;
FTreeType := gttNone;
FSearchDialog := nil;
BrowserNullTab.Browser := Browser;
BrowserNullTab.Browser.Navigate(BLANK_HTML);
FBrowsers := TList.Create;
- for i := 0 to 4 do begin
- newBrowser := TWebBrowser.Create(nil);
+ for i := 0 to BROWSER_COUNT -1 do begin
+ FBrowsers.Add(TWebBrowser.Create(nil));
+ newBrowser := FBrowsers[FBrowsers.Count - 1];
TOleControl(newBrowser).Parent := BrowserPanel;
- TOleControl(newBrowser).Align := alClient;
+ newBrowser.Align := alNone;
+ newBrowser.Left := 0;
+ newBrowser.Top := 0;
+ //newBrowser.DoubleBuffered := true;
newBrowser.OnDocumentComplete := BrowserDocumentComplete;
newBrowser.OnBeforeNavigate2 := BrowserBeforeNavigate2;
newBrowser.OnEnter := BrowserEnter;
newBrowser.OnNewWindow2 := BrowserNewWindow2;
newBrowser.OnStatusTextChange := BrowserStatusTextChange;
- newBrowser.OnTitleChange := BrowserTitleChange;
+ //newBrowser.OnTitleChange := BrowserTitleChange;
newBrowser.Navigate(BLANK_HTML);
ShowWindow(newBrowser.Handle, SW_HIDE);
- FBrowsers.Add(newBrowser);
+
end;
BrowserNullTab.Browser.BringToFront;
ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
- if GikoForm.WindowState <> wsMinimized then
- SaveCoolBarSettings;
+// if GikoForm.WindowState <> wsMinimized then
+// SaveCoolBarSettings;
if ( GikoSys.Setting.ShowDialogForEnd ) and
(MessageDlg('\83M\83R\83i\83r\82ð\8fI\97¹\82µ\82Ä\82æ\82ë\82µ\82¢\82Å\82·\82©\81H', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then begin
CanClose := false;
i: Integer;
// CoolSet: TCoolSet;
wp: TWindowPlacement;
+ tmpBool: Boolean;
begin
// Application.OnDeactivate := nil;
// Self.OnDeactivate := nil;
try
//\83^\83u\83N\83\8d\81[\83Y
- BrowserNullTab.Thread := nil;
- BrowserTab.OnChange := nil;
- BrowserTab.Tabs.BeginUpdate;
- for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
- TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
- end;
- FActiveContent := nil;
- BrowserTab.Tabs.Clear;
- BrowserTab.Tabs.EndUpdate;
- BrowserTab.OnChange := BrowserTabChange;
+ tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
+ GikoSys.Setting.ShowDialogForAllTabClose := false;
+ AllTabCloseAction.Execute;
+ GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
except
end;
-
- for i := FBrowsers.Count - 1 downto 0 do begin
- TWebBrowser(FBrowsers[i]).Free;
+ try
+ LockWindowUpdate(Self.Handle);
+ for i := FBrowsers.Count - 1 downto 0 do begin
+ TWebBrowser(FBrowsers[i]).Free;
+ end;
+ FBrowsers.Clear;
+ FBrowsers.Capacity := 0;
+ finally
+ FBrowsers.Free;
end;
- FBrowsers.Clear;
- FBrowsers.Capacity := 0;
- FBrowsers.Free;
try
if BrowserNullTab <> nil then begin
BrowserNullTab.Browser := nil; {*BrowserNullTab\82ÌBrowser\82Í\90Ý\8cv\8e\9e\82É\93\\82è\95t\82¯\82Ä\82é\93z
end;
except
end;
-
+ LockWindowUpdate(0);
try
TreeView.Items.BeginUpdate;
for i := TreeView.Items.Count - 1 downto 0 do begin
procedure TGikoForm.ReloadBBS;
var
i : Integer;
+ tmpBool: Boolean;
begin
//\83^\83u\83N\83\8d\81[\83Y
+ tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
+ GikoSys.Setting.ShowDialogForAllTabClose := false;
AllTabCloseAction.Execute;
+ GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
+
SetContent(BrowserNullTab);
//TreeView\83N\83\8a\83A\81iBBS2ch.Free\82Ì\8cã\82É\83N\83\8a\83A\82·\82é\82ÆXP\83X\83^\83C\83\8b\8e\9e\82É\83G\83\89\81[\8fo\82é\81j
TreeView.Items.Clear;
const
COLUMN: array[0..7] of string = ('\83X\83\8c\83b\83h\96¼', '\83J\83E\83\93\83g', '\8eæ\93¾', '\90V\92\85',
'\96¢\93Ç', '\8f\84\89ñ\97\\96ñ', '\8eæ\93¾\93ú\8e\9e', '\83X\83\8c\8dì\90¬\93ú\8e\9e');
+ COLUMN_NONACQUIREDCOUNT: string = '\96¢\8eæ\93¾';
COLUMN_ALIGNMENT: array[0..7] of TAlignment = (taLeftJustify, taRightJustify,
taRightJustify, taRightJustify,
taRightJustify, taLeftJustify,
ListColumn.Alignment := COLUMN_ALIGNMENT[i];
end;
end;
+ if GikoSys.Setting.NonAcquiredCount then
+ begin
+ ListView.Columns[2].Caption := COLUMN_NONACQUIREDCOUNT;
+ end;
ListView.Items.Count := 0;
ListView.Items.Clear;
if ThreadItem.IsLogFile then begin
Item.ImageIndex := ITEM_ICON_THREADLOG1;
Item.SubItems[0] := IntToStr(ThreadItem.AllResCount);
- Item.SubItems[1] := IntToStr(ThreadItem.Count);
+ if GikoSys.Setting.NonAcquiredCount then
+ Item.SubItems[1] := IntToStr(ThreadItem.AllResCount - ThreadItem.Count)
+ else
+ Item.SubItems[1] := IntToStr(ThreadItem.Count);
if ThreadItem.NewResCount = 0 then
Item.SubItems[2] := ''
else
board : TBoard;
Protocol, Host, Path, Document, Port, Bookmark: string;
- //wkInt: Integer;
+ wkInt: Integer;
wkIntSt: Integer;
wkIntTo: Integer;
ActiveFileName: string;
if PreviewTimer.Enabled then
PreviewTimer.Enabled := False;
Application.CancelHint;
- if GetActiveContent <> nil then
- ActiveFileName := ChangeFileExt(ExtractFileName(GetActiveContent.FileName), '')
- else
- ActiveFileName := '';
+ try
+ if GetActiveContent <> nil then
+ ActiveFileName := ChangeFileExt(ExtractFileName(GetActiveContent.FileName), '')
+ else
+ ActiveFileName := '';
+ except
+ FActiveContent := nil;
+ Exit;
+ end;
StatusBar.Panels[1].Text := Text;
URL := Text;
end;
PathRec := Gikosys.Parse2chURL2(URL);
- Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
+ if (PathRec.FNoParam) then begin
+ PathRec.FSt := 1;
+ PathRec.FTo := 1;
+ end else
+ Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
GikoSys.ParseURI( URL, Protocol, Host, Path, Document, Port, Bookmark );
if PathRec.FDone or (not GikoSys.Is2chHost( Host )) then begin
end else if (wkIntSt > 0) and (wkIntTo = 0) then begin
wkIntTo := wkIntSt;
end else if wkIntSt > wkIntTo then begin
- //wkInt := wkIntTo;
+ wkInt := wkIntTo;
wkIntTo := wkIntSt;
- wkIntSt := wkIntTo;
+ wkIntSt := wkInt;
end;
//if wkIntSt = 0 then
// wkIntSt := 1;
end;
end;
-procedure TGikoForm.BrowserTitleChange(Sender: TObject;
- const Text: WideString);
-var
- Title: string;
-begin
- if (Text = BLANK_HTML) or (Text = GikoSys.GetHtmlTempFileName) then
- Title := CAPTION_NAME
- else
- Title := CAPTION_NAME + ' - [' + Text + ']';
- Caption := Title;
- //Application.Title := Title;
-end;
-
procedure TGikoForm.SetEnabledCloseButton(Enabled: Boolean);
var
SysMenu: HMenu;
wkBoard := TBoard( FActiveList );
Sort.SortOrder := FSortOrder;
Sort.SortIndex := Column.Index;
+ Sort.SortNonAcquiredCountFlag := GikoSys.Setting.NonAcquiredCount;
wkBoard.CustomSort(ThreadItemSortProc);
ListView.Refresh;
end;
if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = Item.ThreadItem then
TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
end;
- if GetActiveContent = Item.ThreadItem then
- InsertBrowserTab(Item.ThreadItem)
- else if (ListView.Selected <> nil ) and ( TObject(ListView.Selected.Data) is TThreadItem ) and ( Item.ThreadItem = TThreadItem(ListView.Selected.Data)) then
- InsertBrowserTab(Item.ThreadItem, True)
- else
- InsertBrowserTab(Item.ThreadItem, False);
+ if GikoSys.Setting.BrowserTabVisible then begin
+ if GetActiveContent = Item.ThreadItem then
+ InsertBrowserTab(Item.ThreadItem)
+ else if (ListView.Selected <> nil ) and ( TObject(ListView.Selected.Data) is TThreadItem ) and ( Item.ThreadItem = TThreadItem(ListView.Selected.Data)) then
+ InsertBrowserTab(Item.ThreadItem, True)
+ else
+ InsertBrowserTab(Item.ThreadItem, False);
+ end else begin
+ if (GetActiveContent = Item.ThreadItem) or (FActiveContent = nil) or(FActiveContent.Browser = BrowserNullTab.Browser) then
+ InsertBrowserTab(Item.ThreadItem);
+ end;
if Item.State = gdsComplete then begin
PlaySound('New');
if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil) and
(FActiveContent.FBrowser <> BrowserNullTab.Browser)then begin
j := FBrowsers.IndexOf(FActiveContent.FBrowser);
- if j = 4 then
- FBrowsers.Move(4, 0);
+ if j = BROWSER_COUNT - 1 then
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
end;
favItem := TFavoriteThreadItem.Create(ThreadItem.URL, ThreadItem.Title );
if not AddHistory( favItem ) then
if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser = nil then begin
for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
- if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[4]) then begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
break;
end;
end;
- TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser := TWebBrowser(FBrowsers[4]);
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
- FBrowsers.Move(4, 0);
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
end;
if ActiveTab then begin
BrowserTab.TabIndex := i;
if GikoSys.Setting.BrowserTabAppend = gtaFirst then begin
newBrowser := TBrowserRecord.Create;
for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
- if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[4]) then begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
break;
end;
end;
- newBrowser.Browser := TWebBrowser(FBrowsers[4]);
- FBrowsers.Move(4, 0);
+ newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
//newBrowser.Browser.Navigate(BLANK_HTML);
newBrowser.thread := ThreadItem;
newBrowser.Repaint := true;
newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
BrowserTab.Tabs.InsertObject(0, GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
+ if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
+ DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 1 ] ) );
+ end;// else begin
+ //end;
BrowserTab.Repaint;
if ActiveTab then begin
BrowserTab.TabIndex := 0;
end else begin
newBrowser := TBrowserRecord.Create;
for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
- if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[4]) then begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
break;
end;
end;
- newBrowser.Browser := TWebBrowser(FBrowsers[4]);
- FBrowsers.Move(4, 0);
+ newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
//newBrowser.Browser.Navigate(BLANK_HTML);
newBrowser.thread := ThreadItem;
newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
newBrowser.Repaint := true;
i := BrowserTab.Tabs.AddObject(GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
+ if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
+ DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 0 ] ) );
+ end;
+ //end;
BrowserTab.Repaint;
if ActiveTab then begin
- BrowserTab.TabIndex := i;
+ if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 0) then
+ BrowserTab.TabIndex := 0
+ else
+ BrowserTab.TabIndex := i;
end;
end;
if(ActiveTab) or (idx = -1) then begin
FileName: string;
sTitle: string;
// HtmlName: string;
- doc: Variant;
+ doc: Variant;
s: string;
// OldCursor: TCursor;
i: Integer;
url: OleVariant;
idx: Integer;
+ ThreadItem: TThreadItem;
+ Thread: TBrowserRecord;
+ ThreadTitle, ThreadPTitle: string;
+ ThreadScrollTop: Integer;
+ ThreadIsLog, ThreadUnRead, ThreadNewArraical: boolean;
begin
- idx := BrowserTab.TabIndex;
+ Thread := inThread;
+ idx := BrowserTab.TabIndex;
if (FActiveContent <> nil) and
- (FActiveContent.Thread <> inThread.Thread) and
+ (FActiveContent.Thread <> Thread.Thread) and
(Assigned(FActiveContent.Browser.Document)) then begin
try
try
finally
end;
end;
- if inThread = nil then
- Exit
- else if inThread.Thread = nil then begin
- inThread.Browser.Navigate(BLANK_HTML);
+ if not (Assigned(Thread)) or (Thread.Thread = nil) then begin
+ Thread.Browser.Navigate(BLANK_HTML);
BrowserBoardNameLabel.Caption := '';
ItemBoardImage.Picture := nil;
BrowserNameLabel.Caption := '';
ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
FActiveContent := nil;
Exit;
- end else if inThread.Browser = nil then begin
- if FActiveContent.Browser = TWebBrowser(FBrowsers[4]) then
- FBrowsers.Move(4, 0);
+ end else if Thread.Browser = nil then begin
+ if FActiveContent.Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
- if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser = TWebBrowser(FBrowsers[4]) then begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser := nil;
if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent <> nil then begin
TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent.Free;
break;
end;
end;
- inThread.Browser := TWebBrowser(FBrowsers[4]);
- FBrowsers.Move(4, 0);
+ Thread.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
end;
-
- BBSID := inThread.FThread.ParentBoard.BBSID;
- FileName := inThread.FThread.FileName;
+ ThreadTitle := Thread.Thread.Title;
+ ThreadPTitle := Thread.Thread.ParentBoard.Title;
+ ThreadScrollTop := Thread.Thread.ScrollTop;
+ ThreadIsLog := Thread.Thread.IsLogFile;
+ ThreadItem := Thread.Thread;
+ ThreadNewArraical := Thread.Thread.NewArrival;
+ ThreadUnRead := Thread.Thread.UnRead;
+ BBSID := ThreadItem.ParentBoard.BBSID;
+ FileName := ThreadItem.FileName;
if GetCapture = ListView.Handle then
ReleaseCapture;
Screen.Cursor := crHourGlass;
+
+
try
- if inThread.FThread.UnRead then begin
- inThread.FThread.ParentBoard.UnRead := inThread.FThread.ParentBoard.UnRead - 1;
- if inThread.FThread.ParentBoard.UnRead < 0 then inThread.FThread.ParentBoard.UnRead := 0;
+ if ThreadItem.UnRead then begin
+ ThreadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1;
+ if ThreadItem.ParentBoard.UnRead < 0 then ThreadItem.ParentBoard.UnRead := 0;
TreeView.Refresh;
end;
- LockWindowUpdate(Self.Handle);
- ShowWindow(inThread.FBrowser.Handle, SW_SHOW);
- LockWindowUpdate(0);
- if (not Assigned(inThread.Browser.Document)) then begin
- inThread.Browser.Navigate('about:blank');
- end;
- //if inThread.Browser <> BrowserNullTab.Browser then begin
- while (inThread.Browser.ReadyState <> READYSTATE_COMPLETE) and
- (inThread.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
- Application.ProcessMessages;
- if idx <> BrowserTab.TabIndex then begin
- BrowserTab.OnChange(nil);
- Exit;
- end;
+ // LockWindowUpdate(Self.Handle);
+ if(FActiveContent <> nil) and (FActiveContent <> Thread) then begin
+ if (FActiveContent.Browser <> BrowserNullTab.Browser) then
+ ShowWindow(FActiveContent.Browser.Handle, SW_HIDE);
+ end;
+ ShowWindow(Thread.FBrowser.Handle, SW_SHOW);
+ //LockWindowUpdate(0);
+ if (not Assigned(Thread.Browser.Document)) then begin
+ Thread.Browser.Navigate('about:blank');
+ end;
+ FActiveContent := Thread;
+ while (Thread.Browser.ReadyState <> READYSTATE_COMPLETE) and
+ (Thread.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
+ Application.ProcessMessages;
+ if idx <> BrowserTab.TabIndex then begin
+ Exit;
end;
- //end;
-
- if not inThread.FThread.IsLogFile then begin
+ end;
+ if not ThreadIsLog then begin
+ Self.Caption := CAPTION_NAME ;
try
s := '<HTML><BODY><CENTER>\82±\82Ì\83X\83\8c\83b\83h\82Í\8eæ\93¾\82µ\82Ä\82¢\82Ü\82¹\82ñ</CENTER></BODY></HTML>';
- doc := Idispatch( olevariant(inThread.Browser.ControlInterface).Document) as IHTMLDocument2;
+ doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
doc.open;
doc.charset := 'Shift_JIS';
doc.Write(s);
finally
end;
end else begin
+ Self.Caption := CAPTION_NAME + ' - [' + ThreadTitle + ']';
//Thread.Repaint\82Í\81A\83X\83L\83\93\93\99\82Ì\90Ý\92è\82ð\95Ï\8dX\82µ\82½\82Æ\82«\81AThread\82ð\83_\83E\83\93\83\8d\81[\83h\82µ\82½\82Æ\82«
//\90V\8bK\82ÉThread\82ð\8aJ\82¢\82½\82Æ\82«\82É\90^\82É\82È\82Á\82Ä\82¢\82é\81B
- if(inThread.Repaint) or (inThread.OnlyHundred <> GikoSys.OnlyAHundredRes)then begin
+ if(Thread.Repaint) or (Thread.OnlyHundred <> GikoSys.OnlyAHundredRes)then begin
//Thread.LastSize := ThreadItem.Size;
- inThread.Repaint := false;
+ Thread.Repaint := false;
try
- doc := Idispatch( olevariant(inThread.Browser.ControlInterface).Document) as IHTMLDocument2;
- GikoSys.CreateHTML2(doc, inThread.FThread, sTitle);
+ Thread.Browser.OnStatusTextChange := nil;
+ doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
+ GikoSys.CreateHTML2(doc, ThreadItem, sTitle);
+
+ // if (Assigned(Thread.Browser)) and (Thread.Browser <> nil) then
+ Thread.Browser.OnStatusTextChange := BrowserStatusTextChange;
//\82È\82º\82©\82±\82±\82Å\96¾\8e¦\93I\82ÉDocumentComplete\82ð\8cÄ\82Î\82È\82¢\82Æ\82¤\82Ü\82\82¢\82©\82È\82¢
- inThread.FBrowser.OnDocumentComplete(inThread.FBrowser, inThread.FBrowser.Parent, url);
- inThread.OnlyHundred := GikoSys.OnlyAHundredRes;
+ //\92Ç\8bL\81@200406/19
+ //Visible\82Ì\82Æ\82«\82µ\82©DocumentComplete\82Í\8cÄ\82Î\82ê\82È\82¢\82ç\82µ\82¢
+ Thread.FBrowser.OnDocumentComplete(Thread.FBrowser, Thread.FBrowser.Parent, url);
+ Thread.OnlyHundred := GikoSys.OnlyAHundredRes;
Application.ProcessMessages;
//\82±\82±\82ÅApplication.ProcessMessages\82ð\8cÄ\82Ô\82±\82Æ\82É\82æ\82Á\82ÄWebBrowser\82ð\8dX\90V\82³\82¹\82é\81B
//\91\8a\82µ\82È\82¢\82Æ\88ê\89æ\96Ê\95ª\82µ\82©\95`\89æ\82Å\82«\82Ä\82È\82¢\82Ì\82Å\82»\82ê\88È\8fã\82Ì\83X\83N\83\8d\81[\83\8b\97Ê\82ð\8ew\92è\82µ\82Ä\82à\96³\8cø\82É\82È\82é
//\81@by\82à\82¶\82ã(2004/01/20)
-
- if inThread.FThread.UnRead then
- BrowserMovement('new', inThread)
- else if inThread.FThread.ScrollTop <> 0 then begin
- try
- doc.Body.ScrollTop := inThread.FThread.ScrollTop;
- except
- on E: Exception do
- MsgBox(Handle, E.Message, 'SetContent[ScrollTop<-]', 0);
+ try
+ //if (Assigned(Thread)) and (Assigned(ThreadItem))then begin
+ if(Thread <> nil) and (ThreadItem <>nil) then begin
+ if ThreadUnRead then
+ BrowserMovement('new', Thread)
+ else if ThreadScrollTop <> 0 then begin
+ try
+ doc.Body.ScrollTop := ThreadScrollTop;
+ except
+ on E: Exception do
+ MsgBox(Handle, E.Message, 'SetContent[ScrollTop<-]', 0);
+ end;
+ end;
+ // end;
+ end else begin
+ FActiveContent := nil;
+ BrowserTab.Repaint;
+ Exit;
end;
+ except
+ FActiveContent := nil;
+ BrowserTab.Repaint;
+ Exit;
end;
finally
// Application.ProcessMessages;
end;
end;
- inThread.FThread.UnRead := False;
+ ThreadItem.UnRead := False;
ListView.Refresh;
end;
- if(FActiveContent <> nil) and (FActiveContent <> inThread) then begin
- if (FActiveContent.Browser <> BrowserNullTab.Browser) then
- ShowWindow(FActiveContent.Browser.Handle, SW_HIDE);
- end;
- FActiveContent := inThread;
+ if (Assigned(Thread)) and (Assigned(Thread.Thread)) and (Thread <> nil) and (ThreadItem <>nil) then begin
+ //FActiveContent := Thread;
- BrowserBoardNameLabel.Caption := inThread.FThread.ParentBoard.Title;
- ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
- BrowserNameLabel.Caption := inThread.FThread.Title;
- ItemImage.Picture := nil;
- if inThread.FThread.IsLogFile then
- if inThread.FThread.NewArrival then
- ItemImageList.GetBitmap(2, ItemImage.Picture.Bitmap)
+ BrowserBoardNameLabel.Caption := ThreadPTitle;
+ ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
+ BrowserNameLabel.Caption := ThreadTitle;
+ ItemImage.Picture := nil;
+ if ThreadIsLog then
+ if ThreadNewArraical then
+ ItemImageList.GetBitmap(2, ItemImage.Picture.Bitmap)
+ else
+ ItemImageList.GetBitmap(0, ItemImage.Picture.Bitmap)
else
- ItemImageList.GetBitmap(0, ItemImage.Picture.Bitmap)
- else
- ItemImageList.GetBitmap(1, ItemImage.Picture.Bitmap);
-
- ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;
- BrowserNameLabel.Left := ItemImage.Left + 20;
+ ItemImageList.GetBitmap(1, ItemImage.Picture.Bitmap);
+ ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;
+ BrowserNameLabel.Left := ItemImage.Left + 20;
+ end else begin
+ FActiveContent := nil;
+ end;
finally
Screen.Cursor := crDefault;
end;
function TGikoForm.GetActiveContent: TThreadItem;
begin
- if( FActiveContent <> nil) and (FActiveContent.Thread <> nil)then
- Result := FActiveContent.Thread
- else
+ try
+ if( Assigned(FActiveContent) ) and (Assigned(FActiveContent.Thread))
+ and (FActiveContent <> nil) and (FActiveContent.Thread <> nil) then
+ Result := FActiveContent.Thread
+ else begin
+ FActiveContent := nil;
+ Result := nil;
+ end;
+ except
+ FActiveContent := nil;
Result := nil;
+ end;
end;
procedure TGikoForm.SetActiveList(Obj: TObject);
ListView.Selected := nil;
// ListView.Columns.Clear;
- Caption := CAPTION_NAME;
+ Self.Caption := CAPTION_NAME;
//Application.Title := CAPTION_NAME;
if Obj is TBBS then begin
// SetContent(ThreadItem);
FHistoryList.Move(i, 0);
if FTreeType = gttHistory then
- if TreeView.TopItem <> TreeView.Items[ i ] then
- TreeView.Items[ i ].MoveTo( TreeView.TopItem, naInsert );
- Result := false;
+ if TreeView.Items.GetFirstNode <> TreeView.Items[ i ] then
+ TreeView.Items[ i ].MoveTo( TreeView.Items.GetFirstNode, naInsert );
+ Result := false;
Exit;
end;
end;
if FTreeType = gttHistory then begin
Node := TreeView.Items.Add( nil, favItem.Title );
- Node.MoveTo( TreeView.TopItem, naInsert );
+ Node.MoveTo( TreeView.Items.GetFirstNode, naInsert );
{
if favItem.NewArrival then begin
Node.ImageIndex := ITEM_ICON_THREADNEW1;
else if TObject(FHistoryList[ i ]) is TFavoriteBoardItem then
TFavoriteBoardItem(FHistoryList[ i ]).Free;
- //FHistoryList.Delete(i);
+ //FHistoryList.Delete(i);
end;
except
end;
FTreeType := gtt2ch;
HistoryToolBar.Hide;
SetBoardTreeNode( inBBS );
- TreeView.TopItem.Expanded := True; //?c???[?g?b?v???????J??
+ TreeView.Items.GetFirstNode.Expanded := True; //?c???[?g?b?v???????J??
//?c???[??g?b?v?????I????
if GetActiveList = nil then
TreeView.Selected := TreeView.Items[0]
FTreeType := gtt2ch;
HistoryToolBar.Hide;
SetBoardTreeNode( inBBS );
- TreeView.TopItem.Expanded := True; //\83c\83\8a\81[\83g\83b\83v\8d\80\96Ú\82¾\82¯\82ð\8aJ\82
+ TreeView.Items.GetFirstNode.Expanded := True; //\83c\83\8a\81[\83g\83b\83v\8d\80\96Ú\82¾\82¯\82ð\8aJ\82
//\83c\83\8a\81[\82Ì\83g\83b\83v\8d\80\96Ú\82ð\91I\91ð\82·\82é
if GetActiveList = nil then begin
try
end;
SetActiveList( Item );
end;
+
+ if Item is TBoard then begin // not TCategory
+ if GikoSys.Setting.ListOrientation = gloHorizontal then begin
+ if GikoSys.Setting.ListWidthState = glsMax then begin
+ BrowserMinAction.Execute;
+ if GikoForm.Visible then
+ ListView.SetFocus;
+ end;
+ end else begin
+ if GikoSys.Setting.ListHeightState = glsMax then begin
+ BrowserMinAction.Execute;
+ if GikoForm.Visible then
+ ListView.SetFocus;
+ end;
+ end;
+ end;
end;
end;
InsertBrowserTab(ThreadItem);
end;
-
+ if GikoSys.Setting.BrowserAutoMaximize = gbmClick then begin
+ if GikoSys.Setting.ListOrientation = gloHorizontal then begin
+ if GikoSys.Setting.ListWidthState = glsMin then begin
+ BrowserMaxAndFocusAction.Execute;
+ end;
+ end else begin
+ if GikoSys.Setting.ListHeightState = glsMin then begin
+ BrowserMaxAndFocusAction.Execute;
+ end;
+ end;
+ end;
end;
procedure TGikoForm.ListDoubleClick(Shift: TShiftState);
ThreadItem := TThreadItem(ListView.Selected.Data);
DownloadContent(ThreadItem, shiftDown);
//end;
+
+ if GikoSys.Setting.BrowserAutoMaximize = gbmDoubleClick then begin
+ if GikoSys.Setting.ListOrientation = gloHorizontal then begin
+ if GikoSys.Setting.ListWidthState = glsMin then begin
+ BrowserMaxAndFocusAction.Execute;
+ end;
+ end else begin
+ if GikoSys.Setting.ListHeightState = glsMin then begin
+ BrowserMaxAndFocusAction.Execute;
+ end;
+ end;
+ end;
end;
end;
procedure TGikoForm.BrowserMovement(const AName: string; BrowserRecord: TBrowserRecord);
// Mouse.CursorPos := BrowserSizeButton.ClientToScreen(Point(
// System.Round(BrowserToolBar.ButtonWidth div 2),
// System.Round(BrowserToolBar.ButtonHeight div 2)));
- BrowserTab.OnChange(nil);
+ //BrowserTab.OnChange(nil);
end;
procedure TGikoForm.BrowserMinActionExecute(Sender: TObject);
begin
+
if GikoSys.Setting.ListOrientation = gloHorizontal then begin
case GikoSys.Setting.ListWidthState of
glsMax, glsNormal: begin
begin
Item := GetActiveContent;
if Item = nil then Exit;
-
- if Item.Count >= 1000 then begin
- msg := '\82±\82Ì\83X\83\8c\83b\83h\82Í\83\8c\83X\90\94\82ª\82P\82O\82O\82O\82ð\92´\82¦\82Ä\82¢\82é\82Ì\82Å\8f\91\8d\9e\82Ý\8fo\97\88\82Ü\82¹\82ñ\81B' + #13#10
- + '\90V\83X\83\8c\83b\83h\82ð\92T\82µ\82Ä\82\82¾\82³\82¢\81B';
- if MsgBox(Handle, msg, '\8cx\8d\90', MB_YESNO or MB_ICONEXCLAMATION) <> 7 then begin
- Exit;
- end;
- end;
Editor := TEditorForm.Create(Self);
Editor.SetThreadItem(Item);
GikoSys.LoadEditorKeySetting(Editor.ActionList);
if FIsMinimize = mtMinimized then begin
if FActiveContent <> nil then begin
- Application.ProcessMessages;
+ //Application.ProcessMessages;
doc := Idispatch( olevariant(FActiveContent.Browser.ControlInterface).Document) as IHTMLDocument2;
doc.Body.ScrollTop := FActiveContent.Thread.ScrollTop;
FIsMinimize := mtNone;
if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser);
if j <> -1 then
- FBrowsers.Move(j, 4);
+ FBrowsers.Move(j, BROWSER_COUNT - 1);
end;
TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
BrowserTab.Tabs.Delete(i);
( TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser = nil) then begin
for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
if(TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser
- = TWebBrowser(FBrowsers[4]) )then
+ = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) )then
begin
TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser := nil;
if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
end;
end;
TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser
- := TWebBrowser(FBrowsers[4]);
+ := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;
- FBrowsers.Move(4, 0);
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
end;
BrowserTab.Tabs.EndUpdate;
- BrowserTab.OnChange(nil);
+ if( FActiveContent = nil) then
+ BrowserTab.OnChange(nil);
Exit;
end;
end;
if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;
TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := doc.Body.ScrollTop;
+
end;
except
TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := 0;
if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser);
if j <> -1 then
- FBrowsers.Move(j, 4);
+ FBrowsers.Move(j, BROWSER_COUNT - 1);
end;
TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
BrowserTab.Tabs.Delete(i);
( TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser = nil) then begin
for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
if(TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser
- = TWebBrowser(FBrowsers[4]) )then
+ = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) )then
begin
TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser := nil;
if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
end;
end;
TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser
- := TWebBrowser(FBrowsers[4]);
+ := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;
- FBrowsers.Move(4, 0);
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
end;
BrowserTab.Tabs.EndUpdate;
- BrowserTab.OnChange(nil);
+ if( FActiveContent = nil) then
+ BrowserTab.OnChange(nil);
Exit;
end;
end;
Item := GetActiveContent;
if Item = nil then Exit;
- if Item.Count >= 1000 then begin
- msg := '\82±\82Ì\83X\83\8c\83b\83h\82Í\83\8c\83X\90\94\82ª\82P\82O\82O\82O\82ð\92´\82¦\82Ä\82¢\82é\82Ì\82Å\8f\91\8d\9e\82Ý\8fo\97\88\82Ü\82¹\82ñ\81B' + #13#10
- + '\90V\83X\83\8c\83b\83h\82ð\92T\82µ\82Ä\82\82¾\82³\82¢\81B';
- if MsgBox(Handle, msg, '\8cx\8d\90', MB_YESNO or MB_ICONEXCLAMATION) <> 7 then begin
- Exit;
- end;
- end;
Editor := TEditorForm.Create(Self);
Editor.SetThreadItem(Item);
Editor.BodyEdit.Text := '>>' + IntToStr(Number) + #13#10;
LPMSep05.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
DeletePMenu.Visible := (GetActiveList is TBoard);
LPMSep06.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
-
BoardFavoriteAddMenu.Visible := (GetActiveList is TCategory);
ThreadFavoriteAddMenu.Visible := (GetActiveList is TBoard);
var
i: Integer;
begin
- //SetContent(BrowserNullTab);
+ if GikoSys.Setting.ShowDialogForAllTabClose then
+ if(MessageDlg('\91S\82Ä\82Ì\83^\83u\82ð\95Â\82¶\82Ä\82æ\82ë\82µ\82¢\82Å\82·\82©\81H', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then
+ Exit;
+
FActiveContent := nil;
BrowserNullTab.Thread := nil;
BrowserTab.OnChange := nil;
BrowserTab.Tabs.EndUpdate;
BrowserTab.OnChange := BrowserTabChange;
SetContent(BrowserNullTab);
+ Self.Caption := CAPTION_NAME ;
end;
procedure TGikoForm.TreeSelectBoradReloadExecute(Sender: TObject);
Html := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerHTML;
if(AnsiPos('>>', Text) = 1) or (AnsiPos('>', Text) = 1)
or (AnsiPos('\81\84\81\84', Text) = 1) or (AnsiPos('\81\84', Text) = 1) then begin
- Text := ZenToHan(Text);
+ if GikoSys.Setting.ResAnchorJamp then begin
+ Text := ZenToHan(Text);
- if(AnsiPos('>>', Text) = 1) then begin
- Text := Copy(Text, 3, Length(Text) - 2);
- end else begin
- Text := Copy(Text, 2, Length(Text) - 1);
+ if(AnsiPos('>>', Text) = 1) then begin
+ Text := Copy(Text, 3, Length(Text) - 2);
+ end else begin
+ Text := Copy(Text, 2, Length(Text) - 1);
+ end;
+ if AnsiPos('-', Text) <> 0 then begin
+ wkIntSt := StrToIntDef(Copy(Text, 1, AnsiPos('-', Text) - 1), 0);
+ Text := Copy(Text, AnsiPos('-', Text) + 1, Length(Text));
+ wkIntTo := StrToIntDef(Text, 0);
+ if wkIntTo < wkIntSt then
+ wkIntSt := wkIntTo;
+ end else
+ wkIntSt := StrToIntDef(Text, 0);
+
+ if wkIntSt <> 0 then
+ BrowserMovement(IntToStr(wkIntSt));
end;
- if AnsiPos('-', Text) <> 0 then begin
- wkIntSt := StrToIntDef(Copy(Text, 1, AnsiPos('-', Text) - 1), 0);
- Text := Copy(Text, AnsiPos('-', Text) + 1, Length(Text));
- wkIntTo := StrToIntDef(Text, 0);
- if wkIntTo < wkIntSt then
- wkIntSt := wkIntTo;
- end else
- wkIntSt := StrToIntDef(Text, 0);
-
- if wkIntSt <> 0 then
- BrowserMovement(IntToStr(wkIntSt));
-
end else begin
URL := GikoSys.GetHRefText(Html);
URL := GikoSys.HTMLDecode(URL);
- //\83A\83h\83\8c\83X\83o\81[\82Ì\97\9a\97ð
- if GikoSys.Setting.LinkAddAddressBar then begin
- idx := AddressComboBox.Items.IndexOf(URL);
- if idx = -1 then begin
- AddressComboBox.Items.Insert(0, URL);
- if AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
- AddressComboBox.Items.Delete(AddressComboBox.Items.Count - 1);
- end else begin
- AddressComboBox.Items.Delete(idx);
- AddressComboBox.Items.Insert(0, URL);
+ if( AnsiPos('http://', URL) = 1) or (AnsiPos('https://', URL) = 1) or
+ ( AnsiPos('ftp://', URL) = 1) then begin
+ //\83A\83h\83\8c\83X\83o\81[\82Ì\97\9a\97ð
+ if GikoSys.Setting.LinkAddAddressBar then begin
+ idx := AddressComboBox.Items.IndexOf(URL);
+ if idx = -1 then begin
+ AddressComboBox.Items.Insert(0, URL);
+ if AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
+ AddressComboBox.Items.Delete(AddressComboBox.Items.Count - 1);
+ end else begin
+ AddressComboBox.Items.Delete(idx);
+ AddressComboBox.Items.Insert(0, URL);
+ end;
end;
+ MoveToURL( URL );
end;
- MoveToURL( URL );
end;
end;
var
i, j: Integer;
idx: Integer;
- ThreadItem: TThreadItem;
begin
// if NewTab = -1 then
end else begin
if( FActiveContent <> nil ) and (FActiveContent.Browser <> nil) and
(FActiveContent.Browser <> BrowserNullTab.Browser) and
- (FActiveContent.Browser = TWebBrowser(FBrowsers[4])) then
- FBrowsers.Move(4, 0);
+ (FActiveContent.Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1])) then
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
for i := 0 to BrowserTab.Tabs.Count - 1 do begin
- if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(FBrowsers[4]) then begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser := nil;
TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent <> nil then begin
end;
end;
end;
- TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser := TWebBrowser(FBrowsers[4]);
+ TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Repaint := true;
- FBrowsers.Move(4, 0);
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
end;
- ThreadItem := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Thread;
TOleControl(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser).BringToFront;
GikoSys.OnlyAHundredRes := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred;
OnlyAHundredRes.Checked := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred;
SetContent(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
- if GikoSys.Setting.URLDisplay then
- AddressComboBox.Text := ThreadItem.URL;
+ if (GikoSys.Setting.URLDisplay) and (GetActiveContent <> nil) then
+ AddressComboBox.Text := GetActiveContent.URL;
+
+ if ((TreeView.Visible) and (TreeView.Focused)) or ((FavoriteTreeView.Visible) and (FavoriteTreeView.Focused)) or
+ (ListView.Focused) or (SelectComboBox.Focused) or (AddressComboBox.Focused)
+ then
+ else
+ SetFocusForBrowserAction.Execute;
+
end;
end;
BrowserBottomPanel.Visible := False;
// BrowserTab.Visible := False;
// BrowserTopPanel.Height := 26;
+ AllTabCloseAction.Execute;
end;
end;
BrowserRecord.FEvent.OnClick := WebBrowserClick; //\92Ç\89Á\82µ\82½OnClick\83C\83x\83\93\83g
end;
end else begin
+ if GetActiveContent <> nil then begin
FDispHtmlDocument := Idispatch(OleVariant(Browser.ControlInterface).Document) as DispHTMLDocument;
if FEvent <> nil then
FEvent.Free;
FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);
FEvent.OnContextMenu := OnDocumentContextMenu;
FEvent.OnClick := WebBrowserClick; //\92Ç\89Á\82µ\82½OnClick\83C\83x\83\93\83g
+ end;
end;
end;
end;
Exit;
InsertBrowserTab(ThreadItem, ActiveTab);
+
+ if GikoSys.Setting.ListOrientation = gloHorizontal then begin
+ if GikoSys.Setting.ListWidthState = glsMin then begin
+ BrowserMaxAndFocusAction.Execute;
+ end;
+ end else begin
+ if GikoSys.Setting.ListHeightState = glsMin then begin
+ BrowserMaxAndFocusAction.Execute;
+ end;
+ end;
end;
end;
var
protocol, host, path, document, port, bookmark : string;
+ URL2, protocol2, host2, path2, document2, port2, bookmark2 : string;
+ tmp1, tmp2: string;
BBSID, BBSKey: string;
Board: TBoard;
ThreadItem: TThreadItem;
Board := BBSs[ 0 ].FindBBSID( Copy(BBSID, 1 , Length(BBSID) - 1) );
end;
if Board = nil then begin
- GikoSys.OpenBrowser(URL, gbtUserApp);
- Exit;
- //Board := GikoSys.GetUnknownBoard( nil, boardURL );
- //if (FTreeType = gtt2ch) and (FActiveBBS = BBSs[ 1 ]) then
- // ShowBBSTree( BBSs[ 1 ] );
+ // \93ü\82é\82×\82«\94Â\82ª\8c©\82Â\82©\82ç\82È\82©\82Á\82½\82Ì\82Å\81A\95\81\92Ê\82Ì\83u\83\89\83E\83U\82Å\8aJ\82
+ GikoSys.OpenBrowser(URL, gbtUserApp);
+ Exit;
+ end else begin
+ // \8aO\95\94\82Ì\94Â\82È\82Ì\82É2ch\82ÌURL\82É\82³\82ê\82Ä\82µ\82Ü\82Á\82½\93z\82ð\82±\82±\82Å\8am\94F\82·\82é
+ URL2 := Board.URL;
+ GikoSys.ParseURI(URL2 , protocol2, host2, path2, document2, port2, bookmark2 );
+ tmp1 := Copy(host, AnsiPos('.', host) + 1, Length(host));
+ tmp2 := Copy(host2, AnsiPos('.', host2) + 1, Length(host2));
+ if (tmp1 <> tmp2) then begin
+ GikoSys.OpenBrowser(URL, gbtUserApp);
+ Exit;
+ end;
end;
+
if not Board.IsThreadDatRead then
GikoSys.ReadSubjectFile(Board);
URL := GikoSys.Get2chBrowsableThreadURL( URL );
Referer := Referer + ':' + Port;
Referer := Referer + Path;
Headers := 'Referer: ' + Referer;
-
FPreviewBrowser.Navigate(NavURL, Flags, TargetFrameName, PostData, Headers);
-
if ARect.Top + WindowHeight > Screen.DesktopHeight then
ARect.Top := Screen.DesktopHeight - WindowHeight;
if ARect.Left + WindowWidth > Screen.DesktopWidth then
Num: Integer;
ThreadItem: TThreadItem;
begin
+ Result := False;
Doc := FactiveContent.FBrowser.Document as IHtmlDocument2;
- Range := Doc.selection.createRange as IHTMLTxtRange;
- s := CustomStringReplace(Range.text, '\81@', ' ');//\91S\8ap\8bó\94\92\82ð\94¼\8ap\8bó\94\92\82É
- s := ZenToHan(Trim(s));
- if GikoSys.IsNumeric(s) then begin
-
- ThreadItem := GetActiveContent;
- if ThreadItem <> nil then begin
- Num := StrToInt(s);
- FHint.PopupType := gptThread;
- SetResPopupText(ThreadItem, Num, Num, False, False);
- if FHint.ResCount <> 0 then
- ShowTextPopup;
- Result := False;
- end else
+ if Assigned(Doc) then begin
+ Range := Doc.selection.createRange as IHTMLTxtRange;
+ s := CustomStringReplace(Range.text, '\81@', ' ');//\91S\8ap\8bó\94\92\82ð\94¼\8ap\8bó\94\92\82É
+ s := ZenToHan(Trim(s));
+ if GikoSys.IsNumeric(s) then begin
+
+ ThreadItem := GetActiveContent;
+ if ThreadItem <> nil then begin
+ Num := StrToInt(s);
+ FHint.PopupType := gptThread;
+ SetResPopupText(ThreadItem, Num, Num, False, False);
+ if FHint.ResCount <> 0 then
+ ShowTextPopup;
+ Result := False;
+ end else
+ Result := True;
+ end else begin
Result := True;
- end else begin
- Result := True;
+ end;
end;
end;
// \95¶\8e\9a\83R\81[\83h\82Í\83v\83\89\83O\83C\83\93\82É\94C\82¹\82é
for i := StNum to ToNum do begin
Line := i;
- //\82±\82±\82Å\82Q\82¿\82á\82ñ\82Ë\82é\82Ìdat\82Ì\8c`\8e®\82Å\82P\8ds\93Ç\82Ý\8d\9e\82ß\82ê\82Î¥¥¥\81B\81«\93Ç\82ß\82é\82æ\82¤\82É\82È\82Á\82½
- tmp := boardPlugIn.GetDat( DWORD( threadItem ), i );
+ //\82±\82±\82Å\82Q\82¿\82á\82ñ\82Ë\82é\82Ìdat\82Ì\8c`\8e®\82Å\82P\8ds\93Ç\82Ý\8d\9e\82ß\82ê\82Î¥¥¥\81B\81«\93Ç\82ß\82é\82æ\82¤\82É\82È\82Á\82½
+ tmp := boardPlugIn.GetDat( DWORD( threadItem ), i );
if (tmp <> '') And ( not GikoSys.FAbon.CheckAbonPopupRes(tmp) And( not GikoSys.FAbon.CheckIndividualAbonList(line))) then begin
Res := GikoSys.DivideStrLine(tmp);
if (GikoSys.Setting.ShowMail = false) or (Length(res.FMailTo) = 0) then
begin
LinkToolButton := TLinkToolButton( Sender );
- SenderNode := TreeNodeDataFind( FavoriteTreeView.TopItem, LinkToolButton.Data );
+ SenderNode := TreeNodeDataFind( FavoriteTreeView.Items.GetFirstNode, LinkToolButton.Data );
FavoriteDragDrop( SenderNode, Source );
FilterList : TStringList;
i: Integer;
begin
+ if(FActiveContent <> nil) and (FActiveContent.FBrowser <> nil )
+ and (FActiveContent.FBrowser.Busy) then Exit;
+
// \83{\83^\83\93\82Ì\8dX\90V
AllResAction.Checked := True;
SelectResAction.Checked := False;
CabinetHistoryAction.Checked := False;
// \82¨\8bC\82É\93ü\82è\82Ì\83c\83\8a\81[\82ð\93W\8aJ
- FavoriteTreeView.TopItem.Expanded := True;
+ FavoriteTreeView.Items.GetFirstNode.Expanded := True;
end;
LinkToolButton := TLinkToolButton( Source );
//ShowMessage(LinkToolButton.Text);
- SourceNode := TreeNodeDataFind( FavoriteTreeView.TopItem, LinkToolButton.Data );
+ SourceNode := TreeNodeDataFind( FavoriteTreeView.Items.GetFirstNode, LinkToolButton.Data );
FavoriteMoveTo( SenderNode, SourceNode );
end else if Source = BrowserTab then begin
end else if (X = FMouseDownPos.X) and (Y = FMouseDownPos.Y) then begin
if GikoSys.Setting.ListOrientation = gloHorizontal then begin
if GikoSys.Setting.ListWidthState = glsMin then begin
- BrowserMaxAction.Execute;
- if GikoForm.Visible then
- Browser.SetFocus;
+ BrowserMaxAndFocusAction.Execute;
end;
end else begin
if GikoSys.Setting.ListHeightState = glsMin then begin
- BrowserMaxAction.Execute;
- if GikoForm.Visible then
- Browser.SetFocus;
+ BrowserMaxAndFocusAction.Execute;
end;
end;
end;
end;
procedure TGikoForm.ExportFavoriteFileAccept(Sender: TObject);
begin
+
if FavoriteDM.SaveFavoriteFile( ExportFavoriteFile.Dialog.FileName ) Then begin
ShowMessage('\83t\83@\83C\83\8b\82ð\8fo\97Í\82µ\82Ü\82µ\82½');
end else begin
Header := CustomStringReplace(Header, '</b>', '',true);
Header := CustomStringReplace(Header, '<b>', '',true);
end;
+ if ThreadItem.IsBoardPlugInAvailable then begin
+ Body := CustomStringReplace(Res.FBody, '<br>', #13#10,true);
+ Body := CustomStringReplace(Body, '<br>', #13#10,true);
+ end else begin
+ Body := CustomStringReplace(Res.FBody, ' <br> ', #13#10,true);
+ Body := CustomStringReplace(Body, ' <br>', #13#10,true);
+ Body := CustomStringReplace(Body, '<br> ', #13#10,true);
+ Body := CustomStringReplace(Body, '<br>', #13#10,true);
- //Body := CustomStringReplace(Res.FBody, '<br> ', #13#10,true);
- Body := CustomStringReplace(Res.FBody, '<br>', #13#10,true);
- Body := CustomStringReplace(Body, '<br>', #13#10,true);
+ end;
Body := CustomStringReplace(Body, '</a>', '',true);
Body := GikoSys.DeleteLink(Body);
SetActiveList(Node.data);
end;
+ if TObject( Node.Data ) is TBoard then begin // not TCategory
+ if GikoSys.Setting.ListOrientation = gloHorizontal then begin
+ if GikoSys.Setting.ListWidthState = glsMax then begin
+ BrowserMinAction.Execute;
+ if GikoForm.Visible then
+ ListView.SetFocus;
+ end;
+ end else begin
+ if GikoSys.Setting.ListHeightState = glsMax then begin
+ BrowserMinAction.Execute;
+ if GikoForm.Visible then
+ ListView.SetFocus;
+ end;
+ end;
+ end;
+
end;
// TreeView \82ª\83_\83u\83\8b\83N\83\8a\83b\83N\82³\82ê\82½
//var
// key : Word;
begin
-{ case Msg.message of
- WM_KEYDOWN:
+ case Msg.message of
+ {WM_KEYDOWN:
if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
if IsDialogMessage( FActiveContent.Browser.Handle, Msg ) then begin
key := Msg.wParam;
Handled := BrowserKeyDown( Msg, key, KeyDataToShiftState( Msg.lParam ) );
end;
- end;
+ end;}
WM_XBUTTONDOWN:
- case Msg.wParam shr 16 of
- XBUTTON1:
- if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
- if IsDialogMessage( FActiveContent.Browser.Handle, Msg ) then begin
- UpBoardAction.Execute;
- Handled := True;
- end else if IsDialogMessage( ListView.Handle, Msg ) then begin
- UpFolderAction.Execute;
- Handled := True;
- end;
+ case Msg.wParam shr 16 of
+ XBUTTON1:
+ begin
+ if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
+ if IsDialogMessage( FActiveContent.Browser.Handle, Msg ) then begin
+ UpBoardAction.Execute;
+ Handled := True;
+ end;
+ end;
+ if not Handled then begin
+ if IsDialogMessage( ListView.Handle, Msg ) then begin
+ UpFolderAction.Execute;
+ Handled := True;
+ end;
+ end;
end;
- XBUTTON2:
+ XBUTTON2:
end;
end;
-}end;
+end;
procedure TGikoForm.FavoriteTreeViewMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
function TGikoForm.WebBrowserClick(Sender: TObject): WordBool;
begin
result := true;
- if Sender <> nil then
try
if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then
FActiveContent.FBrowser.SetFocus;
end;
procedure TGikoForm.SetFocusForThreadListActionExecute(Sender: TObject);
+var
+ rct: TRect;
begin
if FActiveContent <> nil then
WebBrowserClick(FActiveContent.Browser); //\88ê\89ñBrowser\82É\93\96\82Ä\82È\82¢\82Æ\93®\82©\82È\82¢\82Æ\82«\82ª\82 \82é
ListView.SetFocus;
if( ListView.Items.Count > 0 ) and (ListView.ItemFocused = nil) then
- ListView.Items.Item[0].Selected := true; //\91I\91ð\83A\83C\83e\83\80\82ª\96³\82¢\82Æ\82«\82Í\90æ\93ª\82Ì\82ð\91I\91ð\82·\82é
+ ListView.Items.Item[0].Selected := true //\91I\91ð\83A\83C\83e\83\80\82ª\96³\82¢\82Æ\82«\82Í\90æ\93ª\82Ì\82ð\91I\91ð\82·\82é
+ else begin
+ ListView.Scroll(-ListView.ClientWidth, -ListView.ClientHeight);
+ rct := ListView.ItemFocused.DisplayRect(drBounds);
+ ListView.Scroll(0, 2 * rct.Top - rct.Bottom);
+ if ListView.ViewStyle <> vsReport then begin
+ ListView.Scroll(rct.Left, 0);
+ end;
+ end;
end;
procedure TGikoForm.SetFocusForCabinetActionExecute(Sender: TObject);
begin
if FActiveContent <> nil then
WebBrowserClick(FActiveContent.Browser); //\88ê\89ñBrowser\82É\93\96\82Ä\82È\82¢\82Æ\93®\82©\82È\82¢\82Æ\82«\82ª\82 \82é
- TreeView.SetFocus;
+ if TreeView.Visible then begin
+ TreeView.SetFocus;
+ if(TreeView.Items.Count > 0) and ( TreeView.Selected = nil ) then
+ TreeView.Items.Item[0].Selected := true;
+ end else if FavoriteTreeView.Visible then begin
+ FavoriteTreeView.SetFocus;
+ if(FavoriteTreeView.Items.Count > 0) and (FavoriteTreeView.Selected = nil) then
+ FavoriteTreeView.Items.Item[0].Selected := true;
+ end;
+end;
+procedure TGikoForm.SetFocusForCabinetActionUpdate(Sender: TObject);
+begin
+ SetFocusForCabinetAction.Enabled := CabinetPanel.Visible;
end;
+
//\83u\83\89\83E\83U\82ð\8dÅ\91å\89»\82µ\82Ä\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é\81B
procedure TGikoForm.BrowserMaxAndFocusActionExecute(Sender: TObject);
begin
ListView.Repaint;
end;
+
+procedure TGikoForm.ListViewSelectItem(Sender: TObject; Item: TListItem;
+ Selected: Boolean);
+begin
+
+ if not (GikoSys.Setting.BrowserTabVisible) and (Item <> nil) then
+ if (TObject( Item.Data ) is TThreadItem) then begin
+ SelectTimer.Interval := GikoSys.Setting.SelectInterval;
+ end else
+ SelectTimer.Interval := 0
+ else
+ SelectTimer.Interval := 0;
+
+end;
+
+procedure TGikoForm.SelectTimerTimer(Sender: TObject);
+begin
+ if not (ListView.Selected = nil) then
+ if( FActiveContent = nil) or
+ (GetActiveContent <> TThreadItem(ListView.Selected.Data) ) then begin
+ SelectTimer.Interval := 0;
+ ListClick;
+ end;
+end;
+
+procedure TGikoForm.SelectItemSaveForDatExecute(Sender: TObject);
+var
+ List: TList;
+ i: Integer;
+begin
+ List := TList.Create;
+ try
+ Screen.Cursor := crHourGlass;
+ SelectListItem(List);
+ if ((GikoSys.Setting.ListOrientation = gloVertical) and
+ (GikoSys.Setting.ListHeightState = glsMax)) or
+ ((GikoSys.Setting.ListOrientation = gloHorizontal) and
+ (GikoSys.Setting.ListWidthState = glsMax)) then
+ ShowMessage('\83X\83\8c\83b\83h\88ê\97\97\82ð\95\\8e¦\82µ\82Ä\82\82¾\82³\82¢')
+ else if(List.Count = 0) then
+ ShowMessage('\83X\83\8c\83b\83h\82ð\91I\91ð\82µ\82Ä\82\82¾\82³\82¢')
+ else begin
+ FileSaveAs1.Dialog.Title := '\91I\91ð\83X\83\8c\83b\83h\82ðdat\82Ì\82Ü\82Ü\95Û\91¶';
+ FileSaveAs1.Dialog.Filter := 'DAT\83t\83@\83C\83\8b(*.dat)|*.dat';
+ for i := 0 to List.Count - 1 do begin
+ if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
+ FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).FileName;
+ if FileSaveAs1.Execute then begin
+ //\82È\82º\82©\83L\83\83\83\93\83Z\83\8b\82Å\82à\82±\82Á\82¿\82É\93ü\82Á\82Ä\82\82é
+ if ExtractFilePath(FileSaveAs1.Dialog.FileName) <> '' then begin
+ CopyFile(PChar(TThreadItem(List[i]).FilePath),
+ PChar(FileSaveAs1.Dialog.FileName), true);
+ end;
+ end;
+ end;
+ end;
+ end;
+ finally
+ Screen.Cursor := crDefault;
+ List.Free;
+ end;
+
+end;
+
+procedure TGikoForm.SelectItemSaveForHTMLExecute(Sender: TObject);
+var
+ List: TList;
+ i: Integer;
+ html: TStringList;
+ title: string;
+begin
+ List := TList.Create;
+ try
+ Screen.Cursor := crHourGlass;
+ SelectListItem(List);
+ if ((GikoSys.Setting.ListOrientation = gloVertical) and
+ (GikoSys.Setting.ListHeightState = glsMax)) or
+ ((GikoSys.Setting.ListOrientation = gloHorizontal) and
+ (GikoSys.Setting.ListWidthState = glsMax)) then
+ ShowMessage('\83X\83\8c\83b\83h\88ê\97\97\82ð\95\\8e¦\82µ\82Ä\82\82¾\82³\82¢')
+ else if(List.Count = 0) then
+ ShowMessage('\83X\83\8c\83b\83h\82ð\91I\91ð\82µ\82Ä\82\82¾\82³\82¢')
+ else begin
+ FileSaveAs1.Dialog.Title := '\91I\91ð\83X\83\8c\83b\83h\82ðHTML\89»\82µ\82Ä\95Û\91¶';
+ FileSaveAs1.Dialog.Filter := 'HTML\83t\83@\83C\83\8b(*.html)|*.html';
+ for i := 0 to List.Count - 1 do begin
+ if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
+ FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).Title + '.html';
+ if FileSaveAs1.Execute then begin
+ //\82È\82º\82©\83L\83\83\83\93\83Z\83\8b\82Å\82à\82±\82Á\82¿\82É\93ü\82Á\82Ä\82\82é
+ if ExtractFilePath(FileSaveAs1.Dialog.FileName) <> '' then begin
+ html := TStringList.Create;
+ title := TThreadItem(List[i]).Title;
+ try
+ GikoSys.CreateHTML3(html, TThreadItem(List[i]), title);
+ html.SaveToFile(FileSaveAs1.Dialog.FileName);
+ SkinorCSSFilesCopy(ExtractFilePath(FileSaveAs1.Dialog.FileName));
+ finally
+ html.Free;
+ end;
+ end;
+ end;
+ end;
+ end;
+ end;
+ finally
+ Screen.Cursor := crDefault;
+ List.Free;
+ end;
+end;
+procedure TGikoForm.SkinorCSSFilesCopy(path: string);
+var
+ tmp, tmpD, tmpF: string;
+ current: string;
+ dirs: TStringList;
+ files: TStringList;
+ i, j: Integer;
+begin
+ if GikoSys.Setting.UseSkin then begin
+ current := ExtractFilePath(GikoSys.GetSkinDir);
+ tmp := GikoSys.Setting.CSSFileName;
+ end else if GikoSys.Setting.UseCSS then begin
+ current := ExtractFilePath(GikoSys.GetStyleSheetDir);
+ tmp := ExtractFilePath(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName);
+ end;
+ dirs := TStringList.Create;
+ try
+ dirs.Add(tmp);
+ if tmp <> current then begin
+ GikoSys.GetDirectoryList(current, '*.*', dirs, true);
+ for i := 0 to dirs.Count - 1 do begin
+ files := TStringList.Create;
+ try
+ gikoSys.GetFileList(dirs[i], '*.*', files, true);
+ tmpD := CustomStringReplace(dirs[i], GikoSys.GetConfigDir, path);
+ if (AnsiPos(dirs[i], tmp) <> 0) and not (DirectoryExists(tmpD)) then
+ ForceDirectories(tmpD);
+
+ if(dirs[i] = tmp) and (dirs[i] <> current) then begin
+ for j := 0 to files.Count - 1 do begin
+ tmpF := CustomStringReplace(files[j], GikoSys.GetConfigDir, path);
+ if not FileExists(tmpF) then begin
+ CopyFile(PChar(files[j]), PChar(tmpF),True);
+ end;
+ end;
+ end;
+ finally
+ files.Free;
+ end;
+ end;
+ end else begin
+ tmpD := CustomStringReplace(dirs[0], GikoSys.GetConfigDir, path);
+ if not DirectoryExists(tmpD) then
+ ForceDirectories(tmpD);
+ tmpF := CustomStringReplace(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName
+ , GikoSys.GetConfigDir, path);
+ if not FileExists(tmpF) then begin
+ CopyFile(PChar(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName)
+ , PChar(tmpF), True);
+ end;
+ end;
+ finally
+ dirs.Free;
+ end;
+
+
+end;
+procedure TGikoForm.KidokuActionExecute(Sender: TObject);
+var
+ List: TList;
+ i: Integer;
+begin
+ List := TList.Create;
+ try
+ SelectListItem(List);
+ for i := 0 to List.Count - 1 do begin
+ if TObject(List[i]) is TThreadItem then begin
+ TThreadItem(List[i]).UnRead := false;
+ TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead - 1;
+ end;
+ end;
+ if TreeView.Visible then
+ TreeView.Refresh;
+ finally
+ List.Free;
+ end;
+end;
+
+procedure TGikoForm.MidokuActionExecute(Sender: TObject);
+var
+ List: TList;
+ i: Integer;
+begin
+ List := TList.Create;
+ try
+ SelectListItem(List);
+ for i := 0 to List.Count - 1 do begin
+ if TObject(List[i]) is TThreadItem then begin
+ TThreadItem(List[i]).UnRead := true;
+ TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead + 1;
+ end;
+ end;
+ if TreeView.Visible then
+ TreeView.Refresh;
+ finally
+ List.Free;
+ end;
+end;
+
+procedure TGikoForm.BrowserPanelCanResize(Sender: TObject; var NewWidth,
+ NewHeight: Integer; var Resize: Boolean);
+var
+ i: Integer;
+begin
+ for i := 0 to BROWSER_COUNT - 1 do
+ SetWindowPos(TWebBrowser(FBrowsers[i]).Handle, HWND_NOTOPMOST, 0, 0, NewWidth, NewHeight, SWP_NOMOVE + SWP_NOZORDER);
+
+ if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
+ SetWindowPos(FActiveContent.Browser.Handle, HWND_NOTOPMOST, 0, 0, NewWidth, NewHeight, SWP_NOMOVE + SWP_NOZORDER);
+ end;
+end;
+
+procedure TGikoForm.LogFolderOpenActionExecute(Sender: TObject);
+var
+ List: TList;
+begin
+ if ((GikoSys.Setting.ListOrientation = gloVertical) and
+ (GikoSys.Setting.ListHeightState = glsMax)) or
+ ((GikoSys.Setting.ListOrientation = gloHorizontal) and
+ (GikoSys.Setting.ListWidthState = glsMax)) then begin
+ if(GetActiveContent <> nil) then begin
+ GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(GetActiveContent.FilePath) + '"');
+ end;
+ end else if GetActiveList is TCategory then begin
+ List := TList.Create;
+ try
+ SelectListItem(List);
+ GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(List[0]).FilePath) + '"');
+ finally
+ List.Free;
+ end;
+ end else if GetActiveList is TBoard then begin
+ GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(GetActiveList).FilePath) + '"');
+ end;
+
+end;
+
+procedure TGikoForm.LogFolderOpenActionUpdate(Sender: TObject);
+begin
+ if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
+ LogFolderOpenAction.Enabled := True
+ else if GetActiveList is TBoard then
+ LogFolderOpenAction.Enabled := True
+ else
+ LogFolderOpenAction.Enabled := False;
+end;
+
+procedure TGikoForm.LocalRuleViewClick(Sender: TObject);
+var
+ RefURL,
+ RefeURL,
+ RuleURL,
+ RuleTxt:String;
+ FBoard: TBoard;
+ Indy: TIdHTTP;
+ FileStream: TFileStream;
+begin
+ //\83\8d\81[\83J\83\8b\83\8b\81[\83\8b\8eæ\93¾ by \92è\8aú\95Ö
+ RefURL := GikoSys.UrlToServer(FBoard.URL)
+ + GikoSys.UrlToID(FBoard.URL)
+ + '/';
+ //\8e\8e\82µ\82É\83\8d\81[\83J\83\8b\83\8b\81[\83\8b\8eæ\93¾\82à
+ RuleURL := RefURL
+ + 'head.txt';
+ //\8eæ\93¾\81`
+ RuleTxt := Indy.Get(RuleURL);
+ //FileStream.Create('head.txt', fmCreate) := Indy.Get(RuleURL, FileStream);
+ //\8e\8e\8c±\95\\8e¦\81`
+ if RuleTxt = '' then begin
+ ShowMessage('\83\8d\81[\83J\83\8b\83\8b\81[\83\8b\8eæ\93¾\8e¸\94s');
+ end;
+ ShowMessage(RuleTxt);
+
+end;
+
+procedure TGikoForm.TabSaveClick(Sender: TObject);
+var
+ SaveStringList: TStringList;
+ TabIdx: Integer;
+begin
+ SaveStringList := TStringList.Create;
+end;
+
initialization
OleInitialize(nil);
finalization