Adam, I committed your patch in the product branch r5358.
Thanks, Wayne On 1/6/2015 12:45 PM, Adam Wolf wrote: > Hi everyone, > > Attached is a patch that quiets the noname.pro <http://noname.pro> error > in the situation that the last history item isn't loadable, as well as > on first load of kicad on a machine where the history doesn't exist yet. > > If someone could test on Linux in both of those cases, that'd be > awesome. Thanks! > > > Adam Wolf > Cofounder and Engineer > W&L > > On Mon, Jan 5, 2015 at 10:49 AM, Adam Wolf > <[email protected] <mailto:[email protected]>> > wrote: > > The only time I have a strong preference is on first load--when you > have no preference files or anything. Then I really, really, don't > want to show an error message. I'm fine if we show a message, but I > don't want the word "error" or red or exclamation points or > 'warning" to pop up. > > I will take this on, and post a patch that should quiet the popups > for noname.pro <http://noname.pro>. > > Adam Wolf > Cofounder and Engineer > W&L > > On Mon, Jan 5, 2015 at 9:21 AM, Wayne Stambaugh > <[email protected] <mailto:[email protected]>> wrote: > > On 1/5/2015 9:43 AM, Adam Wolf wrote: > > Thanks for the insight, Wayne. This is exactly what I was hoping > to get > > out of my too long email. > > > > I will investigate what happens now in that case. > > > > In the case of "kicad was opened without a path/to/project.pro > <http://project.pro> > > <http://project.pro> and doesn't have a valid history entry we can > > open", what do you think should happen? > > > > Should we just not open the error box? > > Some users might prefer not showing the error dialog and just > create the > dummy noname.pro <http://noname.pro> file. I don't have a > strong preference one way or > another. Interestingly, LibreOffice removes all files that > don't exist > from the recent list so you cannot select a non-existent file. > On the > other hand, MS Excel give a error message stating that you may have > moved or deleted the file. In either case, the next action is > to open > an empty file which would be noname.pro <http://noname.pro> in > our case. > > > > > Should it open the "new project" dialog? If it does that, how would > > people start a new project from a template? Should it have a > different > > dialog with three buttons, "new project" and "new project from > > template", and cancel (which would just open the normal interface > but > > with no project file opened)? > > I think this might be overkill. If the open from last project > history > fails, I would just show the dummy noname.pro > <http://noname.pro> and let the user decide > the next course of action. > > > > > Adam Wolf > > > > On Mon, Jan 5, 2015 at 8:33 AM, Wayne Stambaugh > <[email protected] <mailto:[email protected]> > > <mailto:[email protected] <mailto:[email protected]>>> > wrote: > > > > On 1/4/2015 8:42 PM, Adam Wolf wrote: > > > Hi folks, > > > > > > Right now, when a user installs KiCad successfully on an > OS X system, > > > and they start Kicad, the first thing they see is an > error box. > > > > > > It states > > > > > > 'Error > > > > > > Project file '' not found' > > > > > > I do not think new users should get an error immediately > upon opening Kicad. > > > > > > I tried to fix this today, but I ran into some > conceptual issues, so > > > hopefully I can get them cleared up and submit a patch > for this. > > > > > > First, there appears to be code to prevent this from > happening. > > > > > > in kicad/prjconfig.cpp: > > > wxString prj_filename = GetProjectFileName(); > > > xString nameless_prj = NAMELESS_PROJECT wxT( ".pro" ); > > > > > > // Check if project file exists and if it is not > noname.pro <http://noname.pro> <http://noname.pro> > > > <http://noname.pro> > > > if( !wxFileExists( prj_filename ) && > !prj_filename.IsSameAs( > > > nameless_prj ) ) > > > { > > > wxString msg = wxString::Format( _( > > > "KiCad project file '%s' not found" ), > > > GetChars( prj_filename ) ); > > > > > > DisplayError( this, msg ); > > > return; > > > } > > > > > > (NAMELESS_PROJECT is set to "noname" in include/common.h). > > > > > > This checks to see if GetProjectFileName() exists as a > file, and if it > > > doens't, it checks to see if it is "noname.pro > <http://noname.pro> <http://noname.pro> > > <http://noname.pro>", and > > > if not, it pops up an error. > > > > > > In kicad/kicad.cpp, > > > > > > if( App().argc > 1 ) > > > frame->SetProjectFileName( App().argv[1] ); > > > > > > else if( GetFileHistory().GetCount() ) > > > { > > > wxString last_pro = > GetFileHistory().GetHistoryFile( 0 ); > > > > > > if( !wxFileExists( last_pro ) ) > > > { > > > GetFileHistory().RemoveFileFromHistory( 0 ); > > > > > > wxFileName namelessProject( wxGetCwd(), > NAMELESS_PROJECT, > > > > ProjectFileExtension ); > > > > > > frame->SetProjectFileName( > namelessProject.GetFullPath() ); > > > } > > > else > > > { > > > // Try to open the last opened project, > > > // if a project name is not given when > starting Kicad > > > frame->SetProjectFileName( last_pro ); > > > > > > wxCommandEvent cmd( 0, wxID_FILE1 ); > > > > > > frame->OnFileHistory( cmd ); > > > prjloaded = true; // OnFileHistory() > loads the project > > > } > > > } > > > > > > > > > we check if we have any command line arguments, and if > we don't, we > > > check to see if we have a history, and if we can't load > the top history > > > result, we set the project filename to the current > working directory / > > > noname.pro <http://noname.pro> <http://noname.pro> > <http://noname.pro>. > > > > > > I see two potential issues here: > > > > > > 1) The situation where we have no history isn't handled > explicitly, > > > which is part of what causes this issue for new users, I > think. > > > > > > 2) When there is a history, but it can't find the top result, > it sets > > > the project filename to the current working directory / > noname.pro <http://noname.pro> <http://noname.pro> > > > <http://noname.pro>. Over in prjconfig.cpp, when we check for > > > noname.pro <http://noname.pro> <http://noname.pro> > <http://noname.pro>, we check if > > the whole string is > > > "noname.pro <http://noname.pro> <http://noname.pro> > <http://noname.pro>". > > > > > > My gut feeling is to do something like the following: > > > > > > if( App().argc > 1 ) > > > // if there was a path specified, i.e. "kicad > > > path/to/project.pro <http://project.pro> > <http://project.pro> <http://project.pro>" > > > frame->SetProjectFileName( App().argv[1] ); > > > > > > else if( ! GetFileHistory().GetCount() ) > > > { > > > // if there wasn't a .pro specified, and there > is no history > > > wxFileName namelessProject( NAMELESS_PROJECT, > > > ProjectFileExtension ); > > > > > > frame->SetProjectFileName( > namelessProject.GetFullName() ); > > > } > > > else > > > { > > > // if there wasn't a .pro specified, and there > is a history > > > > > > wxString last_pro = > GetFileHistory().GetHistoryFile( 0 ); > > > > > > if( !wxFileExists( last_pro ) ) > > > { > > > GetFileHistory().RemoveFileFromHistory( 0 ); > > > > > > wxFileName namelessProject( NAMELESS_PROJECT, > > > > ProjectFileExtension ); > > > > > > frame->SetProjectFileName( > namelessProject.GetFullName() ); > > > } > > > else > > > { > > > // Try to open the last opened project, > > > // if a project name is not given when > starting Kicad > > > frame->SetProjectFileName( last_pro ); > > > > > > wxCommandEvent cmd( 0, wxID_FILE1 ); > > > > > > frame->OnFileHistory( cmd ); > > > prjloaded = true; // OnFileHistory() > loads the project > > > } > > > } > > > > > > But on the other hand, I don't know if this breaks > assumptions other > > > places by having the ProjectFileName just be "noname.pro > <http://noname.pro> <http://noname.pro> > > > <http://noname.pro>". Would it be better to change the > check to > > see if > > > the project filename ends with "/noname.pro > <http://noname.pro> <http://noname.pro> > > <http://noname.pro>"? I hope > > > to get a better feel for things like this as I gain > familiarity with the > > > extensive codebase. > > > > > > Also, Wayne, March 16th 2014, we discussed something > like this on the > > > list, and you mentioned you use a custom default project > file and want > > > to be alerted when that isn't found. I am not familiar > with how that > > > workflow works. Would it be broken by this fix? > > > > What used to happen was if a new project was created, the > kicad.pro <http://kicad.pro> > > <http://kicad.pro> file > > saved in the /usr/share/kicad/template folder was copied to the > new > > project folder using project_name.pro > <http://project_name.pro> <http://project_name.pro> as > > the file name. This allowed > > the user to create a custom kicad.pro <http://kicad.pro> > <http://kicad.pro> file for > > project customization > > purposes. A failed attempt to open an existing project is a > different > > behavior. The noname.pro <http://noname.pro> > <http://noname.pro> file used to trigger a > > file save as dialog to > > allow the user to rename the project file and save it to a > preferred > > path. Since the kiway work, I'm not sure how this changed or > if this > > has always been broken Changing the fail to open existing > project > > behavior should not impact the new project project file > behavior. The > > file code paths may be the same so you may have to do some > testing. > > > > > > > > Adam Wolf > > > Cofounder and Engineer > > > W&L > > > > > > > > > _______________________________________________ > > > Mailing list: https://launchpad.net/~kicad-developers > > > Post to : [email protected] > <mailto:[email protected]> > > <mailto:[email protected] > <mailto:[email protected]>> > > > Unsubscribe : https://launchpad.net/~kicad-developers > > > More help : https://help.launchpad.net/ListHelp > > > > > > > > > _______________________________________________ > > Mailing list: https://launchpad.net/~kicad-developers > > Post to : [email protected] > <mailto:[email protected]> > > <mailto:[email protected] > <mailto:[email protected]>> > > Unsubscribe : https://launchpad.net/~kicad-developers > > More help : https://help.launchpad.net/ListHelp > > > > > > > _______________________________________________ > Mailing list: https://launchpad.net/~kicad-developers > Post to : [email protected] > <mailto:[email protected]> > Unsubscribe : https://launchpad.net/~kicad-developers > More help : https://help.launchpad.net/ListHelp > > > _______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : [email protected] Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp

