Cela vient il du fait qu'à la fac, c'est la version 2.6.3 de wxWidgets qui est intallé alors que sur mon mac j'utilise la version 2.8.0 ?
Ils ont peut être modifié la méthode d'utilisation des images.
Cela vient il du fait qu'à la fac, c'est la version 2.6.3 de wxWidgets qui est intallé alors que sur mon mac j'utilise la version 2.8.0 ?
Ils ont peut être modifié la méthode d'utilisation des images.
Y a des trucs que je comprend pas des fois --> Sans modifier mon code, ca compile plus donc je décide de reprendre mon ancien code et de le modifier pour revenir au code que j'avais et la ca recompile et en plus j'ai même plus besoin de mettre la macro _()
Sinon toujours le soucis de bitmap handlers je comprend pas comment faire.
J'ai rajouté a mon code juste une ligne --> la fonction que tu m'avais dite mais apparement ca ne résoud rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 void CMainFrame::CreateMyToolbar() { m_toolbar = CreateToolBar(wxNO_BORDER | wxTB_HORIZONTAL,TOOLBAR_TOOLS); wxInitAllImageHandlers(); wxBitmap toolBarBitmaps[4]; toolBarBitmaps[0] = wxBitmap("new.bmp",wxBITMAP_TYPE_BMP); toolBarBitmaps[1] = wxBitmap("open.bmp",wxBITMAP_TYPE_BMP); toolBarBitmaps[2] = wxBitmap("save.bmp",wxBITMAP_TYPE_BMP); toolBarBitmaps[3] = wxBitmap("draw.bmp",wxBITMAP_TYPE_BMP); m_toolbar->SetToolBitmapSize(wxSize(toolBarBitmaps[0].GetWidth(),toolBarBitmaps[0].GetHeight())); m_toolbar->AddTool(MENU_NEW, "Nouveau", toolBarBitmaps[0]); m_toolbar->AddTool(MENU_OPEN, "Open", toolBarBitmaps[1]); m_toolbar->AddTool(MENU_SAVE, "Save", toolBarBitmaps[2]); m_toolbar->AddSeparator(); m_toolbar->AddCheckTool(MENU_TRIANGLE,"Draw",toolBarBitmaps[3]); m_toolbar->Realize(); SetToolBar(m_toolbar); }
Je viens de lire le fichier log que me genere l'erreur :
Il me dit que les fichiers n'existe pas pourtant ils sont bien dans le dossier drawtri.app/Contents/MacOS/ avec mes codes sources et mon executable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 23:33:16: Can't load image from file 'new.bmp': file does not exist. 23:33:16: no bitmap handler for type 1 defined. 23:33:16: Can't load image from file 'open.bmp': file does not exist. 23:33:16: no bitmap handler for type 1 defined. 23:33:16: Can't load image from file 'save.bmp': file does not exist. 23:33:16: no bitmap handler for type 1 defined. 23:33:16: Can't load image from file 'draw.bmp': file does not exist. 23:33:16: no bitmap handler for type 1 defined.
Il y a peut être un dossier a créer ou il faut mettre les fichiers images...
Oui, ça peut arriver, en général, les versions suivantes sont plus strictes au niveau du code.Cela vient il du fait qu'à la fac, c'est la version 2.6.3 de wxWidgets qui est intallé alors que sur mon mac j'utilise la version 2.8.0 ?
Ca, ça m'étonnerai, tu as modifié quelque chose, c'est sûr ! le système mac est suffisament stable pour éviter ce genre de trucs.Y a des trucs que je comprend pas des fois --> Sans modifier mon code, ca compile plus
En fait, tout dépend comment tu l'as lancé, mais sous mac, les images ne sont pas au même endroit.Il me dit que les fichiers n'existe pas pourtant ils sont bien dans le dossier drawtri.app/Contents/MacOS/ avec mes codes sources et mon executable.
Il y a peut être un dossier a créer ou il faut mettre les fichiers images...
J'ai ce code dans une de mes applications, ça permet de chercher correctement les images :
m_currentScene est une de mes classes, elle possède notament deux méthodes : GetRessourceDirectory() et SetRessourceDirectory(), tu comprendras facilement leur comportement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 wxImage * img = new wxImage(); img->AddHandler( new wxPNGHandler ); std::string path ; std::string res_dir = m_currentScene->GetRessourceDirectory(); path = res_dir; path += "x_off.png"; img->LoadFile( _(path.c_str()) , wxBITMAP_TYPE_PNG ); x_off = new wxBitmap( *img );
Et voici le code de la fonction SetRessourceDirectory() qui est dans le OnInit de mon application :
Le dossier bitmaps est toujours dans le dossier de l'application. et mon application a un nom qui est de longueur 6 (ce qui explique les paramètres du substr() ... ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 std::string appDir = argv[0]; ... m_defaultScene->SetRessourceDirectory( appDir.substr( 0 , appDir.length() - 6 ) + "bitmaps/" );
La méthode à l'avantage de fonctionner sous Mac et Linux, par contre, pour ce qui est de Windows, je ne sais pas.
Oki je vais regarder ca mais sinon j'ai chercher dans les sources de wxwidgets pour savoir dans quel dossier il va chercher les images de base mais j'ai pas trouvé... Tu saurais pas ou il faut mettre les images pour qu'il aille les cherché sans utiliser ton code --> sous linux il va chercher dans le fichier courant ou il y a l'executable du programme mais macosx je sais pas du tout ---> J'ai pensé au dossier /Contents/Resources/ mais non ca va pas lol.
En fait tout est relatif au dossier dans lequel tu lance l'application.
Pour linux, si tu es dans . ça cherche dans le dossier courrant. Si tu es dans le dossier du dessous, ça cherche dans le dossier du dessous.
L'avantage de ma solution est de chercher directement le dossier dans lequel est l'application puis de charger à partir de ce dossier, tu n'as donc qu'à mettre le dossier bitmap dans le même dossier que l'éxécutable et le tour est joué, ça fonctionne sous linux et sous mac.
Je te propose une solution, si tu veux en faire une autre libre à toi
Si tu ne comprends pas ce que j'ai fais, je peux t'expliquer, mais ça n'est pas du tout compliqué : je récupère la ligne de commande pour lancer ton programme (argv[0]) , ça te donne le chemin, relatif ou absolu vers ton programme ensuite, tu n'as qu'à récupérer le dossier dans lequel est ton application (via le substr).
Ben je vais tenter avec ta solution mais c'etait juste que je voulais comprendre pourquoi il me charge pas mes images directement
Sachant que mes .bmp sont dans le même dossier que l'executable...
En gros mon executable est dans /Volumes/Documents/Programmation/WxWidget/drawtri.app/Contents/MacOS et mes .bmp sont dans ce même dossier donc je comprend pas pourquoi il me les trouves pas...
Enfin bref, je vais essayer de voir ta technique
Parce qu'il charge tes images à partir du dossier dans lequel tu es et pas dans celui où est localisé le programme. (tu fait du .app)Ben je vais tenter avec ta solution mais c'etait juste que je voulais comprendre pourquoi il me charge pas mes images directement
Or sous linux, le dossier d'application et le dossier courrant sont les mêmes (sauf si tu as fait autrement).
Oki oki. Je viens de cabler le truc
Bon je vais implementer ton systeme pour être tranquile. Bon là je suis sur autre chose donc je le ferais ce week end
Merci encore.
Bon ben maintenant j'avance plutôt bien --> mon interface est plutôt cool et j'arrive enfin a faire des evenements (du genre je clic sur options, hop ca ouvre un popup avec les options, ou alors pomme+B me cache ou fait apparaitre ma barre a outil) mais voila dans ma barre outil j'ai un petit soucis -->
J'ai mes icones dont une qui lorsque je clique dessus disparait et pourtant si je clique au même endroit ben ca me declenche quand même l'evenement comme si l'icone etait la mais invisible --> Précision je voulais faire un bouton qui s'enfonce et qui reste dans cette position AddCheckTool.
Donc je comprend pas trop sous linux ca fonctionne très bien comme ca mais la ca va pas lol
Personne n'a de solution sur mon problème de disparition d'icone ?
Parce que je vois pas trop ce que je dois faire...
Patience !Personne n'a de solution sur mon problème de disparition d'icone ?
Parce que je vois pas trop ce que je dois faire...
Montres-nous ton code. Peut-être qu'il faut spécifier le bitmap pour le bouton non enfoncé, un pour l'enfoncé. Sous linux, lorsque tu en donnes un peut-être le prend il pour les deux états.J'ai mes icones dont une qui lorsque je clique dessus disparait et pourtant si je clique au même endroit ben ca me declenche quand même l'evenement comme si l'icone etait la mais invisible --> Précision je voulais faire un bouton qui s'enfonce et qui reste dans cette position AddCheckTool.
PS: si ta question est différente de celle du début, poste un nouveau sujet.
Pour ceux que le sujet intéresse, la suite c'est par ici : http://www.developpez.net/forums/sho....php?p=1796254
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager