From: Martin S. <mc...@as...> - 2006-06-29 11:02:25
|
The following patch was the output of 'svn diff gui', after I updated my copy of the rosegarden code with the trunk, and resolved the one resulting conflict. Note that along with changes to existing files, this patch also includes two new files, which would need to be 'svn add'ed, if you wanted to commit the patch somewhere. The two new files are called rosegardenparameterarea.h and rosegardenparameterarea.cpp. Since I reported on my progress a couple of days ago, I have added code to display the parameter boxes within titled outlines, when viewed in the classic style. As mentioned before, to switch between the two arrangement styles, there is a combo at the bottom of the General Configuration/Presentation page of the Configure Rosegarden dialog. This has the title "The organization of the side-bar", and the options, "Display parameter groups tiled vertically" (ie. classic mode), and "Display parameter groups under tabs". At the moment, the result doesn't offer any improvements in real-estate used, but it's a start. Index: rosegardenconfiguredialog.h =================================================================== --- rosegardenconfiguredialog.h (revision 7322) +++ rosegardenconfiguredialog.h (working copy) @@ -66,6 +66,7 @@ const char *name=0); signals: void updateAutoSaveInterval(unsigned int); + void updateSidebarStyle(unsigned int); }; class DocumentConfigureDialog : public ConfigureDialogBase Index: rosegardenconfiguredialog.cpp =================================================================== --- rosegardenconfiguredialog.cpp (revision 7322) +++ rosegardenconfiguredialog.cpp (working copy) @@ -168,6 +168,8 @@ connect(page, SIGNAL(updateAutoSaveInterval(unsigned int)), this, SIGNAL(updateAutoSaveInterval(unsigned int))); + connect(page, SIGNAL(updateSidebarStyle(unsigned int)), + this, SIGNAL(updateSidebarStyle(unsigned int))); // Sequencer Page // Index: rosegardenconfigurationpage.h =================================================================== --- rosegardenconfigurationpage.h (revision 7322) +++ rosegardenconfigurationpage.h (working copy) @@ -188,6 +188,7 @@ signals: void updateAutoSaveInterval(unsigned int); + void updateSidebarStyle(unsigned int); protected slots: void slotFileDialog(); @@ -208,6 +209,7 @@ QSpinBox* m_autosaveInterval; QComboBox* m_nameStyle; QComboBox* m_previewStyle; + QComboBox* m_sidebarStyle; }; Index: widgets.h =================================================================== --- widgets.h (revision 7322) +++ widgets.h (working copy) @@ -111,27 +111,37 @@ /** - * Specialisation of QGroupBox that selects a slightly-smaller- - * than-normal font size and draws its title in bold. Not - * terrifically exciting. + * An flat QFrame, in which a group of parameters can be laid out. + * Virtual method functions are defined for for requesting a layout + * style, and returning the single-word to use for labelling the + * box. */ -class RosegardenParameterBox : public QGroupBox +class RosegardenParameterBox : public QFrame { - Q_OBJECT + Q_OBJECT public: - RosegardenParameterBox(int strips, - Orientation orientation, - QString label, - QWidget *parent = 0, - const char *name = 0); + RosegardenParameterBox(const QString &label, QWidget *parent = 0, + const char *name = 0); - RosegardenParameterBox(QString label, - QWidget *parent = 0, - const char *name = 0); + // Ask for a one-word string that can be used to label the widget. + QString getLabel() const; + protected: - void init(); - QFont m_font; + void init(); + + // List the layout styles that may be requested via a call to setStyle(). + + enum LayoutMode { + LANDSCAPE_MODE, // Optimize the layout for a tall and narrow parent. + PORTRAIT_MODE // Optimize the layout for a short and wide parent. + }; + + void setLayoutMode(LayoutMode mode); + + QFont m_font; + QString m_label; // The string that containers can use for labelling. + LayoutMode m_mode; // The current layout mode. }; class RosegardenProgressDialog : public KProgressDialog Index: SConscript =================================================================== --- SConscript (revision 7322) +++ SConscript (working copy) @@ -110,7 +110,8 @@ rosegardenguidoc.cpp rosegardenguiiface.cpp rosegardenguiiface.skel -rosegardenguiview.cpp +rosegardenguiview.cpp +rosegardenparameterarea.cpp rosegardenscrollview.cpp rosegardentransport.ui rosegardentransportdialog.cpp Index: rosegardengui.h =================================================================== --- rosegardengui.h (revision 7322) +++ rosegardengui.h (working copy) @@ -32,6 +32,7 @@ #include "dialogs.h" #include "rosegardendcop.h" #include "rosegardenguiiface.h" +#include "rosegardenparameterarea.h" #include "AudioFile.h" #include "Sound.h" @@ -1304,6 +1305,10 @@ // void slotUpdateAutoSaveInterval(unsigned int interval); + // Update the side-bar when the configuration page changes its style. + // + void slotUpdateSidebarStyle(unsigned int style); + /** * called when the PlayList is being closed */ @@ -1554,6 +1559,8 @@ StartupTester *m_startupTester; + RosegardenParameterArea *m_parameterArea; + #ifdef HAVE_LIRC LircClient *m_lircClient; LircCommander *m_lircCommander; Index: segmentparameterbox.cpp =================================================================== --- segmentparameterbox.cpp (revision 7322) +++ segmentparameterbox.cpp (working copy) @@ -44,7 +44,7 @@ SegmentParameterBox::SegmentParameterBox(RosegardenGUIDoc* doc, QWidget *parent) - : RosegardenParameterBox(i18n("Segment Parameters"), parent), + : RosegardenParameterBox(i18n("Segment"), parent), m_standardQuantizations(Rosegarden::BasicQuantizer::getStandardQuantizations()), m_doc(doc), m_transposeRange(24) @@ -76,7 +76,7 @@ int comboHeight = std::max(fontMetrics.height(), 13) + 10; // QFrame *frame = new QFrame(this); - QGridLayout *gridLayout = new QGridLayout(this, 6, 4, 4, 2); + QGridLayout *gridLayout = new QGridLayout(this, 6, 5, 4, 2); QLabel *label = new QLabel(i18n("Label"), this); QLabel *repeatLabel = new QLabel(i18n("Repeat"), this); @@ -88,21 +88,17 @@ m_fadeInLabel = new QLabel(i18n("Fade in"), this); m_fadeOutLabel = new QLabel(i18n("Fade out"), this); - // HBox for label - // - QHBox *hbox = new QHBox(this); - // Label .. - m_label = new QLabel(hbox); + m_label = new QLabel(this); m_label->setFont(font); m_label->setFixedWidth(120); m_label->setFixedHeight(comboHeight); m_label->setFrameStyle(QFrame::Panel | QFrame::Sunken); // .. and edit button - m_labelButton = new QPushButton("...", hbox); + m_labelButton = new QPushButton(i18n("Edit"), this); m_labelButton->setFont(font); - m_labelButton->setFixedWidth(25); + m_labelButton->setFixedWidth(50); connect(m_labelButton, SIGNAL(released()), SLOT(slotEditSegmentLabel())); @@ -197,7 +193,8 @@ gridLayout->addRowSpacing(0, 12); gridLayout->addWidget(label, 1, 0, AlignRight); - gridLayout->addMultiCellWidget(hbox, 1, 1, 1, 3, AlignLeft); + gridLayout->addMultiCellWidget(m_label, 1, 1, 1, 2, AlignLeft); + gridLayout->addWidget(m_labelButton, 1, 3, AlignLeft); gridLayout->addWidget(repeatLabel, 2, 0, AlignRight); gridLayout->addWidget(m_repeatValue, 2, 1, AlignLeft); @@ -223,6 +220,15 @@ gridLayout->addWidget(m_fadeOutLabel, 5, 2, AlignRight); gridLayout->addWidget(m_fadeOutSpin, 5, 3); + // Configure the empty final row to accomodate any extra vertical space. + + gridLayout->setRowStretch(gridLayout->numRows()-1, 1); + + // Configure the empty final column to accomodate any extra horizontal + // space. + + gridLayout->setColStretch(gridLayout->numCols()-1, 1); + // populate the quantize combo // QPixmap noMap = NotePixmapFactory::toQPixmap(NotePixmapFactory::makeToolbarPixmap("menu-no-note")); Index: instrumentparameterbox.cpp =================================================================== --- instrumentparameterbox.cpp (revision 7322) +++ instrumentparameterbox.cpp (working copy) @@ -68,7 +68,7 @@ InstrumentParameterBox::InstrumentParameterBox(RosegardenGUIDoc *doc, QWidget *parent) - : RosegardenParameterBox(1, Qt::Horizontal, i18n("Instrument Parameters"), parent), + : RosegardenParameterBox(i18n("Instrument"), parent), m_widgetStack(new QWidgetStack(this)), m_noInstrumentParameters(new QVBox(this)), m_midiInstrumentParameters(new MIDIInstrumentParameterPanel(doc, this)), @@ -132,6 +132,12 @@ SIGNAL(instrumentParametersChanged(Rosegarden::InstrumentId)), this, SIGNAL(instrumentParametersChanged(Rosegarden::InstrumentId))); + +// Layout the groups left to right. + + QBoxLayout* layout = new QVBoxLayout(this); + layout->addWidget(m_widgetStack); + } InstrumentParameterPanel::InstrumentParameterPanel(RosegardenGUIDoc *doc, @@ -651,7 +657,7 @@ m_rotaryMapper(new QSignalMapper(this)) { //m_mainGrid = new QGridLayout(this, 9, 3, 8, 1); - m_mainGrid = new QGridLayout(this, 9, 3, 2, 1); + m_mainGrid = new QGridLayout(this, 10, 4, 2, 1); QGridLayout *m_channelGrid = new QGridLayout(this, 1, 4, 1, 6); m_connectionLabel = new QLabel(this); @@ -684,6 +690,15 @@ m_bankValue->setMinimumWidth(width); m_programValue->setMinimumWidth(width); + // Configure the empty final row to accomodate any extra vertical space. + + m_mainGrid->setRowStretch(m_mainGrid->numRows()-1, 1); + + // Configure the empty final column to accomodate any extra horizontal + // space. + + m_mainGrid->setColStretch(m_mainGrid->numCols()-1, 1); + m_mainGrid->addMultiCellWidget(m_instrumentLabel, 0, 0, 0, 2, AlignCenter); m_mainGrid->addMultiCellWidget(m_connectionLabel, 1, 1, 0, 2, AlignCenter); Index: rosegardenparameterarea.h =================================================================== --- rosegardenparameterarea.h (revision 0) +++ rosegardenparameterarea.h (revision 0) @@ -0,0 +1,89 @@ +// -*- c-basic-offset: 4 -*- + +/* + Rosegarden-4 + A sequencer and musical notation editor. + + This program is Copyright 2000-2006 + Guillaume Laurent <gla...@te...>, + Chris Cannam <ca...@al...>, + Richard Bown <bo...@bo...> + + The moral right of the authors to claim authorship of this work + has been asserted. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. See the file + COPYING included with this distribution for more information. +*/ + +#ifndef _ROSEGARDENPARAMETERS_H_ +#define _ROSEGARDENPARAMETERS_H_ + +#include <vector> +#include <qwidget.h> +#include <qwidgetstack.h> +#include <ktabwidget.h> +#include <qvgroupbox.h> + +#include "widgets.h" + +/** + * A widget that arranges a set of Rosegarden parameter-box widgets + * within a frame, in a dynamically configurable manner. + */ +class RosegardenParameterArea : public QWidgetStack +{ + Q_OBJECT +public: + + // Create the parameter display area. + + RosegardenParameterArea(QWidget *parent=0, const char *name=0, WFlags f=0); + + // Add a rosegarden parameter box to the list that are to be displayed. + + void addRosegardenParameterBox(RosegardenParameterBox *b); + + + // List the supported methods of arranging the various parameter-box + // widgets within the parameter area. + + enum Arrangement { + CLASSIC_STYLE, // A simple vertical tiling of parameter-box widgets. + TAB_BOX_STYLE // A horizontal list of tabs, displaying one box at a time. + }; + + // Redisplay the widgets with a different layout style. + + void setArrangement(Arrangement style); + +protected: +private: + Arrangement m_style; // The current layout style. + + // The list of parameter box widgets that are being displayed by this + // widget. + + std::vector<RosegardenParameterBox *> m_parameter_boxes; + + // Create a parallel array of group boxes, to be used when the + // corresponding parameter box widget needs to be enclosed by a + // titled outline. + + std::vector<QVGroupBox *> m_group_boxes; + + // Move a RosegardenParameterBox widget from one container to another. + + void moveWidget(QWidget *old_container, QWidget *new_container, + int index); + + QVBox *m_classic; // The container widget for m_style==CLASSIC_STYLE. + KTabWidget *m_tab_box; // The container widget for m_style==TAB_BOX_STYLE. + QWidget *m_active; // The current container widget. + +}; + +#endif // _ROSEGARDENPARAMETERS_H_ Index: rosegardenconfigurationpage.cpp =================================================================== --- rosegardenconfigurationpage.cpp (revision 7322) +++ rosegardenconfigurationpage.cpp (working copy) @@ -92,6 +92,7 @@ #include "audiopluginmanager.h" #include "segmentcommands.h" #include "rgapplication.h" +#include "rosegardenparameterarea.h" #include "rosegardenconfigurationpage.h" @@ -156,7 +157,7 @@ // QFrame *frame = new QFrame(m_tabWidget); QGridLayout *layout = new QGridLayout(frame, - 5, 2, // nbrow, nbcol -- one extra row improves layout + 6, 2, // nbrow, nbcol -- one extra row improves layout 10, 5); layout->addWidget(new QLabel(i18n("Note name style"), frame), 0, 0); @@ -170,6 +171,9 @@ new QLabel(i18n(" (takes effect only from next restart)"), box); layout->addWidget(box, 3, 0); + layout->addWidget(new QLabel(i18n("The organization of the side-bar"), + frame), 4, 0); + m_nameStyle = new KComboBox(frame); m_nameStyle->insertItem(i18n("Always use US names (e.g. quarter, 8th)")); m_nameStyle->insertItem(i18n("Localized (where available)")); @@ -195,6 +199,16 @@ m_backgroundTextures->setChecked(m_cfg->readBoolEntry("backgroundtextures", true)); + m_sidebarStyle = new KComboBox(frame); + m_sidebarStyle->insertItem(i18n("Display parameter groups tiled vertically"), + RosegardenParameterArea::CLASSIC_STYLE); + m_sidebarStyle->insertItem(i18n("Display parameter groups under tabs"), + RosegardenParameterArea::TAB_BOX_STYLE); + + m_sidebarStyle->setCurrentItem(m_cfg->readUnsignedNumEntry("sidebarstyle", + 1)); + layout->addWidget(m_sidebarStyle, 4, 1); + addTab(frame, i18n("Presentation")); // @@ -312,6 +326,10 @@ m_cfg->writeEntry("backgroundtextures", m_backgroundTextures->isChecked()); + int sidebarStyle = m_sidebarStyle->currentItem(); + m_cfg->writeEntry("sidebarstyle", sidebarStyle); + emit updateSidebarStyle(sidebarStyle); + m_cfg->writeEntry("autosave", m_autosave->isChecked()); unsigned int autosaveInterval = m_autosaveInterval->value(); Index: rosegardenparameterarea.cpp =================================================================== --- rosegardenparameterarea.cpp (revision 0) +++ rosegardenparameterarea.cpp (revision 0) @@ -0,0 +1,156 @@ +// -*- c-basic-offset: 4 -*- + +/* + Rosegarden-4 + A sequencer and musical notation editor. + + This program is Copyright 2000-2006 + Guillaume Laurent <gla...@te...>, + Chris Cannam <ca...@al...>, + Richard Bown <bo...@bo...> + + The moral right of the authors to claim authorship of this work + has been asserted. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. See the file + COPYING included with this distribution for more information. +*/ + +#include <iostream> + +#include <klocale.h> + +#include "rosegardenparameterarea.h" + +RosegardenParameterArea::RosegardenParameterArea(QWidget *parent, + const char *name, WFlags f) + : QWidgetStack(parent, name, f), + m_style(RosegardenParameterArea::CLASSIC_STYLE), + m_classic(new QVBox(this)), + m_tab_box(new KTabWidget(this)), + m_active(0) +{ + +// Install the classic-style VBox widget in the widget-stack. + + addWidget(m_classic, CLASSIC_STYLE); + +// Install the widget that implements the tab-style to the widget-stack. + + addWidget(m_tab_box, TAB_BOX_STYLE); + +} + +// Add a RosegardeParameterWidget to a RosegardenParameterArea widget +// and queue a redisplay of the area, to display the new widget. + +void RosegardenParameterArea::addRosegardenParameterBox( + RosegardenParameterBox *b) +{ + // Check that the box hasn't been added before. + + for(int i=0; i<m_parameter_boxes.size(); i++) { + if(m_parameter_boxes[i] == b) + return; + } + + // Append the parameter box to the list to be displayed. + + m_parameter_boxes.push_back(b); + + // Create a titled group box for the parameter box, parented by the + // classic layout widget, so that it can be used to provide a title + // and outline, in classic mode. Add this container to an array that + // parallels the above array of parameter boxes. + + m_group_boxes.push_back(new QVGroupBox(b->getLabel() + i18n(" Parameters"), + m_classic)); + + // Add the parameter box to the current container of the displayed + // widgets, unless the current container has been set up yet. + + if(m_active) + moveWidget(0, m_active, m_parameter_boxes.size()-1); + + // Queue a redisplay of the parameter area, to incorporate the new box. + + update(); +} + +// Select a new display arrangement, and queue a redisplay to instantiate it. + +void RosegardenParameterArea::setArrangement(Arrangement style) +{ + // Lookup the container of the specified style. + + QWidget *container; + switch(style) { + case CLASSIC_STYLE: + container = m_classic; + break; + case TAB_BOX_STYLE: + container = m_tab_box; + break; + default: + std::cerr << "setArrangement() was passed an unknown arrangement style." + << std::endl; + return; + } + +// Does the current container of the parameter-box widgets differ from +// the one that is associated with the currently configured style? + + if(container != m_active) { + + // Move the parameter boxes from the old container to the new one. + + for(int i=0; i<m_parameter_boxes.size(); i++) + moveWidget(m_active, container, i); + + // Switch the widget stack to displaying the new container. + + raiseWidget(style); + + } + +// Record the identity of the active container, and the associated +// arrangement style. + + m_active = container; + m_style = style; +} + +// Move a parameter box widget from one widget-container to another. + +void RosegardenParameterArea::moveWidget(QWidget *old_container, + QWidget *new_container, + int index) +{ + // Get the parameter box widget that is to be moved. + + RosegardenParameterBox *b = m_parameter_boxes[index]; + + // Remove any state that is associated with the parameter boxes, + // from the active container. + + if(old_container == m_classic) { + ; + } else if(old_container == m_tab_box) { + m_tab_box->removePage(b); + } + + // Reparent the paramter box, and perform any container-specific + // configuration. + + if(new_container == m_classic) { + b->reparent(m_group_boxes[index], 0, QPoint(0,0), FALSE); + } else if(new_container == m_tab_box) { + b->reparent(new_container, 0, QPoint(0,0), FALSE); + m_tab_box->insertTab(b, b->getLabel()); + } +} + +#include "rosegardenparameterarea.moc" Index: widgets.cpp =================================================================== --- widgets.cpp (revision 7322) +++ widgets.cpp (working copy) @@ -100,24 +100,16 @@ } -RosegardenParameterBox::RosegardenParameterBox(int strips, - Orientation orientation, - QString label, +RosegardenParameterBox::RosegardenParameterBox(const QString &label, QWidget *parent, const char *name) : - QGroupBox(strips, orientation, label, parent, name) + QFrame(parent, name), + m_label(label), + m_mode(LANDSCAPE_MODE) { - init(); + init(); } -RosegardenParameterBox::RosegardenParameterBox(QString label, - QWidget *parent, - const char *name) : - QGroupBox(label, parent, name) -{ - init(); -} - void RosegardenParameterBox::init() { QFont plainFont; @@ -134,7 +126,13 @@ setFont(boldFont); } +// Return the string that should be used to label a given parameter box. +QString RosegardenParameterBox::getLabel() const +{ + return m_label; +} + bool RosegardenProgressDialog::m_modalVisible = false; RosegardenProgressDialog::RosegardenProgressDialog(QWidget *creator, Index: rosegardengui.cpp =================================================================== --- rosegardengui.cpp (revision 7322) +++ rosegardengui.cpp (working copy) @@ -29,7 +29,6 @@ #include <qlayout.h> #include <qvaluevector.h> #include <qtextcodec.h> -#include <qtabwidget.h> // include files for KDE #include <kcursor.h> @@ -262,11 +261,12 @@ #endif m_playTimer(new QTimer(this)), m_stopTimer(new QTimer(this)), - m_startupTester(0) + m_startupTester(0), #ifdef HAVE_LIRC - , m_lircClient(0), - m_lircCommander(0) + m_lircClient(0), + m_lircCommander(0), #endif + m_parameterArea(0) { m_myself = this; @@ -353,34 +353,27 @@ RosegardenGUIDoc* doc = new RosegardenGUIDoc(this, m_pluginManager); - QFrame* vbox = new QFrame(m_dockLeft); - QVBoxLayout* vboxLayout = new QVBoxLayout(vbox, 5); - m_dockLeft->setWidget(vbox); + m_parameterArea = new RosegardenParameterArea(m_dockLeft); + m_dockLeft->setWidget(m_parameterArea); -/* - m_segmentParameterBox = new SegmentParameterBox(doc, vbox); - vboxLayout->addWidget(m_segmentParameterBox); - m_instrumentParameterBox = new InstrumentParameterBox(doc, vbox); - vboxLayout->addWidget(m_instrumentParameterBox); -*/ + // Populate the parameter-box area with the respective + // parameter box widgets. - // Create a list of parameter-box tabs. + m_segmentParameterBox = new SegmentParameterBox(doc, m_parameterArea); + m_parameterArea->addRosegardenParameterBox(m_segmentParameterBox); + m_instrumentParameterBox = new InstrumentParameterBox(doc, m_parameterArea); + m_parameterArea->addRosegardenParameterBox(m_instrumentParameterBox); - QTabWidget* tabs = new QTabWidget(vbox, "IPB"); + // Lookup the configuration parameter that specifies the default + // arrangement, and instantiate it. - // Add the tabs to the parent frame of the IPB. + kapp->config()->setGroup(Rosegarden::GeneralOptionsConfigGroup); + m_parameterArea->setArrangement((RosegardenParameterArea::Arrangement) + kapp->config()->readUnsignedNumEntry("sidebarstyle", + RosegardenParameterArea::TAB_BOX_STYLE)); + + m_dockLeft->update(); - vboxLayout->addWidget(tabs); - - // Populate the tabs with the respective parameter box widgets. - - m_segmentParameterBox = new SegmentParameterBox(doc, tabs); - tabs->addTab(m_segmentParameterBox, "Segment"); - m_instrumentParameterBox = new InstrumentParameterBox(doc, tabs); - tabs->addTab(m_instrumentParameterBox, "Instrument"); - - vboxLayout->addStretch(); - connect(m_instrumentParameterBox, SIGNAL(selectPlugin(QWidget *, Rosegarden::InstrumentId, int)), this, @@ -5394,6 +5387,8 @@ connect(configDlg, SIGNAL(updateAutoSaveInterval(unsigned int)), this, SLOT(slotUpdateAutoSaveInterval(unsigned int))); + connect(configDlg, SIGNAL(updateSidebarStyle(unsigned int)), + this, SLOT(slotUpdateSidebarStyle(unsigned int))); configDlg->show(); } @@ -7505,7 +7500,15 @@ m_autoSaveTimer->changeInterval(int(interval) * 1000); } +void +RosegardenGUIApp::slotUpdateSidebarStyle(unsigned int style) +{ + RG_DEBUG << "RosegardenGUIApp::slotUpdateSidebarStyle - " + << "changed style to " << style << endl; + m_parameterArea->setArrangement((RosegardenParameterArea::Arrangement) style); +} + void RosegardenGUIApp::slotShowTip() { |
From: D. M. 'S. M. <ros...@gm...> - 2006-06-30 15:16:31
|
On Thursday 29 June 2006 7:02 am, Martin Shepherd wrote: > The following patch was the output of 'svn diff gui', after I updated > my copy of the rosegarden code with the trunk, and resolved the one > resulting conflict. Note that along with changes to existing files, > this patch also includes two new files, which would need to be 'svn > add'ed, if you wanted to commit the patch somewhere. The two new files > are called rosegardenparameterarea.h and rosegardenparameterarea.cpp. Looks and sounds great, but most of the hunks fail to apply to my 7323 tree. I don't see why that should be the case. I haven't changed anything that should conflict here. I'm probably just a dumbass. -- D. Michael 'Silvan' McIntyre ---- Silvan <dmm...@us...> Linux fanatic, and certified Geek; registered Linux user #243621 Author of Rosegarden Companion http://rosegarden.sourceforge.net/tutorial/ |
From: Pedro Lopez-C. <ped...@gm...> - 2006-06-30 15:31:06
|
On Friday, 30 June 2006 17:16, D. Michael 'Silvan' McIntyre wrote: > On Thursday 29 June 2006 7:02 am, Martin Shepherd wrote: > > The following patch was the output of 'svn diff gui', after I updated > > my copy of the rosegarden code with the trunk, and resolved the one > > resulting conflict. Note that along with changes to existing files, > > this patch also includes two new files, which would need to be 'svn > > add'ed, if you wanted to commit the patch somewhere. The two new files > > are called rosegardenparameterarea.h and rosegardenparameterarea.cpp. > > Looks and sounds great, but most of the hunks fail to apply to my 7323 > tree. I don't see why that should be the case. I haven't changed anything > that should conflict here. > > I'm probably just a dumbass. It fails here too. Martin: Can you send your patch again, this time as an attachement, please? Example of my results: $ patch -p0 < ~/Documents/rosegarden/Martin_Shepherd_New_Parameter_Area.patch patching file rosegardenconfiguredialog.h Hunk #1 FAILED at 66. 1 out of 1 hunk FAILED -- saving rejects to file rosegardenconfiguredialog.h.rej patching file rosegardenconfiguredialog.cpp Hunk #1 FAILED at 168. 1 out of 1 hunk FAILED -- saving rejects to file rosegardenconfiguredialog.cpp.rej patching file rosegardenconfigurationpage.h Hunk #1 FAILED at 188. Hunk #2 FAILED at 209. 2 out of 2 hunks FAILED -- saving rejects to file rosegardenconfigurationpage.h.rej patching file widgets.h Hunk #1 FAILED at 111. 1 out of 1 hunk FAILED -- saving rejects to file widgets.h.rej patching file SConscript Hunk #1 FAILED at 110. 1 out of 1 hunk FAILED -- saving rejects to file SConscript.rej patching file rosegardengui.h Hunk #1 FAILED at 32. Hunk #2 FAILED at 1305. Hunk #3 FAILED at 1559. 3 out of 3 hunks FAILED -- saving rejects to file rosegardengui.h.rej patching file segmentparameterbox.cpp Hunk #1 FAILED at 44. Hunk #2 FAILED at 76. Hunk #3 FAILED at 88. Hunk #4 FAILED at 193. Hunk #5 FAILED at 220. 5 out of 5 hunks FAILED -- saving rejects to file segmentparameterbox.cpp.rej patching file instrumentparameterbox.cpp Hunk #1 FAILED at 68. Hunk #2 FAILED at 132. Hunk #3 FAILED at 657. Hunk #4 FAILED at 690. 4 out of 4 hunks FAILED -- saving rejects to file instrumentparameterbox.cpp.rej patching file rosegardenparameterarea.h patching file rosegardenconfigurationpage.cpp Hunk #1 FAILED at 92. Hunk #2 FAILED at 157. Hunk #3 FAILED at 171. Hunk #4 FAILED at 199. Hunk #5 FAILED at 326. 5 out of 5 hunks FAILED -- saving rejects to file rosegardenconfigurationpage.cpp.rej patching file rosegardenparameterarea.cpp patching file widgets.cpp Hunk #1 FAILED at 100. Hunk #2 FAILED at 126. 2 out of 2 hunks FAILED -- saving rejects to file widgets.cpp.rej patching file rosegardengui.cpp Hunk #1 FAILED at 29. Hunk #2 FAILED at 261. Hunk #3 FAILED at 353. Hunk #4 FAILED at 5387. Hunk #5 FAILED at 7500. 5 out of 5 hunks FAILED -- saving rejects to file rosegardengui.cpp.rej Regards, Pedro |
From: Martin S. <mc...@as...> - 2006-06-30 20:05:56
Attachments:
rosegarden_patch
|
On Fri, 30 Jun 2006, Pedro Lopez-Cabanillas wrote: > It fails here too. Martin: Can you send your patch again, this time as an > attachement, please? Sorry about that. I previously sent it inline, because I didn't know whether an attachment would make it into the mailing-list archive. Anyway, I have added it as an attachment of this file. Note that whereas previously I said that the patch was the result of typing "svn diff gui", it turns out that it was actually the result of just typing "svn diff" from within the gui directory. Maybe this is what caused the problem? I have now regenerated the patch, and this time really done an "svn diff gui", from the top-level rosegarden directory. The result is attached. Martin |
From: D. M. 'S. M. <ros...@gm...> - 2006-06-30 21:26:07
|
On Friday 30 June 2006 4:05 pm, Martin Shepherd wrote: > Sorry about that. I previously sent it inline, because I didn't know OK, that one applied. I'll build it, and if it doesn't break anything, commit it. -- D. Michael 'Silvan' McIntyre ---- Silvan <dmm...@us...> Linux fanatic, and certified Geek; registered Linux user #243621 Author of Rosegarden Companion http://rosegarden.sourceforge.net/tutorial/ |
From: D. M. 'S. M. <ros...@gm...> - 2006-06-30 21:31:26
|
On Friday 30 June 2006 5:26 pm, D. Michael 'Silvan' McIntyre wrote: > On Friday 30 June 2006 4:05 pm, Martin Shepherd wrote: > > Sorry about that. I previously sent it inline, because I didn't know > > OK, that one applied. I'll build it, and if it doesn't break anything, > commit it. Uh, Pedro already did, apparently. Have fun in Chile. -- D. Michael 'Silvan' McIntyre ---- Silvan <dmm...@us...> Linux fanatic, and certified Geek; registered Linux user #243621 Author of Rosegarden Companion http://rosegarden.sourceforge.net/tutorial/ |
From: Pedro Lopez-C. <ped...@gm...> - 2006-06-30 22:10:56
|
On Friday, 30 June 2006 23:31, D. Michael 'Silvan' McIntyre wrote: > Uh, Pedro already did, apparently. You was not quick enough. Too much water? > Have fun in Chile. Happy trip, Martin. Regards, Pedro |
From: Pedro Lopez-C. <ped...@gm...> - 2006-06-30 21:40:26
|
On Friday, 30 June 2006 22:05, Martin Shepherd wrote: > I have now regenerated the patch, and this time really > done an "svn diff gui", from the top-level rosegarden directory. The > result is attached. > > Martin Applied and compiled fine, and I like how you solved the problem. Thank you very much. I've committed your work to trunk (revision #7325). I will add the TrackParameterBox this weekend, and take a look to the layout of the parameter boxes. I think that even the "landscape" layout can be a bit narrower. Regards, Pedro |
From: Martin S. <mc...@as...> - 2006-07-01 04:28:30
|
On Fri, 30 Jun 2006, Pedro Lopez-Cabanillas wrote: > Applied and compiled fine, and I like how you solved the problem. Thank you > very much. I've committed your work to trunk (revision #7325). Thanks. Martin |
From: Martin S. <mc...@as...> - 2006-07-01 05:33:05
|
Regarding dynamic selection of portrait/landscape layouts within the parameter boxes, I still need to think some more about exactly how to handle this (unless somebody else gets there first). However, the following is what comes to mind right now: My aim is to find an approach that delegates the job of switching between internal layouts to a method of the RosegardenParameterBox widget, that all of the parameter box widgets inherit, so that the individual parameter box widgets don't end up being sprinkled with code to do this switching. In other words, I would like the RosegardenParameterBox widget to have methods that its derived parameter-box classes can call, to tell the RosegardenParameterBox where they want specific widgets to be placed, whenever a specific layout is called. It would then be up to the default setLayout() method of the RosegardenParameterBox widget, to subsequently layout the internal widgets at specified locations, whenever it received a request to set the internal layout. One approach towards this, would for the RosegardenParameterBox widget to encapsulate a grid layout, and then provide equivalent method functions to those that the QGridLayout class provides, for the addition of widgets to the layout, along with the addition of a LayoutMode argument, for specifying which mode that specific placement belonged to. For example: RosegardenParameterBox::addWidget(LayoutMode mode, QWidget *w, int row, int col, int alignment); This would add the above specification, along with its association with the specified layout-mode, to an internal list of specifications, rather than directly forwarding this to the QGridLayout object. Subsequently, when the setLayout() method call was invoked, the setLayout() method would go through this list twice. First it would go through the list, looking for specifications associated with the previously selected layout mode (if any), and call QGridLayout::remove() for each of the associated widgets from the layout. Then it would go through the list a second time, looking for layout specifications associated with the newly requested layout mode, and in each case, call the appropriate one of the QGridLayout's add...Widget() calls, to add the widgets back to the layout, at their new locations. So then, where currently, the parameter-box widgets have one call to gridLayout->addWidget(), or gridLayout->addMultiCellWidget(), in the future they would have two; one for portrait mode, and one for landscape mode. For example, in the SegmentParameterBox, where one currently has: gridLayout->addWidget(quantizeLabel, 3, 0, AlignRight); one would need to change this to something like: addWidget(PORTRAIT_MODE, quantizeLabel, 3, 0, AlignRight); addWidget(LANDSCAPE_MODE, quantizeLabel, 5, 1, AlignRight); Martin |
From: D. M. 'S. M. <ros...@gm...> - 2006-07-01 03:05:40
|
On Thursday 29 June 2006 7:02 am, Martin Shepherd wrote: > At the moment, the result doesn't offer any improvements in > real-estate used, but it's a start. Now that I've actually seen the results... The "classic" style isn't so classic. The SPB takes up dramatically more space than it should, and the IPB doesn't have much room. It would probably be all but completely cut off on a screen less than 1024 tall. That needs massaging. Good work though, still. -- D. Michael 'Silvan' McIntyre ---- Silvan <dmm...@us...> Linux fanatic, and certified Geek; registered Linux user #243621 Author of Rosegarden Companion http://rosegarden.sourceforge.net/tutorial/ |
From: Martin S. <mc...@as...> - 2006-07-01 04:51:57
|
On Fri, 30 Jun 2006, D. Michael 'Silvan' McIntyre wrote: > On Thursday 29 June 2006 7:02 am, Martin Shepherd wrote: > The "classic" style isn't so classic. The SPB takes up dramatically more > space than it should, and the IPB doesn't have much room. What I imagine that you are seeing, is that the Segment Parameters box is sitting at the top of the area, and the Instrument Parameters box at the bottom, and there is lots of empty space at the bottom of the Segment Parameter box. This because, instead of the unused space appearing below the two parameter boxes, as it used to, the Segment Parameters box is filling up the extra room with space. If you try resizing the Rosegarden window vertically, you should see the unused space at the bottom of the Segment Paremeters box shrink, to make way for the Instrument Parameters box. For example, with 6 controllers, I can shrink the Rosegarden window to a height of 580 pixels, without losing anything, and in fact, it is the track display area that stops further shrinkage in this case, not the parameter boxes. So there is still some unused space at the bottom of the Instrument Paremeters box. Having said this, I agree that this isn't how it used to act, and the older behavior did look better. So, if I find some time in Chile, I will fix this. I might need to sneak in a QSpacerItem, when nobody is looking :-). Martin |
From: D. M. 'S. M. <ros...@gm...> - 2006-07-01 05:06:55
|
On Saturday 01 July 2006 12:51 am, you wrote: > resizing the Rosegarden window vertically, you should see the unused > space at the bottom of the Segment Paremeters box shrink, to make way > for the Instrument Parameters box. Indeed it does. Not bad. It was a knee-jerk reaction. > older behavior did look better. So, if I find some time in Chile, I > will fix this. I might need to sneak in a QSpacerItem, when nobody is > looking :-). Use all you want. Guillaume can't yell at you, because he claims to have never yelled at me, so it's open season on QSpacerItems as far as I can see. :D -- D. Michael 'Silvan' McIntyre ---- Silvan <dmm...@us...> Linux fanatic, and certified Geek; registered Linux user #243621 Author of Rosegarden Companion http://rosegarden.sourceforge.net/tutorial/ |