By Popular Demand . the JUCE thread
- 71 réponses
- 6 participants
- 1 261 vues
- 2 followers
piaz
Bienvenue à tous ;)
Et pour les ceusses qui ne savent pas ce qu'est JUCE ... http://www.rawmaterialsoftware.com/juce/
Piaz
miles1981
Faire des delete à tout va ne va faire qu'une seule chose : planter ton programme si tu delete qqch qui n'existe pas.
Audio Toolkit: http://www.audio-tk.com/
miles1981
Ah oui, sans rien faire, juste en changeant les tabs, ça plante à la sortie.
Audio Toolkit: http://www.audio-tk.com/
Wolfen
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud
miles1981
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 !
Audio Toolkit: http://www.audio-tk.com/
Wolfen
En fait je crois que t'as le même problème que moi avec les tabs (donc tu t'es lancé ), 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
Si ton problème c'est pas ça, je te filerai une partie de mon code D'ailleurs j'en suis à 133 Ko au format texte de code tapé à la main
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud
miles1981
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 ?
Audio Toolkit: http://www.audio-tk.com/
Wolfen
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
Développeur de Musical Entropy | Nouveau plug-in freeware, The Great Escape | Soundcloud
miles1981
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...
Audio Toolkit: http://www.audio-tk.com/
Wolfen
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... 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
miles1981
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
Audio Toolkit: http://www.audio-tk.com/
- < Liste des sujets
- Charte