Se connecter
Se connecter

ou
Créer un compte

ou

By Popular Demand . the JUCE thread

  • 71 réponses
  • 6 participants
  • 1 261 vues
  • 2 followers
Sujet de la discussion By Popular Demand . the JUCE thread
Voilà, pour toutes les discussions JUCE en français, c'est ici que ça se passe.
Bienvenue à tous ;)

Et pour les ceusses qui ne savent pas ce qu'est JUCE ... http://www.rawmaterialsoftware.com/juce/

Piaz

Afficher le sujet de la discussion
51
Non, il faut que tu delete un objet si tu en as plus besoin. Il faut que tu gères correctement la vie d'un objet, que tu saches quand tu le crées, quand tu l'utilises et quand il doit mourir - pour être remplacé par un autre par exemple.
Faire des delete à tout va ne va faire qu'une seule chose : planter ton programme si tu delete qqch qui n'existe pas.
52
Wolfen > on peut voir le code source ? J'ai du mal avec les tabs...
Ah oui, sans rien faire, juste en changeant les tabs, ça plante à la sortie.
53
En fait ça va j'ai fait un peu de ménage, j'ai mis des delete pour tous mes objets "locaux" (déclarés uniquement pour une fonction ou une procédure) et maintenant j'ai pas encore réussi à le refaire planter, et ça s'est arrêté de bouffer du swap de windows :bravo: Faut juste que je refasse des tests sous XP et que j'allège les procédures d'animation, je me suis rendu compte que ça surcharge "un peu" le CPU toutes mes boules de Noël (genre du... 50% sur P4 2000) :ptdr:

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

54
Et le lien pour les sources ? - GPL power :demon: -
A moins que tu m'expliques vite fait comment tu fais pour les tabs, parce que j'arrive pas à ne pas faire planter le truc...

Ah oui, plus tu charges l'interface graphique, plus tu as de puissance CPU consommée, surtout quand tu fais ça pas trop proprement !
55
Non j'ai pas envie de lâcher les sources :ptdr:

En fait je crois que t'as le même problème que moi avec les tabs (donc tu t'es lancé :bravo: ), au début j'avais essayé de suivre la logique de base, c'est-à-dire de créer un Component qui contient les tabs et de charger ce Component en principal dans la classe DialogWindow du projet... Quand j'ai chargé carrément la tab directement avec l'instruction "setContentComponent (new TabbedComponentWindow() , false)", ça allait beaucoup mieux :bravo:

Si ton problème c'est pas ça, je te filerai une partie de mon code :clin: D'ailleurs j'en suis à 133 Ko au format texte de code tapé à la main :oo:

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

56
...
En fait, le pb que j'ai, c'est à l'initialisation du TabbedComponent, si je lui ajoutes un tab basique - il est vrai que je fais l'inclusion dans le dialogwindow du tabbed directement à sa déclaration, mais ça devrait marcher pourtant. -
Je testerai demain.

T'es au courant que ton code est sous GPL, au fait ?
57

Citation : T'es au courant que ton code est sous GPL, au fait ?



Oui plus ou moins, étant donné que je dois acheter une license de Juce pour pouvoir en faire ce que je veux... Mais en même temps, quand ça sera fini, moi je veux juste mettre mon soft en freeware, je veux pas lâcher mon code source :clin:

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

58
Ben à moins que tu achètes une licence à Jules...
Je ne vois pas où est le problème du source. Je suis en train de créer un spectrogramme depuis des mois, mais ça ne me dérange pas que les gens aient le code source qui va avec. De même pour mon futur plug-in qui interfacera les plug-ins de Winamp ou mon programme permettant d'enregistrer audio et vidéo en même temps et de générer un flux vidéo. Je pourrai même faire payer ces plug-ins tout en respectant la GPL.
Et d'après les termes de la GPL, n'importe qui peut te demander le source de la version que tu as mise en téléchargement dans ce topic... Tu peux aussi faire payer le plug-in, mais si un acheteur veut voir le code source, tu dois le lui donner... Le code source peut aussi être vendu, mais à un prix inférieur ou égal à celui du binaire - sauf si le gars a déjà le binaire, naturellement -.

J'ai regardé ce que je fait, et je ne comprend pas ce qui ce passe :
- je crée un DialogWindow - d'ailleurs, il n'y a pas l'air d'exister une fenêtre qui peut être maximisée ??? -
- je crée un TabbedComponent hérité - si je prend la version de base, il me sort qu'il manque une fonction qui est en virtual :| -
- je crée un Tabbed machinchoseBasicTruc, et dès que je l'ajoute au TabbedComponent - avec un addTab -, ça plante - j'ai débuggé le code, ça plante sur un dynamic_cast vers le component parent... -
J'ai dû zapper un truc...
59
Bon pour le code, voilà ce que j'ai fait :

Citation : //==============================================================================
// Classe des onglets
//==============================================================================
class TabbedComponentWindow : public TabbedComponent

