Ignore:
Timestamp:
Jun 27, 2014, 9:32:03 PM (11 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
0b6b77
Parents:
26b4eb4
git-author:
Frederik Heber <heber@…> (06/19/14 11:02:54)
git-committer:
Frederik Heber <heber@…> (06/27/14 21:32:03)
Message:

Updated all UI's StatusIndicator classes to use ActionStatusList.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/TextUI/TextStatusIndicator.cpp

    r26b4eb4 r378f2d5  
    3434
    3535#include "CodePatterns/MemDebug.hpp"
     36#include "CodePatterns/Observer/Notification.hpp"
    3637
    3738#include "TextUI/TextStatusIndicator.hpp"
     
    3940#include <iostream>
    4041
     42#include "Actions/ActionQueue.hpp"
     43#include "Actions/ActionStatusList.hpp"
    4144#include "Actions/Process.hpp"
    4245
     
    4447
    4548TextStatusIndicator::TextStatusIndicator() :
    46   Observer("TextStatusIndicator")
     49  Observer("TextStatusIndicator"),
     50  StatusList(ActionQueue::getInstance().getStatusList()),
     51  StatusList_signedOn(false)
    4752{
    4853  Process::AddObserver(this);
     54
     55  StatusList.signOn(this, ActionStatusList::StatusAdded);
     56  StatusList_signedOn = true;
    4957}
    5058
     
    5260{
    5361  Process::RemoveObserver(this);
     62
     63  if (StatusList_signedOn)
     64    StatusList.signOff(this, ActionStatusList::StatusAdded);
    5465}
    5566
    5667void TextStatusIndicator::update(Observable *subject){
    57   Process *proc;
    58   // we are only observing Processes
    59   if((proc=dynamic_cast<Process*>(subject))){
    60     // see what kind of progress we have to display
    61     if(proc->getMaxSteps()>0){
    62       if(!proc->doesStop()){
    63         std::cout << "Busy (" << proc->getName() << ") ";
    64         // we can show a percentage done
    65         std::cout << (int)proc->getDoneRatio() << "% done" << std::endl;
     68  if (subject == &StatusList) {
     69    // we do not react to general updates from StatusList
     70  } else {
     71    Process *proc;
     72    // we are otherwise only observing Processes
     73    if((proc=dynamic_cast<Process*>(subject))){
     74      // see what kind of progress we have to display
     75      if(proc->getMaxSteps()>0){
     76        if(!proc->doesStop()){
     77          std::cout << "Busy (" << proc->getName() << ") ";
     78          // we can show a percentage done
     79          std::cout << (int)proc->getDoneRatio() << "% done" << std::endl;
     80        }
    6681      }
    67     }
    68     else{
    69       // we only show some kind of busy animation
    70       if(proc->doesStart()){
    71         std::cout << "Busy (" << proc->getName() << ")";
    72       }
    73       if(!proc->doesStop()){
    74         std::cout << ".";
    75       }
    76       else {
    77         std::cout << std::endl;
     82      else{
     83        // we only show some kind of busy animation
     84        if(proc->doesStart()){
     85          std::cout << "Busy (" << proc->getName() << ")";
     86        }
     87        if(!proc->doesStop()){
     88          std::cout << ".";
     89        }
     90        else {
     91          std::cout << std::endl;
     92        }
    7893      }
    7994    }
     
    8196}
    8297
    83 void TextStatusIndicator::subjectKilled(Observable *subject){
    84 
     98void TextStatusIndicator::subjectKilled(Observable *subject)
     99{
     100  if (subject == &StatusList) {
     101    // print all remaining messages
     102    while (StatusList.size() != 0)
     103      displayStatusMessage();
     104    // don't need to sign off, just note down that we are
     105    StatusList_signedOn = false;
     106  }
    85107}
    86108
     109void TextStatusIndicator::displayStatusMessage() const
     110{
     111  const std::string message = StatusList.popFirstMessage();
     112  std::cout << message << std::endl;
     113}
     114
     115void TextStatusIndicator::recieveNotification(Observable *_publisher, Notification *_notification)
     116{
     117  if (_publisher == &StatusList) {
     118    switch(_notification->getChannelNo()) {
     119      case MoleCuilder::ActionStatusList::StatusAdded:
     120        // if timer is not already running
     121        displayStatusMessage();
     122        break;
     123    }
     124  }
     125}
Note: See TracChangeset for help on using the changeset viewer.