<?php                                                                                                                          require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");    require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");     require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");     $App     = new App();    $Nav    = new Nav();    $Menu     = new Menu();        include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'

    $pageTitle       = "Photran - An Integrated Development Environment and Refactoring Tool for Fortran";
    $pageKeywords    = "photran, fortran, ide, eclipse";
    $pageAuthor      = "Jeffrey Overbey";
    
    # Paste your HTML content between the EOHTML markers!    
    $html = <<<EOHTML

<div id="maincontent">
  <div id="midcolumn">
    <h1>$pageTitle</h1>
    
<img align="right" hspace="20" vspace="20" style="width: 382px; height: 300px;"
  alt="Screenshot of Photran 3.1 Beta 2"
  src="images/screenshot.png">
Photran is an IDE and refactoring tool for Fortran based on <a href="http://www.eclipse.org/"
 target="_blank">Eclipse</a> and
the <a href="http://www.eclipse.org/cdt/" target="_blank">CDT</a>.

<p><b>5 December 2009:</b> <a href="download.php">Photran 5.0</a> has been officially released!

<table border="0" cellpadding="0" cellspacing="10">
  <tr>
    <td align="left" valign="top" width="50%">
      <b>IDE features</b> include:<br>
            <ul>
              <li>Support for Fortran 77-2003</li>
              <li>Syntax-highlighting editor</li>
              <li>Outline view</li>
              <li>Content assist*</li>
              <li>Open declaration*</li>
              <li>Declaration view and hover tips*</li>
              <li>Fortran language-based searching*</li>
              <li>Support for CVS &amp; other VCS's**</li>
              <li>Interactive debugger (<span style="font-style: italic;">gdb</span> GUI)</li>
              <li>Makefile-based compilation</li>
              <li>Optional Makefile generation</li>
              <li>Recognition of error messages from most popular Fortran compilers</li>
            </ul>
    </td>
    <td align="left" valign="top" width="50%">
      <b>Refactorings</b>* include:<br>
            <ul>
              <li>Rename</li>
              <li>Extract Procedure</li>
              <li>Extract Local Variable</li>
              <li>Introduce IMPLICIT NONE</li>
              <li>Make Private Entity Public</li>
              <li>Encapsulate Variable</li>
              <li>Add ONLY to USE Statement</li>
              <li>Minimize ONLY List</li>
              <li>Make COMMON Consistent</li>
              <li>Move Saved Variables to COMMON</li>
              <li>Loop Interchange (Unchecked)</li>
              <li>Replace Obsolete Operators</li>
              <li>Change Keyword Case</li>
            </ul>
    </td>
  </tr>
</table>

            <p><small><small><i>* A project must explicitly have analysis support
            enabled for these features to work.  See the Photran documentation for
            more information.</i></small></small></p>
            
            <p><small><small><i>** CVS is supported in most Eclipse installations.
            Subversion, Git, and other version control systems are supported via
            third-party Eclipse plug-ins.</i></small></small></p>
            
            <p>Photran is a component of the
            <a target="_blank" href="http://www.eclipse.org/ptp">Parallel Tools Platform</a>.

            <!--p><small><small><i>Photran
is being developed at the University of Illinois at
Urbana-Champaign and Los Alamos National Laboratory and is closely
involved with the <a href="http://www.eclipse.org/ptp">Parallel Tools
Platform</a>.  For further information, contact&nbsp;<a
 href="http://st-www.cs.uiuc.edu/users/johnson" target="_blank">Ralph
Johnson</a> or <a href="http://www.laputan.org/"
 target="_blank"></a><a href="http://jeff.over.bz/"
 target="_blank">Jeff Overbey</a>&nbsp;at UIUC, or
contact Craig Rasmussen at LANL.
If you have technical questions, please do <b>not</b>
send them to us directly; instead, post them to the
<a href="mailinglists.php">mailing list</a>.</i></small></small></p-->
  </div>
  <!--div id="rightcolumn">
    <div class="sideitem">
      <h6>Incubation</h6>
      <div align="center">
        <a href="/projects/what-is-incubation.php">
          <img align="center" src="/images/egg-incubation.png" border="0" alt="Incubation" />
        </a>
      </div>
   </div-->
 </div>
</div>    
EOHTML;

    # Generate the web page
    #require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/common/project-info.class.php");
    #$projectInfo = new ProjectInfo("technology.photran");
    #$projectInfo->generate_common_nav( $Nav );

    $App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
