code-google-com / qdevelop

Automatically exported from code.google.com/p/qdevelop
GNU General Public License v2.0
1 stars 1 forks source link

Won't run applications with accents in it's directory name #257

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
QDevelop n'arrive pas à exécuter le programme si celui-ci est situé dans un
répertoire dont le nom est accentué.

Étapes à suivre: je crée un projet vierge dans le répertoire
/home/user/Accentué et je clique sur "Générer". QDevelop génère le projet
sans problèmes et un fichier exécutable est créé dans le répertoire
Accentué/bin. Mais lorsque je clique sur "Exécuter", QDevelop affiche "Le
programme n'existe pas, veuillez relancer la génération". Pourtant, le
programme existe bel et bien. Et si j'enregistre le projet dans
/home/user/Accentue (répertoire sans accents), alors le menu "Exécuter"
fonctionnera.

Configuration:
Mandriva 2008.0
Qt 4.3
QDevelop 0.25

Original issue reported on code.google.com by titcouil...@gmail.com on 24 Feb 2008 at 10:28

GoogleCodeExporter commented 9 years ago
In English please... not everybody speaks French

Original comment by tomas.hanak@gmail.com on 24 Feb 2008 at 2:14

GoogleCodeExporter commented 9 years ago
Well, I got here following a French link and the author of the program is 
French.
Anyhow, I was saying that the Execute (Run?) menu doesn't work if the project 
is in a
folder that contains accents in its name.

There's a few other annoying things in QDevelop. I won't bother creating 
separate
reports for each of them and no one will bother reading them anyhow, so I'll 
just say
them here:
- When I do class definitions like "void MainWindowImpl::...", after this "::", 
the
code completion opens up and can't be closed.
- Weird Debug Parameters are specified by default and they shouldn't. Each time 
I was
running my application, I had an output message saying "Qt: Cannot set locale
modifiers". Also I couldn't type accents in my QLineEdit/QTextEdit. After hours 
and
hours and hours of searching, I found out there's a Debug > Parameters... 
dialog and
discovered that QDevelop was responsible for specifying a weird locale.
- Speaking of output messages, when you do Ctrl+C to copy from QDevelop's output
window, it actually copies from the code editor, regardless of the focus!

Original comment by titcouil...@gmail.com on 9 Mar 2008 at 11:56

GoogleCodeExporter commented 9 years ago
0) Is this bug still valid for latest svn code?
1) close code completion with "Esc" key.
2) what do you mean by "specifying a weird locale"?
3) I'm sorry but it's a limitation of Qt and occures because output text window 
is
read only.

Original comment by Lord.Div...@gmail.com on 11 Feb 2009 at 10:39

GoogleCodeExporter commented 9 years ago
I downloaded "QDevelop binary for GNU/Linux: unstable version 0.27~svn387". 
Here are
the results :

   0) Is this bug still valid for latest svn code?

Yes, the accents bug is still valid. If I open a project named :

/home/titcouille/Programmation/Testé/Testé.pro

I can edit and build the project. But when I click "Run", I get the following 
message
(I'm translating) : "The program does not exist, please rebuild."

  1) close code completion with "Esc" key.

The code completion bug is SOLVED.

  2) what do you mean by "specifying a weird locale"?

The locale bug is still valid. It is caused by the Debug > Parameters feature. 
The
parameters specified in that dialog are incompatible with my system. If I 
delete all
parameters in Debug > Parameters, everything works. Unfortunately, when I close 
and
reopen QDevelop, the parameters reappear.

What I mean by "specifying a weird locale", is that QDevelop specifies in that 
dialog
all kinds of "LC_..." (locale) parameters. These parameters are then used to 
run the
program. They're incompatible with my system. When I run my program, in the 
QDevelop
"Output" window, I receive the following message : "Qt: Cannot set locale 
modifiers".
More significantly, I can't type accents in the launched application using my
keyboard, because the locale specified in Debug > Parameters is messed up. If I
launch my application outside of QDevelop, everything works. This bug is 
specific to
the way QDevelop launches the application.

Original comment by titcouil...@gmail.com on 11 Feb 2009 at 3:22

GoogleCodeExporter commented 9 years ago
Ok, but I need your help:
1) Please attach here: a) Your project file; b) Generated Makefile. And check 
whether
qmake && make work correctly in console (without QDevelop).
2) Please provide all information you see in Debug > Parameters dialog.

