Browse Source

new menu bar

master
edgeeffect 21 years ago
parent
commit
6a8922c4d4
4 changed files with 578 additions and 612 deletions
  1. +16
    -23
      GUI/Widgets/Fl_Canvas.C
  2. +36
    -37
      GUI/Widgets/Fl_Canvas.h
  3. +475
    -484
      SpiralSynthModular.C
  4. +51
    -68
      SpiralSynthModular.h

+ 16
- 23
GUI/Widgets/Fl_Canvas.C View File

@@ -336,38 +336,31 @@ inline void Fl_Canvas::cb_OnDrag_i(Fl_Widget* widget, int xoffset,int yoffset)
o->position(o->x() + xoffset, o->y() + yoffset);
}
}
}
}
}
return;
}

inline void Fl_Canvas::cb_DeleteDeviceGroup_i()
{
if (! m_HaveSelection)
return;

//show some warning here

for (unsigned int i=0; i<m_Selection.m_DeviceIds.size(); i++)
{
int ID = m_Selection.m_DeviceIds[i];
Fl_DeviceGUI* o = FindDevice(ID);
if (o)
{
Fl_DeviceGUI::Kill(o);
}

}

m_HaveSelection=false;
m_Selection.Clear();
redraw();
void Fl_Canvas::DeleteSelection (void) {
if (! m_HaveSelection) return;
// show some warning here
for (unsigned int i=0; i<m_Selection.m_DeviceIds.size(); i++) {
int ID = m_Selection.m_DeviceIds[i];
Fl_DeviceGUI* o = FindDevice(ID);
if (o) Fl_DeviceGUI::Kill(o);
}
m_HaveSelection = false;
m_Selection.Clear();
redraw();
}

inline void Fl_Canvas::cb_DeleteDeviceGroup_i() {
DeleteSelection ();
}

void Fl_Canvas::PopupEditMenu(Fl_Group *group)
{
if (! (m_Menu))
if (! (m_Menu))
{
m_Menu = new Fl_Menu_Button(Fl::event_x(),Fl::event_x(),4,4,"Edit");
m_Menu->type(Fl_Menu_Button::POPUP123);


+ 36
- 37
GUI/Widgets/Fl_Canvas.h View File

@@ -61,12 +61,12 @@ class CanvasGroup
{
public:
CanvasGroup() { Clear(); }
void Clear()
void Clear()
{
m_DeviceIds.clear();
}
vector<int> m_DeviceIds;
};

@@ -76,7 +76,7 @@ public:
Fl_Canvas(int x, int y, int w, int h, char *name);
~Fl_Canvas();
Fl_Menu_Button *m_Menu;
virtual void draw();
virtual int handle(int event);
int globalhandle(int event);
@@ -88,20 +88,19 @@ public:
void SetUnconnectCallback(Fl_Callback* s) { cb_Unconnect=s; }
void SetAddDeviceCallback(Fl_Callback* s) { cb_AddDevice=s; }
void SetRenameCallback(Fl_Callback* s) { cb_Rename=s; }
void SetCutDeviceGroupCallback(Fl_Callback* s) { cb_CutDeviceGroup=s; }
void SetCopyDeviceGroupCallback(Fl_Callback* s) { cb_CopyDeviceGroup=s; }
void SetPasteDeviceGroupCallback(Fl_Callback* s) { cb_PasteDeviceGroup=s; }
void SetMergePatchCallback (Fl_Callback* s) { cb_MergePatch=s; }

void SetMergePatchCallback(Fl_Callback* s) { cb_MergePatch=s; }

void DeleteSelection (void);
void ClearConnections(Fl_DeviceGUI* Device);
void RemoveDevice(Fl_DeviceGUI* Device);
void Clear();
void AddPluginName(const string &s, int ID)
void AddPluginName(const string &s, int ID)
{ m_PluginNameList.push_back(pair<string,int>(s,ID)); }
GraphSort* GetGraph() { return &m_Graph; }
void Poll();

void ToTop(Fl_DeviceGUI *o);
@@ -113,38 +112,38 @@ public:
void StreamWiresIn(istream &s, bool merge, bool paste);

static void AppendSelection(int DeviceId, Fl_Canvas *data)
{
{
Fl_DeviceGUI *o = data->FindDevice(DeviceId);
if (o)
{
data->m_HaveSelection = true;
data->m_HaveSelection = true;
data->m_Selection.m_DeviceIds.push_back(DeviceId);
o->SetOnDragCallback(Fl_Canvas::cb_OnDrag_s, data);
data->redraw();
}
data->redraw();
}
}


static void ClearSelection(Fl_Canvas *data)
{
data->m_HaveSelection=false;
data->m_Selection.Clear();
static void ClearSelection(Fl_Canvas *data)
{
data->m_HaveSelection=false;
data->m_Selection.Clear();
data->redraw();
}

static void EnablePaste(Fl_Canvas *data)
{
data->m_CanPaste=true;
static void EnablePaste(Fl_Canvas *data)
{
data->m_CanPaste=true;
}
bool HaveSelection() {return m_HaveSelection; }
CanvasGroup Selection() { return m_Selection; }

static void SetDeviceCallbacks(Fl_DeviceGUI *device, Fl_Canvas *data)
{
{
device->SetOnDragCallback(Fl_Canvas::cb_OnDrag_s, data);
device->SetOnClickCallback(Fl_Canvas::cb_OnDragClick_s, data);
}
}

private:
void DrawSelection();
@@ -158,22 +157,22 @@ private:

Fl_Image *m_BG;
char *m_BGData;
void (*cb_Connection)(Fl_Widget*, void*);
void (*cb_Unconnect)(Fl_Widget*, void*);
void (*cb_AddDevice)(Fl_Widget*, void*);
void (*cb_Rename)(Fl_Widget*, void*);
void (*cb_CutDeviceGroup)(Fl_Widget*, void*);
void (*cb_CopyDeviceGroup)(Fl_Widget*, void*);
void (*cb_PasteDeviceGroup)(Fl_Widget*, void*);
void (*cb_MergePatch)(Fl_Widget*, void*);

map<int,int> MapNewDeviceIds;
vector<CanvasWire> m_WireVec;
CanvasWire m_IncompleteWire;
bool m_ToolMenu, m_ButtonDown;
int m_x,m_y,m_Selected;
vector< pair<string,int> > m_PluginNameList;
@@ -181,17 +180,17 @@ private:
GraphSort m_Graph;
int m_UpdateTimer;
int m_DragX,m_DragY;
bool m_HaveSelection, m_Selecting;
int m_StartSelectX,m_StartSelectY;
int m_EndSelectX,m_EndSelectY;

CanvasGroup m_Selection;
bool m_CanPaste;

friend istream &operator>>(istream &s, Fl_Canvas &o);
friend ostream &operator<<(ostream &s, Fl_Canvas &o);
friend ostream &operator<<(ostream &s, Fl_Canvas &o);

void PopupEditMenu(Fl_Group *group);

@@ -200,24 +199,24 @@ private:
inline void cb_OnDragClick_i(Fl_Widget* widget, int button,int shift_state)
{
if ((button==3) && ((shift_state & FL_CTRL) != 0))
{
{
PopupEditMenu(widget->parent());
}
if ((widget) && (button==1))
{
int ID = ((Fl_DeviceGUI*)(widget->parent()))->GetID();
std::vector<int>::iterator device_iter = std::find(m_Selection.m_DeviceIds.begin(), m_Selection.m_DeviceIds.end(), ID);

if (((shift_state & FL_SHIFT) != 0) || ((shift_state & FL_CTRL) != 0))
{
{
if (m_HaveSelection)
{
if (device_iter != m_Selection.m_DeviceIds.end())
m_Selection.m_DeviceIds.erase(device_iter);
m_Selection.m_DeviceIds.erase(device_iter);
else
m_Selection.m_DeviceIds.push_back(ID);
}
m_Selection.m_DeviceIds.push_back(ID);
}
else
{
m_Selection.Clear();
@@ -232,7 +231,7 @@ private:
m_Selection.m_DeviceIds.push_back(ID);
}
redraw();
}
}
}

inline void cb_DeleteDeviceGroup_i();


+ 475
- 484
SpiralSynthModular.C
File diff suppressed because it is too large
View File


+ 51
- 68
SpiralSynthModular.h View File

@@ -30,6 +30,7 @@
#include <FL/Fl_Pack.H>
#include <FL/Fl_Tile.H>
#include <FL/Fl_Tabs.H>
#include <FL/Fl_Menu_Bar.H>
#include <sstream>
#include <iostream>
#include <fstream>
@@ -124,8 +125,8 @@ public:

m_ResetingAudioThread = true;

ThawAll();
}
ThawAll();
}
}

// only for audio thread
@@ -140,8 +141,8 @@ private:
DeviceWin* NewComment(int n, int x, int y);

HostInfo m_Info;
bool m_ResetingAudioThread;
bool m_HostNeedsUpdate;
bool m_ResetingAudioThread, m_HostNeedsUpdate, m_Frozen;

static DeviceGUIInfo BuildDeviceGUIInfo(PluginInfo &PInfo);

@@ -150,98 +151,80 @@ private:
static map<int,DeviceWin*> m_DeviceWinMap;

int m_NextID;

static bool m_CallbackUpdateMode;
static bool m_BlockingOutputPluginIsReady;
string m_FilePath;
string m_MergeFilePath;
// Main GUI stuff
void CreateGUI(int xoff=0, int yoff=0, char *name="");

Fl_Pack *m_Topbar, *m_ToolbarPanel, *m_Toolbar;
Fl_Group *m_GroupFiller;
Fl_Button *m_Load;
Fl_Button *m_Save;
Fl_Button *m_New;
Fl_Button *m_Options;
Fl_Button *m_NewComment;

Fl_Pack *m_PlayResetGroup;
Fl_Button *m_PlayPause;
Fl_Button *m_Reset;
string m_FilePath, m_MergeFilePath;

// Main GUI stuff
void CreateGUI (int xoff=0, int yoff=0, char *name="");
Fl_Menu_Bar *m_MainMenu;
Fl_Pack *m_Topbar, *m_ToolbarPanel, *m_Toolbar;
Fl_Group *m_GroupFiller;
Fl_Button *m_Load, *m_Save, *m_New, *m_Options, *m_NewComment;
Fl_Pack *m_PlayResetGroup;
Fl_Button *m_PlayPause, *m_Reset;
Fl_Tabs *m_GroupTab;

Fl_Canvas *m_Canvas;
Fl_Scroll *m_CanvasScroll;

map<string,Fl_Pack*> m_PluginGroupMap;

SettingsWindow *m_SettingsWindow;

SpiralWindowType* m_TopWindow;

vector<Fl_Button*> m_DeviceVec;

ChannelHandler m_CH; // used for threadsafe communication
bool m_Frozen;
DeviceGroup m_Copied;

inline void cb_NewDevice_i(Fl_Button* o, void* v);
static void cb_NewDevice(Fl_Button* o, void* v);
inline void cb_NewDeviceFromMenu_i(Fl_Canvas* o, void* v);
static void cb_NewDeviceFromMenu(Fl_Canvas* o, void* v);
inline void cb_NewComment_i(Fl_Button* o, void* v);
static void cb_NewComment(Fl_Button* o, void* v);
inline void cb_Load_i(Fl_Button* o, void* v);
static void cb_Load(Fl_Button* o, void* v);
inline void cb_Save_i(Fl_Button* o, void* v);
static void cb_Save(Fl_Button* o, void* v);
inline void cb_New_i(Fl_Button* o, void* v);
static void cb_New(Fl_Button* o, void* v);
inline void cb_PlayPause_i(Fl_Button* o, void* v);
static void cb_PlayPause(Fl_Button* o, void* v);
inline void cb_Reset_i(Fl_Button* o, void* v);
static void cb_Reset(Fl_Button* o, void* v);
inline void cb_MergePatch_i();
static void cb_MergePatch(Fl_Canvas* o, SynthModular*v) { v->cb_MergePatch_i(); };

// File menu - and associated buttons, etc.
inline void cb_New_i (Fl_Widget *o, void *v);
static void cb_New (Fl_Widget *o, void *v);
inline void cb_Load_i (Fl_Widget *o, void *v);
static void cb_Load (Fl_Widget *o, void *v);
inline void cb_Save_i (Fl_Widget *o, void *v);
static void cb_Save (Fl_Widget *o, void *v);
inline void cb_Merge_i (Fl_Widget *o, void *v);
static void cb_Merge (Fl_Widget *o, void *v);
inline void cb_Close_i (Fl_Widget *o, void *v);
static void cb_Close (Fl_Widget *o, void *v);
// Edit menu
inline void cb_Cut_i (Fl_Widget *o, void *v);
static void cb_Cut (Fl_Widget *o, void *v);
inline void cb_Copy_i (Fl_Widget *o, void *v);
static void cb_Copy (Fl_Widget *o, void *v);
inline void cb_Paste_i (Fl_Widget *o, void *v);
static void cb_Paste (Fl_Widget *o, void *v);
inline void cb_Delete_i (Fl_Widget *o, void *v);
static void cb_Delete (Fl_Widget *o, void *v);
inline void cb_Options_i (Fl_Widget *o, void *v);
static void cb_Options (Fl_Widget *o, void *v);
// Plugin Menu
inline void cb_NewDevice_i (Fl_Button *o, void *v);
static void cb_NewDevice (Fl_Button *o, void *v);
inline void cb_NewDeviceFromMenu_i (Fl_Widget *o, void *v);
static void cb_NewDeviceFromMenu (Fl_Widget *o, void *v);
inline void cb_NewDeviceFromCanvasMenu_i (Fl_Canvas *o, void *v);
static void cb_NewDeviceFromCanvasMenu (Fl_Canvas *o, void *v);
// Audio Menu
inline void cb_PlayPause_i (Fl_Widget *o, void *v);
static void cb_PlayPause (Fl_Widget *o, void *v);
inline void cb_Reset_i (Fl_Widget *o, void *v);
static void cb_Reset (Fl_Widget *o, void *v);

inline void cb_Connection_i(Fl_Canvas* o, void* v);
static void cb_Connection(Fl_Canvas* o, void* v);
inline void cb_Unconnect_i(Fl_Canvas* o, void* v);
static void cb_Unconnect(Fl_Canvas* o, void* v);
inline void cb_Close_i(Fl_Window* o, void* v);
static void cb_Close(Fl_Window* o, void* v);

inline void cb_GroupTab_i(Fl_Tabs* o, void* v);
static void cb_GroupTab(Fl_Tabs* o, void* v);

inline void cb_Rload_i(Fl_Button* o, void* v);
static void cb_Rload(Fl_Button* o, void* v);

static void cb_Update(void* o, bool Mode);
static void cb_Blocking(void* o, bool Mode);
static void cb_UpdatePluginInfo(int ID, void *PluginInfo);

inline void cb_ChangeBufferAndSampleRate_i(long int NewBufferSize, long int NewSamplerate);

inline void cb_ChangeBufferAndSampleRate_i(long int NewBufferSize, long int NewSamplerate);
static void cb_ChangeBufferAndSampleRate(long unsigned int NewBufferSize, long unsigned int NewSamplerate, void *o)
{
((SynthModular*)o)->cb_ChangeBufferAndSampleRate_i(NewBufferSize, NewSamplerate);
}
DeviceGroup m_Copied;

inline void cb_CutDeviceGroup_i();
inline void cb_CopyDeviceGroup_i();
inline void cb_PasteDeviceGroup_i();

static void cb_CutDeviceGroup(Fl_Canvas* o, SynthModular*v) { v->cb_CutDeviceGroup_i(); };
static void cb_CopyDeviceGroup(Fl_Canvas* o, SynthModular*v) { v->cb_CopyDeviceGroup_i(); };
static void cb_PasteDeviceGroup(Fl_Canvas* o, SynthModular*v) { v->cb_PasteDeviceGroup_i(); };

friend istream &operator>>(istream &s, SynthModular &o);
friend ostream &operator<<(ostream &s, SynthModular &o);
};


Loading…
Cancel
Save