diff --git a/CallManage/CallManage.h b/CallManage/CallManage.h index 56467ea..29a0069 100644 --- a/CallManage/CallManage.h +++ b/CallManage/CallManage.h @@ -124,6 +124,10 @@ signals: //置顶层,并取消其他表格的选中状态 void sig_Raise(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int iTableType, QString strFormInfoType); + //图头、成果表 + //取消其他表格的选中状态 + void sig_UnSelectTableItem(QString strUuid); + //修改曲线选择状态 iSelect=0未知,1标准曲线,2主校曲线,3从校曲线 void sig_ChangeLineStatus(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int iSelect, bool bMerge); diff --git a/logPlus/PropertyWidget.cpp b/logPlus/PropertyWidget.cpp index 44141f5..205ca67 100644 --- a/logPlus/PropertyWidget.cpp +++ b/logPlus/PropertyWidget.cpp @@ -75,6 +75,8 @@ void PropertyWidget::InitCurrentViewInfo(bool bAll) { m_fromTop = NULL; m_formInfo = NULL; + m_formHead = NULL; + m_tableWidget = NULL; m_item = NULL; m_strUuid = ""; m_strSlfName = ""; @@ -1131,7 +1133,7 @@ void PropertyWidget::initHeadProperty(FormHead *formHead, QTableWidget *tableWid if (rowHeight_Img.isValid()) { m_rowHeight_Img = rowHeight_Img.toDouble(); } - + //行高、列宽 m_colWidth = tableWidget->columnWidth(col)/g_dPixelPerCm; m_rowHeight = tableWidget->rowHeight(row)/g_dPixelPerCm; @@ -1143,7 +1145,7 @@ void PropertyWidget::initHeadProperty(FormHead *formHead, QTableWidget *tableWid _CreateVariantPropertyItem("文本", "内容", item->text(), QVariant::String); _CreateVariantPropertyItem("文本", "字体", m_item->font(), QVariant::Font); - _CreateEnumPropertyItem("文本", "方向", 0, listDirection); + //_CreateEnumPropertyItem("文本", "方向", 0, listDirection); _CreateVariantPropertyItem("文本", "字体颜色", m_item->foreground().color(), QVariant::Color); _CreateVariantPropertyItem("表格", "行高(cm)", m_rowHeight, QVariant::Double, 0, 100); diff --git a/logPlus/formdraw.cpp b/logPlus/formdraw.cpp index 7062cf6..f55794b 100644 --- a/logPlus/formdraw.cpp +++ b/logPlus/formdraw.cpp @@ -437,41 +437,10 @@ void FormDraw::DisplayLine_One(QJsonObject lineObjInfo) } } // - if (lineObjInfo.contains("newColorRed")) - { - QJsonValue value = lineObjInfo.value("newColorRed"); - if (value.isDouble()) { - newColor.setRed(value.toInt()); - //qDebug() << "newColorRed:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("newColorGreen")) - { - QJsonValue value = lineObjInfo.value("newColorGreen"); - if (value.isDouble()) { - newColor.setGreen(value.toInt()); - //qDebug() << "newColorGreen:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("newColorBlue")) - { - QJsonValue value = lineObjInfo.value("newColorBlue"); - if (value.isDouble()) { - newColor.setBlue(value.toInt()); - //qDebug() << "newColorBlue:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("newColorAlpha")) - { - QJsonValue value = lineObjInfo.value("newColorAlpha"); - if (value.isDouble()) { - newColor.setAlpha(value.toInt()); - //qDebug() << "newColorAlpha:" << QString::number(value.toInt()); - } - } + if (lineObjInfo.contains("newColor")) + { + newColor.setNamedColor(lineObjInfo.value("newColor").toString()); + } if (lineObjInfo.contains("newLithosImage")) { @@ -498,77 +467,16 @@ void FormDraw::DisplayLine_One(QJsonObject lineObjInfo) } } // - if (lineObjInfo.contains("frontColorRed")) - { - QJsonValue value = lineObjInfo.value("frontColorRed"); - if (value.isDouble()) { - frontColor.setRed(value.toInt()); - //qDebug() << "frontColorRed:" << QString::number(value.toInt()); - } - } + if (lineObjInfo.contains("frontColor")) + { + frontColor.setNamedColor(lineObjInfo.value("frontColor").toString()); + } + // - if (lineObjInfo.contains("frontColorGreen")) - { - QJsonValue value = lineObjInfo.value("frontColorGreen"); - if (value.isDouble()) { - frontColor.setGreen(value.toInt()); - //qDebug() << "frontColorGreen:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("frontColorBlue")) - { - QJsonValue value = lineObjInfo.value("frontColorBlue"); - if (value.isDouble()) { - frontColor.setBlue(value.toInt()); - //qDebug() << "frontColorBlue:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("frontColorAlpha")) - { - QJsonValue value = lineObjInfo.value("frontColorAlpha"); - if (value.isDouble()) { - frontColor.setAlpha(value.toInt()); - //qDebug() << "frontColorAlpha:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("backColorRed")) - { - QJsonValue value = lineObjInfo.value("backColorRed"); - if (value.isDouble()) { - backColor.setRed(value.toInt()); - //qDebug() << "backColorRed:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("backColorGreen")) - { - QJsonValue value = lineObjInfo.value("backColorGreen"); - if (value.isDouble()) { - backColor.setGreen(value.toInt()); - //qDebug() << "backColorGreen:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("backColorBlue")) - { - QJsonValue value = lineObjInfo.value("backColorBlue"); - if (value.isDouble()) { - backColor.setBlue(value.toInt()); - //qDebug() << "backColorBlue:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("backColorAlpha")) - { - QJsonValue value = lineObjInfo.value("backColorAlpha"); - if (value.isDouble()) { - backColor.setAlpha(value.toInt()); - //qDebug() << "backColorAlpha:" << QString::number(value.toInt()); - } - } + if (lineObjInfo.contains("backColor")) + { + backColor.setNamedColor(lineObjInfo.value("backColor").toString()); + } // if (newFillMode == "无填充") diff --git a/logPlus/formhead.cpp b/logPlus/formhead.cpp index 0fdd510..0f89fb2 100644 --- a/logPlus/formhead.cpp +++ b/logPlus/formhead.cpp @@ -174,6 +174,7 @@ void FormHead::Init(int iRows, int iCols) // 设置字体颜色 QColor colorTxt(0, 0, 0, 255); item->setForeground(QBrush(colorTxt)); + //item->setData(Qt::UserRole, QVariant("vertical")); // ui->tableWidget->setItem(i, j, item); @@ -226,7 +227,92 @@ void FormHead::Init(int iRows, int iCols) //初始化完成后再连接信号槽,防止数据初始化时激活信号 connect(ui->tableWidget, SIGNAL(itemChanged(QTableWidgetItem*)), this, SLOT(onItemChanged(QTableWidgetItem*))); - connect(ui->tableWidget, SIGNAL(itemSelectionChanged()), this, SLOT(onItemSelectionChanged())); + connect(ui->tableWidget, SIGNAL(itemSelectionChanged()), this, SLOT(onItemSelectionChanged()));//曲线选中,置顶 + connect(CallManage::getInstance(), SIGNAL(sig_UnSelectTableItem(QString)), this, SLOT(s_UnSelectTableItem(QString))); +} + + +QJsonObject FormHead::makeJson() +{ + int columnCount = ui->tableWidget->columnCount();//总列数 + int rowCount = ui->tableWidget->rowCount();//总行数 + + // 创建根对象 + QJsonObject rootObj; + // + rootObj["indexID"] = m_indexID; + rootObj["iRows"] = rowCount; + rootObj["iCols"] = columnCount; + // + QJsonArray subcaseArray; + for(int col=0; coltableWidget->item(col, row); + + QJsonObject formHeadObj; + formHeadObj["col"] = col; + formHeadObj["row"] = row; + if(item) + { + //图例 + QString imagePath = ""; + //图头, 图例宽高 + double m_colWidth_Img = 1; + double m_rowHeight_Img = 1; + //图头, 行高、列宽 + double m_colWidth = 1; + double m_rowHeight = 1; + + QVariant bgData = item->data(Qt::UserRole+1); // 我们约定用这个角色存储图片路径 + if (bgData.isValid()) { + imagePath = bgData.toString(); + } + //图例宽 + QVariant colWidth_Img = item->data(Qt::UserRole+2); + if (colWidth_Img.isValid()) { + m_colWidth_Img = colWidth_Img.toDouble(); + } + //图例高 + QVariant rowHeight_Img = item->data(Qt::UserRole+3); + if (rowHeight_Img.isValid()) { + m_rowHeight_Img = rowHeight_Img.toDouble(); + } + + //行高、列宽 + m_colWidth = ui->tableWidget->columnWidth(col)/g_dPixelPerCm; + m_rowHeight = ui->tableWidget->rowHeight(row)/g_dPixelPerCm; + + //---------------- + formHeadObj["imagePath"] = imagePath; + formHeadObj["colWidth_Img"] = m_colWidth_Img; + formHeadObj["rowHeight_Img"] = m_rowHeight_Img; + formHeadObj["backColor"] = item->background().color().name();//背景颜色 + formHeadObj["text"] = item->text(); + formHeadObj["Font"] = item->font().toString(); + formHeadObj["FontColor"] = item->foreground().color().name(); + formHeadObj["colWidth"] = m_colWidth; + formHeadObj["rowHeight"] = m_rowHeight; + } + subcaseArray.append(formHeadObj); + } + } + rootObj["items"]=subcaseArray; + + return rootObj; +} + +//图头、成果表 +//取消其他表格的选中状态 +void FormHead::s_UnSelectTableItem(QString strUuid) +{ + if(strUuid==m_indexID) + { + return; + } + //取消表格的选中状态 + ui->tableWidget->clearSelection(); } void FormHead::slotItemClicked(QTableWidgetItem* item) @@ -238,6 +324,8 @@ void FormHead::slotItemClicked(QTableWidgetItem* item) if(row>=0 && column>=0) { PropertyService()->initHeadProperty(this, ui->tableWidget, item, row, column); + //取消其他表格的选中状态 + emit CallManage::getInstance()->sig_UnSelectTableItem(m_indexID); } } } @@ -252,6 +340,8 @@ void FormHead::onItemSelectionChanged() if(row>=0 && column>=0) { PropertyService()->initHeadProperty(this, ui->tableWidget, item, row, column); + //取消其他表格的选中状态 + emit CallManage::getInstance()->sig_UnSelectTableItem(m_indexID); } } } @@ -272,6 +362,8 @@ void FormHead::onItemChanged(QTableWidgetItem* item) if(row>=0 && column>=0) { PropertyService()->initHeadProperty(this, ui->tableWidget, item, row, column); + //取消其他表格的选中状态 + emit CallManage::getInstance()->sig_UnSelectTableItem(m_indexID); } } } @@ -488,6 +580,8 @@ void FormHead::Paste() item->setData(Qt::UserRole+2, pixmap.width()/g_dPixelPerCm); //图例宽 item->setData(Qt::UserRole+3, pixmap.height()/g_dPixelPerCm); //图例高 PropertyService()->initHeadProperty(this, ui->tableWidget, item, rowN, colN); + //取消其他表格的选中状态 + emit CallManage::getInstance()->sig_UnSelectTableItem(m_indexID); return; } diff --git a/logPlus/formhead.h b/logPlus/formhead.h index 2b69844..82f52d4 100644 --- a/logPlus/formhead.h +++ b/logPlus/formhead.h @@ -42,6 +42,7 @@ public: public: void Init(int iRows, int iCols); void resizeEvent(QResizeEvent *event); + QJsonObject makeJson(); public slots: void resizeWindow(); @@ -49,6 +50,9 @@ public slots: void slotItemClicked(QTableWidgetItem* item); void onItemChanged(QTableWidgetItem* item); void onItemSelectionChanged(); + //图头、成果表 + //取消其他表格的选中状态 + void s_UnSelectTableItem(QString strUuid); //图头右键菜单响应函数 void slotContextMenu(QPoint pos); diff --git a/logPlus/forminfo.cpp b/logPlus/forminfo.cpp index 0032b4d..a5d8596 100644 --- a/logPlus/forminfo.cpp +++ b/logPlus/forminfo.cpp @@ -125,24 +125,15 @@ QJsonObject FormInfo::makeJson() rootObj["newHeadFill"] = m_newHeadFill; rootObj["newTargetLine"] = m_newTargetLine; rootObj["newFillType"] = m_newFillType; - //填充颜色 - rootObj["newColorRed"] = m_newColor.red(); - rootObj["newColorGreen"] = m_newColor.green(); - rootObj["newColorBlue"] = m_newColor.blue(); - rootObj["newColorAlpha"] = m_newColor.alpha(); + //填充颜色 + rootObj["newColor"] = m_newColor.name(); rootObj["newLithosImage"] = m_newLithosImage; rootObj["new_vMax"] = m_new_vMax; rootObj["new_vMin"] = m_new_vMin; //岩性前景色 - rootObj["frontColorRed"] = m_frontColor.red(); - rootObj["frontColorGreen"] = m_frontColor.green(); - rootObj["frontColorBlue"] = m_frontColor.blue(); - rootObj["frontColorAlpha"] = m_frontColor.alpha(); + rootObj["frontColor"] = m_frontColor.name(); //岩性背景色 - rootObj["backColorRed"] = m_backColor.red(); - rootObj["backColorGreen"] = m_backColor.green(); - rootObj["backColorBlue"] = m_backColor.blue(); - rootObj["backColorAlpha"] = m_backColor.alpha(); + rootObj["backColor"] = m_backColor.name(); } else if (m_strType == "waveObject") { diff --git a/logPlus/formmultiheads.cpp b/logPlus/formmultiheads.cpp index 0011486..b6bb102 100644 --- a/logPlus/formmultiheads.cpp +++ b/logPlus/formmultiheads.cpp @@ -64,8 +64,16 @@ void FormMultiHeads::slotContextMenu(QPoint pos) { QtCommonClass *qtCommon = new QtCommonClass(this); // + QString strMenu= ""; + if(m_strHeadOrTail == "Head") + { + strMenu= "新建图头"; + } + else { + strMenu= "新建成果表"; + } QMenu menu(ui->tableWidget); - QAction *newAction = menu.addAction("新建图头"); + QAction *newAction = menu.addAction(strMenu); // 弹出菜单 QAction *selectedAction = menu.exec(ui->tableWidget->mapToGlobal(pos)); if (selectedAction == newAction) { @@ -151,3 +159,33 @@ void FormMultiHeads::resizeItem(QString indexID, double tempWidth, double tempHi } } } + +QJsonObject FormMultiHeads::makeJson() +{ + // 创建根对象 + QJsonObject rootObj; + + // 创建JSON数组并填充数据 + QJsonArray subcaseArray; + // + int columnCount = ui->tableWidget->columnCount();//总列数 + for(int i=0; itableWidget->cellWidget(i, 0) != nullptr ) + { + auto myWidget = ui->tableWidget->cellWidget(i, 0); + FormHead *widgetHead = qobject_cast(myWidget); + if(widgetHead) + { + QJsonObject jobj = widgetHead->makeJson(); + formHeadObj["headinfo"] = jobj; + } + } + subcaseArray.append(formHeadObj); + } + rootObj["formMultiHeads"]=subcaseArray; + + return rootObj; +} diff --git a/logPlus/formmultiheads.h b/logPlus/formmultiheads.h index 8a75374..452acc3 100644 --- a/logPlus/formmultiheads.h +++ b/logPlus/formmultiheads.h @@ -3,6 +3,11 @@ #include +// +#include +#include +#include + namespace Ui { class FormMultiHeads; } @@ -26,7 +31,10 @@ public slots: public: void resizeItem(QString indexID, double tempWidth, double tempHight); + QJsonObject makeJson(); +public: + QString m_strHeadOrTail = ""; //Head代表图头, Tail代表成果表 }; #endif // FORMMULTIHEADS_H diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index 0af0ccd..299c801 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -141,12 +141,13 @@ MainWindowCurve::MainWindowCurve(QWidget *parent) : //执行压缩/拉伸 connect(CallManage::getInstance(), SIGNAL(sig_EShiftDepth(QString, QString, int, QList, QList)), this, SLOT(s_EShiftDepth(QString, QString, int, QList, QList))); - //图头 + //图头---------- m_dock1=new QDockWidget(tr(""),this); m_dock1->setFeatures(QDockWidget::NoDockWidgetFeatures);//QDockWidget::DockWidgetMovable //dock1->setAllowedAreas(Qt::TopDockWidgetArea); // m_formMultiHeads = new FormMultiHeads(this); + m_formMultiHeads->m_strHeadOrTail = "Head"; m_dock1->setWidget(m_formMultiHeads); addDockWidget(Qt::TopDockWidgetArea,m_dock1); //移除标题栏 @@ -157,6 +158,23 @@ MainWindowCurve::MainWindowCurve(QWidget *parent) : //隐藏 m_dock1->hide(); + //成果表---------- + m_dock2=new QDockWidget(tr(""),this); + m_dock2->setFeatures(QDockWidget::NoDockWidgetFeatures);//QDockWidget::DockWidgetMovable + //dock1->setAllowedAreas(Qt::TopDockWidgetArea); + // + m_formMultiTails = new FormMultiHeads(this); + m_formMultiTails->m_strHeadOrTail = "Tail"; + m_dock2->setWidget(m_formMultiTails); + addDockWidget(Qt::BottomDockWidgetArea,m_dock2); + //移除标题栏 + QWidget* lTitleBar_Tails = m_dock2->titleBarWidget(); + QWidget* lEmptyWidget_Tails = new QWidget(); + m_dock2->setTitleBarWidget(lEmptyWidget_Tails); + delete lTitleBar_Tails; + //隐藏 + m_dock2->hide(); + //属性编辑器 // m_propertyWidget = PropertyService(); // m_propertyWidget->setWindowTitle("属性编辑器"); @@ -2290,9 +2308,11 @@ void MainWindowCurve::s_showHeadTable() if(m_dock1->isVisible()) { m_dock1->hide(); + m_dock2->hide(); } else { m_dock1->show(); + m_dock2->show(); } // if(ui->tableWidget->isVisible()) @@ -2370,6 +2390,12 @@ QJsonObject MainWindowCurve::makeJson() } rootObj["wells"]=subcaseArray; + //图头 + rootObj["heads"]=m_formMultiHeads->makeJson(); + //成果表 + rootObj["tails"]=m_formMultiTails->makeJson(); + + return rootObj; } @@ -4057,41 +4083,11 @@ void MainWindowCurve::DisplayLine_One(QJsonObject lineObjInfo, QString strTrackN //qDebug() << "newFillMode:" << newFillMode; } } + // - if (lineObjInfo.contains("newColorRed")) + if (lineObjInfo.contains("newColor")) { - QJsonValue value = lineObjInfo.value("newColorRed"); - if (value.isDouble()) { - newColor.setRed(value.toInt()); - //qDebug() << "newColorRed:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("newColorGreen")) - { - QJsonValue value = lineObjInfo.value("newColorGreen"); - if (value.isDouble()) { - newColor.setGreen(value.toInt()); - //qDebug() << "newColorGreen:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("newColorBlue")) - { - QJsonValue value = lineObjInfo.value("newColorBlue"); - if (value.isDouble()) { - newColor.setBlue(value.toInt()); - //qDebug() << "newColorBlue:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("newColorAlpha")) - { - QJsonValue value = lineObjInfo.value("newColorAlpha"); - if (value.isDouble()) { - newColor.setAlpha(value.toInt()); - //qDebug() << "newColorAlpha:" << QString::number(value.toInt()); - } + newColor.setNamedColor(lineObjInfo.value("newColor").toString()); } if (lineObjInfo.contains("newLithosImage")) @@ -4119,76 +4115,15 @@ void MainWindowCurve::DisplayLine_One(QJsonObject lineObjInfo, QString strTrackN } } // - if (lineObjInfo.contains("frontColorRed")) + if (lineObjInfo.contains("frontColor")) { - QJsonValue value = lineObjInfo.value("frontColorRed"); - if (value.isDouble()) { - frontColor.setRed(value.toInt()); - //qDebug() << "frontColorRed:" << QString::number(value.toInt()); - } + frontColor.setNamedColor(lineObjInfo.value("frontColor").toString()); } + // - if (lineObjInfo.contains("frontColorGreen")) + if (lineObjInfo.contains("backColor")) { - QJsonValue value = lineObjInfo.value("frontColorGreen"); - if (value.isDouble()) { - frontColor.setGreen(value.toInt()); - //qDebug() << "frontColorGreen:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("frontColorBlue")) - { - QJsonValue value = lineObjInfo.value("frontColorBlue"); - if (value.isDouble()) { - frontColor.setBlue(value.toInt()); - //qDebug() << "frontColorBlue:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("frontColorAlpha")) - { - QJsonValue value = lineObjInfo.value("frontColorAlpha"); - if (value.isDouble()) { - frontColor.setAlpha(value.toInt()); - //qDebug() << "frontColorAlpha:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("backColorRed")) - { - QJsonValue value = lineObjInfo.value("backColorRed"); - if (value.isDouble()) { - backColor.setRed(value.toInt()); - //qDebug() << "backColorRed:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("backColorGreen")) - { - QJsonValue value = lineObjInfo.value("backColorGreen"); - if (value.isDouble()) { - backColor.setGreen(value.toInt()); - //qDebug() << "backColorGreen:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("backColorBlue")) - { - QJsonValue value = lineObjInfo.value("backColorBlue"); - if (value.isDouble()) { - backColor.setBlue(value.toInt()); - //qDebug() << "backColorBlue:" << QString::number(value.toInt()); - } - } - // - if (lineObjInfo.contains("backColorAlpha")) - { - QJsonValue value = lineObjInfo.value("backColorAlpha"); - if (value.isDouble()) { - backColor.setAlpha(value.toInt()); - //qDebug() << "backColorAlpha:" << QString::number(value.toInt()); - } + backColor.setNamedColor(lineObjInfo.value("backColor").toString()); } // diff --git a/logPlus/mainwindowcurve.h b/logPlus/mainwindowcurve.h index 6b3e654..8012588 100644 --- a/logPlus/mainwindowcurve.h +++ b/logPlus/mainwindowcurve.h @@ -67,7 +67,9 @@ public: QVector m_mergeLineList; FormMultiHeads *m_formMultiHeads; + FormMultiHeads *m_formMultiTails; QDockWidget *m_dock1; + QDockWidget *m_dock2; QtProjectWidgets *m_leftWidgets = NULL; //左侧工程区 QLineEdit *spinbox1; diff --git a/logPlus/qrc/qss/flatgray.css b/logPlus/qrc/qss/flatgray.css index 1ff72d6..8224a2e 100644 --- a/logPlus/qrc/qss/flatgray.css +++ b/logPlus/qrc/qss/flatgray.css @@ -454,7 +454,15 @@ QScrollArea{ border:0px; } -QTreeView,QListView,QTableView,QTabWidget::pane{ +QTableView{ +border:1px solid #B6B6B6; +selection-background-color:#F6F6F6; +selection-color:#57595B; +alternate-background-color:#F6F6F6; +gridline-color:#B6B6B6; +} + +QTreeView,QListView,QTabWidget::pane{ border:1px solid #B6B6B6; selection-background-color:#F6F6F6; selection-color:#57595B;