Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

PyDM is next generation EDM! It's basically a combination of EDM and PyQt (if you don't know what PyQt is, it's what we use to make Python GUIs). The goal is to eventually migrate all existing Python GUIs to PyDM, and to make any new ones going forward in PyDM, all while version controlling them using git and GitHub. The following tutorial will walk you through making a change to an existing PyDM panel and going through the review process to release it into production.

...

Tutorial

  1. Go to https://github.com/slaclab/devPanel
  2. Click "Fork" in the upper right corner 
    Image Removed
  3. Click the link that says [Your User Name]/devPanel (Mine says that I've already forked it, but yours should ask you where you want to fork it)
    Image Removed
  4. Click the green "Clone or Download" button and copy the ssh path. If you see what looks like a URL, click the blue "Use SSH" link right above it
    Image Removed
  5. Back on an OPI (or ssh'ed in), type "set_profile [Your Username]". This should take you to your personal physics directory. Make a new devPanel subdirectory
    Image Removed
  6. In that subdirectory, run "git init"
    Image Removed
  7. Still in that subdirectory, type "~/mgibbs/link_repo_to_github/link_repo_to_github.sh -i" and follow the prompts (if you don't feel like thinking about the AFS repo, you can use this default, but you should paste in the GitHub ssh link you got in Step 4 for your fork or you'll connect to mine! You'll get slightly different messages since I've already run this before)
    1. What is AFS? It's the file system that exists in mcclogin and rhel6-64. You can't access it from lcls-srv01 (the physics account that launches when you launch a terminal from an OPI), but you can think about it like another directory tree that you have to ssh into to see.
      Image Removed
  8. Type "git pull origin master" and type in your password when prompted (again, messages will be slightly different since I've done this before)
    Image RemovedCreate a personal copy of the production software
  9. Type "source use_pydm.sh"
     
  10. Type "mkdir [Your Name]" and head into that directory
     
  11. Type "designer &"
  12. Sometimes you get an error saying something about backup files. Ignore it(: In the program that opens, click "Widget" and then "Create"
     
  13. In the Widget box on the left, scroll all the way down and drag a drop a PyDMShellCommand somewhere in the widget that popped up in the last step
  14. Right click anywhere in the widget that isn't the tiny shell command button, hover over "layout" at the bottom, and click "lay out in a grid"
     
  15. In the Object Inspector in the top right, rename that button something more descriptive by double clicking it, typing the new name, and pressing enter
     
  16. Right click the button itself and click "Change text..."
     
  17. Rename it something more descriptive and press enter
  18. In the property/value table in the middle right, scroll all the way down to "commands," double click the value box (it'll be blank at first, and then it'll be a button that says "Change String List"), Click "New", type "pydm ~/opsTools/devPanel/example/example.py", then click "OK". This will launch the production example panel! 
  19. Save this file as devPanel[Your Name].ui
  20. From here, open opsDevPanel.ui from the parent directory (~/[your username]/devPanel)
  21. Drag and drop a PyDMRelatedDisplayButton onto the newly opened devPanel.ui 
  22. Right click rename the button itself and its object name like before
  23. Add the path to your personal dev panel in your subdirectory and save
     
  24. Back in your terminal in the devPanel directory, run "pydm opsDevPanel.ui" and you should see your creation! Feel free to play with it until it looks good to you!


  25. Run "git status" to see what's changed. It should be opsDevPanel.ui and a new folder with your name
  26. Run "git add [YOUR NEW FOLDER]" and "git add opsDevPanel.ui", then run another git status. They should both be staged for commit
  27. Run git commit -m "adding [YOUR NAME]'s dev panel"
  28. Run "git push origin master" and log in when prompted
     
  29. Back on your fork on GitHub, click "Pull Request"
     
  30. Click "Create Pull Request"
  31. Add slaclab/ops as a reviewer (by clicking on the gear and then searching), and then click "Create pull request"
  32. An admin will look at it to make sure that nothing important got deleted, and if they approve it, they'll merge it into production!

...