This commit was manufactured by cvs2svn to create tag 'WX_2_2_9'.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/tags/WX_2_2_9@13364 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
175
samples/statbar/StatbarVC.dsp
Normal file
175
samples/statbar/StatbarVC.dsp
Normal file
@@ -0,0 +1,175 @@
|
||||
# Microsoft Developer Studio Project File - Name="StatbarVC" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||
|
||||
CFG=StatbarVC - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "StatbarVC.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "StatbarVC.mak" CFG="StatbarVC - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "StatbarVC - Win32 Release" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "StatbarVC - Win32 Debug" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "StatbarVC - Win32 Debug DLL" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "StatbarVC - Win32 Release DLL" (based on "Win32 (x86) Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "StatbarVC - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../include" /I "../../contrib/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx.lib xpm.lib png.lib zlib.lib jpeg.lib tiff.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /nodefaultlib:"msvcrtd.lib" /out:"Release/statbar.exe" /libpath:"../../lib" /libpath:"../../contrib/lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "StatbarVC - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /I "../../contrib/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /c
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wxd.lib xpmd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /out:"Debug/statbar.exe" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "StatbarVC - Win32 Debug DLL"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "DebugDLL"
|
||||
# PROP BASE Intermediate_Dir "DebugDLL"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "DebugDLL"
|
||||
# PROP Intermediate_Dir "DebugDLL"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /I "../../contrib/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /Yu"wx/wxprec.h" /FD /c
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx22_9d.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /out:"DebugDLL/statbar.exe" /pdbtype:sept /libpath:"../../lib" /libpath:"../../contrib/lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "StatbarVC - Win32 Release DLL"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "ReleaseDLL"
|
||||
# PROP BASE Intermediate_Dir "ReleaseDLL"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "ReleaseDLL"
|
||||
# PROP Intermediate_Dir "ReleaseDLL"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../include" /I "../../contrib/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D WXUSINGDLL=1 /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:windows /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib wsock32.lib winmm.lib wx22_9.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libci.lib" /out:"ReleaseDLL/statbar.exe" /libpath:"../../lib" /libpath:"../../contrib/lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "StatbarVC - Win32 Release"
|
||||
# Name "StatbarVC - Win32 Debug"
|
||||
# Name "StatbarVC - Win32 Debug DLL"
|
||||
# Name "StatbarVC - Win32 Release DLL"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\statbar.cpp
|
||||
|
||||
!IF "$(CFG)" == "StatbarVC - Win32 Release"
|
||||
|
||||
!ELSEIF "$(CFG)" == "StatbarVC - Win32 Debug"
|
||||
|
||||
# SUBTRACT CPP /YX /Yc /Yu
|
||||
|
||||
!ELSEIF "$(CFG)" == "StatbarVC - Win32 Debug DLL"
|
||||
|
||||
# SUBTRACT BASE CPP /YX /Yc /Yu
|
||||
# SUBTRACT CPP /YX /Yc /Yu
|
||||
|
||||
!ELSEIF "$(CFG)" == "StatbarVC - Win32 Release DLL"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\statbar.rc
|
||||
# ADD BASE RSC /l 0x809
|
||||
# ADD RSC /l 0x809 /i "../../include" /i "../../contrib/include"
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
||||
29
samples/statbar/StatbarVC.dsw
Normal file
29
samples/statbar/StatbarVC.dsw
Normal file
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 5.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "StatbarVC"=.\StatbarVC.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -6,5 +6,5 @@ WXDIR = ../..
|
||||
TARGET=statbar
|
||||
OBJECTS = $(TARGET).o
|
||||
|
||||
include $(WXDIR)\src\makeprog.g95
|
||||
include $(WXDIR)/src/makeprog.g95
|
||||
|
||||
|
||||
@@ -46,16 +46,26 @@
|
||||
#include "wx/textdlg.h"
|
||||
#include "wx/sizer.h"
|
||||
#include "wx/stattext.h"
|
||||
#include "wx/bmpbuttn.h"
|
||||
#include "wx/dcmemory.h"
|
||||
#endif
|
||||
|
||||
#include "wx/datetime.h"
|
||||
|
||||
// define this for the platforms which don't support wxBitmapButton (such as
|
||||
// Motif), else a wxBitmapButton will be used
|
||||
#ifdef __WXMOTIF__
|
||||
#define USE_STATIC_BITMAP
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// resources
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#include "green.xpm"
|
||||
#include "red.xpm"
|
||||
#ifdef USE_STATIC_BITMAP
|
||||
#include "green.xpm"
|
||||
#include "red.xpm"
|
||||
#endif // USE_STATIC_BITMAP
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// private classes
|
||||
@@ -87,8 +97,14 @@ public:
|
||||
void OnTimer(wxTimerEvent& event) { UpdateClock(); }
|
||||
void OnSize(wxSizeEvent& event);
|
||||
void OnToggleClock(wxCommandEvent& event);
|
||||
void OnButton(wxCommandEvent& event);
|
||||
|
||||
private:
|
||||
// toggle the state of the status bar controls
|
||||
void DoToggle();
|
||||
|
||||
wxBitmap CreateBitmapForButton(bool on = FALSE);
|
||||
|
||||
enum
|
||||
{
|
||||
Field_Text,
|
||||
@@ -101,7 +117,11 @@ private:
|
||||
wxTimer m_timer;
|
||||
|
||||
wxCheckBox *m_checkbox;
|
||||
#ifdef USE_STATIC_BITMAP
|
||||
wxStaticBitmap *m_statbmp;
|
||||
#else
|
||||
wxBitmapButton *m_statbmp;
|
||||
#endif
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
@@ -180,6 +200,7 @@ END_EVENT_TABLE()
|
||||
BEGIN_EVENT_TABLE(MyStatusBar, wxStatusBar)
|
||||
EVT_SIZE(MyStatusBar::OnSize)
|
||||
EVT_CHECKBOX(StatusBar_Checkbox, MyStatusBar::OnToggleClock)
|
||||
EVT_BUTTON(-1, MyStatusBar::OnButton)
|
||||
EVT_TIMER(-1, MyStatusBar::OnTimer)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
@@ -295,8 +316,8 @@ void MyFrame::DoCreateStatusBar(MyFrame::StatBarKind kind)
|
||||
wxFAIL_MSG("unknown stat bar kind");
|
||||
}
|
||||
|
||||
PositionStatusBar();
|
||||
GetStatusBar()->Show();
|
||||
PositionStatusBar();
|
||||
|
||||
m_statbarKind = kind;
|
||||
}
|
||||
@@ -412,7 +433,7 @@ MyAboutDialog::MyAboutDialog(wxWindow *parent)
|
||||
#endif
|
||||
|
||||
MyStatusBar::MyStatusBar(wxWindow *parent)
|
||||
: wxStatusBar(parent, -1), m_timer(this)
|
||||
: wxStatusBar(parent, -1), m_timer(this), m_checkbox(NULL)
|
||||
{
|
||||
static const int widths[Field_Max] = { -1, 150, BITMAP_SIZE_X, 100 };
|
||||
|
||||
@@ -422,7 +443,11 @@ MyStatusBar::MyStatusBar(wxWindow *parent)
|
||||
m_checkbox = new wxCheckBox(this, StatusBar_Checkbox, _T("&Toggle clock"));
|
||||
m_checkbox->SetValue(TRUE);
|
||||
|
||||
#ifdef USE_STATIC_BITMAP
|
||||
m_statbmp = new wxStaticBitmap(this, -1, wxIcon(green_xpm));
|
||||
#else
|
||||
m_statbmp = new wxBitmapButton(this, -1, CreateBitmapForButton());
|
||||
#endif
|
||||
|
||||
m_timer.Start(1000);
|
||||
|
||||
@@ -443,27 +468,70 @@ MyStatusBar::~MyStatusBar()
|
||||
}
|
||||
}
|
||||
|
||||
wxBitmap MyStatusBar::CreateBitmapForButton(bool on)
|
||||
{
|
||||
static const int BMP_BUTTON_SIZE_X = 10;
|
||||
static const int BMP_BUTTON_SIZE_Y = 9;
|
||||
|
||||
wxBitmap bitmap(BMP_BUTTON_SIZE_X, BMP_BUTTON_SIZE_Y);
|
||||
wxMemoryDC dc;
|
||||
dc.SelectObject(bitmap);
|
||||
dc.SetBrush(on ? *wxGREEN_BRUSH : *wxRED_BRUSH);
|
||||
dc.SetBackground(*wxLIGHT_GREY_BRUSH);
|
||||
dc.Clear();
|
||||
dc.DrawEllipse(0, 0, BMP_BUTTON_SIZE_X, BMP_BUTTON_SIZE_Y);
|
||||
dc.SelectObject(wxNullBitmap);
|
||||
|
||||
return bitmap;
|
||||
}
|
||||
|
||||
void MyStatusBar::OnSize(wxSizeEvent& event)
|
||||
{
|
||||
if ( !m_checkbox )
|
||||
return;
|
||||
|
||||
wxRect rect;
|
||||
GetFieldRect(Field_Checkbox, rect);
|
||||
|
||||
m_checkbox->SetSize(rect.x + 2, rect.y + 2, rect.width - 4, rect.height - 4);
|
||||
|
||||
GetFieldRect(Field_Bitmap, rect);
|
||||
m_statbmp->Move(rect.x + (rect.width - BITMAP_SIZE_X) / 2,
|
||||
rect.y + (rect.height - BITMAP_SIZE_Y) / 2);
|
||||
#ifdef USE_BUTTON_FOR_BITMAP
|
||||
wxSize size(BITMAP_SIZE_X, BITMAP_SIZE_Y);
|
||||
#else
|
||||
wxSize size = m_statbmp->GetSize();
|
||||
#endif
|
||||
|
||||
m_statbmp->Move(rect.x + (rect.width - size.x) / 2,
|
||||
rect.y + (rect.height - size.y) / 2);
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
void MyStatusBar::OnToggleClock(wxCommandEvent& event)
|
||||
void MyStatusBar::OnButton(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
m_checkbox->SetValue(!m_checkbox->GetValue());
|
||||
|
||||
DoToggle();
|
||||
}
|
||||
|
||||
void MyStatusBar::OnToggleClock(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
DoToggle();
|
||||
}
|
||||
|
||||
void MyStatusBar::DoToggle()
|
||||
{
|
||||
if ( m_checkbox->GetValue() )
|
||||
{
|
||||
m_timer.Start(1000);
|
||||
|
||||
#ifdef USE_STATIC_BITMAP
|
||||
m_statbmp->SetIcon(wxIcon(green_xpm));
|
||||
#else
|
||||
m_statbmp->SetBitmapLabel(CreateBitmapForButton(FALSE));
|
||||
m_statbmp->Refresh();
|
||||
#endif
|
||||
|
||||
UpdateClock();
|
||||
}
|
||||
@@ -471,7 +539,12 @@ void MyStatusBar::OnToggleClock(wxCommandEvent& event)
|
||||
{
|
||||
m_timer.Stop();
|
||||
|
||||
#ifdef USE_STATIC_BITMAP
|
||||
m_statbmp->SetIcon(wxIcon(red_xpm));
|
||||
#else
|
||||
m_statbmp->SetBitmapLabel(CreateBitmapForButton(TRUE));
|
||||
m_statbmp->Refresh();
|
||||
#endif
|
||||
|
||||
SetStatusText("", Field_Clock);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user