<p dir="auto">(This is an attempt to address various comments from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1063003478" data-permission-text="Title is private" data-url="https://github.com/geany/geany/issues/3018" data-hovercard-type="pull_request" data-hovercard-url="/geany/geany/pull/3018/hovercard" href="https://github.com/geany/geany/pull/3018">#3018</a> - check this pull request for more details.)</p>
<p dir="auto">Improve user experience when creating new projects<br>
At the moment, when creating a project, the user is greeted with the<br>
dialog containing:</p>
<ol dir="auto">
<li>Name</li>
<li>Filename</li>
<li>Base path</li>
</ol>
<p dir="auto">The user is expected to type the name of the project into (1), and then,<br>
Geany tries to guess the base path and file name. The guess simply takes<br>
the project directory specified in settings and appends the name. When the<br>
project is located anywhere else than in the projects directory,<br>
the guessed values are wrong and have to be entered manually which is<br>
quite annoying. In addition, the dialog doesn't make it clear that the<br>
user should start with (1), when he starts with (2) or (3), he has to<br>
fill in all 3 values manually.</p>
<p dir="auto">This patch adds another method of project creation which is more<br>
suitable for creating projects from existing directory with source<br>
files. There's a new "Project->New from Folder..." option that in<br>
the first step asks user to provide the base path and based on this<br>
path fills in the entries in the New Project dialog.</p>
<p dir="auto">With this approach, Project->New from Folder...:<br>
a. First pops up a open directory dialog to specify base path<br>
b. After that, opens the (currently used) New Project dialog which<br>
is pre-filled in the following way:</p>
<ol dir="auto">
<li>Name: The last directory in base_path</li>
<li>Filename: depending on "store project file inside the project base<br>
directory" settings either in base_path/(1).geany or projects_dir/(1).geany</li>
<li>Base path: path specified in (a)</li>
</ol>
<p dir="auto">This way, in most cases, the user will only have to select the base<br>
directory in the first step and use the pre-filled values without<br>
any modification no matter whether the project is stored in the projects<br>
directory or not.</p>
<p dir="auto">After this patch, there will be 2 different ways to create projects:</p>
<ol dir="auto">
<li>Project->New - more suitable for creating empty projects from scratch<br>
inside the "projects" directory</li>
<li>Project->New from Folder - more suitable for creating projects from<br>
existing sources</li>
</ol>

<hr>

<h4>You can view, comment on, or merge this pull request online at:</h4>
<p>  <a href='https://github.com/geany/geany/pull/3042'>https://github.com/geany/geany/pull/3042</a></p>

<h4>Commit Summary</h4>
<ul>
  <li><a href="https://github.com/geany/geany/pull/3042/commits/a001962f90f2316d96b931f1ee0cd2ad7f4580ea" class="commit-link">a001962</a>  Improve user experience when creating new projects</li>
  <li><a href="https://github.com/geany/geany/pull/3042/commits/5d5c26fbb9dfff412d6397044d5a2c56fcdf9a90" class="commit-link">5d5c26f</a>  Add keybindings for "Project->New from Folder"</li>
  <li><a href="https://github.com/geany/geany/pull/3042/commits/f8159cfb6f374f7294a003aac3bec28a40024659" class="commit-link">f8159cf</a>  Store project files in base directory by default</li>
  <li><a href="https://github.com/geany/geany/pull/3042/commits/e2f081dff45534f2af1bae5cd1652a806537ffc6" class="commit-link">e2f081d</a>  Make the New Project dialog a little wider</li>
</ul>

<h4 style="display: inline-block">File Changes </h4> <p style="display: inline-block">(<a href="https://github.com/geany/geany/pull/3042/files">11 files</a>)</p>
<ul>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3042/files#diff-5d5771dd29b0be0a11dd1148359dd0a650f7a69fe988ca5072f659bdf5be55d3">data/geany.glade</a>
    (17)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3042/files#diff-1d0efcfbefd013aedf0477bd522a1e4506339c5ef239a6ef770f39270747c14c">src/callbacks.c</a>
    (8)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3042/files#diff-039131a12da0afa67d978db92c0ee6f8abfc9a44f817e702bb6228af73500ff2">src/callbacks.h</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3042/files#diff-f3d2412b3a6aea31b7dc8971571773f45ecc488d4c3c49b9b2d11d4bf7596118">src/keybindings.c</a>
    (5)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3042/files#diff-ce7d99c36f7f5be03d0e4a0415e48777ecae42105f0a84069f8fa21dc99d31a3">src/keybindings.h</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3042/files#diff-2810524eed127fdf86cd7a7aaac164efa0d240a2da10844304e79e0307dccaf3">src/keyfile.c</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3042/files#diff-4316f93b38ec68bc3ee98a1ff6a08db0164f9baad6b3b2403909064202cc8fcc">src/plugindata.h</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3042/files#diff-08a2b89559e9135e3864640c098dc6367f44fdf0816a023ec7aab4a2edaa251c">src/project.c</a>
    (77)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3042/files#diff-160027d71936304387f551d0509e48292eab3429e467ec097ad56f80e2ebb544">src/project.h</a>
    (2)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3042/files#diff-8396dc9c2232193e29aaeddbcf7fa02add25c3c2b855f56c3e5307dc34fcfcf3">src/ui_utils.c</a>
    (15)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/geany/geany/pull/3042/files#diff-c5e507f1f38d770eac7b5a9c906195bdebc43bb064ed4b6af981cdce102f14ff">src/ui_utils.h</a>
    (2)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/geany/geany/pull/3042.patch'>https://github.com/geany/geany/pull/3042.patch</a></li>
  <li><a href='https://github.com/geany/geany/pull/3042.diff'>https://github.com/geany/geany/pull/3042.diff</a></li>
</ul>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/geany/geany/pull/3042">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AAIOWJZAUNSUZJACJBKGUJTUPI6SVANCNFSM5JLXLWHA">unsubscribe</a>.<br />Triage notifications on the go with GitHub Mobile for <a href="https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675">iOS</a> or <a href="https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub">Android</a>.
<img src="https://github.com/notifications/beacon/AAIOWJ7GIOPJT4V7BDT6VSDUPI6SVA5CNFSM5JLXLWHKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4P6Z4XCA.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/geany/geany/pull/3042",
"url": "https://github.com/geany/geany/pull/3042",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>