mirror of
https://github.com/rofafor/vdr-plugin-femon.git
synced 2023-10-10 13:36:53 +02:00
Added some new symbols and beautified the old ones.
Added audio track selection feature. Added preliminary device switching feature (disabled at the moment).
This commit is contained in:
parent
a6039cdd66
commit
9514ed5387
6
HISTORY
6
HISTORY
@ -81,3 +81,9 @@ VDR Plugin 'femon' Revision History
|
|||||||
2004-06-11: Version 0.1.3
|
2004-06-11: Version 0.1.3
|
||||||
|
|
||||||
- Added "AC-3 Stream Information" display mode (Thanks to Lothar Englisch).
|
- Added "AC-3 Stream Information" display mode (Thanks to Lothar Englisch).
|
||||||
|
|
||||||
|
2004-06-24: Version 0.1.4
|
||||||
|
|
||||||
|
- Added some new symbols and beautified the old ones.
|
||||||
|
- Added audio track selection feature.
|
||||||
|
- Added preliminary device switching feature (disabled at the moment).
|
||||||
|
2
Makefile
2
Makefile
@ -11,7 +11,7 @@ PLUGIN = femon
|
|||||||
|
|
||||||
### The version number of this plugin (taken from the main source file):
|
### The version number of this plugin (taken from the main source file):
|
||||||
|
|
||||||
VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ print $$6 }' | sed -e 's/[";]//g')
|
VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).h | awk '{ print $$6 }' | sed -e 's/[";]//g')
|
||||||
|
|
||||||
### The C++ compiler and options:
|
### The C++ compiler and options:
|
||||||
|
|
||||||
|
25
README
25
README
@ -18,7 +18,6 @@ DVB Frontend Status Monitor is a plugin that displays some signal information
|
|||||||
parameters of the current tuned channel on OSD. You can zap through all your
|
parameters of the current tuned channel on OSD. You can zap through all your
|
||||||
channels and the plugin should be monitoring always the right frontend. The
|
channels and the plugin should be monitoring always the right frontend. The
|
||||||
transponder and stream information are also available in advanced display modes.
|
transponder and stream information are also available in advanced display modes.
|
||||||
User can switch between different display modes by pressing 'OK' key.
|
|
||||||
|
|
||||||
The plugin is based on a neat console frontend status monitor application
|
The plugin is based on a neat console frontend status monitor application
|
||||||
called 'femon' by Johannes Stezenbach (see DVB-apps/szap/femon.c for further
|
called 'femon' by Johannes Stezenbach (see DVB-apps/szap/femon.c for further
|
||||||
@ -31,7 +30,7 @@ Metzler Brothers.
|
|||||||
Terminology:
|
Terminology:
|
||||||
|
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
|## Channel Name ############################# DD 16:9 PAL ##|
|
|## Channel Name ######################### [DD][AR][VF][A][D]|
|
||||||
|[=====Signal Strength in % =============|=================]|
|
|[=====Signal Strength in % =============|=================]|
|
||||||
|[=====Signal-to-Noise Ratio in % ========|=================]|
|
|[=====Signal-to-Noise Ratio in % ========|=================]|
|
||||||
| STR: #0000 (0%) BER: #00000000 Video: 0 Mbit/s |
|
| STR: #0000 (0%) BER: #00000000 Video: 0 Mbit/s |
|
||||||
@ -44,7 +43,7 @@ SNR - Signal-to-noise ratio
|
|||||||
BER - Bit error rate
|
BER - Bit error rate
|
||||||
UNC - Uncorrected blocks
|
UNC - Uncorrected blocks
|
||||||
Video - Calculated video bitrate in Mbit/s
|
Video - Calculated video bitrate in Mbit/s
|
||||||
Audio - Calculated audio / AC-3 bitrate in kbit/s (only first PID)
|
Audio - Calculated audio / AC-3 bitrate in kbit/s
|
||||||
|
|
||||||
LOCK - Everything's working...
|
LOCK - Everything's working...
|
||||||
SIGNAL - Found something above the noise level
|
SIGNAL - Found something above the noise level
|
||||||
@ -52,15 +51,31 @@ CARRIER - Found a DVB signal
|
|||||||
VITERBI - FEC (forward error correction) is stable
|
VITERBI - FEC (forward error correction) is stable
|
||||||
SYNC - Found sync bytes
|
SYNC - Found sync bytes
|
||||||
|
|
||||||
|
DD - AC-3 stream (optional)
|
||||||
|
AR - Aspect Ratio: 1:1/4:3/16:9/2.21:1 (optional)
|
||||||
|
VF - Video format: PAL/NTSC (optional)
|
||||||
|
A - Audio track: 1..2 (optional)
|
||||||
|
D - Device number: 0..3 (optional)
|
||||||
|
|
||||||
|
Controls:
|
||||||
|
|
||||||
|
ChanUp/ChanDn - Switch channel up/down
|
||||||
|
Up/Down - Switch channel up/down
|
||||||
|
0-9 - Select channel
|
||||||
|
Ok - Switch between display modes: basic, transponder, stream, AC-3
|
||||||
|
Right/Left - Switch to next/previous device that provides the current channel
|
||||||
|
Green - Select language (APID)
|
||||||
|
Back - Exit plugin
|
||||||
|
|
||||||
Installation:
|
Installation:
|
||||||
|
|
||||||
cd /put/your/path/here/VDR/PLUGINS/src
|
cd /put/your/path/here/VDR/PLUGINS/src
|
||||||
tar -xzf /put/your/path/here/vdr-femon-X.Y.Z.tar.gz
|
tar -xzf /put/your/path/here/vdr-femon-X.Y.Z.tgz
|
||||||
ln -s femon-X.Y.Z femon
|
ln -s femon-X.Y.Z femon
|
||||||
cd /put/your/path/here/VDR
|
cd /put/your/path/here/VDR
|
||||||
make
|
make
|
||||||
make plugins
|
make plugins
|
||||||
./vdr -Pfemon
|
./vdr -P femon
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
|
|
||||||
|
2
femon.c
2
femon.c
@ -12,7 +12,7 @@
|
|||||||
#include "femonosd.h"
|
#include "femonosd.h"
|
||||||
#include "femon.h"
|
#include "femon.h"
|
||||||
|
|
||||||
#if VDRVERSNUM < 10307
|
#if VDRVERSNUM && VDRVERSNUM < 10307
|
||||||
#error "You don't exist! Go away!"
|
#error "You don't exist! Go away!"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
2
femon.h
2
femon.h
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
#include <vdr/plugin.h>
|
#include <vdr/plugin.h>
|
||||||
|
|
||||||
static const char *VERSION = "0.1.3";
|
static const char *VERSION = "0.1.4";
|
||||||
static const char *DESCRIPTION = "DVB Signal Information Monitor (OSD)";
|
static const char *DESCRIPTION = "DVB Signal Information Monitor (OSD)";
|
||||||
static const char *MAINMENUENTRY = "Signal Information";
|
static const char *MAINMENUENTRY = "Signal Information";
|
||||||
|
|
||||||
|
107
femonosd.c
107
femonosd.c
@ -12,6 +12,12 @@
|
|||||||
#include "femonreceiver.h"
|
#include "femonreceiver.h"
|
||||||
#include "femonosd.h"
|
#include "femonosd.h"
|
||||||
|
|
||||||
|
#include "symbols/dev0.xpm"
|
||||||
|
#include "symbols/dev1.xpm"
|
||||||
|
#include "symbols/dev2.xpm"
|
||||||
|
#include "symbols/dev3.xpm"
|
||||||
|
#include "symbols/apid1.xpm"
|
||||||
|
#include "symbols/apid2.xpm"
|
||||||
#include "symbols/ar11.xpm"
|
#include "symbols/ar11.xpm"
|
||||||
#include "symbols/ar169.xpm"
|
#include "symbols/ar169.xpm"
|
||||||
#include "symbols/ar2211.xpm"
|
#include "symbols/ar2211.xpm"
|
||||||
@ -42,6 +48,12 @@
|
|||||||
|
|
||||||
#define clrBackground clrGray50 // this should be tied somehow into current theme
|
#define clrBackground clrGray50 // this should be tied somehow into current theme
|
||||||
|
|
||||||
|
cBitmap cFemonOsd::bmDevice0(dev0_xpm);
|
||||||
|
cBitmap cFemonOsd::bmDevice1(dev1_xpm);
|
||||||
|
cBitmap cFemonOsd::bmDevice2(dev2_xpm);
|
||||||
|
cBitmap cFemonOsd::bmDevice3(dev3_xpm);
|
||||||
|
cBitmap cFemonOsd::bmApid1(apid1_xpm);
|
||||||
|
cBitmap cFemonOsd::bmApid2(apid2_xpm);
|
||||||
cBitmap cFemonOsd::bmAspectRatio_1_1(ar11_xpm);
|
cBitmap cFemonOsd::bmAspectRatio_1_1(ar11_xpm);
|
||||||
cBitmap cFemonOsd::bmAspectRatio_16_9(ar169_xpm);
|
cBitmap cFemonOsd::bmAspectRatio_16_9(ar169_xpm);
|
||||||
cBitmap cFemonOsd::bmAspectRatio_2_21_1(ar2211_xpm);
|
cBitmap cFemonOsd::bmAspectRatio_2_21_1(ar2211_xpm);
|
||||||
@ -93,7 +105,7 @@ void cFemonOsd::DrawStatusWindow(void)
|
|||||||
int snr = m_SNR / 655;
|
int snr = m_SNR / 655;
|
||||||
int signal = m_Signal / 655;
|
int signal = m_Signal / 655;
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
int x = OSDWIDTH - SPACING;
|
int x = OSDWIDTH;
|
||||||
int y = 0;
|
int y = 0;
|
||||||
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
|
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
|
||||||
|
|
||||||
@ -103,7 +115,48 @@ void cFemonOsd::DrawStatusWindow(void)
|
|||||||
m_Osd->DrawRectangle(0, OSDSTATUSWIN_Y(offset), OSDWIDTH, OSDSTATUSWIN_Y(offset+m_Font->Height()-1), clrWhite);
|
m_Osd->DrawRectangle(0, OSDSTATUSWIN_Y(offset), OSDWIDTH, OSDSTATUSWIN_Y(offset+m_Font->Height()-1), clrWhite);
|
||||||
m_Osd->DrawText(OSDSTATUSWIN_X(1), OSDSTATUSWIN_Y(offset), buf, clrBlack, clrWhite, m_Font);
|
m_Osd->DrawText(OSDSTATUSWIN_X(1), OSDSTATUSWIN_Y(offset), buf, clrBlack, clrWhite, m_Font);
|
||||||
if (m_Receiver) {
|
if (m_Receiver) {
|
||||||
int value = m_Receiver->VideoFormat();
|
int value = cDevice::ActualDevice()->CardIndex();
|
||||||
|
if (value == 0) {
|
||||||
|
x -= bmDevice0.Width() + SPACING;
|
||||||
|
y = (m_Font->Height() - bmDevice0.Height()) / 2;
|
||||||
|
if (y < 0) y = 0;
|
||||||
|
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmDevice0, clrBlack, clrWhite);
|
||||||
|
}
|
||||||
|
else if (value == 1) {
|
||||||
|
x -= bmDevice1.Width() + SPACING;
|
||||||
|
y = (m_Font->Height() - bmDevice1.Height()) / 2;
|
||||||
|
if (y < 0) y = 0;
|
||||||
|
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmDevice1, clrBlack, clrWhite);
|
||||||
|
}
|
||||||
|
else if (value == 2) {
|
||||||
|
x -= bmDevice2.Width() + SPACING;
|
||||||
|
y = (m_Font->Height() - bmDevice2.Height()) / 2;
|
||||||
|
if (y < 0) y = 0;
|
||||||
|
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmDevice2, clrBlack, clrWhite);
|
||||||
|
}
|
||||||
|
else if (value == 3) {
|
||||||
|
x -= bmDevice3.Width() + SPACING;
|
||||||
|
y = (m_Font->Height() - bmDevice3.Height()) / 2;
|
||||||
|
if (y < 0) y = 0;
|
||||||
|
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmDevice3, clrBlack, clrWhite);
|
||||||
|
}
|
||||||
|
value = -1;
|
||||||
|
const char **AudioTracks = cDevice::PrimaryDevice()->GetAudioTracks(&value);
|
||||||
|
if (AudioTracks) {
|
||||||
|
if (value == 0) {
|
||||||
|
x -= bmApid1.Width() + SPACING;
|
||||||
|
y = (m_Font->Height() - bmApid1.Height()) / 2;
|
||||||
|
if (y < 0) y = 0;
|
||||||
|
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmApid1, clrBlack, clrWhite);
|
||||||
|
}
|
||||||
|
else if (value == 1) {
|
||||||
|
x -= bmApid2.Width() + SPACING;
|
||||||
|
y = (m_Font->Height() - bmApid2.Height()) / 2;
|
||||||
|
if (y < 0) y = 0;
|
||||||
|
m_Osd->DrawBitmap(x, OSDSTATUSWIN_Y(offset+y), bmApid2, clrBlack, clrWhite);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
value = m_Receiver->VideoFormat();
|
||||||
if (value == VF_PAL) {
|
if (value == VF_PAL) {
|
||||||
x -= bmPAL.Width() + SPACING;
|
x -= bmPAL.Width() + SPACING;
|
||||||
y = (m_Font->Height() - bmPAL.Height()) / 2;
|
y = (m_Font->Height() - bmPAL.Height()) / 2;
|
||||||
@ -500,7 +553,9 @@ void cFemonOsd::DrawInfoWindow(void)
|
|||||||
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
|
||||||
offset += m_Font->Height();
|
offset += m_Font->Height();
|
||||||
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Audio Stream"), clrYellow, clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Audio Stream"), clrYellow, clrBackground, m_Font);
|
||||||
snprintf(buf, sizeof(buf), "#%d", channel->Apid1());
|
value = -1;
|
||||||
|
cDevice::PrimaryDevice()->GetAudioTracks(&value);
|
||||||
|
snprintf(buf, sizeof(buf), "#%d", (value > 0 ? channel->Apid2() : channel->Apid1()));
|
||||||
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(3), OSDINFOWIN_Y(offset), buf, clrYellow, clrBackground, m_Font);
|
||||||
offset += m_Font->Height();
|
offset += m_Font->Height();
|
||||||
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), clrWhite, clrBackground, m_Font);
|
m_Osd->DrawText(OSDINFOWIN_X(1), OSDINFOWIN_Y(offset), tr("Bitrate"), clrWhite, clrBackground, m_Font);
|
||||||
@ -724,9 +779,8 @@ void cFemonOsd::ChannelSwitch(const cDevice * device, int channelNumber)
|
|||||||
eOSState cFemonOsd::ProcessKey(eKeys Key)
|
eOSState cFemonOsd::ProcessKey(eKeys Key)
|
||||||
{
|
{
|
||||||
eOSState state = cOsdObject::ProcessKey(Key);
|
eOSState state = cOsdObject::ProcessKey(Key);
|
||||||
|
|
||||||
if (state == osUnknown) {
|
if (state == osUnknown) {
|
||||||
switch (Key & ~k_Repeat) {
|
switch (Key) {
|
||||||
case k0:
|
case k0:
|
||||||
if ((m_Number == 0) && (m_OldNumber != 0)) {
|
if ((m_Number == 0) && (m_OldNumber != 0)) {
|
||||||
m_Number = m_OldNumber;
|
m_Number = m_OldNumber;
|
||||||
@ -765,6 +819,49 @@ eOSState cFemonOsd::ProcessKey(eKeys Key)
|
|||||||
break;
|
break;
|
||||||
case kBack:
|
case kBack:
|
||||||
return osEnd;
|
return osEnd;
|
||||||
|
case kGreen:
|
||||||
|
{
|
||||||
|
int CurrentAudioTrack = -1;
|
||||||
|
const char **AudioTracks = cDevice::PrimaryDevice()->GetAudioTracks(&CurrentAudioTrack);
|
||||||
|
if (AudioTracks) {
|
||||||
|
const char **at = &AudioTracks[CurrentAudioTrack];
|
||||||
|
if (!*++at)
|
||||||
|
at = AudioTracks;
|
||||||
|
cDevice::PrimaryDevice()->SetAudioTrack(at - AudioTracks);
|
||||||
|
if (femonConfig.analyzestream) {
|
||||||
|
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
|
||||||
|
if (m_Receiver)
|
||||||
|
delete m_Receiver;
|
||||||
|
m_Receiver = new cFemonReceiver(channel->Ca(), channel->Vpid(), (at - AudioTracks) ? channel->Apid2() : channel->Apid1(), channel->Dpid1());
|
||||||
|
cDevice::ActualDevice()->AttachReceiver(m_Receiver);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case kRight:
|
||||||
|
case kLeft:
|
||||||
|
{
|
||||||
|
int device = cDevice::ActualDevice()->DeviceNumber();
|
||||||
|
if (device >= 0) {
|
||||||
|
cChannel *channel = Channels.GetByNumber(cDevice::CurrentChannel());
|
||||||
|
for (int i = 0; i < cDevice::NumDevices() - 1; i++) {
|
||||||
|
if (NORMALKEY(Key) == kRight) {
|
||||||
|
if (++device >= cDevice::NumDevices()) device = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (--device < 0) device = cDevice::NumDevices() - 1;
|
||||||
|
}
|
||||||
|
if (cDevice::GetDevice(device)->ProvidesChannel(channel)) {
|
||||||
|
//cStatus::MsgChannelSwitch(cDevice::GetDevice(device), 0);
|
||||||
|
//implement some tuning mechanism here
|
||||||
|
//cControl::Launch(new cTransferControl(cDevice::GetDevice(device), channel->Vpid(), channel->Apid1(), channel->Apid2(), channel->Dpid1(), channel->Dpid2()));
|
||||||
|
//cStatus::MsgChannelSwitch(cDevice::GetDevice(device), channel->Number());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
case kUp|k_Repeat:
|
case kUp|k_Repeat:
|
||||||
case kUp:
|
case kUp:
|
||||||
case kDown|k_Repeat:
|
case kDown|k_Repeat:
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include <vdr/thread.h>
|
#include <vdr/thread.h>
|
||||||
#include <vdr/status.h>
|
#include <vdr/status.h>
|
||||||
#include <vdr/channels.h>
|
#include <vdr/channels.h>
|
||||||
|
#include <vdr/transfer.h>
|
||||||
|
|
||||||
class cFemonOsd : public cOsdObject, public cThread, public cStatus {
|
class cFemonOsd : public cOsdObject, public cThread, public cStatus {
|
||||||
private:
|
private:
|
||||||
@ -35,7 +36,8 @@ private:
|
|||||||
int m_DisplayMode;
|
int m_DisplayMode;
|
||||||
const cFont *m_Font;
|
const cFont *m_Font;
|
||||||
cMutex* m_Mutex;
|
cMutex* m_Mutex;
|
||||||
static cBitmap bmDD, bmDD20, bmDD51, bmPAL, bmNTSC, bmAspectRatio_1_1, bmAspectRatio_16_9, bmAspectRatio_2_21_1, bmAspectRatio_4_3;
|
static cBitmap bmDevice0, bmDevice1, bmDevice2, bmDevice3, bmApid1, bmApid2, bmDD, bmDD20, bmDD51;
|
||||||
|
static cBitmap bmPAL, bmNTSC, bmAspectRatio_1_1, bmAspectRatio_16_9, bmAspectRatio_2_21_1, bmAspectRatio_4_3;
|
||||||
void DrawStatusWindow(void);
|
void DrawStatusWindow(void);
|
||||||
void DrawInfoWindow(void);
|
void DrawInfoWindow(void);
|
||||||
|
|
||||||
|
23
symbols/apid1.xpm
Normal file
23
symbols/apid1.xpm
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char * apid1_xpm[] = {
|
||||||
|
"32 18 2 1",
|
||||||
|
". c #FFFFFF",
|
||||||
|
"+ c #000000",
|
||||||
|
"++++++++++++++++++++++++++++++++",
|
||||||
|
"+..............................+",
|
||||||
|
"+..............++.......++.....+",
|
||||||
|
"+............++++....+++++.....+",
|
||||||
|
"+..........+++.++....+++++.....+",
|
||||||
|
"+........+++...++.......++.....+",
|
||||||
|
"+...+++++++....++.......++.....+",
|
||||||
|
"+...++++++.....++.......++.....+",
|
||||||
|
"+...++..++.....++.......++.....+",
|
||||||
|
"+...++..++.....++.......++.....+",
|
||||||
|
"+...++++++.....++.......++.....+",
|
||||||
|
"+...+++++++....++.......++.....+",
|
||||||
|
"+........+++...++.......++.....+",
|
||||||
|
"+..........+++.++.......++.....+",
|
||||||
|
"+............++++.......++.....+",
|
||||||
|
"+.............+++.......++.....+",
|
||||||
|
"+..............................+",
|
||||||
|
"++++++++++++++++++++++++++++++++"};
|
23
symbols/apid2.xpm
Normal file
23
symbols/apid2.xpm
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char * apid2_xpm[] = {
|
||||||
|
"32 18 2 1",
|
||||||
|
". c #FFFFFF",
|
||||||
|
"+ c #000000",
|
||||||
|
"++++++++++++++++++++++++++++++++",
|
||||||
|
"+..............................+",
|
||||||
|
"+..............++.....++++.....+",
|
||||||
|
"+............++++...+++++++....+",
|
||||||
|
"+..........+++.++...++....++...+",
|
||||||
|
"+........+++...++.........++...+",
|
||||||
|
"+...+++++++....++.........++...+",
|
||||||
|
"+...++++++.....++........+++...+",
|
||||||
|
"+...++..++.....++.......+++....+",
|
||||||
|
"+...++..++.....++......+++.....+",
|
||||||
|
"+...++++++.....++.....+++......+",
|
||||||
|
"+...+++++++....++....+++.......+",
|
||||||
|
"+........+++...++...+++........+",
|
||||||
|
"+..........+++.++...++.........+",
|
||||||
|
"+............++++...++++++++...+",
|
||||||
|
"+.............+++...++++++++...+",
|
||||||
|
"+..............................+",
|
||||||
|
"++++++++++++++++++++++++++++++++"};
|
@ -1,23 +1,23 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static char * ar11_xpm[] = {
|
static char * ar11_xpm[] = {
|
||||||
"21 18 2 1",
|
"26 18 2 1",
|
||||||
". c #FFFFFF",
|
". c #FFFFFF",
|
||||||
"+ c #000000",
|
"+ c #000000",
|
||||||
".....................",
|
"++++++++++++++++++++++++++",
|
||||||
".....................",
|
"+........................+",
|
||||||
"....++...........++..",
|
"+......++..........++....+",
|
||||||
"...+++..........+++..",
|
"+...+++++.......+++++....+",
|
||||||
"..++++....++...++++..",
|
"+...+++++.......+++++....+",
|
||||||
"..++++...++++..++++..",
|
"+......++...++.....++....+",
|
||||||
"....++...++++....++..",
|
"+......++...++.....++....+",
|
||||||
"....++....++.....++..",
|
"+......++..........++....+",
|
||||||
"....++...........++..",
|
"+......++..........++....+",
|
||||||
"....++...........++..",
|
"+......++..........++....+",
|
||||||
"....++....++.....++..",
|
"+......++..........++....+",
|
||||||
"....++...++++....++..",
|
"+......++..........++....+",
|
||||||
"....++...++++....++..",
|
"+......++..........++....+",
|
||||||
"....++....++.....++..",
|
"+......++..........++....+",
|
||||||
"....++...........++..",
|
"+......++...++.....++....+",
|
||||||
"....++...........++..",
|
"+......++...++.....++....+",
|
||||||
".....................",
|
"+........................+",
|
||||||
"....................."};
|
"++++++++++++++++++++++++++"};
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static char * ar169_xpm[] = {
|
static char * ar169_xpm[] = {
|
||||||
"36 18 2 1",
|
"38 18 2 1",
|
||||||
". c #FFFFFF",
|
". c #FFFFFF",
|
||||||
"+ c #000000",
|
"+ c #000000",
|
||||||
"....................................",
|
"++++++++++++++++++++++++++++++++++++++",
|
||||||
"....................................",
|
"+....................................+",
|
||||||
"....++....+++++............+++++....",
|
"+......++.....++++..........++++.....+",
|
||||||
"...+++...+++++++..........+++++++...",
|
"+...+++++....+++++++.......++++++....+",
|
||||||
"..++++..+++...+++...++...+++...+++..",
|
"+...+++++....++...++......++...+++...+",
|
||||||
"..++++..++.....++..++++..++.....++..",
|
"+......++...++........++..++....++...+",
|
||||||
"....++..++.........++++..++.....++..",
|
"+......++...++........++..++....++...+",
|
||||||
"....++..++..........++...+++...+++..",
|
"+......++...++............++....++...+",
|
||||||
"....++..++.++++...........++++++++..",
|
"+......++...++.+++.........+++++++...+",
|
||||||
"....++..++++++++...........+++++++..",
|
"+......++...+++++++.........+++.++...+",
|
||||||
"....++..+++...+++...++..........++..",
|
"+......++...++....++............++...+",
|
||||||
"....++..++.....++..++++.........++..",
|
"+......++...++....++............++...+",
|
||||||
"....++..++.....++..++++..++.....++..",
|
"+......++...++....++............++...+",
|
||||||
"....++..+++...+++...++...+++...+++..",
|
"+......++...+++...++......++...++....+",
|
||||||
"....++...+++++++..........+++++++...",
|
"+......++....++++++...++..+++++++....+",
|
||||||
"....++....+++++............+++++....",
|
"+......++.....++++....++...+++++.....+",
|
||||||
"....................................",
|
"+....................................+",
|
||||||
"...................................."};
|
"++++++++++++++++++++++++++++++++++++++"};
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static char * ar2211_xpm[] = {
|
static char * ar2211_xpm[] = {
|
||||||
"43 18 2 1",
|
"52 18 2 1",
|
||||||
". c #FFFFFF",
|
". c #FFFFFF",
|
||||||
"+ c #000000",
|
"+ c #000000",
|
||||||
"...........................................",
|
"++++++++++++++++++++++++++++++++++++++++++++++++++++",
|
||||||
"...........................................",
|
"+..................................................+",
|
||||||
"....++++........++++......++...........++..",
|
"+.....++++..........++++........++...........++....+",
|
||||||
"...++++++......++++++....+++..........+++..",
|
"+...+++++++.......+++++++....+++++........+++++....+",
|
||||||
"..+++..+++....+++..+++..++++....++...++++..",
|
"+...++....++......++....++...+++++........+++++....+",
|
||||||
"..++....++....++....++..++++...++++..++++..",
|
"+.........++............++......++...++......++....+",
|
||||||
"..++....++....++....++....++...++++....++..",
|
"+.........++............++......++...++......++....+",
|
||||||
".......+++.........+++....++....++.....++..",
|
"+........+++...........+++......++...........++....+",
|
||||||
"......+++.........+++.....++...........++..",
|
"+.......+++...........+++.......++...........++....+",
|
||||||
".....+++.........+++......++...........++..",
|
"+......+++...........+++........++...........++....+",
|
||||||
"....+++.........+++.......++....++.....++..",
|
"+.....+++...........+++.........++...........++....+",
|
||||||
"...+++.........+++........++...++++....++..",
|
"+....+++...........+++..........++...........++....+",
|
||||||
"..+++.........+++.........++...++++....++..",
|
"+...+++...........+++...........++...........++....+",
|
||||||
"..++....++.++.++....++....++....++.....++..",
|
"+...++............++............++...........++....+",
|
||||||
"..++++++++.++.++++++++....++...........++..",
|
"+...++++++++..++..++++++++......++...++......++....+",
|
||||||
"..++++++++.++.++++++++....++...........++..",
|
"+...++++++++..++..++++++++......++...++......++....+",
|
||||||
"...........................................",
|
"+..................................................+",
|
||||||
"..........................................."};
|
"++++++++++++++++++++++++++++++++++++++++++++++++++++"};
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static char * ar43_xpm[] = {
|
static char * ar43_xpm[] = {
|
||||||
"32 18 2 1",
|
"31 18 2 1",
|
||||||
". c #FFFFFF",
|
". c #FFFFFF",
|
||||||
"+ c #000000",
|
"+ c #000000",
|
||||||
"................................",
|
"+++++++++++++++++++++++++++++++",
|
||||||
"................................",
|
"+.............................+",
|
||||||
"....++..++............++++++....",
|
"+.........++.........+++++....+",
|
||||||
"....++..++...........++++++++...",
|
"+........+++........+++++++...+",
|
||||||
"...+++..++.....++...+++....+++..",
|
"+.......++++.......++....++...+",
|
||||||
"...++...++....++++..++......++..",
|
"+......++.++...++..++....++...+",
|
||||||
"...++...++....++++..++......++..",
|
"+.....++..++...++........++...+",
|
||||||
"..+++...++.....++..........+++..",
|
"+.....++..++............++....+",
|
||||||
"..++....++..............+++++...",
|
"+....++...++..........+++.....+",
|
||||||
"..++....++..............+++++...",
|
"+...++....++..........++++....+",
|
||||||
"..++++++++++...++..........+++..",
|
"+...+++++++++...........+++...+",
|
||||||
"..++++++++++..++++..++......++..",
|
"+...+++++++++............++...+",
|
||||||
"........++....++++..++......++..",
|
"+.........++.......++....++...+",
|
||||||
"........++.....++...+++....+++..",
|
"+.........++.......++...+++...+",
|
||||||
"........++...........++++++++...",
|
"+.........++...++...++++++....+",
|
||||||
"........++............++++++....",
|
"+.........++...++....++++.....+",
|
||||||
"................................",
|
"+.............................+",
|
||||||
"................................"};
|
"+++++++++++++++++++++++++++++++"};
|
||||||
|
23
symbols/dev0.xpm
Normal file
23
symbols/dev0.xpm
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char * dev0_xpm[] = {
|
||||||
|
"29 18 2 1",
|
||||||
|
". c #FFFFFF",
|
||||||
|
"+ c #000000",
|
||||||
|
"+++++++++++++++++++++++++++++",
|
||||||
|
"+...........................+",
|
||||||
|
"+.......+..+.......++++.....+",
|
||||||
|
"+.......+..+......++++++....+",
|
||||||
|
"+.......+..+......++..++....+",
|
||||||
|
"+....+++++++++...++....++...+",
|
||||||
|
"+....+++++++++...++....++...+",
|
||||||
|
"+......+..+......++....++...+",
|
||||||
|
"+......+..+......++....++...+",
|
||||||
|
"+......+..+......++....++...+",
|
||||||
|
"+......+..+......++....++...+",
|
||||||
|
"+...+++++++++....++....++...+",
|
||||||
|
"+...+++++++++....++....++...+",
|
||||||
|
"+.....+..+........++..++....+",
|
||||||
|
"+.....+..+........++++++....+",
|
||||||
|
"+.....+..+.........++++.....+",
|
||||||
|
"+...........................+",
|
||||||
|
"+++++++++++++++++++++++++++++"};
|
23
symbols/dev1.xpm
Normal file
23
symbols/dev1.xpm
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char * dev1_xpm[] = {
|
||||||
|
"29 18 2 1",
|
||||||
|
". c #FFFFFF",
|
||||||
|
"+ c #000000",
|
||||||
|
"+++++++++++++++++++++++++++++",
|
||||||
|
"+...........................+",
|
||||||
|
"+.......+..+.........++.....+",
|
||||||
|
"+.......+..+......+++++.....+",
|
||||||
|
"+.......+..+......+++++.....+",
|
||||||
|
"+....+++++++++.......++.....+",
|
||||||
|
"+....+++++++++.......++.....+",
|
||||||
|
"+......+..+..........++.....+",
|
||||||
|
"+......+..+..........++.....+",
|
||||||
|
"+......+..+..........++.....+",
|
||||||
|
"+......+..+..........++.....+",
|
||||||
|
"+...+++++++++........++.....+",
|
||||||
|
"+...+++++++++........++.....+",
|
||||||
|
"+.....+..+...........++.....+",
|
||||||
|
"+.....+..+...........++.....+",
|
||||||
|
"+.....+..+...........++.....+",
|
||||||
|
"+...........................+",
|
||||||
|
"+++++++++++++++++++++++++++++"};
|
23
symbols/dev2.xpm
Normal file
23
symbols/dev2.xpm
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char * dev2_xpm[] = {
|
||||||
|
"29 18 2 1",
|
||||||
|
". c #FFFFFF",
|
||||||
|
"+ c #000000",
|
||||||
|
"+++++++++++++++++++++++++++++",
|
||||||
|
"+...........................+",
|
||||||
|
"+.......+..+.......++++.....+",
|
||||||
|
"+.......+..+.....+++++++....+",
|
||||||
|
"+.......+..+.....++....++...+",
|
||||||
|
"+....+++++++++.........++...+",
|
||||||
|
"+....+++++++++.........++...+",
|
||||||
|
"+......+..+...........+++...+",
|
||||||
|
"+......+..+..........+++....+",
|
||||||
|
"+......+..+.........+++.....+",
|
||||||
|
"+......+..+........+++......+",
|
||||||
|
"+...+++++++++.....+++.......+",
|
||||||
|
"+...+++++++++....+++........+",
|
||||||
|
"+.....+..+.......++.........+",
|
||||||
|
"+.....+..+.......++++++++...+",
|
||||||
|
"+.....+..+.......++++++++...+",
|
||||||
|
"+...........................+",
|
||||||
|
"+++++++++++++++++++++++++++++"};
|
23
symbols/dev3.xpm
Normal file
23
symbols/dev3.xpm
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char * dev3_xpm[] = {
|
||||||
|
"29 18 2 1",
|
||||||
|
". c #FFFFFF",
|
||||||
|
"+ c #000000",
|
||||||
|
"+++++++++++++++++++++++++++++",
|
||||||
|
"+...........................+",
|
||||||
|
"+.......+..+.......+++++....+",
|
||||||
|
"+.......+..+......+++++++...+",
|
||||||
|
"+.......+..+.....++....++...+",
|
||||||
|
"+....+++++++++...++....++...+",
|
||||||
|
"+....+++++++++.........++...+",
|
||||||
|
"+......+..+...........++....+",
|
||||||
|
"+......+..+.........+++.....+",
|
||||||
|
"+......+..+.........++++....+",
|
||||||
|
"+......+..+...........+++...+",
|
||||||
|
"+...+++++++++..........++...+",
|
||||||
|
"+...+++++++++....++....++...+",
|
||||||
|
"+.....+..+.......++...+++...+",
|
||||||
|
"+.....+..+........++++++....+",
|
||||||
|
"+.....+..+.........++++.....+",
|
||||||
|
"+...........................+",
|
||||||
|
"+++++++++++++++++++++++++++++"};
|
@ -1,23 +1,23 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static char * dolbydigital_xpm[] = {
|
static char * dolbydigital_xpm[] = {
|
||||||
"27 18 2 1",
|
"31 18 2 1",
|
||||||
". c #FFFFFF",
|
". c #FFFFFF",
|
||||||
"+ c #000000",
|
"+ c #000000",
|
||||||
"...........................",
|
"+++++++++++++++++++++++++++++++",
|
||||||
"...........................",
|
"+.............................+",
|
||||||
"..+++++++++++.+++++++++++..",
|
"+...+++++++++++.+++++++++++...+",
|
||||||
"..++.++++++++.++++++++.++..",
|
"+...++.++++++++.++++++++.++...+",
|
||||||
"..++...++++++.++++++...++..",
|
"+...++...++++++.++++++...++...+",
|
||||||
"..++.....++++.++++.....++..",
|
"+...++.....++++.++++.....++...+",
|
||||||
"..++......+++.+++......++..",
|
"+...++......+++.+++......++...+",
|
||||||
"..++.......++.++.......++..",
|
"+...++.......++.++.......++...+",
|
||||||
"..++.......++.++.......++..",
|
"+...++.......++.++.......++...+",
|
||||||
"..++.......++.++.......++..",
|
"+...++.......++.++.......++...+",
|
||||||
"..++.......++.++.......++..",
|
"+...++.......++.++.......++...+",
|
||||||
"..++......+++.+++......++..",
|
"+...++......+++.+++......++...+",
|
||||||
"..++.....++++.++++.....++..",
|
"+...++.....++++.++++.....++...+",
|
||||||
"..++...++++++.++++++...++..",
|
"+...++...++++++.++++++...++...+",
|
||||||
"..++.++++++++.++++++++.++..",
|
"+...++.++++++++.++++++++.++...+",
|
||||||
"..+++++++++++.+++++++++++..",
|
"+...+++++++++++.+++++++++++...+",
|
||||||
"...........................",
|
"+.............................+",
|
||||||
"..........................."};
|
"+++++++++++++++++++++++++++++++"};
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static char * dolbydigital20_xpm[] = {
|
static char * dolbydigital20_xpm[] = {
|
||||||
"49 18 2 1",
|
"55 18 2 1",
|
||||||
". c #FFFFFF",
|
". c #FFFFFF",
|
||||||
"+ c #000000",
|
"+ c #000000",
|
||||||
".................................................",
|
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++",
|
||||||
".................................................",
|
"+.....................................................+",
|
||||||
"..+++++++++++.+++++++++++....++++.......++++++...",
|
"+...+++++++++++.+++++++++++.....++++.........++++.....+",
|
||||||
"..++.++++++++.++++++++.++...++++++.....++++++++..",
|
"+...++.++++++++.++++++++.++...+++++++.......++++++....+",
|
||||||
"..++...++++++.++++++...++..+++..+++....+++..+++..",
|
"+...++...++++++.++++++...++...++....++......++..++....+",
|
||||||
"..++.....++++.++++.....++..++....++....++....++..",
|
"+...++.....++++.++++.....++.........++.....++....++...+",
|
||||||
"..++......+++.+++......++..++....++....++....++..",
|
"+...++......+++.+++......++.........++.....++....++...+",
|
||||||
"..++.......++.++.......++.......+++....++....++..",
|
"+...++.......++.++.......++........+++.....++....++...+",
|
||||||
"..++.......++.++.......++......+++.....++....++..",
|
"+...++.......++.++.......++.......+++......++....++...+",
|
||||||
"..++.......++.++.......++.....+++......++....++..",
|
"+...++.......++.++.......++......+++.......++....++...+",
|
||||||
"..++.......++.++.......++....+++.......++....++..",
|
"+...++.......++.++.......++.....+++........++....++...+",
|
||||||
"..++......+++.+++......++...+++........++....++..",
|
"+...++......+++.+++......++....+++.........++....++...+",
|
||||||
"..++.....++++.++++.....++..+++.........++....++..",
|
"+...++.....++++.++++.....++...+++..........++....++...+",
|
||||||
"..++...++++++.++++++...++..++....++.++.+++..+++..",
|
"+...++...++++++.++++++...++...++............++..++....+",
|
||||||
"..++.++++++++.++++++++.++..++++++++.++.++++++++..",
|
"+...++.++++++++.++++++++.++...++++++++..++..++++++....+",
|
||||||
"..+++++++++++.+++++++++++..++++++++.++..++++++...",
|
"+...+++++++++++.+++++++++++...++++++++..++...++++.....+",
|
||||||
".................................................",
|
"+.....................................................+",
|
||||||
"................................................."};
|
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++"};
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static char * dolbydigital51_xpm[] = {
|
static char * dolbydigital51_xpm[] = {
|
||||||
"44 18 2 1",
|
"51 18 2 1",
|
||||||
". c #FFFFFF",
|
". c #FFFFFF",
|
||||||
"+ c #000000",
|
"+ c #000000",
|
||||||
"............................................",
|
"+++++++++++++++++++++++++++++++++++++++++++++++++++",
|
||||||
"............................................",
|
"+.................................................+",
|
||||||
"..+++++++++++.+++++++++++..++++++++.....++..",
|
"+...+++++++++++.+++++++++++...+++++++........++...+",
|
||||||
"..++.++++++++.++++++++.++..++++++++....+++..",
|
"+...++.++++++++.++++++++.++...+++++++.....+++++...+",
|
||||||
"..++...++++++.++++++...++..++.........++++..",
|
"+...++...++++++.++++++...++...++..........+++++...+",
|
||||||
"..++.....++++.++++.....++..++.........++++..",
|
"+...++.....++++.++++.....++...++.............++...+",
|
||||||
"..++......+++.+++......++..++...........++..",
|
"+...++......+++.+++......++...++++++.........++...+",
|
||||||
"..++.......++.++.......++..++++++.......++..",
|
"+...++.......++.++.......++...+++++++........++...+",
|
||||||
"..++.......++.++.......++..+++++++......++..",
|
"+...++.......++.++.......++...++...+++.......++...+",
|
||||||
"..++.......++.++.......++.......+++.....++..",
|
"+...++.......++.++.......++.........++.......++...+",
|
||||||
"..++.......++.++.......++........++.....++..",
|
"+...++.......++.++.......++.........++.......++...+",
|
||||||
"..++......+++.+++......++..++....++.....++..",
|
"+...++......+++.+++......++.........++.......++...+",
|
||||||
"..++.....++++.++++.....++..++....++.....++..",
|
"+...++.....++++.++++.....++...++....++.......++...+",
|
||||||
"..++...++++++.++++++...++..+++..+++.++..++..",
|
"+...++...++++++.++++++...++...++...+++.......++...+",
|
||||||
"..++.++++++++.++++++++.++...++++++..++..++..",
|
"+...++.++++++++.++++++++.++...+++++++...++...++...+",
|
||||||
"..+++++++++++.+++++++++++....++++...++..++..",
|
"+...+++++++++++.+++++++++++....+++++....++...++...+",
|
||||||
"............................................",
|
"+.................................................+",
|
||||||
"............................................"};
|
"+++++++++++++++++++++++++++++++++++++++++++++++++++"};
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static char * ntsc_xpm[] = {
|
static char * ntsc_xpm[] = {
|
||||||
"38 18 2 1",
|
"19 18 2 1",
|
||||||
". c #FFFFFF",
|
". c #FFFFFF",
|
||||||
"+ c #000000",
|
"+ c #000000",
|
||||||
"......................................",
|
"+++++++++++++++++++",
|
||||||
"......................................",
|
"+.................+",
|
||||||
"..++....++.++++++++..+++++....+++++...",
|
"+...++.......++...+",
|
||||||
"..++....++.++++++++.+++++++..+++++++..",
|
"+...+++......++...+",
|
||||||
"..+++...++....++....++...++..++...++..",
|
"+...++++.....++...+",
|
||||||
"..+++...++....++....++...++..++...++..",
|
"+...++++.....++...+",
|
||||||
"..++++..++....++....++.......++.......",
|
"+...++.++....++...+",
|
||||||
"..++++..++....++....++++.....++.......",
|
"+...++..++...++...+",
|
||||||
"..++.++.++....++.....+++++...++.......",
|
"+...++..++...++...+",
|
||||||
"..++.++.++....++.......++++..++.......",
|
"+...++...++..++...+",
|
||||||
"..++..++++....++.........++..++.......",
|
"+...++...++..++...+",
|
||||||
"..++..++++....++....++...++..++...++..",
|
"+...++....++.++...+",
|
||||||
"..++...+++....++....++...++..++...++..",
|
"+...++.....++++...+",
|
||||||
"..++...+++....++....++...++..++...++..",
|
"+...++.....++++...+",
|
||||||
"..++....++....++....+++++++..+++++++..",
|
"+...++......+++...+",
|
||||||
"..++....++....++.....+++++....+++++...",
|
"+...++.......++...+",
|
||||||
"......................................",
|
"+.................+",
|
||||||
"......................................"};
|
"+++++++++++++++++++"};
|
||||||
|
@ -1,23 +1,23 @@
|
|||||||
/* XPM */
|
/* XPM */
|
||||||
static char * pal_xpm[] = {
|
static char * pal_xpm[] = {
|
||||||
"30 18 2 1",
|
"18 18 2 1",
|
||||||
". c #FFFFFF",
|
". c #FFFFFF",
|
||||||
"+ c #000000",
|
"+ c #000000",
|
||||||
"..............................",
|
"++++++++++++++++++",
|
||||||
"..............................",
|
"+................+",
|
||||||
"..+++++++....+++++...++.......",
|
"+...++++++++.....+",
|
||||||
"..+++..+++..+++++++..++.......",
|
"+...+++++++++....+",
|
||||||
"..++....++..++...++..++.......",
|
"+...++.....+++...+",
|
||||||
"..++....++.+++...+++.++.......",
|
"+...++......++...+",
|
||||||
"..++....++.++.....++.++.......",
|
"+...++......++...+",
|
||||||
"..++....++.++.....++.++.......",
|
"+...++.....+++...+",
|
||||||
"..++....++.++.....++.++.......",
|
"+...+++++++++....+",
|
||||||
"..+++..+++.+++++++++.++.......",
|
"+...++++++++.....+",
|
||||||
"..+++++++..+++++++++.++.......",
|
"+...++...........+",
|
||||||
"..++.......++.....++.++.......",
|
"+...++...........+",
|
||||||
"..++.......++.....++.++.......",
|
"+...++...........+",
|
||||||
"..++.......++.....++.++.......",
|
"+...++...........+",
|
||||||
"..++.......++.....++.+++++++..",
|
"+...++...........+",
|
||||||
"..++.......++.....++.+++++++..",
|
"+...++...........+",
|
||||||
"..............................",
|
"+................+",
|
||||||
".............................."};
|
"++++++++++++++++++"};
|
||||||
|
Loading…
Reference in New Issue
Block a user