|  |  |  |  | 
      A transaction will have different status values as it it queued, prepared
      and executed.
      The ::StatusChanged signal from PkClient allow you
      to design user interfaces that tell the user what is happening with the
      transaction.
    
A typical transaction will have the following states:
          Queued in the active queue (PK_STATUS_ENUM_WAIT)
        
          Transaction started, and is being prepared (PK_STATUS_ENUM_SETUP)
        
          The transaction is running (PK_STATUS_ENUM_RUNNING)
        
          (optional) Data is downloading (PK_STATUS_ENUM_DOWNLOADING)
        
          (optional) Data is installing (PK_STATUS_ENUM_INSTALLING)
        
          The transaction is finished (PK_STATUS_ENUM_FINISHED)
        
      If the transaction is waiting for other jobs to finish (in the active queue)
      then the status will be stuck at PK_STATUS_ENUM_WAIT
      and the UI should show a message to this effect.
    
      If the transaction is waiting for a package lock (when a legacy tool like
      pirut is loaded and has the hif lock)
      then the transaction will be stuck at PK_STATUS_ENUM_WAITING_FOR_LOCK.
    
      As a backend writer, you do not have to set PK_STATUS_ENUM_RUNNING
      manually, as this will be set for you if you set any other value such as
      PK_STATUS_ENUM_DOWNLOADING or PK_STATUS_ENUM_INFO.
      However, you will need to avoid setting any status values until a package
      lock is available and the transaction has started.