Original comment by Lord.Div...@gmail.com on 11 Feb 2009 at 5:50

GoogleCodeExporter commented 9 years ago
  1) Please attach here: a) Your project file; b) Generated Makefile.

This is unnecessary. It's not a specific project. It's ANY project that contains
accents in the filename. To reproduce the problem, simply go to Project > New 
Project
and in "Project name" type something with accents. Then try to run this new 
project.

  2) Please provide all information you see in Debug > Parameters dialog.

I attach a screenshot of my Debug Parameters dialog. Note that all those 
parameters
are automatically generated by QDevelop. They're messing the keyboard locale of 
any
application launched from QDevelop. I have to delete those parameters line by 
line
(there is no "Delete all" button in the Parameters dialog), and they reappear 
after I
restart QDevelop.

Original comment by titcouil...@gmail.com on 11 Feb 2009 at 6:38

Attachments:

GoogleCodeExporter commented 9 years ago
1) You see I don't want to install French locale or use character map to create 
such
files.
2) I've researched the code and found that environment variables list is 
populated
via QProcess::systemEnvironment() i.e. it just uses your current environment. 
Please
compare it to output of "env" command. Anyway QDevelop doesn't generate the 
list itself.

Original comment by Lord.Div...@gmail.com on 11 Feb 2009 at 10:07

GoogleCodeExporter commented 9 years ago
  1) You see I don't want to install French locale or use character map to create
such files.

Oh, are you kidding me ! You just have to copy & paste a letter. I even gave 
you an
example name.

  2) I've researched the code and found that environment variables list is populated
via QProcess::systemEnvironment()

O.K. I did a lot of testing, trying to isolate the variable that causes the 
problem.
I found that the following entry in my Parameters dialog is causing the problem 
:

  Name : XMODIFIERS
  Value : @im

Then, I ran the "env" utility, as you suggested me. And here is the line that
concerns that particular variable :

  XMODIFIERS=@im=none

So, I went back to the Parameters dialog and made the following change :

  Name : XMODIFIERS
  Value : @im=none

And the problem was gone. So there is an error in the way QDevelop or the Qt 
library
fetches environment values containing the "=" character.

Original comment by titcouil...@gmail.com on 12 Feb 2009 at 2:06

GoogleCodeExporter commented 9 years ago
O.K. Continuing on the environment variables bug, I checked QDevelop's code 
(more
specifically the "parametersimpl.cpp" file). And I saw that the bug was caused 
by
line 67 :

...new QTableWidgetItem( s.section("=", 1, 1)));

Given a QString containing "XMODIFIERS=@im=none", s.section("=", 1, 1) will 
return
only "@im", because "none" is s.section("=", 2, 2). So the bug is caused by bad
coding of QDevelop, not by the Qt library.

Original comment by titcouil...@gmail.com on 12 Feb 2009 at 2:17

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
O.K. I tried also tracking the accents bug. I found the problem. In
"projectmanager.cpp", QDevelop is incorrectly fetching the program's name from 
the
MAKEFILE. Here is how QDevelop reads the MAKEFILE :

  QFile makefile(...);
  if(makefile.open(QIODevice::ReadOnly | QIODevice::Text))
    while (!makefile.atEnd())
    {
       QString line (makefile.readLine());
       ...
    }

The problem is that QFile::readLine() does RAW reading, without considering the
encoding of the MAKEFILE. So, if there are accents in the MAKEFILE (as in my 
case),
they won't be read correctly. The solution is to use the QTextStream class :

  QFile makefile(...);
  if(makefile.open(QIODevice::ReadOnly | QIODevice::Text))
  {
     QTextStream makefileText(&makefile);
     while (!makefileText.atEnd())
     {
       QString line (makefileText.readLine());
       ...
     }
  }

This will solve the accents bug. I attach a MAKEFILE with accents if you want 
to test.

Original comment by titcouil...@gmail.com on 12 Feb 2009 at 3:26

Attachments:

GoogleCodeExporter commented 9 years ago
Thank you.
Please whether r392 fixes both problems.

Original comment by Lord.Div...@gmail.com on 12 Feb 2009 at 9:25

GoogleCodeExporter commented 9 years ago
I just tried the new binary, and yes, both problems are solved. Thank you !

Original comment by titcouil...@gmail.com on 20 Feb 2009 at 5:18