Changeset 458

Show
Ignore:
Timestamp:
01/06/07 01:11:22 (2 years ago)
Author:
radekk
Message:

Time marker support in progress.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sweep/branches/sweep-info-panel/include/sweep/sweep_types.h

    r457 r458  
    113113 * 
    114114 */ 
     115#define MARKER_COLOR_MAX        8 
     116 
    115117typedef struct _sw_mark sw_mark; 
    116118 
  • sweep/branches/sweep-info-panel/src/db_ruler.c

    r457 r458  
    242242  if (DB_RULER(widget)->dragging && (state & GDK_BUTTON1_MASK)) { 
    243243 
    244 g_print("Jestem ale nie wiem co robie!!!!\n"); 
    245  
    246244    ydelta = DB_RULER(widget)->y - y; 
    247245 
     
    330328  DB_RULER(widget)->dragging = FALSE; 
    331329 
    332 g_print("db_ruler_leave_notify\n"); 
    333    
    334330  return TRUE; 
    335331} 
  • sweep/branches/sweep-info-panel/src/info-panel.c

    r457 r458  
    309309{ 
    310310        GtkTreeStore * treestore; 
    311         GtkTreeIter toplevel, child; 
     311        GtkTreeIter toplevel; //, child; 
    312312//      GdkPixbuf * icon; 
    313313 
     
    319319                       G_TYPE_UINT,             // color 
    320320                       G_TYPE_UINT,             // mtype 
     321                       G_TYPE_POINTER,          // pointer 
    321322                       G_TYPE_BOOLEAN,          // ed_name 
    322323                       G_TYPE_BOOLEAN           // ed_value 
     
    373374        info_panel_models * info_s; 
    374375 
    375         info_s = g_malloc ( sizeof (info_panel_models) ); 
     376        info_s = g_malloc0 ( sizeof (info_panel_models) ); 
    376377 
    377378        info_s->sample = info_panel_create_sample_model (); 
     
    679680} 
    680681 
     682void info_panel_markers_info_update (sw_sample * sample) 
     683{ 
     684        GtkTreeModel * info_panel; 
     685        GtkTreeIter iter, child, child_data; 
     686#define BUF_LEN 64 
     687        gchar buf[BUF_LEN], mtime [BUF_LEN]; 
     688        gint a,n,nn,nmark; 
     689        GList * gl; 
     690        sw_mark * mark; 
     691 
     692        if (sample->info_panel == NULL) 
     693                return; 
     694 
     695        info_panel = sample->info_panel->markers; 
     696 
     697        gtk_tree_model_get_iter_from_string(info_panel, &iter, "0"); 
     698 
     699        n = gtk_tree_model_iter_n_children(info_panel, &iter); 
     700         
     701        nmark = g_list_length(sample->sounddata->marks); 
     702 
     703        /*  
     704         * we have more markers then available data slots  
     705         * so we have to add some data slots  
     706         */ 
     707        if (nmark > n){ 
     708                 
     709                for (a = 0; a < (nmark - n); a++){ 
     710                 
     711                        gtk_tree_store_append(GTK_TREE_STORE(info_panel), &child, &iter); 
     712                        gtk_tree_store_set(GTK_TREE_STORE(info_panel), &child, 
     713                                                INFO_PANEL_MARKERS_COL_TYPE, INFO_PANEL_MARKERS_NAME, 
     714                                                -1); 
     715                         
     716                        gtk_tree_store_append(GTK_TREE_STORE(info_panel), &child_data, &child); 
     717                        gtk_tree_store_set(GTK_TREE_STORE(info_panel), &child_data, 
     718                                                INFO_PANEL_MARKERS_COL_TYPE, INFO_PANEL_MARKERS_FRAME, 
     719                                                INFO_PANEL_MARKERS_COL_NAME, "Time", 
     720                                                -1); 
     721                         
     722                        gtk_tree_model_iter_next(info_panel, &child_data); 
     723                        gtk_tree_store_append(GTK_TREE_STORE(info_panel), &child_data, &child); 
     724                        gtk_tree_store_set(GTK_TREE_STORE(info_panel), &child_data, 
     725                                                INFO_PANEL_MARKERS_COL_TYPE, INFO_PANEL_MARKERS_COLOR, 
     726                                                INFO_PANEL_MARKERS_COL_NAME, "Color", 
     727                                                -1); 
     728                         
     729                        gtk_tree_model_iter_next(info_panel, &child_data); 
     730                        gtk_tree_store_append(GTK_TREE_STORE(info_panel), &child_data, &child); 
     731                        gtk_tree_store_set(GTK_TREE_STORE(info_panel), &child_data, 
     732                                                INFO_PANEL_MARKERS_COL_TYPE, INFO_PANEL_MARKERS_TYPE, 
     733                                                INFO_PANEL_MARKERS_COL_NAME, "Type", 
     734                                                -1); 
     735                } 
     736                 
     737        } else 
     738 
     739        /*  
     740         * we have more data slots then markers  
     741         * we have to remove some of data slots 
     742         */ 
     743        if (nmark < n){ 
     744                 
     745                gtk_tree_model_get_iter_from_string(info_panel, &child, "0:0"); 
     746                 
     747                for (a = 0; a < (n - nmark); a++){ 
     748                        gtk_tree_model_iter_children (info_panel, &child_data, &child); 
     749                         
     750                        gtk_tree_store_remove(GTK_TREE_STORE(info_panel), &child_data); 
     751                        gtk_tree_store_remove(GTK_TREE_STORE(info_panel), &child_data); 
     752                        gtk_tree_store_remove(GTK_TREE_STORE(info_panel), &child_data); 
     753 
     754                        gtk_tree_store_remove(GTK_TREE_STORE(info_panel), &child); 
     755                } 
     756        } 
     757 
     758        if (nmark > 0){ 
     759 
     760                nn = 1; 
     761                 
     762                gtk_tree_model_get_iter_from_string(info_panel, &child, "0:0"); 
     763 
     764                g_mutex_lock(sample->sounddata->marks_mutex); 
     765 
     766                for (gl = sample->sounddata->marks; gl; gl = gl->next) { 
     767                        mark = (sw_mark *)gl->data; 
     768                         
     769                        g_snprintf (buf, BUF_LEN, "#%d", nn++);  
     770                         
     771                        snprint_time(mtime, BUF_LEN, frames_to_time (sample->sounddata->format, mark->frame)); 
     772 
     773                        gtk_tree_store_set(GTK_TREE_STORE(info_panel), &child, 
     774                                        INFO_PANEL_MARKERS_COL_NAME, mark->name ? mark->name : buf, 
     775//                                      INFO_PANEL_MARKERS_COL_VALUE, mtime, 
     776                                        INFO_PANEL_MARKERS_COL_POINTER, gl, 
     777                                        INFO_PANEL_MARKERS_COL_EDITABLE_NAME, TRUE, 
     778                                        -1); 
     779 
     780                        gtk_tree_model_iter_children (info_panel, &child_data, &child); 
     781 
     782                        gtk_tree_store_set(GTK_TREE_STORE(info_panel), &child_data, 
     783                                        INFO_PANEL_MARKERS_COL_VALUE, mtime, 
     784                                        INFO_PANEL_MARKERS_COL_EDITABLE_VALUE, TRUE, 
     785                                        -1); 
     786                         
     787                        gtk_tree_model_iter_next(info_panel, &child_data); 
     788                        gtk_tree_store_set(GTK_TREE_STORE(info_panel), &child_data, 
     789                                        INFO_PANEL_MARKERS_COL_VALUE, mtime, 
     790                                        INFO_PANEL_MARKERS_COL_EDITABLE_VALUE, TRUE, 
     791                                        -1); 
     792                         
     793                        gtk_tree_model_iter_next(info_panel, &child_data); 
     794                        gtk_tree_store_set(GTK_TREE_STORE(info_panel), &child_data, 
     795                                        INFO_PANEL_MARKERS_COL_VALUE, mtime, 
     796                                        INFO_PANEL_MARKERS_COL_EDITABLE_VALUE, TRUE, 
     797                                        -1); 
     798                         
     799                        gtk_tree_model_iter_next(info_panel, &child); 
     800                } 
     801         
     802                g_mutex_unlock(sample->sounddata->marks_mutex); 
     803 
     804                g_snprintf (buf, BUF_LEN, "(%d)", nmark); 
     805         
     806        } else { 
     807                 
     808                buf[0] = 0; 
     809         
     810        } 
     811 
     812        if (n) 
     813                gtk_tree_store_set(GTK_TREE_STORE(info_panel), &iter, 
     814                                INFO_PANEL_MARKERS_COL_VALUE, buf, 
     815                                -1); 
     816 
     817#undef BUF_LEN 
     818} 
     819/* 
    681820void info_panel_update (sw_sample * sample) 
    682821{ 
    683         info_panel_sample_info_update(sample); 
    684         info_panel_selections_info_update(sample); 
    685         info_panel_undos_info_update(sample); 
    686 
    687  
     822        info_panel_sample_info_update (sample); 
     823        info_panel_selections_info_update (sample); 
     824        info_panel_undos_info_update (sample); 
     825        info_panel_markers_info_update (sample); 
     826
     827*/ 
    688828void info_panel_error_dialog (GtkWidget * window, gchar * message) 
    689829{ 
     
    782922        GtkWidget * entry; 
    783923        GtkWidget * spin; 
     924        gint response; 
    784925 
    785926        dialog = gtk_dialog_new_with_buttons ( _("Add selection"), 
     
    791932                                                GTK_RESPONSE_REJECT, 
    792933                                                NULL); 
     934/* 
    793935        g_signal_connect_swapped (dialog, 
    794936                                "response",  
    795937                                G_CALLBACK (gtk_widget_destroy), 
    796938                                dialog); 
    797  
     939*/ 
    798940        table = gtk_table_new (4, 2, TRUE); 
    799941 
     
    848990 
    849991        gtk_widget_show_all (dialog); 
     992 
     993        response = gtk_dialog_run (GTK_DIALOG(dialog)); 
     994 
     995        gtk_widget_destroy (dialog); 
     996 
     997        switch (response){ 
     998                case GTK_RESPONSE_ACCEPT: 
     999                        g_print("OK\n"); 
     1000                        return; 
     1001                        break; 
     1002                default: 
     1003                        g_print("cancel\n"); 
     1004                        return; 
     1005                        break; 
     1006        } 
    8501007} 
    8511008 
     
    10431200 
    10441201} 
    1045  
     1202#if 0 
    10461203void info_panel_add_markers_cb (GtkWidget * menuitem, sw_view * view) 
    10471204{ 
     
    11191276} 
    11201277 
    1121 void info_panel_add_markers_1_cb (GtkWidget * menuitem, sw_view * view) 
     1278#else 
     1279 
     1280void info_panel_add_markers_cb (GtkWidget * menuitem, sw_view * view) 
    11221281{ 
    11231282        sw_mark * mark; 
    11241283 
    1125         mark = mark_new( 100, SWEEP_MARK_TYPE_SIMPLE, "TEST1" ); 
    1126  
    1127         view->sample->sounddata->marks = marks_add_marker( view->sample->sounddata->marks, mark ); 
    1128  
    1129 
     1284        mark = mark_new (0, SWEEP_MARK_TYPE_SIMPLE, NULL); 
     1285 
     1286        view->sample->sounddata->marks = marks_add_marker (view->sample->sounddata->marks, mark); 
     1287 
     1288        sample_refresh_views (view->sample); 
     1289
     1290#endif 
    11301291 
    11311292void info_panel_markers_popup_menu (GtkWidget *treeview, GdkEventButton *event, sw_view * view, gboolean del) 
     
    11381299 
    11391300        g_signal_connect(menuitem, "activate", 
    1140                                  (GCallback) info_panel_add_markers_1_cb, view); 
     1301                                 (GCallback) info_panel_add_markers_cb, view); 
    11411302 
    11421303        gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); 
     
    14561617        } 
    14571618} 
     1619 
     1620void info_panel_markers_edited_name_cb (GtkCellRendererText *cell, gchar *path_string, gchar *new_text, sw_view * view) 
     1621{ 
     1622        GtkTreeModel * model; 
     1623        GtkTreeIter iter; 
     1624        gint type; 
     1625        sw_mark * mark; 
     1626        GList * gl; 
     1627//      SelectionData * seldata; 
     1628        gchar * name; 
     1629 
     1630        if (view->sample->info_panel == NULL) 
     1631                return; 
     1632 
     1633        model = view->sample->info_panel->markers; 
     1634 
     1635        gtk_tree_model_get_iter_from_string(model, &iter, path_string); 
     1636 
     1637        gtk_tree_model_get(model, &iter, INFO_PANEL_MARKERS_COL_TYPE, &type, -1); 
     1638 
     1639        switch (type){ 
     1640                case INFO_PANEL_MARKERS_NAME: 
     1641                        gtk_tree_model_get(model, &iter, INFO_PANEL_MARKERS_COL_NAME, &name, INFO_PANEL_MARKERS_COL_POINTER, &gl, -1); 
     1642 
     1643                        mark = (sw_mark *)gl->data; 
     1644 
     1645                        if (g_utf8_collate(name, new_text) && (mark->name == NULL || g_utf8_collate(mark->name, new_text))){ 
     1646 
     1647                                if (!new_text[0]){ 
     1648                                        new_text = NULL; 
     1649                                } 
     1650                                 
     1651                                info_panel_row_update_str(model, path_string, INFO_PANEL_MARKERS_COL_NAME, new_text); 
     1652 
     1653                                mark->name = g_strdup(new_text); 
     1654/* 
     1655                                seldata = g_malloc0(sizeof(SelectionData)); 
     1656                 
     1657                                seldata->sel_data.name = g_strdup(new_text); 
     1658                 
     1659                                seldata->sel_data.sel_start = sel->sel_start; 
     1660                                seldata->sel_data.sel_end = sel->sel_end; 
     1661 
     1662                                seldata->sel_modify = sel; 
     1663 
     1664                                perform_selection_op (view->sample, _("Set sel name"), (SweepFilter)info_panel_selection_modify, NULL, seldata); 
     1665*/ 
     1666                        } 
     1667                         
     1668                        break; 
     1669        } 
     1670} 
     1671 
    14581672 
    14591673/* 
     
    19852199        gtk_tree_view_column_add_attribute(col, renderer, "text", INFO_PANEL_MARKERS_COL_NAME); 
    19862200        gtk_tree_view_column_add_attribute(col, renderer, "editable", INFO_PANEL_MARKERS_COL_EDITABLE_NAME); 
    1987         //g_signal_connect(renderer, "edited", (GCallback) info_panel_markers_edited_name_cb, view); 
     2201        g_signal_connect(renderer, "edited", (GCallback) info_panel_markers_edited_name_cb, view); 
    19882202 
    19892203        renderer = gtk_cell_renderer_text_new(); 
  • sweep/branches/sweep-info-panel/src/info-panel.h

    r457 r458  
    130130        INFO_PANEL_MARKERS_COL_COLOR, 
    131131        INFO_PANEL_MARKERS_COL_MTYPE, 
     132        INFO_PANEL_MARKERS_COL_POINTER, 
    132133        INFO_PANEL_MARKERS_COL_EDITABLE_NAME, 
    133134        INFO_PANEL_MARKERS_COL_EDITABLE_VALUE, 
     
    156157GtkWidget * info_panel_new (sw_view * view); 
    157158info_panel_models * info_panel_create_models(void); 
    158 void info_panel_update(sw_sample * sample); 
     159//void info_panel_update(sw_sample * sample); 
    159160void info_panel_sample_info_update(sw_sample * sample); 
    160161void info_panel_selections_info_update(sw_sample * sample); 
    161162void info_panel_undos_info_update(sw_sample * sample); 
    162 #ifdef SWEEP_INFO_PANEL_MARKERS 
    163163void info_panel_markers_info_update(sw_sample * sample); 
    164 #endif 
    165164#ifdef SWEEP_INFO_PANEL_PLUGINS 
    166165void info_panel_plugins_info_update(sw_sample * sample); 
  • sweep/branches/sweep-info-panel/src/sample-display.c

    r457 r458  
    139139  81, 101, 81,   /* lowlight */ 
    140140  230, 0, 0,     /* rec */ 
     141  0, 0, 0,     /* relief */ 
    141142}; 
    142143 
     
    162163  81, 101, 81,   /* lowlight */ 
    163164  240, 0, 0,     /* rec */ 
     165  0, 0, 0,     /* relief */ 
    164166}; 
    165167#endif 
     
    191193}; 
    192194 
     195static const int mark_colors[] = { 
     196          0,   255, 255, 
     197          0,   255,   0, 
     198          0,     0, 255, 
     199        255,     0, 255, 
     200          0,     0, 255, 
     201          0,     0, 255, 
     202          0,     0, 255, 
     203}; 
     204 
    193205/* Values for s->selecting */ 
    194206enum { 
     
    201213  SELECTING_NOISE, 
    202214  SELECTING_HAND, 
     215  SELECTING_MARKER 
    203216}; 
    204217 
     
    772785  } 
    773786 
     787  for (i = 0; i < MARKER_COLOR_MAX; i++) { 
     788          s->marks_gcs[i] = gdk_gc_new (widget->window); 
     789          gdk_gc_set_foreground(s->marks_gcs[i], &SAMPLE_DISPLAY_CLASS(GTK_WIDGET_GET_CLASS(widget))->mark_colors[i]); 
     790  } 
     791   
     792  s->marks_relief_gc = gdk_gc_new (widget->window); 
     793  gdk_gc_set_foreground(s->marks_relief_gc, &SAMPLE_DISPLAY_CLASS(GTK_WIDGET_GET_CLASS(widget))->colors[SAMPLE_DISPLAYCOL_MARKS_RELIEF]); 
     794 
    774795  sample_display_init_display(s, attributes.width, attributes.height); 
    775796 
     
    12901311  GdkPoint poly[5]; 
    12911312  int x, x1, x2; 
    1292  
    1293   /* Draw real selection */ 
     1313  PangoLayout *layout; 
     1314//  PangoRectangle logical_rect, ink_rect; 
     1315 
     1316  layout = gtk_widget_create_pango_layout (GTK_WIDGET(s), NULL); 
     1317 
    12941318  for (gl = sample->sounddata->marks; gl; gl = gl->next) { 
    12951319    mark = (sw_mark *)gl->data; 
     
    12981322    x = OFFSET_TO_XPOS(mark->frame); 
    12991323 
    1300     if ((x > x_max) || (x < x_min)) break; 
    1301  
    1302     x1 = CLAMP (x - 3, x_min, x_max); 
    1303     x2 = CLAMP (x + 4, x_min, x_max); 
    1304  
    1305     gdk_draw_line(win, s->rec_gc
    1306                   x, 8, 
    1307                   x, s->height); 
    1308  
    1309     poly[0].x = x1; 
    1310     poly[1].x = x2
    1311     poly[2].x = x2
    1312     poly[3].x = x; 
    1313     poly[4].x = x1; 
     1324    if ((x <= x_max) || (x >= x_min)){ 
     1325 
     1326           x1 = CLAMP (x - 3, x_min, x_max); 
     1327           x2 = CLAMP (x + 3, x_min, x_max); 
     1328 
     1329           gdk_draw_line(win, s->marks_gcs[mark->color]
     1330                         x, 8, 
     1331                         x, s->height); 
     1332 
     1333           poly[0].x = x1; 
     1334           poly[1].x = x2 + 1
     1335           poly[2].x = x2 + 1
     1336           poly[3].x = x; 
     1337           poly[4].x = x1; 
    13141338  
    1315     poly[0].y = 0; 
    1316     poly[1].y = 0; 
    1317     poly[2].y = 7; 
    1318     poly[3].y = 10; 
    1319     poly[4].y = 7; 
    1320  
    1321     gdk_draw_polygon (win, s->rec_gc, TRUE, poly, 5); 
    1322  
    1323   } 
     1339            poly[0].y = 0; 
     1340            poly[1].y = 0; 
     1341            poly[2].y = 7; 
     1342            poly[3].y = 10; 
     1343            poly[4].y = 7; 
     1344 
     1345            gdk_draw_polygon (win, s->marks_gcs[mark->color], TRUE, poly, 5); 
     1346     
     1347            poly[1].x = x2; 
     1348            poly[2].x = x2; 
     1349 
     1350            gdk_draw_polygon (win, s->marks_relief_gc, FALSE, poly, 5); 
     1351 
     1352            if ( mark->name != NULL ){ 
     1353                    pango_layout_set_text (layout, mark->name, -1); 
     1354 
     1355                    gtk_paint_layout (GTK_WIDGET(s)->style, 
     1356                                    win, GTK_WIDGET_STATE (GTK_WIDGET(s)), 
     1357                                    FALSE, NULL, 
     1358                                    GTK_WIDGET(s), NULL, 
     1359                                    x2 + 2, -3, 
     1360                                    layout); 
     1361            } 
     1362    } 
     1363  } 
     1364 
     1365  g_object_unref (layout); 
     1366 
    13241367} 
    13251368 
     
    19742017 
    19752018static void 
     2019sample_display_handle_marker_motion (SampleDisplay * s, int x, int y) 
     2020{ 
     2021  sw_mark * mark; 
     2022  GList * gl; 
     2023  sw_framecount_t offset, off1, off2; 
     2024  gboolean mod = FALSE; 
     2025 
     2026  offset = XPOS_TO_OFFSET(x); 
     2027  off1 = XPOS_TO_OFFSET(x - 5); 
     2028  off2 = XPOS_TO_OFFSET(x + 5); 
     2029 
     2030  g_mutex_lock (s->view->sample->sounddata->marks_mutex); 
     2031 
     2032  if (s->view->sample->tmp_mark){ 
     2033 
     2034          s->view->sample->tmp_mark->frame = offset; 
     2035          mod = TRUE; 
     2036 
     2037  } else { 
     2038          for ( gl = s->view->sample->sounddata->marks; gl; gl = gl->next){ 
     2039                g_print ("Mark found: %p\n", gl->data); 
     2040         
     2041                mark = (sw_mark *)gl->data; 
     2042 
     2043                if ( (mark->frame >= off1) && (mark->frame <= off2) ){ 
     2044                        g_print ("mamy cię!\n"); 
     2045                         
     2046                        s->view->sample->tmp_mark = mark; 
     2047                        mark->frame = offset; 
     2048                         
     2049                        mod = TRUE; 
     2050                                                 
     2051                        break; 
     2052                } 
     2053          } 
     2054  } 
     2055   
     2056  g_mutex_unlock (s->view->sample->sounddata->marks_mutex); 
     2057 
     2058  if (mod) 
     2059          sample_refresh_views (s->view->sample); 
     2060 
     2061} 
     2062 
     2063static void 
    19762064sample_display_handle_noise_motion (SampleDisplay * s, int x, int y) 
    19772065{ 
     
    22222310        return TRUE; 
    22232311        break; 
     2312 
    22242313      case TOOL_SELECT: 
    22252314        /* If the cursor is near a sel, move that */ 
     
    22562345#endif 
    22572346        break; 
     2347 
    22582348      case TOOL_HAND: 
    22592349        s->selecting = SELECTING_HAND; 
     
    22622352        sample_display_handle_hand_motion (s, x, y); 
    22632353        break; 
     2354 
     2355      case TOOL_MARKER: 
     2356        s->selecting = SELECTING_MARKER; 
     2357//      s->view->hand_offset = x; 
     2358//      SET_CURSOR(widget, HAND_CLOSE); 
     2359        sample_display_handle_marker_motion (s, x, y); 
     2360        break; 
     2361 
    22642362      case TOOL_ZOOM: 
    22652363        o = XPOS_TO_OFFSET(x); 
     
    22712369        } 
    22722370        break; 
     2371 
    22732372      case TOOL_PENCIL: 
    22742373        s->selecting = SELECTING_PENCIL; 
    22752374        sample_display_handle_pencil_motion (s, x, y); 
    22762375        break; 
     2376 
    22772377      case TOOL_NOISE: 
    22782378        s->selecting = SELECTING_NOISE; 
    22792379        sample_display_handle_noise_motion (s, x, y); 
    22802380        break; 
     2381 
    22812382      default: 
    22822383        break; 
     
    24012502    s->view->hand_offset = -1; 
    24022503    break; 
     2504  case TOOL_MARKER: 
     2505    s->view->sample->tmp_mark = NULL; 
     2506    break; 
    24032507  case TOOL_MOVE: 
    24042508    break; 
     
    24592563      case SELECTING_HAND: 
    24602564        sample_display_handle_hand_motion (s, x, y); 
     2565        break; 
     2566      case SELECTING_MARKER: 
     2567        sample_display_handle_marker_motion (s, x, y); 
    24612568        break; 
    24622569      case SELECTING_PENCIL: 
     
    29613068    gdk_colormap_alloc_color(gdk_colormap_get_system(), c, TRUE, TRUE); 
    29623069  } 
     3070 
     3071  for(n = 0, p = mark_colors, c = class->mark_colors; 
     3072      n < MARKER_COLOR_MAX; n++, c++) { 
     3073    c->red = *p++ * 65535 / 255; 
     3074    c->green = *p++ * 65535 / 255; 
     3075    c->blue = *p++ * 65535 / 255; 
     3076    c->pixel = (glong)((c->red & 0xff00)*256 + 
     3077                        (c->green & 0xff00) + 
     3078                        (c->blue & 0xff00)/256); 
     3079    gdk_colormap_alloc_color(gdk_colormap_get_system(), c, TRUE, TRUE); 
     3080  } 
     3081 
    29633082} 
    29643083 
  • sweep/branches/sweep-info-panel/src/sample-display.h

    r241 r458  
    4949  SAMPLE_DISPLAYCOL_LOWLIGHT, 
    5050  SAMPLE_DISPLAYCOL_REC, 
     51  SAMPLE_DISPLAYCOL_MARKS_RELIEF, 
    5152  SAMPLE_DISPLAYCOL_LAST 
    5253}; 
     
    6263  GdkGC * bg_gcs[VIEW_COLOR_MAX]; 
    6364  GdkGC * fg_gcs[VIEW_COLOR_MAX]; 
     65 
     66  GdkGC * marks_gcs[MARKER_COLOR_MAX]; 
     67  GdkGC * marks_relief_gc; 
    6468 
    6569  GdkPixmap * backing_pixmap; 
     
    109113  GdkColor bg_colors[VIEW_COLOR_MAX]; 
    110114  GdkColor fg_colors[VIEW_COLOR_MAX]; 
     115  GdkColor mark_colors[VIEW_COLOR_MAX]; 
    111116 
    112117  void (*selection_changed)(SampleDisplay *s, int start, int end); 
  • sweep/branches/sweep-info-panel/src/sweep_app.h

    r452 r458  
    4545  TOOL_PENCIL, 
    4646  TOOL_NOISE, 
    47   TOOL_HAND 
     47  TOOL_HAND, 
     48  TOOL_MARKER 
    4849} sw_tool_t; 
    4950 
     
    246247 
    247248  sw_sel * tmp_sel; /* Temporary selection, used while selecting */ 
     249  sw_mark * tmp_mark; /* Temp marker, used while moving */ 
    248250 
    249251  /* Operations; lock on scheduling */ 
  • sweep/branches/sweep-info-panel/src/sweep_marker.c

    r455 r458  
    4343  sw_mark * mark; 
    4444 
    45   mark = g_malloc( sizeof( sw_mark ) ); 
     45  mark = g_malloc0 ( sizeof( sw_mark ) ); 
    4646  mark->frame = frame; 
    4747  mark->type = type; 
     
    5050  if (name != NULL) 
    5151        mark->name = g_strdup(name); 
     52  else 
     53        mark->name = NULL; 
    5254 
    5355  return mark; 
  • sweep/branches/sweep-info-panel/src/sweep_sample.c

    r457 r458  
    18741874        info_panel_sample_info_update(sample); 
    18751875        info_panel_selections_info_update(sample); 
     1876        info_panel_markers_info_update(sample); 
    18761877} 
    18771878 
  • sweep/branches/sweep-info-panel/src/view.c

    r456 r458  
    21052105 
    21062106  NOMODIFY(button); 
     2107 
     2108  button = create_pixmap_button (window, mark_xpm, _("Time marker tool"), 
     2109                                 style_light_grey, VIEW_TOOLBAR_TOGGLE_BUTTON, 
     2110                                 G_CALLBACK (view_set_tool_cb), NULL, NULL, view); 
     2111  g_object_set_data (G_OBJECT(button), "default", GINT_TO_POINTER(TOOL_MARKER)); 
     2112  gtk_box_pack_start (GTK_BOX (tool_hbox), button, FALSE, FALSE, 0); 
     2113  gtk_widget_show (button); 
     2114  view->tool_buttons = g_list_append (view->tool_buttons, button); 
     2115 
    21072116 
    21082117  button = create_pixmap_button (window, scrub_xpm, 
  • sweep/branches/sweep-info-panel/src/view_pixmaps.h

    r444 r458  
    5454#include "../pixmaps/select.xpm" 
    5555#include "../pixmaps/hand.xpm" 
     56#include "../pixmaps/mark.xpm" 
    5657#ifdef DEVEL_CODE 
    5758#include "../pixmaps/pencil.xpm"