1
0
mirror of https://github.com/winscp/winscp.git synced 2026-10-24 02:28:55 +03:00
Files
winscp/source/forms/Authenticate.h
Martin Prikryl 1bd51d52d1 Updating DPI scaling to BCB11
– Control's Canvas does not have Font updated when painting, so it needs to be set explicitly in some places
– Page control drawing was not only incompatible, but broken in general, so it was refactored – giving up on trying to make it 100% mimic system drawing
– CM_DPICHANGED replaced with OnAfterMonitorDpiChanged for form-level scaling. Not really necessary, just for style. Though it is not called for initial resize (at least when starting on primary monitor with temporary non-system DPI)
– OnResize is not called for DPI change, so in some instances, some OnResize call was duplicated in OnAfterMonitorDpiChanged/CM_DPICHANGED
– Scaling of thirdparty box still does not work correctly (but Updates box works??)
– Scaling on primary monitor with temporary non-system DPI is bad
– TTreeView enabled DPI scaling when using Images that is not Scaled
– Discaring obsolete FSiteButtonsPadding workaround
– Controls programmatically added to form are automatically scaled to the form's DPI (relevant for message boxes)

Source commit: a86dddbfada30a5bc409687489bdcd12842050af
2024-11-08 10:55:22 +01:00

140 lines
5.2 KiB
C++

//---------------------------------------------------------------------------
#ifndef AuthenticateH
#define AuthenticateH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
#include "PasswordEdit.hpp"
#include "WinInterface.h"
#include "GUITools.h"
#include <System.Actions.hpp>
#include <Vcl.ActnList.hpp>
#include <Vcl.Menus.hpp>
#include <Vcl.StdActns.hpp>
//---------------------------------------------------------------------------
class TAuthenticateForm : public TForm
{
__published:
TListBox *LogView;
TPanel *PasswordPanel;
TPanel *PromptEditPanel;
TLabel *PromptLabel1;
TPasswordEdit *PromptEdit1;
TPanel *BannerPanel;
TMemo *BannerMemo;
TCheckBox *NeverShowAgainCheck;
TButton *BannerCloseButton;
TButton *BannerHelpButton;
TPanel *SavePasswordPanel;
TCheckBox *SavePasswordCheck;
TPanel *ButtonsPanel;
TButton *PasswordOKButton;
TButton *PasswordCancelButton;
TButton *PasswordHelpButton;
TLabel *InstructionsLabel;
TLabel *PromptLabel2;
TPasswordEdit *PromptEdit2;
TPanel *SessionRememberPasswordPanel;
TCheckBox *SessionRememberPasswordCheck;
TPanel *TopPanel;
TPanel *LeftPanel;
TPaintBox *AnimationPaintBox;
TActionList *ActionList;
TEditCopy *EditCopyAction;
TEditSelectAll *EditSelectAllAction;
TAction *BannerMonospacedFontAction;
TPopupMenu *BannerPopupMenu;
TMenuItem *CopyItem;
TMenuItem *SelectAllItem;
TMenuItem *N1;
TMenuItem *AdjustWindowItem;
TPopupMenu *LabelPopupMenu;
TMenuItem *N2;
TAction *LabelCopyAction;
TAction *LabelOpenLinkAction2;
TMenuItem *Open1;
TMenuItem *Copy1;
void __fastcall FormShow(TObject *Sender);
void __fastcall HelpButtonClick(TObject *Sender);
void __fastcall LogViewMeasureItem(TWinControl *Control, int Index, int &Height);
void __fastcall LogViewDrawItem(TWinControl *Control, int Index, TRect &Rect, TOwnerDrawState State);
void __fastcall FormResize(TObject *Sender);
void __fastcall BannerMemoContextPopup(TObject *Sender, TPoint &MousePos, bool &Handled);
void __fastcall BannerMonospacedFontActionExecute(TObject *Sender);
void __fastcall LogViewMouseMove(TObject *Sender, TShiftState Shift, int X, int Y);
void __fastcall LabelCopyActionExecute(TObject *Sender);
void __fastcall LabelOpenLinkAction2Execute(TObject *Sender);
void __fastcall FormAfterMonitorDpiChanged(TObject *Sender, int OldDPI, int NewDPI);
public:
__fastcall TAuthenticateForm(TComponent * Owner);
virtual __fastcall ~TAuthenticateForm();
void __fastcall Init(TTerminal * Terminal);
void __fastcall ShowAsModal();
void __fastcall Log(const UnicodeString & Message, const UnicodeString & Additional = UnicodeString());
bool __fastcall PromptUser(TPromptKind Kind, UnicodeString Name, UnicodeString Instructions,
TStrings * Prompts, TStrings * Results, bool ForceLog, bool StoredCredentialsTried);
void __fastcall Banner(const UnicodeString & Banner, bool & NeverShowAgain,
int Options, unsigned int & Params);
__property TTerminal * Terminal = { read = FTerminal };
__property TNotifyEvent OnCancel = { read = FOnCancel, write = FOnCancel };
protected:
void __fastcall AdjustControls();
bool __fastcall Execute(UnicodeString Status, TPanel * Panel,
TWinControl * FocusControl, TButton * DefaultButton, TButton * CancelButton,
bool FixHeight, bool Zoom, bool ForceLog);
virtual void __fastcall CreateParams(TCreateParams & Params);
virtual void __fastcall Dispatch(void * AMessage);
void __fastcall WMNCCreate(TWMNCCreate & Message);
TLabel * __fastcall GenerateLabel(int Current, UnicodeString Caption);
TCustomEdit * __fastcall GenerateEdit(int Current, bool Echo);
TList * __fastcall GeneratePrompt(TPromptKind Kind, const UnicodeString & Instructions, TStrings * Prompts);
void __fastcall DoCancel();
void __fastcall AdjustLogView();
void __fastcall MakeLogItemVisible(int Index);
int __fastcall LogItemHeight(int Index);
void __fastcall RedrawLog();
void __fastcall CMShowingChanged(TMessage & Message);
void __fastcall UpdateBannerFont();
void __fastcall DoAdjustWindow();
void __fastcall LabelContextPopup(TObject* Sender, const TPoint & MousePos, bool & Handled);
bool ExtractUrl(const UnicodeString & Text, UnicodeString & Url);
void ExternalLabel(TLabel * Label);
void __fastcall LinkClick(TObject * Sender);
void LabelOpen(TLabel * Label);
private:
void * FShowAsModalStorage;
TWinControl * FFocusControl;
TSessionData * FSessionData;
TTerminal * FTerminal;
UnicodeString FStatus;
TWinControl * FPromptParent;
int FPromptLeft;
int FPromptTop;
int FPromptRight;
int FPromptEditGap;
int FPromptsGap;
TNotifyEvent FOnCancel;
TFrameAnimation FFrameAnimation;
bool FAnimationPainted;
int FHorizontalLogPadding;
int FVerticalLogPadding;
TTextFormat FLogTextFormat;
bool FShowNoActivate;
std::vector<UnicodeString> FHints;
int FHintIndex;
TLabel * FContextLabel;
INTERFACE_HOOK;
};
//---------------------------------------------------------------------------
#endif