Changeset 411 in PSPA


Ignore:
Timestamp:
Mar 29, 2013, 5:20:18 PM (11 years ago)
Author:
garnier
Message:

ameliorations graphiques et ajout d'une fonction search dans l'output

Location:
Interface_Web/trunk/pspaWT
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • Interface_Web/trunk/pspaWT/History

    r410 r411  
    55     PSPA - Plateforme de simulation en physique des accélérateurs
    66     =========================================================
     7
     829 Mars : Laurent Garnier
     9- Alignement au milieu de la ligne entre les elements
     10- Ajout d'une marge autour des elements de la beamLine
     11- Ajout d'une bordure autour des icones de gauche
     12- GWt_console : Ajout d'une fonction de recherche
    713
    81428 Mars : Laurent Garnier
  • Interface_Web/trunk/pspaWT/htdocs/pspa.css

    r404 r411  
    1717  background-image : url("line.gif");
    1818  background-repeat : repeat-x;
     19  background-size : 100% 100%;
    1920}
    2021
     
    6465  box-shadow: 0 1px 3px rgba(34, 25, 25, 0.4);
    6566  padding: 8px 8px;
     67  margin:4px 0px;
    6668  position: absolute;
    6769  border-radius: 5px;
     70  text-align: center;
    6871}
    6972
     
    199202}
    200203
    201 .console {
     204.scrollConsole {
    202205    background-color: #EEEEEE;
    203 }
    204 
     206    padding: 4px;
     207}
     208
     209.draggableIcon {
     210    border: 1px solid ;
     211    border-radius: 0.3em 0.3em 0.3em 0.3em;
     212    box-shadow: 0 1px rgba(255, 255, 255, 0.8), 0 1px rgba(255, 255, 255, 0.35) inset;
     213    padding: 2px;
     214}
    205215
    206216*|*:-moz-any-link:not(svg|a) {
  • Interface_Web/trunk/pspaWT/sources/userInterface/include/GWt_console.h

    r401 r411  
    1919  void addConsoleMessage(WString msg);
    2020private:
    21   WText* output_;
     21  WText* outputCurrent_;
     22  WString outputOriginal_;
     23  void searchFilter();
     24  WLineEdit* searchLineEdit_;
    2225};
    2326
  • Interface_Web/trunk/pspaWT/sources/userInterface/src/GWt_console.cc

    r409 r411  
    55#include <Wt/WBorder>
    66#include <Wt/WLayout>
     7#include <Wt/WVBoxLayout>
    78#include <Wt/WPanel>
     9#include <Wt/WLabel>
     10#include <Wt/WLineEdit>
    811#include <Wt/WScrollArea>
     12#include <Wt/Utils>
     13
    914
    1015GWt_console::GWt_console()
     
    1318    setObjectName("console");
    1419
     20
     21    // la ligne de search
     22    Wt::WContainerWidget *searchContainer = new Wt::WContainerWidget();
     23   
     24    Wt::WLabel *label = new Wt::WLabel("Search ", searchContainer);
     25    searchLineEdit_ = new Wt::WLineEdit("", searchContainer);
     26    searchLineEdit_->setToolTip("clic here to search a string into the output");
     27   
    1528    // le panel
    1629    WPanel *panelConsole = new WPanel(this);
    17     WScrollArea* container = new  WScrollArea();
     30    panelConsole->setTitle(" output");
     31
     32    WScrollArea* scrollContainer = new  WScrollArea();
    1833   
    19     panelConsole->setTitle(" output");
    20     output_ = new WText(this);
    21     output_->setTextFormat(PlainText);
    22     output_->setInline(false);
    2334
    24     container->setWidget(output_);
     35    outputCurrent_ = new WText(this);
     36    outputCurrent_->setTextFormat(Wt::XHTMLText);
     37    outputCurrent_->setInline(false);
     38    outputCurrent_->setMaximumSize(750,400);
    2539
    26     panelConsole->setCentralWidget(container);
    27     output_->setMinimumSize(300,100);
    28     output_->setMaximumSize(400,400);
     40    scrollContainer->setWidget(outputCurrent_);
     41    scrollContainer->setStyleClass("scrollConsole");
    2942
    30     container->setStyleClass("console");
     43    Wt::WContainerWidget *panelContainer = new Wt::WContainerWidget();
     44    Wt::WVBoxLayout* vContainerLayout = new Wt::WVBoxLayout();
     45
     46    vContainerLayout->addWidget(searchContainer);
     47    vContainerLayout->addWidget(scrollContainer);
     48
     49
     50    panelContainer->setLayout(vContainerLayout);
     51    panelConsole->setCentralWidget(panelContainer);
     52
     53    // signals
     54    searchLineEdit_->keyWentUp ().connect(this, &GWt_console::searchFilter);
    3155}
    3256
     
    3761
    3862
     63void GWt_console::searchFilter() {
     64
     65    std::string br = "<br />";
     66   
     67    std::string txt = searchLineEdit_->text().toUTF8 ();
     68    if (searchLineEdit_->text() == "") {
     69        outputCurrent_->setText(outputOriginal_);
     70        outputCurrent_->setTextFormat(Wt::XHTMLText);
     71        return;
     72    }
     73   
     74    std::string outputStr = outputOriginal_.toUTF8();
     75    std::string outputFinal = "";
     76   
     77    // look for lines that contains the seacrh string
     78    bool end = false;
     79    int nextPos = 0;
     80    int nextPosTxt = 0;
     81    int lineNumber = 0;
     82    std::string beginStr;
     83    std::string endStr;
     84   
     85    // loop on all lines
     86    while (end == false) {
     87        lineNumber++;
     88       
     89        nextPos = outputStr.find(br);
     90       
     91        // if this line contains the token
     92        if (nextPos != std::string::npos) {
     93            beginStr = outputStr.substr(0,nextPos);
     94            endStr = outputStr.substr(nextPos+br.size());
     95            outputStr = endStr;
     96
     97
     98            // colorize for all token
     99            bool lineEnd = false;
     100            std::string colorizeTxt = "";
     101            while (lineEnd == false) {
     102                nextPosTxt = beginStr.find(txt);
     103               
     104                if (nextPosTxt != std::string::npos) {
     105                    colorizeTxt += beginStr.substr(0,nextPosTxt)+
     106                    std::string("<b><font style='background-color:yellow;'>")+
     107                    txt+
     108                    std::string("</font></b>");
     109                    beginStr = beginStr.substr(nextPosTxt+txt.size());
     110                   
     111                } else if (colorizeTxt != "") {
     112                    colorizeTxt += beginStr;
     113                    lineEnd = true;
     114                } else {
     115                    lineEnd = true;
     116                }
     117            }
     118            if (colorizeTxt != "") {
     119                std::stringstream ss;
     120                ss << lineNumber;
     121                outputFinal += std::string("<font color='gray'>line ")+ss.str()+" : </font>"+colorizeTxt+br;
     122            }
     123        } else {
     124            end = true;
     125        }
     126    }
     127   
     128    outputCurrent_->setText(outputFinal);
     129    outputCurrent_->setTextFormat(Wt::XHTMLText);
     130
     131}
     132
     133
    39134void GWt_console::addConsoleMessage(WString msg) {
    40135   
    41     output_->setText(output_->text()+msg);
    42    
     136    // changes specials caracters
     137    outputOriginal_ += Wt::Utils::htmlEncode (msg.toUTF8(),  Wt::Utils::EncodeNewLines);
     138
     139    // apply filter, will modify outputCurrent
     140    searchFilter();
    43141    /*
    44142     * Little javascript trick to make sure we scroll along with new content
    45143     */
    46     wApp->doJavaScript(output_->jsRef() + ".scrollTop += "
    47                        + output_->jsRef() + ".scrollHeight;");
     144    wApp->doJavaScript(outputCurrent_->jsRef() + ".scrollTop += "
     145                       + outputCurrent_->jsRef() + ".scrollHeight;");
    48146   
    49147}
  • Interface_Web/trunk/pspaWT/sources/userInterface/src/GWt_draggableImage.cc

    r272 r411  
    3737    mouseWentOut().connect(this, &GWt_draggableImage::mouseOut);
    3838    mouseDragged().connect(this, &GWt_draggableImage::mouseIsDragged);
     39    setStyleClass("draggableIcon");
     40
    3941}
    4042
  • Interface_Web/trunk/pspaWT/sources/userInterface/src/GWt_softwarePanel.cc

    r407 r411  
    140140  sections_.push_back(newSection);
    141141
    142 /*  Wt::WContainerWidget* container = new Wt::WContainerWidget();
    143   Wt::WGridLayout* containerLayout = new Wt::WGridLayout();
    144   containerLayout->setContentsMargins(0,0,0,0);
    145 
    146   // push back on User interface
    147   containerLayout->addWidget(newSection,0,0);
    148  
    149   // add buttons
    150   containerLayout->addWidget(createAddDeletePushButtons(sections_.size()-1),0,1);
    151 
    152   container->setLayout(containerLayout);
    153 */
    154  
    155   // add to sections
    156 //  contenuSections_->addWidget(container);
    157142  contenuSections_->addWidget(newSection);
     143 
     144  updateSections();
    158145}
    159146
Note: See TracChangeset for help on using the changeset viewer.