{
public:
MainPanel* mainPanelTab ;
SettingsPanel* settingsPanelTab;
BlocPanel* blocPanelTab;
SkinPanel* skinPanelTab;
PatternsPanel* patternsPanelTab;

TabbedComponentWindow()
:TabbedComponent(String::empty)
{

SettingsFiles::loadSettings();

// Ajout des onglets
TabbedComponentBasicTab *t;
t = new TabbedComponentBasicTab(Lang::msg(language, 8));
t->setSize(100,t->getHeight());
addTab (0, t);
t = new TabbedComponentBasicTab(Lang::msg(language, 9));
t->setSize(100,t->getHeight());
addTab (1, t);
t = new TabbedComponentBasicTab(Lang::msg(language, 10));
t->setSize(100,t->getHeight());
addTab (2, t);
t = new TabbedComponentBasicTab(Lang::msg(language, 11));
t->setSize(100,t->getHeight());
addTab (3, t);
t = new TabbedComponentBasicTab(Lang::msg(language, 12));
t->setSize(100,t->getHeight());
addTab (4, t);

//setColours (Colours::blanchedalmond, Colours::black,
// Colours::grey, Colours::grey, Colours::blanchedalmond);
setColours (Colours::transparentWhite, Colours::black,
Colours::grey, Colours::grey, Colours::transparentWhite);
setVisible(true);
setTabOrientation (TabbedComponent::TabsAtTop, 15, 5, 5 );
setCurrentlySelectedTab(0);

// Initialisation des panels
mainPanelTab = new MainPanel();
settingsPanelTab = new SettingsPanel();
blocPanelTab = new BlocPanel();
skinPanelTab = new SkinPanel();
patternsPanelTab = new PatternsPanel();

setContentComponent(mainPanelTab);

}

~TabbedComponentWindow()
{
delete mainPanelTab;
delete settingsPanelTab;
delete patternsPanelTab;
delete blocPanelTab;
delete skinPanelTab;
}

void tabWasClicked (int newSelectedIndex,
bool clickedTabWasAlreadySelected, const ModifierKeys ¤tModifiers)
{
if (newSelectedIndex == 0)
setContentComponent(mainPanelTab);
if (newSelectedIndex == 1)
{ setContentComponent(settingsPanelTab);
if ( ! settingsPanelTab->isInit)
settingsPanelTab->startTimer(100);
}
if (newSelectedIndex == 2)
setContentComponent(patternsPanelTab);
if (newSelectedIndex == 3)
setContentComponent(blocPanelTab);
if (newSelectedIndex == 4)
{ setContentComponent(skinPanelTab);
skinPanelTab->comboAnim->setSelectedId (colourAlpha);
skinPanelTab->comboSelection->setSelectedId (colourSel);
}
}
};





//==============================================================================
// Classe de la fenêtre principale
//==============================================================================
ApplicationMainWindow::ApplicationMainWindow()
:DialogWindow ("Groove Generator for Tracktion", Colours::white, false)
{
setVisible (true);
setResizeable (false);
language = 0;

setContentComponent (new TabbedComponentWindow() , false);


}

ApplicationMainWindow::~ApplicationMainWindow()
{
JUCEApplication::quit();
}



void ApplicationMainWindow::paint (Graphics& g)
{
DialogWindow::paint(g);

}



Ben après pour le partage de la source, c'est juste une question de principe, j'aurai l'impression qu'on ne respecte pas mon travail si on peut y mettre les doigts ou qu'on pourrait le pirater, même si j'en rajoute un peu, sachant que de toutes façons je mettrai mon soft en freeware quand il sera fini... :noidea: J'arrive pas à accepter qu'on puisse me le demander obligatoirement... C'est quand même un truc sur lequel j'aurai passé du temps...

Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud

60
Ca m'énerve, j'ai presque fait comme toi, mais là où ça plante, c'est la même chose... Ca plante sur mon addTab... Comprend pas... Vais réfléchir plus tard.

Citation : Ben après pour le partage de la source, c'est juste une question de principe, j'aurai l'impression qu'on ne respecte pas mon travail si on peut y mettre les doigts ou qu'on pourrait le pirater, même si j'en rajoute un peu, sachant que de toutes façons je mettrai mon soft en freeware quand il sera fini... J'arrive pas à accepter qu'on puisse me le demander obligatoirement... C'est quand même un truc sur lequel j'aurai passé du temps...


C'est la même chose pour ceux qui ont fait la librairie que tu utilises...
Mais il ne faut pas voir la GPL comme une cession de tes droits. J'ai écrit du code GPL, mais je n'ai jamais eu de problème par rapport aux gens. Certains vont vouloir en abuser, mais ils sont rares.

Bon, n'empêche que je ne comprend pas pourquoi ça ne marche pas... Je soupçonne de plus en plus un problème de compilo :|