[mythtv] [PATCH] View log entires in System Status (Update3)
Kevin Kuphal
kuphal at dls.net
Sun Sep 5 00:14:01 EDT 2004
This is the latest patch to add viewing mythlog entries in the System
Status screen. It incorporates the following functionality:
- Adds isActive() to UIListType to return if a list is active
- Shows DVB Status only when DVB support is compiled
- Detailed status show now without explicit SELECT when moving up and
down the category list. SELECT here will still update the content on
the right.
- LEFT/RIGHT moves between category list and logged items list when
appropriate
- 1-8 selects the priority of the log viewing when in the log category
- MENU key will prompt to acknowledge all items at this or lower
priority when in the log category
- SELECT on an individual item will prompt to acknoweldge it and reset
the list if acknowledged
- Minor improvements to the UI XML to support these features
- QMap changes from Chris Pinkham which is both faster and more
reusable. All content uses this now.
- Removed text area in favor of above method.
- Tuner status now shows detail in the text area like the log entries
Thanks again, Chris
Kevin
-------------- next part --------------
Index: mythtv/libs/libmyth/uitypes.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmyth/uitypes.h,v
retrieving revision 1.57
diff -n -u -r1.57 uitypes.h
--- mythtv/libs/libmyth/uitypes.h 19 Aug 2004 10:19:15 -0000 1.57
+++ mythtv/libs/libmyth/uitypes.h 5 Sep 2004 04:08:15 -0000
@@ -381,6 +381,7 @@
void Draw(QPainter *, int drawlayer, int);
bool ShowSelAlways() const { return m_showSelAlways; }
void ShowSelAlways(bool bnew) { m_showSelAlways = bnew; }
+ bool isActive() { return m_active; }
private:
//QString cutDown(QString, QFont *, int);
int m_selheight;
Index: mythtv/programs/mythfrontend/statusbox.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythfrontend/statusbox.cpp,v
retrieving revision 1.1
diff -n -u -r1.1 statusbox.cpp
--- mythtv/programs/mythfrontend/statusbox.cpp 19 Aug 2004 01:23:04 -0000 1.1
+++ mythtv/programs/mythfrontend/statusbox.cpp 5 Sep 2004 04:08:15 -0000
@@ -21,17 +21,32 @@
{
// Set this value to the number of items in icon_list
// to prevent scrolling off the bottom
- max_icons = 3;
+ int item_count = 0;
+ dateFormat = gContext->GetSetting("ShortDateFormat", "M/d");
+ timeFormat = gContext->GetSetting("TimeFormat", "h:mm AP");
setNoErase();
LoadTheme();
- icon_list->SetItemText(0, "Listings Status");
- icon_list->SetItemText(1, "Tuner Status");
- icon_list->SetItemText(2, "DVB Status");
- // icon_list->SetItemText(3, "Log Entries");
+ icon_list->SetItemText(item_count++, QObject::tr("Listings Status"));
+ icon_list->SetItemText(item_count++, QObject::tr("Tuner Status"));
+#ifdef USING_DVB
+ if (gContext->GetNumSetting("DVBMonitorInterval", 0))
+ icon_list->SetItemText(item_count++, "DVB Status");
+#endif
+ icon_list->SetItemText(item_count++, QObject::tr("Log Entries"));
icon_list->SetItemCurrent(0);
icon_list->SetActive(true);
+
+ max_icons = item_count;
+ inContent = false;
+ contentPos = 0;
+ contentTotalLines = 0;
+ contentSize = 0;
+ contentMid = 0;
+ min_level = gContext->GetNumSetting("LogDefaultView",1);
+ my_parent = parent;
+ clicked();
}
void StatusBox::paintEvent(QPaintEvent *e)
@@ -53,10 +68,57 @@
pix.fill(this, pr.topLeft());
QPainter tmp(&pix);
QPainter p(this);
+
+ // Normalize the variables here and set the contentMid
+ contentSize = list_area->GetItems();
+ if (contentSize > contentTotalLines)
+ contentSize = contentTotalLines;
+ contentMid = contentSize / 2;
+
+ // In order to maintain a center scrolling highlight, we need to determine the point at which
+ // to start the content list so that the current item is in the center
+ int startPos = 0;
+ if (contentPos > contentMid)
+ startPos = contentPos - contentMid;
if (content == NULL) return;
LayerSet *container = content;
+ // If the content position is beyond the midpoint and before the end
+ // or if the content is first being displayed, write the content using
+ // the offset we determined above. If we are before the midpoint or
+ // close to the end, we stop moving the content up or down to let the
+ // hightlight move up and down with fixed content
+ if (((contentPos > contentMid) && (contentPos <= (contentTotalLines - contentMid))) || (contentPos == 0))
+ {
+ list_area->ResetList();
+ for (int x = startPos; (x - startPos) <= contentSize; x++)
+ if (contentLines.contains(x))
+ list_area->SetItemText(x - startPos, contentLines[x]);
+ }
+
+ // If we are scrolling, the determine the item to highlight
+ if (doScroll)
+ {
+ if (contentPos < contentMid)
+ list_area->SetItemCurrent(contentPos);
+
+ if (contentPos >= contentMid)
+ list_area->SetItemCurrent(contentMid);
+
+ if (contentPos > (contentTotalLines - contentMid))
+ list_area->SetItemCurrent(contentSize - (contentTotalLines - contentPos));
+
+ if (inContent)
+ {
+ helptext->SetText(contentDetail[contentPos]);
+ update(TopRect);
+ }
+ }
+
+ list_area->SetUpArrow(contentPos > 0);
+ list_area->SetDownArrow((contentPos + contentSize) < contentTotalLines);
+
container->Draw(&tmp, 0, 0);
container->Draw(&tmp, 1, 0);
container->Draw(&tmp, 2, 0);
@@ -175,12 +237,6 @@
exit(-1);
}
- text_area = (UITextType*)content->GetType("text_area");
- if (!text_area) {
- cerr << "StatusBox: Failed to get text area." << endl;
- exit(-1);
- }
-
topbar = theme->GetSet("topbar");
if (!topbar) {
cerr << "StatusBox: Failed to get topbar container." << endl;
@@ -215,21 +271,158 @@
{
clicked();
}
+ else if (action == "MENU")
+ {
+ if ((inContent) && (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries"))
+ {
+ int retval = MythPopupBox::show2ButtonPopup(my_parent, QString("AckLogEntry"),
+ QString("Acknowledge all log entries at this priority level or lower?"), QString("Yes"),
+ QString("No"), 0);
+ if (retval == 0)
+ {
+ QString query = QString("UPDATE mythlog SET acknowledged = 1 where priority <= %1").arg(min_level);
+ QSqlDatabase *db = QSqlDatabase::database();
+ db->exec(query);
+ doLogEntries();
+ }
+ }
+ }
else if (action == "UP")
{
- if (icon_list->GetCurrentItem() > 0)
- icon_list->SetItemCurrent(icon_list->GetCurrentItem()-1);
- setHelpText();
- update(SelectRect);
+ if (inContent)
+ {
+ if (contentPos > 0)
+ contentPos--;
+ update(ContentRect);
+ }
+ else
+ {
+ if (icon_list->GetCurrentItem() > 0)
+ icon_list->SetItemCurrent(icon_list->GetCurrentItem()-1);
+ clicked();
+ setHelpText();
+ update(SelectRect);
+ }
+
}
else if (action == "DOWN")
{
- if (icon_list->GetCurrentItem() < (max_icons - 1))
- icon_list->SetItemCurrent(icon_list->GetCurrentItem()+1);
- setHelpText();
+ if (inContent)
+ {
+ if (contentPos < (contentTotalLines - 1))
+ contentPos++;
+ update(ContentRect);
+ }
+ else
+ {
+ if (icon_list->GetCurrentItem() < (max_icons - 1))
+ icon_list->SetItemCurrent(icon_list->GetCurrentItem()+1);
+ clicked();
+ setHelpText();
+ update(SelectRect);
+ }
+ }
+ else if ((action == "RIGHT") &&
+ (!inContent) &&
+ ((contentTotalLines > contentSize) || (doScroll)))
+ {
+ clicked();
+ inContent = true;
+ contentPos = 0;
+ icon_list->SetActive(false);
+ list_area->SetActive(true);
+ update(SelectRect);
+ update(ContentRect);
+ }
+ else if ((action == "LEFT") && (inContent))
+ {
+ inContent = false;
+ contentPos = 0;
+ list_area->SetActive(false);
+ icon_list->SetActive(true);
update(SelectRect);
+ update(ContentRect);
}
- else
+ else if (action == "1")
+ {
+ if (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries")
+ {
+ min_level = 1;
+ helptext->SetText(QObject::tr("Setting priority level to %1").arg(min_level));
+ update(TopRect);
+ doLogEntries();
+ }
+ }
+ else if (action == "2")
+ {
+ if (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries")
+ {
+ min_level = 2;
+ helptext->SetText(QObject::tr("Setting priority level to %1").arg(min_level));
+ update(TopRect);
+ doLogEntries();
+ }
+ }
+ else if (action == "3")
+ {
+ if (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries")
+ {
+ min_level = 3;
+ helptext->SetText(QObject::tr("Setting priority level to %1").arg(min_level));
+ update(TopRect);
+ doLogEntries();
+ }
+ }
+ else if (action == "4")
+ {
+ if (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries")
+ {
+ min_level = 4;
+ helptext->SetText(QObject::tr("Setting priority level to %1").arg(min_level));
+ update(TopRect);
+ doLogEntries();
+ }
+ }
+ else if (action == "5")
+ {
+ if (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries")
+ {
+ min_level = 5;
+ helptext->SetText(QObject::tr("Setting priority level to %1").arg(min_level));
+ update(TopRect);
+ doLogEntries();
+ }
+ }
+ else if (action == "6")
+ {
+ if (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries")
+ {
+ min_level = 6;
+ helptext->SetText(QObject::tr("Setting priority level to %1").arg(min_level));
+ update(TopRect);
+ doLogEntries();
+ }
+ }
+ else if (action == "7")
+ {
+ if (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries")
+ {
+ min_level = 7;
+ helptext->SetText(QObject::tr("Setting priority level to %1").arg(min_level));
+ update(TopRect);
+ doLogEntries();
+ }
+ }
+ else if (action == "8")
+ {
+ if (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries")
+ {
+ min_level = 8;
+ helptext->SetText(QObject::tr("Setting priority level to %1").arg(min_level));
+ update(TopRect);
+ doLogEntries();
+ }
+ } else
handled = false;
}
@@ -239,46 +432,69 @@
void StatusBox::setHelpText()
{
- topbar->ClearAllText();
- switch (icon_list->GetCurrentItem())
+ if (inContent)
{
- case 0:
- helptext->SetText("Listings Status shows the latest status information from mythfilldatabase");
- break;
- case 1:
- helptext->SetText("Tuner Status shows the current information about the state of backend tuner cards");
- break;
- case 2:
- helptext->SetText("DVB Status shows the quality statistics of all DVB cards, if present");
- break;
- case 3:
- helptext->SetText("Log Entries shows any unread log entries from the system if you have logging enabled");
- break;
+ helptext->SetText(contentDetail[contentPos]);
+ } else {
+ topbar->ClearAllText();
+ QString current_item = icon_list->GetItemText(icon_list->GetCurrentItem());
+
+ if (current_item == "Listings Status")
+ helptext->SetText(QObject::tr("Listings Status shows the latest status information from mythfilldatabase"));
+
+ if (current_item == "Tuner Status")
+ helptext->SetText(QObject::tr("Tuner Status shows the current information about the state of backend tuner cards"));
+
+#ifdef USING_DVB
+ if (current_item == "DVB Status")
+ helptext->SetText(QObject::tr("DVB Status shows the quality statistics of all DVB cards, if present"));
+#endif
+
+ if (current_item == "Log Entries")
+ helptext->SetText(QObject::tr("Log Entries shows any unread log entries from the system if you have logging enabled"));
}
update(TopRect);
}
void StatusBox::clicked()
{
- // Clear all visible content elements here
- // I'm sure there's a better way to do this but I can't find it
- content->ClearAllText();
- list_area->ResetList();
-
- switch (icon_list->GetCurrentItem())
+ if ((inContent) && (icon_list->GetItemText(icon_list->GetCurrentItem()) == "Log Entries"))
{
- case 0:
+ int retval = MythPopupBox::show2ButtonPopup(my_parent, QString("AckLogEntry"),
+ QString("Acknowledge this log entry?"), QString("Yes"),
+ QString("No"), 0);
+ if (retval == 0)
+ {
+ QString query = QString("UPDATE mythlog SET acknowledged = 1 where logid = %1")
+ .arg(logID[contentPos]);
+ QSqlDatabase *db = QSqlDatabase::database();
+ db->exec(query);
+ doLogEntries();
+ }
+ } else {
+ // Clear all visible content elements here
+ // I'm sure there's a better way to do this but I can't find it
+ content->ClearAllText();
+ list_area->ResetList();
+ contentLines.clear();
+ contentDetail.clear();
+ logID.clear();
+
+ QString current_item = icon_list->GetItemText(icon_list->GetCurrentItem());
+
+ if (current_item == "Listings Status")
doListingsStatus();
- break;
- case 1:
+
+ if (current_item == "Tuner Status")
doTunerStatus();
- break;
- case 2:
+
+#ifdef USING_DVB
+ if (current_item == "DVB Status")
doDVBStatus();
- break;
- case 3:
+#endif
+
+ if (current_item == "Log Entries")
doLogEntries();
- break;
}
}
@@ -289,6 +505,11 @@
int DaysOfData;
QDateTime qdtNow, GuideDataThrough;
QSqlDatabase *db = QSqlDatabase::database();
+ int count = 0;
+
+ contentLines.clear();
+ contentDetail.clear();
+ doScroll = false;
qdtNow = QDateTime::currentDateTime();
querytext = QString("SELECT max(endtime) FROM program;");
@@ -307,78 +528,70 @@
mfdLastRunStatus = gContext->GetSetting("mythfilldatabaseLastRunStatus");
DataDirectMessage = gContext->GetSetting("DataDirectMessage");
- Status = QObject::tr("Myth version:") + " " + MYTH_BINARY_VERSION + "\n";
+ contentLines[count++] = QObject::tr("Myth version:") + " " + MYTH_BINARY_VERSION;
+ contentLines[count++] = QObject::tr("Last mythfilldatabase guide update:");
+ contentLines[count++] = QObject::tr("Started: ") + mfdLastRunStart;
+
+ if (mfdLastRunEnd >= mfdLastRunStart) //if end < start, it's still running.
+ contentLines[count++] = QObject::tr("Finished: ") + mfdLastRunEnd;
- Status += QObject::tr("Last mythfilldatabase guide update:");
- Status += "\n ";
- Status += QObject::tr("Started: ");
- Status += mfdLastRunStart;
- if (mfdLastRunEnd > mfdLastRunStart) //if end < start, it's still running.
- {
- Status += "\n ";
- Status += QObject::tr("Finished: ");
- Status += mfdLastRunEnd;
- }
-
- Status += "\n ";
- Status += QObject::tr("Result: ");
- Status += mfdLastRunStatus;
+ contentLines[count++] = QObject::tr("Result: ") + mfdLastRunStatus;
DaysOfData = qdtNow.daysTo(GuideDataThrough);
if (GuideDataThrough.isNull())
{
- Status += "\n\n";
- Status += QObject::tr("There's no guide data available! ");
- Status += QObject::tr("Have you run mythfilldatabase?");
- Status += "\n";
+ contentLines[count++] = "";
+ contentLines[count++] = QObject::tr("There's no guide data available! ");
+ contentLines[count++] = QObject::tr("Have you run mythfilldatabase?");
}
else
{
- Status += "\n\n";
- Status += QObject::tr("There is guide data until ");
- Status += QDateTime(GuideDataThrough).toString("yyyy-MM-dd hh:mm");
+ contentLines[count++] = "";
+ contentLines[count++] = QObject::tr("There is guide data until ") +
+ QDateTime(GuideDataThrough).toString("yyyy-MM-dd hh:mm");
if (DaysOfData > 0)
{
- Status += QString("\n(%1 ").arg(DaysOfData);
+ Status = QString("(%1 ").arg(DaysOfData);
if (DaysOfData >1)
Status += QObject::tr("days");
else
Status += QObject::tr("day");
Status += ").";
+ contentLines[count++] = Status;
}
- else
- Status += ".";
}
if (DaysOfData <= 3)
{
- Status += "\n";
- Status += QObject::tr("WARNING: is mythfilldatabase running?");
+ contentLines[count++] = QObject::tr("WARNING: is mythfilldatabase running?");
}
if (!DataDirectMessage.isNull())
{
- Status += "\n";
- Status += QObject::tr("DataDirect Status: \n");
- Status += DataDirectMessage;
+ contentLines[count++] = QObject::tr("DataDirect Status: ");
+ contentLines[count++] = DataDirectMessage;
}
- text_area->SetText(Status);
+ contentTotalLines = count;
update(ContentRect);
}
void StatusBox::doTunerStatus()
{
int count = 0;
+ doScroll = true;
QString querytext = QString("SELECT cardid FROM capturecard;");
QSqlDatabase *db = QSqlDatabase::database();
QSqlQuery query = db->exec(querytext);
+
+ contentLines.clear();
+ contentDetail.clear();
+
if (query.isActive() && query.numRowsAffected())
{
- list_area->ResetList();
while(query.next())
{
int cardid = query.value(0).toInt();
@@ -398,8 +611,8 @@
else
Status += "is not recording";
- list_area->SetItemText(count, Status);
- count++;
+ contentLines[count] = Status;
+ contentDetail[count] = Status;
if (strlist[0].toInt()==kState_RecordingOnly)
{
@@ -409,26 +622,30 @@
ProgramInfo *proginfo = new ProgramInfo;
proginfo->FromStringList(strlist, 0);
- Status = " ";
- Status += proginfo->title;
- list_area->SetItemText(count++, Status);
-
- Status = " ";
+ Status = proginfo->title;
+ Status += "\n";
Status += proginfo->subtitle;
- if (Status != " ")
- list_area->SetItemText(count++, Status);
+ contentDetail[count] = Status;
}
+ count++;
}
}
+ contentTotalLines = count;
update(ContentRect);
}
+// #ifdef USING_DVB
void StatusBox::doDVBStatus(void)
{
QString querytext;
-
bool doneAnything = false;
-
+
+ doScroll = false;
+ int count = 0;
+
+ contentLines.clear();
+ contentDetail.clear();
+
QString Status = QString("Details of DVB error statistics for last 48 hours:\n");
QString outerqry =
@@ -468,11 +685,11 @@
if (query.isActive() && query.numRowsAffected())
{
- Status += QString("Recording period from %1 to %2\n").arg(t_start.toString()).arg(t_end.toString());
+ contentLines[count++] = QString("Recording period from %1 to %2").arg(t_start.toString()).arg(t_end.toString());
while (query.next())
{
- Status += QString("Encoder %1 Min SNR: %2 Avg SNR: %3 Min BER %4 Avg BER %5 Cont Errs: %6 Overflows: %7\n")
+ contentLines[count++] = QString("Encoder %1 Min SNR: %2 Avg SNR: %3 Min BER %4 Avg BER %5 Cont Errs: %6 Overflows: %7")
.arg(query.value(0).toInt())
.arg(query.value(5).toInt())
.arg(query.value(6).toInt())
@@ -489,29 +706,73 @@
if (!doneAnything)
{
- Status += QString("There is no DVB signal quality data available to display.\n");
+ contentLines[count++] = QString("There is no DVB signal quality data available to display.");
}
- text_area->SetText(Status);
+ contentTotalLines = count;
update(ContentRect);
}
+// #endif
void StatusBox::doLogEntries(void)
{
-/*
- // int minlevel = gContext->GetNumSetting("LogDefaultView",0);
- int minlevel = 8;
+ QString timeDateFormat;
+ QString line;
+ int count = 0;
+
+ doScroll = true;
+
+ timeDateFormat = gContext->GetSetting("TimeFormat", "h:mm AP") + " " +
+ gContext->GetSetting("ShortDateFormat", "M/d");
+
+ contentLines.clear();
+ contentDetail.clear();
+ logID.clear();
- log_list->clear();
QSqlDatabase *db = QSqlDatabase::database();
- QString thequery = QString("SELECT logid, module, priority, logdate, host, message, "
- "details FROM mythlog WHERE acknowledged = 0 and priority <= %1 "
- "order by logdate").arg(minlevel);
+ QString thequery;
+
+ thequery = QString("SELECT logid, module, priority, logdate, host, "
+ "message, details "
+ "FROM mythlog WHERE acknowledged = 0 AND priority <= %1 "
+ "ORDER BY logdate DESC;").arg(min_level);
QSqlQuery query = db->exec(thequery);
if (query.isActive())
+ {
while (query.next())
- log_list->insertItem(QString("%1 %2").arg(query.value(3).toString()).arg(query.value(5).toString()));
-*/
+ {
+ line = QString("%1").arg(query.value(5).toString());
+ contentLines[count] = line;
+
+ if (query.value(6).toString() != "")
+ line = QString("On %1 %2 from %3.%4\n%5\n%6")
+ .arg(query.value(3).toDateTime().toString(dateFormat))
+ .arg(query.value(3).toDateTime().toString(timeFormat))
+ .arg(query.value(4).toString())
+ .arg(query.value(1).toString())
+ .arg(query.value(5).toString())
+ .arg(query.value(6).toString());
+ else line = QString("On %1 %2 from %3.%4\n%5\nNo other details")
+ .arg(query.value(3).toDateTime().toString(dateFormat))
+ .arg(query.value(3).toDateTime().toString(timeFormat))
+ .arg(query.value(4).toString())
+ .arg(query.value(1).toString())
+ .arg(query.value(5).toString());
+ contentDetail[count] = line;
+ logID[count++] = query.value(0).toString();
+ }
+ }
+
+ if (!count)
+ {
+ doScroll = false;
+ contentLines[count++] = QObject::tr("No items found at this priority level or lower.");
+ contentLines[count++] = QObject::tr("Use 1-8 to change priority level.");
+ }
+
+
+ contentTotalLines = count;
+ update(ContentRect);
}
StatusBox::~StatusBox(void)
Index: mythtv/programs/mythfrontend/statusbox.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/programs/mythfrontend/statusbox.h,v
retrieving revision 1.1
diff -n -u -r1.1 statusbox.h
--- mythtv/programs/mythfrontend/statusbox.h 19 Aug 2004 01:23:04 -0000 1.1
+++ mythtv/programs/mythfrontend/statusbox.h 5 Sep 2004 04:08:15 -0000
@@ -29,6 +29,7 @@
void doListingsStatus();
void doTunerStatus();
void doDVBStatus();
+ void doJobQueueStatus();
void doLogEntries();
void clicked();
void setHelpText();
@@ -36,11 +37,25 @@
XMLParse *theme;
QDomElement xmldata;
QRect TopRect, SelectRect, ContentRect;
- UITextType *heading, *helptext, *text_area;
+ UITextType *heading, *helptext;
UIListType *icon_list, *list_area;
LayerSet *selector, *topbar, *content;
int max_icons;
+
+ bool inContent, doScroll;
+ int contentTotalLines;
+ int contentSize;
+ int contentPos;
+ int contentMid;
+ int min_level;
+ QString dateFormat, timeFormat;
+
+ QMap<int, QString> contentLines;
+ QMap<int, QString> contentDetail;
+ QMap<int, QString> logID;
+
+ MythMainWindow *my_parent;
};
#endif
Index: mythtv/themes/default/status-ui.xml
===================================================================
RCS file: /var/lib/mythcvs/mythtv/themes/default/status-ui.xml,v
retrieving revision 1.1
diff -n -u -r1.1 status-ui.xml
--- mythtv/themes/default/status-ui.xml 19 Aug 2004 01:23:04 -0000 1.1
+++ mythtv/themes/default/status-ui.xml 5 Sep 2004 04:08:15 -0000
@@ -28,6 +28,12 @@
<bold>yes</bold>
</font>
+ <font name="status_selected" face="Arial">
+ <color>#ffff33</color>
+ <size>16</size>
+ <bold>yes</bold>
+ </font>
+
<container name="topbar">
<area>0,0,800,200</area>
<textarea name="heading" draworder="0">
@@ -36,7 +42,7 @@
<value>System Status - Select a category to view the status</value>
</textarea>
<textarea name="helptext" draworder="0">
- <area>30,60,760,80</area>
+ <area>30,60,760,120</area>
<font>title</font>
<value>This screen show the status of various system components</value>
<multiline>yes</multiline>
@@ -68,18 +74,13 @@
<container name="content">
<area>265,201,535,600</area>
<listarea name="list_area" draworder="2">
- <area>15,20,490,395</area>
+ <area>15,20,490,345</area>
<fcnfont name="status" function="active"></fcnfont>
<fcnfont name="status" function="inactive"></fcnfont>
- <fcnfont name="status" function="selected"></fcnfont>
+ <fcnfont name="status_selected" function="selected"></fcnfont>
<column number="1" width="490" context="-1"></column>
<items>12</items>
</listarea>
- <textarea name="text_area" draworder="2">
- <area>15,20,490,395</area>
- <font>status</font>
- <multiline>yes</multiline>
- </textarea>
<image name="datalines" draworder="0" fleximage="no">
<filename>cr-lines.png</filename>
<position>0,0</position>
More information about the mythtv-dev
mailing list